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