2024-05-27 14:27:12 +00:00
|
|
|
DELIMITER $$
|
|
|
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `bs`.`salesDepartmentEvolution_add`()
|
|
|
|
BEGIN
|
|
|
|
/**
|
2025-01-22 09:13:27 +00:00
|
|
|
* Calcula los datos para los gráficos de evolución agrupado por departmentFk y día.
|
2024-05-27 14:27:12 +00:00
|
|
|
* Recalcula automáticamente los 3 últimos meses para comprobar si hay algún cambio.
|
|
|
|
*/
|
|
|
|
DECLARE vDated DATE;
|
|
|
|
|
2025-01-22 09:13:27 +00:00
|
|
|
SELECT MAX(dated) - INTERVAL 3 MONTH INTO vDated
|
2024-05-27 14:27:12 +00:00
|
|
|
FROM salesDepartmentEvolution;
|
|
|
|
|
2025-01-22 09:13:27 +00:00
|
|
|
DELETE FROM salesDepartmentEvolution
|
2024-05-27 14:27:12 +00:00
|
|
|
WHERE dated >= vDated;
|
|
|
|
|
|
|
|
IF ISNULL(vDated) THEN
|
2025-01-22 09:13:27 +00:00
|
|
|
SELECT MIN(dated) INTO vDated
|
2024-05-27 14:27:12 +00:00
|
|
|
FROM salesByClientDepartment;
|
2025-01-22 09:13:27 +00:00
|
|
|
|
2024-05-27 14:27:12 +00:00
|
|
|
INSERT INTO salesByClientDepartment(
|
2025-01-22 09:13:27 +00:00
|
|
|
departmentFk,
|
|
|
|
dated,
|
|
|
|
amount,
|
|
|
|
equalizationTax,
|
2024-05-27 14:27:12 +00:00
|
|
|
amountNewBorn
|
|
|
|
)
|
2025-01-22 09:13:27 +00:00
|
|
|
SELECT departmentFk,
|
|
|
|
dated,
|
|
|
|
amount,
|
|
|
|
equalizationTax,
|
2024-05-27 14:27:12 +00:00
|
|
|
amountNewBorn
|
2025-01-22 09:13:27 +00:00
|
|
|
FROM salesByClientDepartment
|
2024-05-27 14:27:12 +00:00
|
|
|
WHERE dated = vDated
|
2025-01-22 09:13:27 +00:00
|
|
|
GROUP BY departmentFk;
|
2024-05-27 14:27:12 +00:00
|
|
|
|
|
|
|
SET vDated = vDated + INTERVAL 1 DAY;
|
|
|
|
END IF;
|
|
|
|
|
|
|
|
WHILE vDated < util.VN_CURDATE() DO
|
2025-01-22 09:13:27 +00:00
|
|
|
|
|
|
|
REPLACE salesByClientDepartment(departmentFk, dated, amount)
|
|
|
|
SELECT departmentFk, vDated, amount
|
|
|
|
FROM(SELECT departmentFk, SUM(amount) amount
|
|
|
|
FROM(SELECT departmentFk, amount
|
|
|
|
FROM salesByClientDepartment
|
2024-05-27 14:27:12 +00:00
|
|
|
WHERE dated = vDated - INTERVAL 1 DAY
|
|
|
|
UNION ALL
|
2025-01-22 09:13:27 +00:00
|
|
|
SELECT departmentFk, amount
|
|
|
|
FROM salesByClientDepartment
|
2024-05-27 14:27:12 +00:00
|
|
|
WHERE dated = vDated
|
|
|
|
UNION ALL
|
2025-01-22 09:13:27 +00:00
|
|
|
SELECT departmentFk, - amount
|
|
|
|
FROM salesByClientDepartment
|
2024-05-27 14:27:12 +00:00
|
|
|
WHERE dated = vDated - INTERVAL 1 YEAR
|
|
|
|
)sub
|
2025-01-22 09:13:27 +00:00
|
|
|
GROUP BY departmentFk
|
2024-05-27 14:27:12 +00:00
|
|
|
)sub
|
2025-01-22 09:13:27 +00:00
|
|
|
GROUP BY departmentFk;
|
2024-05-27 14:27:12 +00:00
|
|
|
|
|
|
|
SET vDated = vDated + INTERVAL 1 DAY;
|
|
|
|
|
|
|
|
END WHILE;
|
|
|
|
END$$
|
|
|
|
DELIMITER ;
|