Skip to content

Commit 35ad88c

Browse files
Merge branch 'QAT-6031' into dev
2 parents 467331d + fdc03a9 commit 35ad88c

2 files changed

Lines changed: 53 additions & 21 deletions

File tree

src/main/resources/incrementalSqlScripts/20260125-QAT-6036.sql

Lines changed: 41 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,33 @@
11
INSERT INTO `fasp`.`ap_security` (`METHOD`, `URL`, `BF`) VALUES ('2', '/api/report/stockStatusMatrixGlobal', 'ROLE_BF_STOCK_STATUS_MATRIX_REPORT');
22

3+
INSERT INTO `fasp`.`ap_static_label`(`STATIC_LABEL_ID`,`LABEL_CODE`,`ACTIVE`) VALUES ( NULL,'static.report.showInEu','1');
4+
SELECT MAX(l.STATIC_LABEL_ID) INTO @MAX FROM ap_static_label l ;
5+
INSERT INTO ap_static_label_languages VALUES(NULL,@MAX,1,'Show data in equivalency unit');-- en
6+
INSERT INTO ap_static_label_languages VALUES(NULL,@MAX,2,'Afficher les données en unité d''équivalence');-- fr
7+
INSERT INTO ap_static_label_languages VALUES(NULL,@MAX,3,'Mostrar datos en unidad de equivalencia');-- sp
8+
INSERT INTO ap_static_label_languages VALUES(NULL,@MAX,4,'Mostrar dados em unidade de equivalência');-- pr
9+
10+
INSERT INTO `fasp`.`ap_static_label`(`STATIC_LABEL_ID`,`LABEL_CODE`,`ACTIVE`) VALUES ( NULL,'static.report.stockStatusMatrixGlobal','1');
11+
SELECT MAX(l.STATIC_LABEL_ID) INTO @MAX FROM ap_static_label l ;
12+
INSERT INTO ap_static_label_languages VALUES(NULL,@MAX,1,'Stock Status Matrix (Global)');-- en
13+
INSERT INTO ap_static_label_languages VALUES(NULL,@MAX,2,'Matrice de l''état des stocks (Global)');-- fr
14+
INSERT INTO ap_static_label_languages VALUES(NULL,@MAX,3,'Matriz del estado de las existencias (Global)');-- sp
15+
INSERT INTO ap_static_label_languages VALUES(NULL,@MAX,4,'Matriz de status do estoque (Global)');-- pr
16+
17+
INSERT INTO `fasp`.`ap_static_label`(`STATIC_LABEL_ID`,`LABEL_CODE`,`ACTIVE`) VALUES ( NULL,'static.stockStatus.showInEuTooltip','1');
18+
SELECT MAX(l.STATIC_LABEL_ID) INTO @MAX FROM ap_static_label l ;
19+
INSERT INTO ap_static_label_languages VALUES(NULL,@MAX,1,'QAT is able to aggregate across different products (different pack sizes, products, etc.), by utilizing Equivalency Units, which are mapped to different forecasting units. View under Realm Masters > Products > Equivalency Units. Realm-level mappings are available to all users. Program admins can also create program-specific mappings.');-- en
20+
INSERT INTO ap_static_label_languages VALUES(NULL,@MAX,2,'QAT est capable d''agréger différents produits (différentes tailles de conditionnement, produits, etc.), en utilisant des unités d''équivalence, qui sont mappées à différentes unités de prévision. Voir sous Maîtres de domaine > Produits > Unités d''équivalence. Les mappages au niveau du domaine sont disponibles pour tous les utilisateurs. Les administrateurs de programme peuvent également créer des mappages spécifiques au programme.');-- fr
21+
INSERT INTO ap_static_label_languages VALUES(NULL,@MAX,3,'QAT puede agregar diferentes productos (diferentes tamaños de envases, productos, etc.), utilizando unidades de equivalencia, que están mapeadas a diferentes unidades de pronóstico. Ver en Maestros de Dominio > Productos > Unidades de Equivalencia. Los mapeos a nivel de dominio están disponibles para todos los usuarios. Los administradores de programas también pueden crear mapeos específicos del programa.');-- sp
22+
INSERT INTO ap_static_label_languages VALUES(NULL,@MAX,4,'O QAT é capaz de agregar diferentes produtos (diferentes tamanhos de embalagens, produtos, etc.), utilizando Unidades de Equivalência, que são mapeadas para diferentes unidades de previsão. Veja em Mestres de Domínio > Produtos > Unidades de Equivalência. Os mapeamentos de nível de domínio estão disponíveis para todos os usuários. Os administradores de programas também podem criar mapeamentos específicos do programa.');-- pr
23+
24+
INSERT INTO `fasp`.`ap_static_label`(`STATIC_LABEL_ID`,`LABEL_CODE`,`ACTIVE`) VALUES ( NULL,'static.report.showPUsInAllProgram','1');
25+
SELECT MAX(l.STATIC_LABEL_ID) INTO @MAX FROM ap_static_label l ;
26+
INSERT INTO ap_static_label_languages VALUES(NULL,@MAX,1,'Only show PUs available in ALL programs');-- en
27+
INSERT INTO ap_static_label_languages VALUES(NULL,@MAX,2,'Afficher uniquement les PU disponibles dans TOUS les programmes');-- fr
28+
INSERT INTO ap_static_label_languages VALUES(NULL,@MAX,3,'Mostrar solo las PU disponibles en TODOS los programas');-- sp
29+
INSERT INTO ap_static_label_languages VALUES(NULL,@MAX,4,'Mostrar apenas as PUs disponíveis em TODOS os programas');-- pr
30+
331

