Introduction Last updated: 2024-02-18

The application was developed to provide integration to Portfolio and Project Management aka PPM.

ReportPPM provides a series of reports developed on specifications provided by Calzedonia staff.

The application is publicly available on the URL: https://ppmreport.calzedonia.com/ReportPPM

Installation

The application is hosted on-premises in a virtual machine in the Calzedonia data center.

Server

The server operating system is Microsoft Windows Server 2019 Standard with the following features:

  • System Name: SDE-GPLA01P
  • IP: 172.16.110.118
  • RAM: 24.0 GB
  • Drive C: 64 GB for the operating system
  • Drive D: 24 GB for applications

Note

The installation and correct functioning of the server are the responsibility of the Calzedonia EDP service

HTTP Server

The HTTP service is provided by an Apache HTTP server.

The current version is 2.4.58.

The installation directory is "d:\Program Files\Apache Software Foundation\Apache 2.4".

The server redirects each application to the corresponding server based on the URL using binary and proprietary AJP protocol.

Note

The installation and configuration of the Apache HTTP server are the responsibility of Giplo

WEB Server

The Web Appplication service is provided by an Apache Tomcat server.

The current version is 9.0.16.

The installation directory is "d:\Program Files\Apache Software Foundation\Tomcat 9.0".

Tip

Several instances of Tomcat are installed on the server, one for each application.

The instance used by ReportPPM is installed in "d:\WWW\Tomcat-ReportPPM ".

Note

The installation and configuration of the Apache Tomcat server are the responsibility of Giplo

Application structure

The application is developed using three separate layers according to the Model View Controller pattern.

Graphical User Interface

The application is developed with a web interface, therefore used via a browser. Compatibility with the most modern browsers has been tested.

Actually the pages are .jsp(Java servlet page). With this technology it is possible to modify dinamically the content of the page based on information that is only available on the server side, for example the roles.

The page is created in HTML5 with Javascript and CSS development, additional packages facilitate native development.

The application is developed with Ajax technology, a software development technique for the creation of interactive web applications, based on a background exchange of data between web browsers and servers, thus allowing the dynamic updating of a web page without explicit reloading by the user.

The web client takes care of managing the user interface without having direct access to the data. When data is needed on the page, the customer makes an asynchronous call, sending only the request parameters and waiting for the request without blocking interactivity with the page. The server processes the data and returns the object in string format via serialization in JSON format.

This technique allows you to improve the user experience and minimize data traffic, as it is not necessary to reload the entire page for each operation.

The languages or framework used to create the pages are:
jQuery The component allows the development of Javascript procedures using a higher level language and compatibility with different browsers.
Bootstrap The most popular framework in the world for creating responsive and mobile-first sites.
Kendo UI Kendo UI is a comprehensive HTML5 user interface framework for building interactive and high-performance websites and applications.
Font Awesome Set of icons for web applications.

Note

Kendo is the only commercial package used to develop the page, It is developed by Progress and licensed by Giplo.
Its use is free for the end user.

Application Server

The web server layer is built in Java and hosted on a Tomcat container.

Its functions are:
  • Real-time compilation of jsp pages
  • Answering Ajax calls
  • Development of the business model
  • Access to data
  • Return of processed data in JSON format to the page
Java Java is the most used server-side programming language in the world. It reduces costs, shortens development times, promotes innovation and improves application services. With millions of developers running more than 51 billion Java Virtual Machines worldwide, Java continues to be the development platform of choice for businesses and developers..
Tomcat It is the container that allows the creation of JSP pages and the execution of Java procedures.
The Apache Tomcat software is developed in an open environment and released with the Apache version 2 license
Shiro It is a powerful and easy-to-use Java security framework that performs authentication, authorization, encryption and session management.

Note

All components of this level are Open Source and free

Data Access

The data is stored and is a SAP HANA technology database.

Access is done via JDBC drivers provided by SAP.

Ad hoc views have been developed in the database for the application.

Note

The server can be reached at the address: sde-sxr2d01.csg1.sys.calzedonia.com (172.16.145.189:30015).

The default schema for the application is "giplo"

Authentication

Application security requires a login to access all pages except the home page.

Note

Login management is performed by the Apache Shiro framework

Login LDAP

The application uses an LDAP login for authentication.

The login URL is: ldap://sde-nslb-ldapad01p.csg1.sys.calzedonia.com:389

The connection to the ldap server is made with the user: gpla01p

