47 lines
1.3 KiB
MySQL
47 lines
1.3 KiB
MySQL
|
DELIMITER $$
|
||
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `bs`.`salesByclientSalesPerson_add`(vDatedFrom DATE)
|
||
|
BEGIN
|
||
|
/**
|
||
|
* Agrupa las ventas por cliente/comercial/fecha en la tabla bs.salesByclientSalesPerson
|
||
|
* El asociación cliente/comercial/fecha, se mantiene correcta en el tiempo
|
||
|
*
|
||
|
* @param vDatedFrom el cálculo se realizará desde la fecha introducida hasta ayer
|
||
|
*/
|
||
|
|
||
|
IF vDatedFrom IS NULL THEN
|
||
|
SET vDatedFrom = util.VN_CURDATE() - INTERVAL 1 MONTH;
|
||
|
END IF;
|
||
|
|
||
|
UPDATE salesByclientSalesPerson
|
||
|
SET amount = 0,
|
||
|
equalizationTax = 0,
|
||
|
amountNewBorn = 0
|
||
|
WHERE dated BETWEEN vDatedFrom AND util.yesterday();
|
||
|
|
||
|
INSERT INTO salesByclientSalesPerson(
|
||
|
dated,
|
||
|
salesPersonFk,
|
||
|
clientFk,
|
||
|
amount,
|
||
|
equalizationTax)
|
||
|
SELECT s.dated,
|
||
|
c.salesPersonFk,
|
||
|
s.clientFk,
|
||
|
SUM(s.amount),
|
||
|
SUM(s.surcharge)
|
||
|
FROM sale s
|
||
|
JOIN vn.client c on s.clientFk = c.id
|
||
|
WHERE s.dated BETWEEN vDatedFrom AND util.yesterday()
|
||
|
GROUP BY s.dated, c.salesPersonFk, s.clientFk
|
||
|
ON DUPLICATE KEY UPDATE amount= VALUES(amount),
|
||
|
equalizationTax= VALUES(equalizationTax);
|
||
|
|
||
|
UPDATE salesByclientSalesPerson s
|
||
|
JOIN vn.newBornSales n ON n.dated = s.dated AND
|
||
|
n.clientFk = s.clientFk
|
||
|
SET s.amountNewBorn = n.amount
|
||
|
WHERE n.dated BETWEEN vDatedFrom AND util.yesterday();
|
||
|
|
||
|
END$$
|
||
|
DELIMITER ;
|