432
USE `fasp`;
533
DROP procedure IF EXISTS `stockStatusMatrixGlobal`;
@@ -10,7 +38,7 @@ DROP procedure IF EXISTS `fasp`.`stockStatusMatrixGlobal`;
1038

1139
DELIMITER $$
1240
USE `fasp`$$
13-
CREATE DEFINER=`faspUser`@`localhost` PROCEDURE `stockStatusMatrixGlobal`(VAR_START_DATE DATE, VAR_STOP_DATE DATE, VAR_REALM_COUNTRY_IDS TEXT, VAR_PROGRAM_IDS TEXT, VAR_VERSION_ID INT(10), VAR_EQUIVALENCY_UNIT_ID INT(10), VAR_PLANNING_UNIT_IDS TEXT, VAR_STOCK_STATUS_CONDITIONS TEXT, VAR_REMOVE_PLANNED_SHIPMENTS TINYINT(1), VAR_REPORT_VIEW INT(10))
41+
CREATE DEFINER=`faspUser`@`%` PROCEDURE `stockStatusMatrixGlobal`(VAR_START_DATE DATE, VAR_STOP_DATE DATE, VAR_REALM_COUNTRY_IDS TEXT, VAR_PROGRAM_IDS TEXT, VAR_VERSION_ID INT(10), VAR_EQUIVALENCY_UNIT_ID INT(10), VAR_PLANNING_UNIT_IDS TEXT, VAR_STOCK_STATUS_CONDITIONS TEXT, VAR_REMOVE_PLANNED_SHIPMENTS TINYINT(1), VAR_REPORT_VIEW INT(10))
1442
BEGIN
1543