The search paths for user authentication are:
  • ou=CSG1,dc=csg1,dc=sys,dc=calzedonia,dc=com
  • ou=External,dc=csg1,dc=sys,dc=calzedonia,dc=com
  • ou=SalesPeople,dc=csg1,dc=sys,dc=calzedonia,dc=com

Warning

The connection uses an insecure protocol.

Login OKTA

Danger

There is currently no plan to migrate the login function using the Okta provider.

Reports

This section describes the features and possibilities of each report available in the application.

Shop schedule

The report provides information on activities planned in shops.

The program accesses the data using the view PPM_SCHEDULE in the giplo schema:


CREATE VIEW PPM_SCHEDULE AS
SELECT
	PPM_WIP.WIP_TYPE_DESCR AS wipType,
	PPM_WIP.RENEWAL_TYPE_DESCR AS typeOfRemake,
	PPM_WIP.SAP_CODE AS sapCode,
	PPM_WIP.LEASING AS leasing,
	PPM_WIP.SHOP_DESCR AS shopDescription,
	PPM_WIP.BRAND AS idBrand,
	PPM_WIP.COUNTRY AS idCountry,	
	PPM_WIP.LOCALIZATION AS localization,	
	PPM_WIP.MANAGEMENT_TYPE_DESCR AS management,
	PPM_WIP.COMM_FLAG_STORE AS commercialFlagship,
	PPM_WIP.FRANCH_FLAG_STORE AS franchisingFlagship,
	PPM_WIP.SURVEY AS survey,
	PPM_WIP.PROJ_DLV_DATE AS projectDelivery,
	PPM_WIP.PREM_LV_DATE AS premisesDelivery,
	PPM_WIP.START_WORK_DATE AS startWork,
	PPM_WIP.SHIP1_DEPARTURE AS firstShipmentDeparture,
	PPM_WIP.SHIP1_DLV_DATE AS firstShipmentDelivery,
	PPM_WIP.SHIP1_DLV_HOUR AS firstShipmentDeliveryTime,
	PPM_WIP.SHIP2_DEPARTURE AS secondShipmentDeparture,
	PPM_WIP.SHIP2_DLV_DATE AS secondShipmentDelivery,
	PPM_WIP.SHIP2_DLV_HOUR AS secondShipmentDeliveryTime,
	PPM_WIP.SHIP3_DEPARTURE AS thirdShipmentDeparture,
	PPM_WIP.SHIP3_DLV_DATE AS thirdShipmentDelivery,
	PPM_WIP.SHIP3_DLV_HOUR AS thirdShipmentDeliveryTime,
	PPM_WIP.END_WORK_DATE AS endOfWork,
	PPM_WIP.REOPEN_DATE AS reopening,
	PPM_WIP.PRJ_MANAGER AS idProjectManager,
	PPM_WIP.PRJ_MANAGER_DESCR AS projectManager,
	PPM_WIP.DESIGNER AS idDesigner,
	PPM_WIP.DESIGNER_DESCR AS designer,
	PPM_WIP.TECH_COORDINATOR AS idTechnicalCoordinator,
	PPM_WIP.TECH_COORDINATOR_DESCR AS technicalCoordinator,
	PPM_WIP.SQM_TOT_SELL_AREA AS sellingArea,
	PPM_WIP.FURN_TYPE_DESCR AS furnishing,
	PPM_WIP.SHIP1_DLV_LIST AS firstDeliveryList,
	PPM_WIP.SHIP2_DLV_LIST AS secondDeliveryList,
	PPM_WIP.SHIP3_DLV_LIST AS thirdDeliveryList
FROM
	SAPSR3.ZPPM_WIP_EXV AS PPM_WIP 
WHERE PPM_WIP.WIP_TYPE <> '04' AND
	PPM_WIP.WIP_TYPE <> '06' AND
	PPM_WIP.WIP_TYPE <> '07'  AND
	PPM_WIP.WIP_TYPE <> '12' AND
	PPM_WIP.STATUS = 'Z011';
							

Information on dates and contact persons is provided:

  • Project Manager
  • Designer
  • Technical Coordinator
  • 1 Shipment Departure
  • 2 Shipment Departure
  • 3 Shipment Departure
  • End Of Work
  • Reopening

The report can be exported in Excel or PDF format with the specific buttons.

Note

The report in Excel is produced in JavaScript using a native functionality of the Kendo component.

The report in PDF is produced using Java code and the Java iText component (AGPL-version).

