67 lines
1.5 KiB
MySQL
67 lines
1.5 KiB
MySQL
|
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 ;
|