1644
-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -76,7 +104,9 @@ BEGIN
76104
`MIN_MONTHS_OF_STOCK` int unsigned DEFAULT NULL,
77105
`REORDER_FREQUENCY_IN_MONTHS` int unsigned COMMENT 'Min number of months of stock that we should have before triggering a reorder',
78106
`MIN_STOCK_QTY` decimal(24,8) DEFAULT NULL,
107+
`MIN_STOCK_MOS` decimal(24,8) DEFAULT NULL,
79108
`MAX_STOCK_QTY` decimal(24,8) DEFAULT NULL,
109+
`MAX_STOCK_MOS` decimal(24,8) DEFAULT NULL,
80110
`CLOSING_BALANCE` decimal(24,8) DEFAULT NULL,
81111
`MOS` decimal(24,8) DEFAULT NULL,
82112
`SHIPMENT_QTY` decimal(28,8) DEFAULT NULL,
@@ -93,7 +123,7 @@ BEGIN
93123
INSERT INTO tmp_amc
94124
SELECT
95125
amc.TRANS_DATE, p.PROGRAM_ID, p.REALM_COUNTRY_ID,
96-
amc.PLANNING_UNIT_ID, ppu.PLAN_BASED_ON, ppu.MIN_MONTHS_OF_STOCK, ppu.REORDER_FREQUENCY_IN_MONTHS, amc.MIN_STOCK_QTY, amc.MAX_STOCK_QTY,
126+
amc.PLANNING_UNIT_ID, ppu.PLAN_BASED_ON, ppu.MIN_MONTHS_OF_STOCK, ppu.REORDER_FREQUENCY_IN_MONTHS, amc.MIN_STOCK_QTY, amc.MIN_STOCK_MOS, amc.MAX_STOCK_QTY, amc.MAX_STOCK_MOS,
97127
CASE @varRemovePlannedShipments WHEN 0 THEN amc.CLOSING_BALANCE WHEN 1 THEN amc.CLOSING_BALANCE_WPS WHEN 2 THEN amc.CLOSING_BALANCE_WTBDPS END `CLOSING_BALANCE`,
98128
CASE @varRemovePlannedShipments WHEN 0 THEN amc.MOS WHEN 1 THEN amc.MOS_WPS WHEN 2 THEN amc.MOS_WTBDPS END `MOS`,
99129
CASE @varRemovePlannedShipments WHEN 0 THEN amc.SHIPMENT_QTY WHEN 1 THEN amc.SHIPMENT_QTY-amc.MANUAL_PLANNED_SHIPMENT_QTY-amc.ERP_PLANNED_SHIPMENT_QTY WHEN 2 THEN amc.SHIPMENT_QTY-amc.MANUAL_PLANNED_SHIPMENT_QTY-amc.ERP_PLANNED_SHIPMENT_QTY+amc.MANUAL_PLANNED_SHIPMENT_WTBD_QTY+amc.ERP_PLANNED_SHIPMENT_WTBD_QTY END `SHIPMENT_QTY`,
@@ -132,21 +162,21 @@ BEGIN
132162
IF(@varReportView=1, amc.PROGRAM_ID, amc.REALM_COUNTRY_ID) `ID`,
133163
amc.TRANS_DATE, SUM(amc.AMC*amc.CONVERSION) `AMC`,
134164
GROUP_CONCAT(DISTINCT amc.PLANNING_UNIT_ID) `PLANNING_UNIT_IDS`,
135-
CASE WHEN COUNT(amc.MOS)=COUNT(*) THEN SUM(amc.MOS) ELSE null END `MOS`,
165+
SUM(amc.CLOSING_BALANCE*amc.CONVERSION)/SUM(amc.AMC*amc.CONVERSION) `MOS`,
136166
IF(SUM(amc.PLAN_BASED_ON)/COUNT(amc.PLAN_BASED_ON)=1,1,2) `PLAN_BASED_ON`,
137167
IF(
138168
SUM(amc.PLAN_BASED_ON)/COUNT(amc.PLAN_BASED_ON)=1,
139169
CASE
140-
WHEN CASE WHEN COUNT(amc.MOS)=COUNT(*) THEN SUM(amc.MOS) ELSE null END IS NULL THEN -1
141-
WHEN CASE WHEN COUNT(amc.MOS)=COUNT(*) THEN SUM(amc.MOS) ELSE null END = 0 THEN 0
142-
WHEN CASE WHEN COUNT(amc.MOS)=COUNT(*) THEN SUM(amc.MOS) ELSE null END < SUM(amc.MIN_MONTHS_OF_STOCK) THEN 1
143-
WHEN CASE WHEN COUNT(amc.MOS)=COUNT(*) THEN SUM(amc.MOS) ELSE null END <= SUM(amc.MIN_MONTHS_OF_STOCK+amc.REORDER_FREQUENCY_IN_MONTHS) THEN 2
170+
WHEN SUM(amc.CLOSING_BALANCE*amc.CONVERSION)/SUM(amc.AMC*amc.CONVERSION) IS NULL THEN 4
171+
WHEN SUM(amc.CLOSING_BALANCE*amc.CONVERSION)/SUM(amc.AMC*amc.CONVERSION) = 0 THEN 0
172+
WHEN SUM(amc.CLOSING_BALANCE*amc.CONVERSION)/SUM(amc.AMC*amc.CONVERSION) < AVG(amc.MIN_STOCK_MOS) THEN 1
173+
WHEN SUM(amc.CLOSING_BALANCE*amc.CONVERSION)/SUM(amc.AMC*amc.CONVERSION) <= AVG(amc.MAX_STOCK_MOS) THEN 2
144174
ELSE 3
145175
END,
146176
CASE
147-
WHEN SUM(amc.CLOSING_BALANCE)=0 THEN 0
148-
WHEN SUM(amc.CLOSING_BALANCE)<SUM(amc.MIN_STOCK_QTY) THEN 1
149-
WHEN SUM(amc.CLOSING_BALANCE)<=SUM(amc.MAX_STOCK_QTY) THEN 2
177+
WHEN SUM(amc.CLOSING_BALANCE*amc.CONVERSION)=0 THEN 0
178+
WHEN SUM(amc.CLOSING_BALANCE*amc.CONVERSION)<AVG(amc.MIN_STOCK_QTY) THEN 1
179+
WHEN SUM(amc.CLOSING_BALANCE*amc.CONVERSION)<=AVG(amc.MAX_STOCK_QTY) THEN 2
150180
ELSE 3
151181
END
152182
) `STOCK_STATUS_ID`,
@@ -155,7 +185,7 @@ BEGIN
155185
SUM(amc.SHIPMENT_QTY*amc.CONVERSION) `SHIPMENT_QTY`,
156186
SUM(amc.EXPIRED_STOCK_QTY*amc.CONVERSION) `EXPIRED_STOCK_QTY`
157187
FROM tmp_amc amc
158-
group by amc.TRANS_DATE, IF(@reportView=1, amc.PROGRAM_ID, amc.REALM_COUNTRY_ID);
188+
group by amc.TRANS_DATE, IF(@varReportView=1, amc.PROGRAM_ID, amc.REALM_COUNTRY_ID);
159189

