From a8dfe8f3bfb9dc4ef8f7d1965b8b628fc81eeb2c Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Mon, 11 Dec 2023 14:53:29 +0100 Subject: [PATCH] refs #2687 feat: modify vn.travel_cloneWithEntries --- ...pdate_procedure_TravelCloneWithEntries.sql | 88 +++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 db/changes/235201/00-update_procedure_TravelCloneWithEntries.sql diff --git a/db/changes/235201/00-update_procedure_TravelCloneWithEntries.sql b/db/changes/235201/00-update_procedure_TravelCloneWithEntries.sql new file mode 100644 index 000000000..85be8ca93 --- /dev/null +++ b/db/changes/235201/00-update_procedure_TravelCloneWithEntries.sql @@ -0,0 +1,88 @@ +DROP PROCEDURE IF EXISTS vn.travel_cloneWithEntries; + +DELIMITER $$ +$$ +CREATE DEFINER=`root`@`localhost` PROCEDURE `vn`.`travel_cloneWithEntries`( + IN vTravelFk INT, + IN vDateStart DATE, + IN vDateEnd DATE, + IN vWarehouseOutFk INT, + IN vWarehouseInFk INT, + IN vRef VARCHAR(255), + IN vAgencyModeFk INT, + IN vTx BOOL, + OUT vNewTravelFk INT) +BEGIN +/** + * Clona un travel junto con sus entradas y compras + * @param vTravelFk travel plantilla a clonar + * @param vDateStart fecha del shipment del nuevo travel + * @param vDateEnd fecha del landing del nuevo travel + * @param vWarehouseOutFk fecha del salida del nuevo travel + * @param vWarehouseInFk warehouse de landing del nuevo travel + * @param vRef referencia del nuevo travel + * @param vAgencyModeFk del nuevo travel + * @param vNewTravelFk id del nuevo travel + */ + DECLARE vNewEntryFk INT; + DECLARE vEvaNotes VARCHAR(255); + DECLARE vDone BOOL; + DECLARE vAuxEntryFk INT; + DECLARE vTx BOOLEAN DEFAULT !@@in_transaction; + DECLARE vRsEntry CURSOR FOR + SELECT e.id + FROM entry e + JOIN travel t ON t.id = e.travelFk + WHERE e.travelFk = vTravelFk; + + 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, agencyModeFk, `ref`, isDelivered, isReceived, m3, cargoSupplierFk, kg,clonedFrom) + SELECT vDateStart, vDateEnd, vWarehouseInFk, vWarehouseOutFk, vAgencyModeFk, vRef, isDelivered, isReceived, m3,cargoSupplierFk, kg,vTravelFk + FROM travel + WHERE id = vTravelFk; + + SET vNewTravelFk = LAST_INSERT_ID(); + + SET vDone = FALSE; + SET @isModeInventory = TRUE; + + OPEN vRsEntry; + + l: LOOP + SET vDone = FALSE; + FETCH vRsEntry INTO vAuxEntryFk; + + IF vDone THEN + LEAVE l; + END IF; + + CALL util.tx_start(vTx); + CALL entry_cloneHeader(vAuxEntryFk, vNewEntryFk, vNewTravelFk); + CALL entry_copyBuys(vAuxEntryFk, vNewEntryFk); + CALL util.tx_commit(vTx); + + SELECT evaNotes INTO vEvaNotes + FROM entry + WHERE id = vAuxEntryFk; + + UPDATE entry + SET evaNotes = vEvaNotes + WHERE id = vNewEntryFk; + + END LOOP; + + SET @isModeInventory = FALSE; + CLOSE vRsEntry; + + COMMIT; +END$$ +DELIMITER ;