67 lines
1.5 KiB
SQL
67 lines
1.5 KiB
SQL
DELIMITER $$
|
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `bs`.`compradores_evolution_add`()
|
|
BEGIN
|
|
/**
|
|
* Inserta en la tabla compradores_evolution las ventas acumuladas en los ultimos 365 dias
|
|
*
|
|
*/
|
|
DECLARE vDated DATE;
|
|
DECLARE vCount INT DEFAULT 1;
|
|
|
|
SELECT MAX(fecha) + INTERVAL 1 DAY INTO vDated
|
|
FROM compradores_evolution;
|
|
|
|
IF vDated IS NULL THEN
|
|
|
|
SELECT MIN(dated) INTO vDated
|
|
FROM sale;
|
|
|
|
INSERT INTO compradores_evolution(
|
|
Id_Trabajador,
|
|
fecha,
|
|
importe)
|
|
SELECT it.workerFk,
|
|
vDated,
|
|
SUM(s.amount)
|
|
FROM sale s
|
|
JOIN vn.itemType it ON it.id = s.typeFk
|
|
WHERE s.dated = vDated
|
|
GROUP BY it.workerFk;
|
|
|
|
SET vDated = vDated + INTERVAL 1 DAY;
|
|
END IF;
|
|
|
|
WHILE vDated < util.VN_CURDATE() DO
|
|
|
|
SET vCount = vCount + 1;
|
|
|
|
REPLACE compradores_evolution(
|
|
Id_Trabajador,
|
|
fecha,
|
|
importe)
|
|
SELECT Id_Trabajador,
|
|
vDated,
|
|
SUM(importe)
|
|
FROM(
|
|
SELECT Id_Trabajador, importe
|
|
FROM compradores_evolution
|
|
JOIN (
|
|
SELECT DISTINCT it.workerFk
|
|
FROM vn.itemType it
|
|
)sub2 ON sub2.workerFk = Id_Trabajador
|
|
WHERE fecha = vDated - INTERVAL 1 DAY
|
|
UNION ALL
|
|
SELECT it.workerFk, s.amount * IF(s.dated < vDated, -1, 1)
|
|
FROM sale s
|
|
JOIN vn.itemType it ON it.id = s.typeFk
|
|
JOIN vn.itemCategory ic ON ic.id = it.categoryFk
|
|
WHERE s.dated IN (vDated, vDated - INTERVAL 1 YEAR)
|
|
AND ic.merchandise
|
|
)sub
|
|
GROUP BY Id_Trabajador;
|
|
|
|
SET vDated = vDated + INTERVAL 1 DAY;
|
|
END WHILE;
|
|
END$$
|
|
DELIMITER ;
|