From 9667d31441fe8b1beff0ad33d49f8092b5dcd030 Mon Sep 17 00:00:00 2001 From: robert Date: Wed, 27 Mar 2024 17:00:27 +0100 Subject: [PATCH] feat: refs #7150 --- .../bi/procedures/greuge_dif_porte_add.sql | 60 ++++++++++--------- .../10971-turquoiseRuscus/00-firstScript.sql | 5 ++ 2 files changed, 37 insertions(+), 28 deletions(-) create mode 100644 db/versions/10971-turquoiseRuscus/00-firstScript.sql diff --git a/db/routines/bi/procedures/greuge_dif_porte_add.sql b/db/routines/bi/procedures/greuge_dif_porte_add.sql index 02bd9eae4..09cdfe076 100644 --- a/db/routines/bi/procedures/greuge_dif_porte_add.sql +++ b/db/routines/bi/procedures/greuge_dif_porte_add.sql @@ -1,8 +1,14 @@ DELIMITER $$ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `bi`.`greuge_dif_porte_add`() BEGIN - DECLARE datSTART DATETIME DEFAULT TIMESTAMPADD(DAY,-60,util.VN_CURDATE()); -- '2019-07-01' - DECLARE datEND DATETIME DEFAULT TIMESTAMPADD(DAY,-1,util.VN_CURDATE()); + DECLARE vDateStarted DATETIME; + DECLARE vDateEnded DATETIME DEFAULT TIMESTAMPADD(DAY,-1,util.VN_CURDATE()); + DECLARE vDaysSinceLastRecalculation INT; + + SELECT daysSinceLastRecalculation INTO vDaysSinceLastRecalculation + FROM vn.greugeConfig; + + SET vDateStarted = TIMESTAMPADD(DAY, -vDaysSinceLastRecalculation, util.VN_CURDATE()); DROP TEMPORARY TABLE IF EXISTS tmp.dp; @@ -14,19 +20,17 @@ BEGIN SUM((t.zonePrice - t.zoneBonus) * ebv.ratio) AS teorico, 00000.00 as practico, 00000.00 as greuge, - t.clientFk, - t.shipped - FROM - vn.ticket t + t.clientFk, + t.shipped + FROM vn.ticket t JOIN vn2008.Clientes cli ON cli.Id_cliente = t.clientFk LEFT JOIN vn.expedition e ON e.ticketFk = t.id JOIN vn.expeditionBoxVol ebv ON ebv.boxFk = e.freightItemFk JOIN vn.zone z ON t.zoneFk = z.id - WHERE - t.shipped between datSTART AND datEND - AND cli.`real` - AND t.companyFk IN (442 , 567) - AND z.isVolumetric = FALSE + WHERE t.shipped between vDateStarted AND vDateEnded + AND cli.`real` + AND t.companyFk IN (442 , 567) + AND z.isVolumetric = FALSE GROUP BY t.id; -- Agencias que cobran por volumen @@ -35,11 +39,11 @@ BEGIN SUM(IFNULL(sv.freight,0)) AS teorico, 00000.00 as practico, 00000.00 as greuge, - sv.clientFk, - sv.shipped + sv.clientFk, + sv.shipped FROM vn.saleVolume sv - JOIN vn.zone z ON z.id = sv.zoneFk - AND sv.shipped BETWEEN datSTART AND datEND + JOIN vn.zone z ON z.id = sv.zoneFk + AND sv.shipped BETWEEN vDateStarted AND vDateEnded AND z.isVolumetric != FALSE GROUP BY sv.ticketFk; @@ -49,11 +53,11 @@ BEGIN (PRIMARY KEY (ticketFk)) ENGINE = MEMORY SELECT dp.ticketFk, sum(Cantidad * Valor) as valor - FROM tmp.dp - JOIN vn2008.Movimientos m ON m.Id_Ticket = dp.ticketFk - JOIN vn2008.Movimientos_componentes mc using(Id_Movimiento) - WHERE mc.Id_Componente = 15 - GROUP BY dp.ticketFk; + FROM tmp.dp + JOIN vn2008.Movimientos m ON m.Id_Ticket = dp.ticketFk + JOIN vn2008.Movimientos_componentes mc using(Id_Movimiento) + WHERE mc.Id_Componente = 15 + GROUP BY dp.ticketFk; UPDATE tmp.dp JOIN tmp.dp_aux USING(ticketFk) @@ -75,17 +79,17 @@ BEGIN SET greuge = IFNULL(Importe,0); INSERT INTO vn.greuge (clientFk,description,amount,shipped,greugeTypeFk,ticketFk) - SELECT dp.clientFk - , concat('dif_porte ', dp.ticketFk) - , round(IFNULL(dp.teorico,0) - IFNULL(dp.practico,0) - IFNULL(dp.greuge,0),2) as Importe - , date(dp.shipped) - , 1 - ,dp.ticketFk + SELECT dp.clientFk, + concat('dif_porte ', dp.ticketFk), + round(IFNULL(dp.teorico,0) - IFNULL(dp.practico,0) - IFNULL(dp.greuge,0),2) as Importe, + date(dp.shipped), + 1, + dp.ticketFk FROM tmp.dp - JOIN vn.client c ON c.id = dp.clientFk + JOIN vn.client c ON c.id = dp.clientFk WHERE ABS(IFNULL(dp.teorico,0) - IFNULL(dp.practico,0) - IFNULL(dp.greuge,0)) > 1 AND c.isRelevant; - + DROP TEMPORARY TABLE tmp.dp, tmp.dp_aux; diff --git a/db/versions/10971-turquoiseRuscus/00-firstScript.sql b/db/versions/10971-turquoiseRuscus/00-firstScript.sql new file mode 100644 index 000000000..39e754563 --- /dev/null +++ b/db/versions/10971-turquoiseRuscus/00-firstScript.sql @@ -0,0 +1,5 @@ +ALTER TABLE IF EXISTS `vn`.`greugeConfig` + ADD COLUMN IF NOT EXISTS `daysSinceLastRecalculation` int(11) NOT NULL; + +INSERT INTO vn.greugeConfig (daysSinceLastRecalculation) + VALUES (15); \ No newline at end of file