6974-sale_add #2452
|
@ -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,63 +11,54 @@ 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
|
REPLACE sale(
|
||||||
SET vLoopDateTime = util.dayEnd(vLoopDate);
|
saleFk,
|
||||||
|
amount,
|
||||||
REPLACE sale(
|
surcharge,
|
||||||
saleFk,
|
dated,
|
||||||
amount,
|
typeFk,
|
||||||
surcharge,
|
clientFk,
|
||||||
dated,
|
companyFk,
|
||||||
typeFk,
|
margin
|
||||||
clientFk,
|
)WITH calculatedSales AS(
|
||||||
companyFk,
|
SELECT s.id saleFk,
|
||||||
margin
|
CAST(SUM(IF(ct.isBase, s.quantity * sc.value, 0)) AS DECIMAL(10, 3)) amount,
|
||||||
)WITH calculatedSales AS(
|
CAST(SUM(IF(ct.isBase, 0, s.quantity * sc.value)) AS DECIMAL(10, 3)) surcharge,
|
||||||
SELECT s.id saleFk,
|
s.total,
|
||||||
SUM(IF(ct.isBase, s.quantity * sc.value, 0)) amount,
|
DATE(t.shipped) dated,
|
||||||
SUM(IF(ct.isBase, 0, s.quantity * sc.value)) surcharge,
|
i.typeFk,
|
||||||
s.total pvp,
|
t.clientFk,
|
||||||
DATE(t.shipped) dated,
|
t.companyFk,
|
||||||
i.typeFk,
|
CAST(SUM(IF(ct.isMargin, s.quantity * sc.value, 0 )) AS DECIMAL(10, 3)) marginComponents
|
||||||
t.clientFk,
|
FROM vn.ticket t
|
||||||
t.companyFk,
|
STRAIGHT_JOIN vn.sale s ON s.ticketFk = t.id
|
||||||
SUM(IF(ct.isMargin, s.quantity * sc.value, 0 )) marginComponents
|
JOIN vn.item i ON i.id = s.itemFk
|
||||||
FROM vn.ticket t
|
JOIN vn.itemType it ON it.id = i.typeFk
|
||||||
STRAIGHT_JOIN vn.sale s ON s.ticketFk = t.id
|
JOIN vn.itemCategory ic ON ic.id = it.categoryFk
|
||||||
JOIN vn.item i ON i.id = s.itemFk
|
JOIN vn.saleComponent sc ON sc.saleFk = s.id
|
||||||
JOIN vn.itemType it ON it.id = i.typeFk
|
JOIN vn.component c ON c.id = sc.componentFk
|
||||||
JOIN vn.itemCategory ic ON ic.id = it.categoryFk
|
JOIN vn.componentType ct ON ct.id = c.typeFk
|
||||||
JOIN vn.saleComponent sc ON sc.saleFk = s.id
|
WHERE t.shipped BETWEEN vStarted AND vEnded
|
||||||
JOIN vn.component c ON c.id = sc.componentFk
|
AND s.quantity <> 0
|
||||||
JOIN vn.componentType ct ON ct.id = c.typeFk
|
AND ic.merchandise
|
||||||
WHERE t.shipped BETWEEN vLoopDate AND vLoopDateTime
|
GROUP BY s.id
|
||||||
AND s.quantity <> 0
|
)SELECT saleFk,
|
||||||
AND ic.merchandise
|
amount,
|
||||||
GROUP BY s.id
|
surcharge,
|
||||||
)SELECT saleFk,
|
dated,
|
||||||
amount,
|
typeFk,
|
||||||
surcharge,
|
clientFk,
|
||||||
dated,
|
companyFk,
|
||||||
typeFk,
|
IF (marginComponents IS NULL,
|
||||||
clientFk,
|
0,
|
||||||
companyFk,
|
CAST(marginComponents + amount + surcharge - total AS DECIMAL(10, 3)))
|
||||||
marginComponents + amount + surcharge - pvp
|
FROM calculatedSales;
|
||||||
FROM calculatedSales;
|
|
||||||
|
|
||||||
SET vLoopDate = vLoopDate + INTERVAL 1 DAY;
|
|
||||||
END WHILE;
|
|
||||||
END$$
|
END$$
|
||||||
DELIMITER ;
|
DELIMITER ;
|
||||||
|
|
Loading…
Reference in New Issue