2024-01-15 11:31:03 +00:00
|
|
|
DELIMITER $$
|
2024-05-27 14:27:12 +00:00
|
|
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`clientGreugeSpray`(
|
|
|
|
IN vClientFk INT,
|
|
|
|
IN vIsOnlyForHisOwner BOOL,
|
|
|
|
IN vDepartmentCode VARCHAR(45),
|
|
|
|
IN vWithMana BOOLEAN
|
|
|
|
)
|
2024-01-15 11:31:03 +00:00
|
|
|
BEGIN
|
|
|
|
DECLARE vGreuge DECIMAL(10,2);
|
|
|
|
DECLARE vOwner INT;
|
|
|
|
DECLARE vTotalSale INT;
|
|
|
|
DECLARE vGreugeTypeFk INT DEFAULT 5; -- HERENCIA
|
|
|
|
DECLARE vGreugeTypeMana INT DEFAULT 3;-- Maná
|
|
|
|
DECLARE vMana DECIMAL(10,2);
|
|
|
|
|
2024-05-27 14:27:12 +00:00
|
|
|
SELECT clientGetMana(vClientFk) INTO vMana;
|
2024-01-15 11:31:03 +00:00
|
|
|
|
|
|
|
IF vWithMana AND vMana THEN
|
2024-05-27 14:27:12 +00:00
|
|
|
INSERT INTO greuge
|
|
|
|
SET clientFk = vClientFk,
|
|
|
|
description = 'Desasignación',
|
|
|
|
amount = - vMana,
|
|
|
|
shipped = util.VN_CURDATE(),
|
|
|
|
greugeTypeFk = vGreugeTypeMana;
|
2024-01-15 11:31:03 +00:00
|
|
|
END IF;
|
|
|
|
|
2024-05-27 14:27:12 +00:00
|
|
|
SELECT SUM(amount) INTO vGreuge
|
|
|
|
FROM greuge
|
2024-01-15 11:31:03 +00:00
|
|
|
WHERE clientFk = vClientFk;
|
|
|
|
|
2024-05-27 14:27:12 +00:00
|
|
|
IF vGreuge THEN
|
|
|
|
IF LENGTH(vDepartmentCode) THEN
|
|
|
|
SELECT salesDepartmentFk INTO vOwner
|
|
|
|
FROM client
|
2024-01-15 11:31:03 +00:00
|
|
|
WHERE id = vClientFk;
|
|
|
|
ELSE
|
|
|
|
SELECT id INTO vOwner
|
2024-05-27 14:27:12 +00:00
|
|
|
FROM department
|
|
|
|
WHERE code = vDepartmentCode;
|
|
|
|
END IF;
|
|
|
|
|
|
|
|
IF vOwner IS NULL THEN
|
|
|
|
CALL util.throw('The department is incorrect');
|
2024-01-15 11:31:03 +00:00
|
|
|
END IF;
|
|
|
|
|
2024-05-27 14:27:12 +00:00
|
|
|
INSERT INTO greuge(clientFk, description, amount, shipped, greugeTypeFk)
|
|
|
|
WITH greuges AS(
|
|
|
|
SELECT DISTINCT t.clientFk, FLOOR(cr.yearSale / 12) monthSale
|
2024-01-15 11:31:03 +00:00
|
|
|
FROM vn.ticket t
|
|
|
|
JOIN vn.client c ON c.id = t.clientFk
|
2024-05-27 14:27:12 +00:00
|
|
|
JOIN vn.departmentMana dm ON dm.salesDepartmentFk = c.salesDepartmentFk
|
2024-01-15 11:31:03 +00:00
|
|
|
JOIN vn.claimRatio cr ON cr.clientFk = c.id
|
2024-05-27 14:27:12 +00:00
|
|
|
WHERE dm.salesDepartmentFk = IF(vIsOnlyForHisOwner, vOwner, dm.salesDepartmentFk)
|
|
|
|
AND t.shipped >= util.VN_CURDATE() - INTERVAL 1 MONTH
|
|
|
|
AND c.id <> vClientFk
|
|
|
|
HAVING monthSale > 100
|
|
|
|
), totalGreuge AS(
|
|
|
|
SELECT SUM(monthSale) totalSale FROM greuges
|
|
|
|
)SELECT g.clientFk,
|
|
|
|
CONCAT('Cliente: ', vClientFk),
|
|
|
|
vGreuge * g.monthSale / tgtotalSale,
|
|
|
|
util.VN_CURDATE(),
|
|
|
|
vGreugeTypeFk
|
|
|
|
FROM greuges g
|
|
|
|
JOIN totalGreuge tg
|
2024-01-15 11:31:03 +00:00
|
|
|
UNION ALL
|
2024-05-27 14:27:12 +00:00
|
|
|
SELECT vClientFk,
|
|
|
|
'Reparto greuge',
|
|
|
|
-vGreuge,
|
|
|
|
util.VN_CURDATE(),
|
|
|
|
vGreugeTypeFk;
|
2024-01-15 11:31:03 +00:00
|
|
|
END IF;
|
|
|
|
END$$
|
|
|
|
DELIMITER ;
|