60 lines
1.5 KiB
SQL
60 lines
1.5 KiB
SQL
DELIMITER $$
|
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`comparative_add`()
|
|
BEGIN
|
|
/**
|
|
* Inserts sales records less than one month old in comparative.
|
|
*/
|
|
DECLARE vMaxPeriod INT;
|
|
DECLARE vPeriod INT;
|
|
DECLARE vWeek INT;
|
|
DECLARE vConfigPeriod INT;
|
|
DECLARE vConfigWeek INT;
|
|
|
|
SELECT period, week INTO vConfigPeriod, vConfigWeek
|
|
FROM comparativeAddConfig;
|
|
|
|
SELECT IFNULL(MAX(timePeriod), 0) INTO vMaxPeriod
|
|
FROM comparative;
|
|
|
|
SELECT period - vConfigPeriod,
|
|
week
|
|
INTO vPeriod,
|
|
vWeek
|
|
FROM `time`
|
|
WHERE dated = util.VN_CURDATE();
|
|
|
|
IF vMaxPeriod < vPeriod AND vWeek > vConfigWeek THEN
|
|
DELETE FROM comparative WHERE timePeriod BETWEEN vMaxPeriod AND vPeriod;
|
|
|
|
INSERT INTO comparative(
|
|
timePeriod,
|
|
itemFk,
|
|
warehouseFk,
|
|
quantity,
|
|
price,
|
|
countryFk
|
|
)
|
|
SELECT tm.period,
|
|
s.itemFk,
|
|
t.warehouseFk,
|
|
sum(s.quantity),
|
|
sum(v.importe),
|
|
p.countryFk
|
|
FROM bs.ventas v
|
|
JOIN time tm ON tm.dated = v.fecha
|
|
JOIN sale s ON s.id = v.Id_Movimiento
|
|
JOIN itemType tp ON tp.id = v.tipo_id
|
|
JOIN itemCategory ic ON ic.id = tp.categoryFk
|
|
JOIN ticket t ON t.id = s.ticketFk
|
|
JOIN client c ON c.id = t.clientFk
|
|
JOIN warehouse w ON w.id = t.warehouseFk
|
|
JOIN address ad ON ad.id = t.addressFk
|
|
LEFT JOIN province p ON p.id = ad.provinceFk
|
|
WHERE tm.period BETWEEN vMaxPeriod AND vPeriod
|
|
AND c.typeFk <> 'loses'
|
|
AND NOT w.code = 'inv'
|
|
GROUP BY p.countryFk, s.itemFk, tm.period, t.warehouseFk;
|
|
END IF;
|
|
END$$
|
|
DELIMITER ;
|