56 lines
1.4 KiB
MySQL
56 lines
1.4 KiB
MySQL
|
DELIMITER $$
|
||
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticketClon`(vTicketFk INT, vNewShipped DATE)
|
||
|
BEGIN
|
||
|
|
||
|
DECLARE done INT DEFAULT FALSE;
|
||
|
DECLARE vNewTicketFk INT;
|
||
|
DECLARE vOldSaleFk INT;
|
||
|
DECLARE vNewSaleFk INT;
|
||
|
|
||
|
DECLARE cur1 CURSOR FOR
|
||
|
SELECT id
|
||
|
FROM vn.sale
|
||
|
WHERE ticketFk = vTicketFk;
|
||
|
|
||
|
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
|
||
|
|
||
|
SET vNewShipped = IFNULL(vNewShipped, util.VN_CURDATE());
|
||
|
|
||
|
CALL vn.ticket_Clone(vTicketFk, vNewTicketFk);
|
||
|
|
||
|
UPDATE vn.ticket
|
||
|
SET landed = TIMESTAMPADD(DAY, DATEDIFF(vNewShipped, shipped), landed),
|
||
|
shipped = vNewShipped
|
||
|
WHERE id = vNewTicketFk;
|
||
|
|
||
|
OPEN cur1;
|
||
|
|
||
|
read_loop: LOOP
|
||
|
|
||
|
FETCH cur1 INTO vOldSaleFk;
|
||
|
|
||
|
IF done THEN
|
||
|
LEAVE read_loop;
|
||
|
END IF;
|
||
|
|
||
|
INSERT INTO vn.sale(ticketFk, itemFk, quantity, concept, price, discount, priceFixed, isPriceFixed)
|
||
|
SELECT vNewTicketFk, itemFk, quantity, concept, price, discount, priceFixed, isPriceFixed
|
||
|
FROM vn.sale
|
||
|
WHERE id = vOldSaleFk;
|
||
|
|
||
|
SELECT max(id) INTO vNewSaleFk
|
||
|
FROM vn.sale
|
||
|
WHERE ticketFk = vNewTicketFk;
|
||
|
|
||
|
INSERT INTO vn.saleComponent(saleFk, componentFk, value, isGreuge)
|
||
|
SELECT vNewSaleFk, componentFk, value, isGreuge
|
||
|
FROM vn.saleComponent
|
||
|
WHERE saleFk = vOldSaleFk;
|
||
|
|
||
|
END LOOP;
|
||
|
|
||
|
CLOSE cur1;
|
||
|
|
||
|
END$$
|
||
|
DELIMITER ;
|