The PDF report shows information grouped by week.

Note

The row has a green background if "sellingArea" is greater than 0 and "furnishing" is not blank.

The row has a yellow background if "firstDeliveryList" or "secondDeliveryList" or "thirdDeliveryList" is equal to "X".

Report for countries

The program accesses the data using the view PPM_OPEN_STORE in the giplo schema:


CREATE VIEW PPM_OPEN_STORE  AS
SELECT
    count(EXTERNAL_ID) AS count,
	COUNTRY AS idCountry,
	COUNTRY_DESCR AS country,
	MANAGEMENT_TYPE AS IDMANAGEMENT,
	MANAGEMENT_TYPE_DESCR AS MANAGEMENT,
	BRAND AS idBrand,
	BRAND_DESCR AS brand
FROM
    SAPSR3.ZPPM_STORE_EXV WHERE STATUS = 'Z014' AND
	SHOP_TYPE <> 'IBS'
	GROUP BY COUNTRY,
	COUNTRY_DESCR,
	MANAGEMENT_TYPE,
	MANAGEMENT_TYPE_DESCR,
	BRAND,
	BRAND_DESCR
	ORDER BY COUNTRY_DESCR, MANAGEMENT_TYPE, BRAND_DESCR;
							

This report shows the open shops for each brand.

Note

Data is grouped, filtered and sorted using Java stream functions.

The shops are grouped by country and types of management.

You can remove the grouping and get a flat table.

You can also group by Management by dragging the corresponding column.

The report can be exported in Excel or PDF format with the specific buttons.

Note

The report in Excel is produced in JavaScript using a native functionality of the Kendo component.

The report in PDF is produced using Java code and the Java iText component (AGPL-version).

Tip

The content of the exported report depends on the sorting, grouping and filtering selections set on the web page.

You can view data for any date in the past.

Report Planning

Tip

The report has no graphical user interface, but can be obtained as an Excel sheet with the green button from the Report for countries action bar.

Note

The planning button creates an Excel sheet whose characteristics have been set by the specific Calzedonia department.

The program accesses the data using the view PPM_OPEN_STORE_WIP in the giplo schema:


CREATE VIEW PPM_OPEN_STORE_WIP AS
SELECT * FROM (
SELECT
	PPM_STORE.EXTERNAL_ID,
	PPM_WIP.STATUS AS STATUS,
	PPM_STORE.COUNTRY AS idCountry,
	PPM_STORE.COUNTRY_DESCR AS country,
	PPM_STORE.MANAGEMENT_TYPE AS idMANAGEMENT_STORE,
	PPM_STORE.MANAGEMENT_TYPE_DESCR AS MANAGEMENT_STORE,
	PPM_STORE.BRAND AS idBrand,
	PPM_STORE.BRAND_DESCR AS brand,    
	PPM_STORE.ACTUAL_START,
	PPM_STORE.ACTUAL_FINISH,
	PPM_WIP.WIP_TYPE AS wipType,
	PPM_WIP.WIPSTARTINGDATE,
	PPM_WIP.WIPFINISHDATE,
	PPM_WIP.MANAGEMENT_TYPE  AS idMANAGEMENT,
	PPM_WIP.MANAGEMENT_TYPE_DESCR  AS MANAGEMENT,
	PPM_STORE.SHOP_TYPE AS SHOP_TYPE
FROM
	SAPSR3.ZPPM_STORE_EXV AS PPM_STORE  
INNER JOIN
	SAPSR3.ZPPM_RELATION_DB AS PPM_RELATION
ON
	(PPM_STORE.GUID = PPM_RELATION.GUID_A)
INNER JOIN
	SAPSR3.ZPPM_WIP_EXV AS PPM_WIP
ON
	(PPM_RELATION.GUID_B = PPM_WIP.GUID)
UNION	
SELECT
	PPM_STORE.EXTERNAL_ID,
	PPM_WIP.STATUS AS STATUS,
	PPM_STORE.COUNTRY AS idCountry,
	PPM_STORE.COUNTRY_DESCR AS country,
	PPM_STORE.MANAGEMENT_TYPE AS idMANAGEMENT_STORE,
	PPM_STORE.MANAGEMENT_TYPE_DESCR AS MANAGEMENT_STORE,
	PPM_STORE.BRAND AS idBrand,
	PPM_STORE.BRAND_DESCR AS brand,    
	PPM_STORE.ACTUAL_START,
	PPM_STORE.ACTUAL_FINISH,
	PPM_WIP.WIP_TYPE AS wipType,	
	PPM_WIP.WIPSTARTINGDATE,
	PPM_WIP.WIPFINISHDATE,
	PPM_WIP.MANAGEMENT_TYPE  AS idMANAGEMENT,
	PPM_WIP.MANAGEMENT_TYPE_DESCR  AS MANAGEMENT,
	PPM_STORE.SHOP_TYPE AS SHOP_TYPE
FROM
	SAPSR3.ZPPM_STORE_EXV AS PPM_STORE  
INNER JOIN
	SAPSR3.ZPPM_RELATION_DB AS PPM_RELATION
ON
	(PPM_STORE.GUID = PPM_RELATION.GUID_B)
INNER JOIN
	SAPSR3.ZPPM_WIP_EXV AS PPM_WIP
ON
	(PPM_RELATION.GUID_A = PPM_WIP.GUID))
