136 lines
2.9 KiB
MySQL
136 lines
2.9 KiB
MySQL
|
-- DROP PROCEDURE `vn`.`clonTravelComplete`;
|
||
|
|
||
|
DELIMITER $$
|
||
|
USE `vn`$$
|
||
|
CREATE
|
||
|
DEFINER = root@`%` PROCEDURE `vn`.`travel_cloneWithEntries`(IN vTravelFk INT, IN vDateStart DATE, IN vDateEnd DATE,
|
||
|
IN vRef VARCHAR(255), OUT vNewTravelFk INT)
|
||
|
BEGIN
|
||
|
DECLARE vEntryNew INT;
|
||
|
DECLARE vDone BOOLEAN DEFAULT FALSE;
|
||
|
DECLARE vAuxEntryFk INT;
|
||
|
DECLARE vRsEntry CURSOR FOR
|
||
|
SELECT e.id
|
||
|
FROM entry e
|
||
|
JOIN travel t
|
||
|
ON t.id = e.travelFk
|
||
|
WHERE e.travelFk = vTravelFk;
|
||
|
|
||
|
DECLARE vRsBuy CURSOR FOR
|
||
|
SELECT b.*
|
||
|
FROM buy b
|
||
|
JOIN entry e
|
||
|
ON b.entryFk = e.id
|
||
|
WHERE e.travelFk = vNewTravelFk and b.entryFk=vNewTravelFk
|
||
|
ORDER BY e.id;
|
||
|
|
||
|
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
|
||
|
|
||
|
DECLARE EXIT HANDLER FOR SQLEXCEPTION
|
||
|
BEGIN
|
||
|
ROLLBACK;
|
||
|
RESIGNAL;
|
||
|
END;
|
||
|
|
||
|
START TRANSACTION;
|
||
|
|
||
|
INSERT INTO travel (shipped,landed, warehouseInFk, warehouseOutFk, agencyFk, ref, isDelivered, isReceived, m3, kg)
|
||
|
SELECT vDateStart, vDateEnd,warehouseInFk, warehouseOutFk, agencyFk, vRef, isDelivered, isReceived, m3, kg
|
||
|
FROM travel
|
||
|
WHERE id = vTravelFk;
|
||
|
|
||
|
SET vNewTravelFk = LAST_INSERT_ID();
|
||
|
SET vDone = FALSE;
|
||
|
OPEN vRsEntry ;
|
||
|
FETCH vRsEntry INTO vAuxEntryFk;
|
||
|
|
||
|
WHILE NOT vDone DO
|
||
|
INSERT INTO entry (supplierFk,
|
||
|
ref,
|
||
|
isInventory,
|
||
|
isConfirmed,
|
||
|
isOrdered,
|
||
|
isRaid,
|
||
|
commission,
|
||
|
created,
|
||
|
evaNotes,
|
||
|
travelFk,
|
||
|
currencyFk,
|
||
|
companyFk,
|
||
|
gestDocFk,
|
||
|
invoiceInFk)
|
||
|
SELECT supplierFk,
|
||
|
ref,
|
||
|
isInventory,
|
||
|
isConfirmed,
|
||
|
isOrdered,
|
||
|
isRaid,
|
||
|
commission,
|
||
|
created,
|
||
|
evaNotes,
|
||
|
vNewTravelFk,
|
||
|
currencyFk,
|
||
|
companyFk,
|
||
|
gestDocFk,
|
||
|
invoiceInFk
|
||
|
FROM entry
|
||
|
WHERE id = vAuxEntryFk;
|
||
|
|
||
|
SET vEntryNew = LAST_INSERT_ID();
|
||
|
|
||
|
|
||
|
INSERT INTO buy (entryFk,
|
||
|
itemFk,
|
||
|
quantity,
|
||
|
buyingValue,
|
||
|
packageFk,
|
||
|
stickers,
|
||
|
freightValue,
|
||
|
packageValue,
|
||
|
comissionValue,
|
||
|
packing,
|
||
|
`grouping`,
|
||
|
groupingMode,
|
||
|
location,
|
||
|
price1,
|
||
|
price2,
|
||
|
price3,
|
||
|
minPrice,
|
||
|
producer,
|
||
|
printedStickers,
|
||
|
isChecked,
|
||
|
weight)
|
||
|
SELECT vEntryNew,
|
||
|
itemFk,
|
||
|
quantity,
|
||
|
buyingValue,
|
||
|
packageFk,
|
||
|
stickers,
|
||
|
freightValue,
|
||
|
packageValue,
|
||
|
comissionValue,
|
||
|
packing,
|
||
|
`grouping`,
|
||
|
groupingMode,
|
||
|
location,
|
||
|
price1,
|
||
|
price2,
|
||
|
price3,
|
||
|
minPrice,
|
||
|
producer,
|
||
|
printedStickers,
|
||
|
isChecked,
|
||
|
weight
|
||
|
FROM buy
|
||
|
WHERE entryFk = vAuxEntryFk;
|
||
|
|
||
|
|
||
|
FETCH vRsEntry INTO vAuxEntryFk;
|
||
|
END WHILE;
|
||
|
CLOSE vRsEntry;
|
||
|
COMMIT;
|
||
|
END;$$
|
||
|
DELIMITER ;
|
||
|
|
||
|
|