160190
SET @sqlString = "";
161191
SET @sqlString = CONCAT(@sqlString, "SELECT ");

src/main/resources/storedProcedures/stockStatusMatrixGlobal.sql

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,9 @@ BEGIN
6464
`MIN_MONTHS_OF_STOCK` int unsigned DEFAULT NULL,
6565
`REORDER_FREQUENCY_IN_MONTHS` int unsigned COMMENT 'Min number of months of stock that we should have before triggering a reorder',
6666
`MIN_STOCK_QTY` decimal(24,8) DEFAULT NULL,
67+
`MIN_STOCK_MOS` decimal(24,8) DEFAULT NULL,
6768
`MAX_STOCK_QTY` decimal(24,8) DEFAULT NULL,
69+
`MAX_STOCK_MOS` decimal(24,8) DEFAULT NULL,
6870
`CLOSING_BALANCE` decimal(24,8) DEFAULT NULL,
6971
`MOS` decimal(24,8) DEFAULT NULL,
7072
`SHIPMENT_QTY` decimal(28,8) DEFAULT NULL,
@@ -81,7 +83,7 @@ BEGIN
8183
INSERT INTO tmp_amc
8284
SELECT
8385
amc.TRANS_DATE, p.PROGRAM_ID, p.REALM_COUNTRY_ID,
84-
amc.PLANNING_UNIT_ID, ppu.PLAN_BASED_ON, ppu.MIN_MONTHS_OF_STOCK, ppu.REORDER_FREQUENCY_IN_MONTHS, amc.MIN_STOCK_QTY, amc.MAX_STOCK_QTY,
86+
amc.PLANNING_UNIT_ID, ppu.PLAN_BASED_ON, ppu.MIN_MONTHS_OF_STOCK, ppu.REORDER_FREQUENCY_IN_MONTHS, amc.MIN_STOCK_QTY, amc.MIN_STOCK_MOS, amc.MAX_STOCK_QTY, amc.MAX_STOCK_MOS,
8587
CASE @varRemovePlannedShipments WHEN 0 THEN amc.CLOSING_BALANCE WHEN 1 THEN amc.CLOSING_BALANCE_WPS WHEN 2 THEN amc.CLOSING_BALANCE_WTBDPS END `CLOSING_BALANCE`,
8688
CASE @varRemovePlannedShipments WHEN 0 THEN amc.MOS WHEN 1 THEN amc.MOS_WPS WHEN 2 THEN amc.MOS_WTBDPS END `MOS`,
8789
CASE @varRemovePlannedShipments WHEN 0 THEN amc.SHIPMENT_QTY WHEN 1 THEN amc.SHIPMENT_QTY-amc.MANUAL_PLANNED_SHIPMENT_QTY-amc.ERP_PLANNED_SHIPMENT_QTY WHEN 2 THEN amc.SHIPMENT_QTY-amc.MANUAL_PLANNED_SHIPMENT_QTY-amc.ERP_PLANNED_SHIPMENT_QTY+amc.MANUAL_PLANNED_SHIPMENT_WTBD_QTY+amc.ERP_PLANNED_SHIPMENT_WTBD_QTY END `SHIPMENT_QTY`,
@@ -120,21 +122,21 @@ BEGIN
120122
IF(@varReportView=1, amc.PROGRAM_ID, amc.REALM_COUNTRY_ID) `ID`,
121123
amc.TRANS_DATE, SUM(amc.AMC*amc.CONVERSION) `AMC`,
122124
GROUP_CONCAT(DISTINCT amc.PLANNING_UNIT_ID) `PLANNING_UNIT_IDS`,
123-
CASE WHEN COUNT(amc.MOS)=COUNT(*) THEN SUM(amc.MOS) ELSE null END `MOS`,
125+
SUM(amc.CLOSING_BALANCE*amc.CONVERSION)/SUM(amc.AMC*amc.CONVERSION) `MOS`,
124126
IF(SUM(amc.PLAN_BASED_ON)/COUNT(amc.PLAN_BASED_ON)=1,1,2) `PLAN_BASED_ON`,
125127
IF(
126128
SUM(amc.PLAN_BASED_ON)/COUNT(amc.PLAN_BASED_ON)=1,
127129
CASE
128-
WHEN CASE WHEN COUNT(amc.MOS)=COUNT(*) THEN SUM(amc.MOS) ELSE null END IS NULL THEN -1
129-
WHEN CASE WHEN COUNT(amc.MOS)=COUNT(*) THEN SUM(amc.MOS) ELSE null END = 0 THEN 0
130-
WHEN CASE WHEN COUNT(amc.MOS)=COUNT(*) THEN SUM(amc.MOS) ELSE null END < SUM(amc.MIN_MONTHS_OF_STOCK) THEN 1
131-
WHEN CASE WHEN COUNT(amc.MOS)=COUNT(*) THEN SUM(amc.MOS) ELSE null END <= SUM(amc.MIN_MONTHS_OF_STOCK+amc.REORDER_FREQUENCY_IN_MONTHS) THEN 2
130+
WHEN SUM(amc.CLOSING_BALANCE*amc.CONVERSION)/SUM(amc.AMC*amc.CONVERSION) IS NULL THEN 4
131+
WHEN SUM(amc.CLOSING_BALANCE*amc.CONVERSION)/SUM(amc.AMC*amc.CONVERSION) = 0 THEN 0
132+
WHEN SUM(amc.CLOSING_BALANCE*amc.CONVERSION)/SUM(amc.AMC*amc.CONVERSION) < AVG(amc.MIN_STOCK_MOS) THEN 1
133+
WHEN SUM(amc.CLOSING_BALANCE*amc.CONVERSION)/SUM(amc.AMC*amc.CONVERSION) <= AVG(amc.MAX_STOCK_MOS) THEN 2
132134
ELSE 3
133135
END,
134136
CASE
135-
WHEN SUM(amc.CLOSING_BALANCE)=0 THEN 0
136-
WHEN SUM(amc.CLOSING_BALANCE)<SUM(amc.MIN_STOCK_QTY) THEN 1
137-
WHEN SUM(amc.CLOSING_BALANCE)<=SUM(amc.MAX_STOCK_QTY) THEN 2
137+
WHEN SUM(amc.CLOSING_BALANCE*amc.CONVERSION)=0 THEN 0
138+
WHEN SUM(amc.CLOSING_BALANCE*amc.CONVERSION)<AVG(amc.MIN_STOCK_QTY) THEN 1
139+
WHEN SUM(amc.CLOSING_BALANCE*amc.CONVERSION)<=AVG(amc.MAX_STOCK_QTY) THEN 2
138140
ELSE 3
139141
END
140142
) `STOCK_STATUS_ID`,
@@ -143,7 +145,7 @@ BEGIN
143145
SUM(amc.SHIPMENT_QTY*amc.CONVERSION) `SHIPMENT_QTY`,
144146
SUM(amc.EXPIRED_STOCK_QTY*amc.CONVERSION) `EXPIRED_STOCK_QTY`
145147
FROM tmp_amc amc
146-
group by amc.TRANS_DATE, IF(@reportView=1, amc.PROGRAM_ID, amc.REALM_COUNTRY_ID);
148+
group by amc.TRANS_DATE, IF(@varReportView=1, amc.PROGRAM_ID, amc.REALM_COUNTRY_ID);
147149

148150
SET @sqlString = "";
149151
SET @sqlString = CONCAT(@sqlString, "SELECT ");

0 commit comments

Comments
 (0)