WHERE STATUS = 'Z012' AND SHOP_TYPE <> 'IBS'
	
ORDER BY
	EXTERNAL_ID ASC, WIPSTARTINGDATE DESC
							
The spreadsheet has a tab for each company brand, each tab has 46 columns

Note

The data is processed using Java code and the spreadsheet is produced using the Apache POI component.

Report Gantt

The program accesses the data using the view PPM_OPEN_GANTT in the giplo schema:


CREATE VIEW PPM_OPEN_GANTT AS
SELECT
	PPM_WIP.WIP_TYPE_DESCR AS wipType,
	PPM_WIP.SAP_CODE AS sapCode,
	PPM_WIP.SHOP_DESCR AS shopDescription,
	PPM_WIP.BRAND AS idBrand,
	PPM_WIP.COUNTRY AS idCountry,
	PPM_WIP.MANAGEMENT_TYPE_DESCR AS management,
	PPM_WIP.SURVEY AS survey,
	PPM_WIP.PROJ_DLV_DATE AS projectDelivery,
	PPM_WIP.PREM_LV_DATE AS premisesDelivery,
	PPM_WIP.START_WORK_DATE AS startWork,
	PPM_WIP.SHIP1_DEPARTURE AS firstShipmentDeparture,
	PPM_WIP.SHIP1_DLV_DATE AS firstShipmentDelivery,
	PPM_WIP.SHIP1_DLV_HOUR AS firstShipmentDeliveryTime,
	PPM_WIP.SHIP2_DEPARTURE AS secondShipmentDeparture,
	PPM_WIP.SHIP2_DLV_DATE AS secondShipmentDelivery,
	PPM_WIP.SHIP2_DLV_HOUR AS secondShipmentDeliveryTime,
	PPM_WIP.SHIP3_DEPARTURE AS thirdShipmentDeparture,
	PPM_WIP.SHIP3_DLV_DATE AS thirdShipmentDelivery,
	PPM_WIP.SHIP3_DLV_HOUR AS thirdShipmentDeliveryTime,
	PPM_WIP.END_WORK_DATE AS endOfWork,
	PPM_WIP.REOPEN_DATE AS reopening,
	PPM_WIP.PRJ_MANAGER AS idProjectManager,
	PPM_WIP.PRJ_MANAGER_DESCR AS projectManager,
	PPM_WIP.DESIGNER AS idDesigner,
	PPM_WIP.DESIGNER_DESCR AS designer,
	PPM_WIP.TECH_COORDINATOR AS idTechnicalCoordinator,
	PPM_WIP.TECH_COORDINATOR_DESCR AS technicalCoordinator
FROM
	SAPSR3.ZPPM_WIP_EXV AS PPM_WIP 
WHERE PPM_WIP.WIP_TYPE <> '04' AND 
	PPM_WIP.WIP_TYPE <> '06' AND
	PPM_WIP.WIP_TYPE <> '07' AND
	PPM_WIP.STATUS = 'Z011';
							

The report provides information on the work progress of the shops in WIP (Work In Progress) status in Gantt format.

Data is displayed within two user-selectable dates.

The report can be exported in Excel or PDF format with the specific buttons.

Note

The report in Excel is produced in JavaScript using a native functionality of the Kendo component.

The report in PDF is produced using Java code and the Java iText component (AGPL-version).

Note

The report is mainly used for the PDF file where the color settings were specifically requested by Calzedonia staff.

