salix/db/routines/edi/triggers/putOrder_afterUpdate.sql

76 lines
2.4 KiB
SQL

DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `edi`.`putOrder_afterUpdate`
AFTER UPDATE ON `putOrder`
FOR EACH ROW
BEGIN
DECLARE vSaleFk INT;
DECLARE vOrderStatusDenied INT DEFAULT 3;
DECLARE vOrderStatusOK INT DEFAULT 2;
DECLARE vIsEktSender BOOLEAN;
IF NEW.OrderStatus = vOrderStatusDenied AND NOT (NEW.OrderStatus <=> OLD.OrderStatus) THEN
SELECT s.id INTO vSaleFk
FROM vn.sale s
JOIN vn.ticket t ON s.ticketFk = t.id
JOIN vn.item i ON i.id = s.itemFk
JOIN deliveryInformation di ON di.ID = NEW.deliveryInformationID
WHERE t.clientFk = NEW.EndUserPartyGLN AND t.shipped >= util.VN_CURDATE()
AND i.supplyResponseFk = NEW.supplyResponseID
LIMIT 1;
UPDATE vn.sale s
JOIN vn.ticket t ON s.ticketFk = t.id
JOIN vn.item i ON i.id = s.itemFk
JOIN deliveryInformation di ON di.ID = NEW.deliveryInformationID
SET s.quantity = 0
WHERE t.clientFk = NEW.EndUserPartyGLN AND t.shipped >= util.VN_CURDATE()
AND i.supplyResponseFk = NEW.supplyResponseID;
INSERT INTO vn.mail (sender, `subject`, body)
SELECT IF(u.id IS NOT NULL AND c.email IS NOT NULL,
c.email,
CONCAT(account.user_getNameFromId(c.salesPersonFk), '@verdnatura.es')
),
'Producto no disponible en Floramondo',
CONCAT('El artículo ', s.concept, ' del ticket ', t.id , ' ha sido cancelado por Floramondo. ',
' Se ha actualizado la cantidad de ', OLD.quantity,' a 0. ',
IF (u.id IS NOT NULL AND c.email IS NOT NULL ,
CONCAT('https://shop.verdnatura.es/#!form=ecomerce%2Fticket&ticket=', t.id ),
CONCAT('https://salix.verdnatura.es/#!/ticket/', t.id ,'/summary')))
FROM vn.sale s
JOIN vn.ticket t ON t.id = s.ticketFk
JOIN vn.`client` c ON c.id = t.clientFk
LEFT JOIN account.user u ON u.id= c.salesPersonFk AND u.name IN ('ruben', 'ismaelalcolea')
WHERE s.id = vSaleFk;
END IF;
IF NEW.OrderStatus = vOrderStatusOK AND NOT (NEW.OrderStatus <=> OLD.OrderStatus) THEN
SELECT v.isEktSender INTO vIsEktSender
FROM edi.VMPSettings v
JOIN edi.supplyResponse sr ON sr.vmpID = v.VMPID
WHERE sr.id = NEW.supplyResponseID;
IF NOT vIsEktSender THEN
CALL edi.ekt_add(NEW.id);
END IF;
IF NEW.barcode THEN
INSERT IGNORE INTO vn.itemBarcode(itemFk, code)
SELECT i.id, NEW.barcode
FROM vn.item i
WHERE i.supplyResponseFk = NEW.supplyResponseID;
END IF;
END IF;
END$$
DELIMITER ;