6974-sale_add #2452

Merged
carlosap merged 2 commits from 6974-sale_add into master 2024-05-14 15:06:36 +00:00
1 changed files with 44 additions and 52 deletions

View File

@ -1,7 +1,8 @@
DELIMITER $$ DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `bs`.`sale_add`( CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `bs`.`sale_add`(
IN vStarted DATE, IN vStarted DATE,
IN vEnded DATE) IN vEnded DATE
)
BEGIN BEGIN
/** /**
* Añade las ventas que se realizaron entre 2 fechas a la tabla bs.sale * Añade las ventas que se realizaron entre 2 fechas a la tabla bs.sale
@ -10,21 +11,13 @@ BEGIN
* @param vEnded Fecha de fin * @param vEnded Fecha de fin
* *
*/ */
DECLARE vLoopDate DATE;
DECLARE vLoopDateTime DATETIME;
IF vStarted < (util.VN_CURDATE() - INTERVAL 5 YEAR) OR vStarted > vEnded THEN IF vStarted < (util.VN_CURDATE() - INTERVAL 5 YEAR) OR vStarted > vEnded THEN
CALL util.throw('Wrong date'); CALL util.throw('Wrong date');
END IF; END IF;
SET vLoopDate = vStarted;
DELETE FROM sale DELETE FROM sale
WHERE dated BETWEEN vStarted AND vEnded; WHERE dated BETWEEN vStarted AND vEnded;
WHILE vLoopDate <= vEnded DO
SET vLoopDateTime = util.dayEnd(vLoopDate);
REPLACE sale( REPLACE sale(
saleFk, saleFk,
amount, amount,
@ -36,14 +29,14 @@ BEGIN
margin margin
)WITH calculatedSales AS( )WITH calculatedSales AS(
SELECT s.id saleFk, SELECT s.id saleFk,
SUM(IF(ct.isBase, s.quantity * sc.value, 0)) amount, CAST(SUM(IF(ct.isBase, s.quantity * sc.value, 0)) AS DECIMAL(10, 3)) amount,
SUM(IF(ct.isBase, 0, s.quantity * sc.value)) surcharge, CAST(SUM(IF(ct.isBase, 0, s.quantity * sc.value)) AS DECIMAL(10, 3)) surcharge,
s.total pvp, s.total,
DATE(t.shipped) dated, DATE(t.shipped) dated,
i.typeFk, i.typeFk,
t.clientFk, t.clientFk,
t.companyFk, t.companyFk,
SUM(IF(ct.isMargin, s.quantity * sc.value, 0 )) marginComponents CAST(SUM(IF(ct.isMargin, s.quantity * sc.value, 0 )) AS DECIMAL(10, 3)) marginComponents
FROM vn.ticket t FROM vn.ticket t
STRAIGHT_JOIN vn.sale s ON s.ticketFk = t.id STRAIGHT_JOIN vn.sale s ON s.ticketFk = t.id
JOIN vn.item i ON i.id = s.itemFk JOIN vn.item i ON i.id = s.itemFk
@ -52,7 +45,7 @@ BEGIN
JOIN vn.saleComponent sc ON sc.saleFk = s.id JOIN vn.saleComponent sc ON sc.saleFk = s.id
JOIN vn.component c ON c.id = sc.componentFk JOIN vn.component c ON c.id = sc.componentFk
JOIN vn.componentType ct ON ct.id = c.typeFk JOIN vn.componentType ct ON ct.id = c.typeFk
WHERE t.shipped BETWEEN vLoopDate AND vLoopDateTime WHERE t.shipped BETWEEN vStarted AND vEnded
AND s.quantity <> 0 AND s.quantity <> 0
AND ic.merchandise AND ic.merchandise
GROUP BY s.id GROUP BY s.id
@ -63,10 +56,9 @@ BEGIN
typeFk, typeFk,
clientFk, clientFk,
companyFk, companyFk,
marginComponents + amount + surcharge - pvp IF (marginComponents IS NULL,
0,
CAST(marginComponents + amount + surcharge - total AS DECIMAL(10, 3)))
FROM calculatedSales; FROM calculatedSales;
SET vLoopDate = vLoopDate + INTERVAL 1 DAY;
END WHILE;
END$$ END$$
DELIMITER ; DELIMITER ;