The PDF report is divided into two parts. On the left side there is information about all the works in progress:

  • Wip Type
  • Sap Code
  • Shop Description
  • Brand
  • Country
  • Management
  • Project Manager
  • Designer
  • Technical Coordinator

All the significant dates of the project are also reported

  • Survey (S)
  • Project Delivery (P)
  • Premises Delivery (H)
  • Start Work (W)
  • 1 Shipment Departure
  • 1 Shipment Delivery (1)
  • 2 Shipment Departure
  • 2 Shipment Delivery (2)
  • 3 Shipment Departure
  • 3 Shipment Delivery (3)
  • End Of Work (E)
  • Reopening (O)

Tip

Each date column is highlighted with a different color.

Note

The two sections are separated by the Total Working Days column (number of days between Start Work and End Of Work).

On the right side all days between the selected dates are shown.

Saturday and Sunday are highlighted in light blue.

If a date on the left side is present in the date range on the right side, the relevant cell is highlighted with the corresponding color and abbreviation.

If there are multiple dates in the same cell it is highlighted in black and all abbreviations are shown.

Tip

The dates on the right side between Start Work and End Of Work are highlighted in yellow.

Report WIP

The program accesses the data using the view PPM_OPEN_WIP in the giplo schema:


CREATE VIEW PPM_OPEN_WIP AS
SELECT
	PPM_WIP.EXTERNAL_ID AS idWip,
	PPM_WIP.WIP_TYPE_DESCR AS wipType,
	PPM_WIP.RENEWAL_TYPE_DESCR AS typeOfRemake,
	PPM_WIP.SAP_CODE AS sapCode,
	PPM_WIP.SHOP_DESCR AS shopDescription,
	PPM_WIP.BRAND AS idBrand,
	PPM_WIP.COUNTRY AS idCountry,
	PPM_WIP.MANAGEMENT_TYPE_DESCR AS management,
	PPM_WIP.SURVEY AS survey,
	PPM_WIP.PROJ_DLV_DATE AS projectDelivery,
	PPM_WIP.PREM_LV_DATE AS premisesDelivery,
	PPM_WIP.START_WORK_DATE AS startWork,
	PPM_WIP.SHIP1_DEPARTURE AS firstShipmentDeparture,
	PPM_WIP.SHIP1_DLV_DATE AS firstShipmentDelivery,
	PPM_WIP.SHIP1_DLV_HOUR AS firstShipmentDeliveryTime,
	PPM_WIP.SHIP2_DEPARTURE AS secondShipmentDeparture,
	PPM_WIP.SHIP2_DLV_DATE AS secondShipmentDelivery,
	PPM_WIP.SHIP2_DLV_HOUR AS secondShipmentDeliveryTime,
	PPM_WIP.SHIP3_DEPARTURE AS thirdShipmentDeparture,
	PPM_WIP.SHIP3_DLV_DATE AS thirdShipmentDelivery,
	PPM_WIP.SHIP3_DLV_HOUR AS thirdShipmentDeliveryTime,
	PPM_WIP.END_WORK_DATE AS endOfWork,
	PPM_WIP.REOPEN_DATE AS reopening,
	PPM_WIP.PRJ_MANAGER AS idProjectManager,
	PPM_WIP.PRJ_MANAGER_DESCR AS projectManager,
	PPM_WIP.DESIGNER AS idDesigner,
	PPM_WIP.DESIGNER_DESCR AS designer,
	PPM_WIP.TECH_COORDINATOR AS idTechnicalCoordinator,
	PPM_WIP.TECH_COORDINATOR_DESCR AS technicalCoordinator,
	TIMELINE_DB.TECH_NOTES AS technicalNotes
FROM
	SAPSR3.ZPPM_WIP_EXV PPM_WIP
INNER JOIN
	SAPSR3.ZPPM_TIMELINE_DB TIMELINE_DB
ON
	(PPM_WIP.GUID = TIMELINE_DB.GUID)
WHERE PPM_WIP.WIP_TYPE <> '04' AND
	PPM_WIP.WIP_TYPE <> '07' AND
	PPM_WIP.STATUS = 'Z011';
							

The report provides information on the work progress of the shops in WIP (Work In Progress) status in Table format.

All data is displayed regardless of date.

The report can be exported in Excel or PDF format with the specific buttons.

Note

The report in Excel is produced in JavaScript using a native functionality of the Kendo component.

The report in PDF is produced using Java code and the Java iText component (AGPL-version).

Note

The PDF report is then exported with or without information on the third shipment.