#2687 - Fix Travel_cloneWithEntries #2021
|
@ -0,0 +1,13 @@
|
||||||
|
DELIMITER $$
|
||||||
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `util`.`tx_commit`(isTx BOOL)
|
||||||
jsegarra marked this conversation as resolved
Outdated
|
|||||||
|
BEGIN
|
||||||
|
/**
|
||||||
|
* Confirma los cambios asociados a una transacción.
|
||||||
jsegarra marked this conversation as resolved
Outdated
guillermo
commented
Lo de procedimiento es redundante, cambiar a: "Confirma los cambios asociados a una transacción." Poner el punto al final del comentario, ya que se suele poner. Lo de procedimiento es redundante, cambiar a: "Confirma los cambios asociados a una transacción."
Poner el punto al final del comentario, ya que se suele poner.
jsegarra
commented
d9756a0f3f5074cb516458f222b7edea7c7dc09f
|
|||||||
|
*
|
||||||
|
* @param isTx es true si existe transacción asociada
|
||||||
jsegarra marked this conversation as resolved
Outdated
guillermo
commented
Aquí sobra lo de BOOL y la primera letra después de la variable debe de estar en mayúscula (https://wiki.verdnatura.es/index.php/Convenciones_SQL#Documentaci%C3%B3n) Aquí sobra lo de BOOL y la primera letra después de la variable debe de estar en mayúscula (https://wiki.verdnatura.es/index.php/Convenciones_SQL#Documentaci%C3%B3n)
jsegarra
commented
d9756a0f3f5074cb516458f222b7edea7c7dc09f
jsegarra
commented
d9756a0f3f5074cb516458f222b7edea7c7dc09f
|
|||||||
|
*/
|
||||||
|
IF isTx THEN
|
||||||
|
COMMIT;
|
||||||
|
END IF;
|
||||||
|
END$$
|
||||||
|
DELIMITER ;
|
|
@ -0,0 +1,13 @@
|
||||||
|
DELIMITER $$
|
||||||
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `util`.`tx_rollback`(isTx BOOL)
|
||||||
guillermo
commented
Ahora una duda general para todos los procedimientos creados, por que has puesto tx? Entiendo que es lo mismo quitando la variable y quitando el if, si quieres lo llamas y si no no. Ahora una duda general para todos los procedimientos creados, por que has puesto tx? Entiendo que es lo mismo quitando la variable y quitando el if, si quieres lo llamas y si no no.
jsegarra
commented
Entiendo que hablas del if que hay definido dentro de cada procedure. Entiendo que hablas del if que hay definido dentro de cada procedure.
Se hace así para no tener que poner el IF desde cada llamada.
Si no he respondido a tu pregunta, nos juntamos
|
|||||||
|
BEGIN
|
||||||
|
/**
|
||||||
|
* Deshace los cambios asociados a una transacción.
|
||||||
jsegarra marked this conversation as resolved
Outdated
guillermo
commented
Cambiar a: "Deshace los cambios asociados a una transacción." Cambiar a: "Deshace los cambios asociados a una transacción."
jsegarra
commented
d9756a0f3f5074cb516458f222b7edea7c7dc09f
|
|||||||
|
*
|
||||||
|
* @param isTx es true si existe transacción asociada
|
||||||
|
*/
|
||||||
|
IF isTx THEN
|
||||||
|
ROLLBACK;
|
||||||
|
END IF;
|
||||||
|
END$$
|
||||||
|
DELIMITER ;
|
|
@ -0,0 +1,13 @@
|
||||||
|
DELIMITER $$
|
||||||
jsegarra marked this conversation as resolved
guillermo
commented
Quitar esos 2 saltos de linea Quitar esos 2 saltos de linea
jsegarra
commented
d9756a0f3f5074cb516458f222b7edea7c7dc09f
|
|||||||
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `util`.`tx_start`(isTx BOOL)
|
||||||
|
BEGIN
|
||||||
|
/**
|
||||||
|
* Inicia una transacción.
|
||||||
|
*
|
||||||
|
* @param isTx es true si existe transacción asociada
|
||||||
jsegarra marked this conversation as resolved
Outdated
guillermo
commented
Cambiar a: "Inicia una transacción." Cambiar a: "Inicia una transacción."
jsegarra
commented
d9756a0f3f5074cb516458f222b7edea7c7dc09f
|
|||||||
|
*/
|
||||||
|
IF isTx THEN
|
||||||
|
START TRANSACTION;
|
||||||
|
END IF;
|
||||||
|
END$$
|
||||||
|
DELIMITER ;
|
|
@ -1,21 +1,20 @@
|
||||||
DELIMITER $$
|
DELIMITER $$
|
||||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`travel_cloneWithEntries`(
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`travel_cloneWithEntries`(
|
||||||
IN vTravelFk INT,
|
IN vTravelFk INT,
|
||||||
IN vDateStart DATE,
|
IN vDateStart DATE,
|
||||||
IN vDateEnd DATE,
|
IN vDateEnd DATE,
|
||||||
IN vWarehouseOutFk INT,
|
IN vWarehouseOutFk INT,
|
||||||
IN vWarehouseInFk INT,
|
IN vWarehouseInFk INT,
|
||||||
IN vRef VARCHAR(255),
|
IN vRef VARCHAR(255),
|
||||||
IN vAgencyModeFk INT,
|
IN vAgencyModeFk INT,
|
||||||
OUT vNewTravelFk INT)
|
OUT vNewTravelFk INT)
|
||||||
BEGIN
|
BEGIN
|
||||||
/**
|
/**
|
||||||
* Clona un travel junto con sus entradas y compras
|
* Clona un travel junto con sus entradas y compras
|
||||||
*
|
|
||||||
* @param vTravelFk travel plantilla a clonar
|
* @param vTravelFk travel plantilla a clonar
|
||||||
* @param vDateStart fecha del shipment del nuevo travel
|
* @param vDateStart fecha del shipment del nuevo travel
|
||||||
* @param vDateEnd fecha del landing del nuevo travel
|
* @param vDateEnd fecha del landing del nuevo travel
|
||||||
* @param vWarehouseOutFk fecha del salida del nuevo travel
|
* @param vWarehouseOutFk warehouse del salida del nuevo travel
|
||||||
* @param vWarehouseInFk warehouse de landing del nuevo travel
|
* @param vWarehouseInFk warehouse de landing del nuevo travel
|
||||||
* @param vRef referencia del nuevo travel
|
* @param vRef referencia del nuevo travel
|
||||||
* @param vAgencyModeFk del nuevo travel
|
* @param vAgencyModeFk del nuevo travel
|
||||||
|
@ -25,34 +24,35 @@ BEGIN
|
||||||
DECLARE vEvaNotes VARCHAR(255);
|
DECLARE vEvaNotes VARCHAR(255);
|
||||||
DECLARE vDone BOOL;
|
DECLARE vDone BOOL;
|
||||||
DECLARE vAuxEntryFk INT;
|
DECLARE vAuxEntryFk INT;
|
||||||
|
DECLARE vTx BOOLEAN DEFAULT @@in_transaction;
|
||||||
DECLARE vRsEntry CURSOR FOR
|
DECLARE vRsEntry CURSOR FOR
|
||||||
SELECT e.id
|
SELECT e.id
|
||||||
FROM entry e
|
FROM entry e
|
||||||
JOIN travel t ON t.id = e.travelFk
|
JOIN travel t ON t.id = e.travelFk
|
||||||
WHERE e.travelFk = vTravelFk;
|
WHERE e.travelFk = vTravelFk;
|
||||||
|
|
||||||
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
|
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
|
||||||
|
|
||||||
DECLARE EXIT HANDLER FOR SQLEXCEPTION
|
DECLARE EXIT HANDLER FOR SQLEXCEPTION
|
||||||
BEGIN
|
BEGIN
|
||||||
ROLLBACK;
|
CALL util.tx_rollback(vTx);
|
||||||
RESIGNAL;
|
RESIGNAL;
|
||||||
END;
|
END;
|
||||||
|
|
||||||
START TRANSACTION;
|
CALL util.tx_start(vTx);
|
||||||
|
|
||||||
INSERT INTO travel (shipped, landed, warehouseInFk, warehouseOutFk, agencyModeFk, `ref`, isDelivered, isReceived, m3, cargoSupplierFk, kg,clonedFrom)
|
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
|
SELECT vDateStart, vDateEnd, vWarehouseInFk, vWarehouseOutFk, vAgencyModeFk, vRef, isDelivered, isReceived, m3,cargoSupplierFk, kg,vTravelFk
|
||||||
FROM travel
|
FROM travel
|
||||||
WHERE id = vTravelFk;
|
WHERE id = vTravelFk;
|
||||||
|
|
||||||
SET vNewTravelFk = LAST_INSERT_ID();
|
SET vNewTravelFk = LAST_INSERT_ID();
|
||||||
|
|
||||||
SET vDone = FALSE;
|
SET vDone = FALSE;
|
||||||
SET @isModeInventory = TRUE;
|
SET @isModeInventory = TRUE;
|
||||||
|
|
||||||
OPEN vRsEntry;
|
OPEN vRsEntry;
|
||||||
|
|
||||||
l: LOOP
|
l: LOOP
|
||||||
SET vDone = FALSE;
|
SET vDone = FALSE;
|
||||||
FETCH vRsEntry INTO vAuxEntryFk;
|
FETCH vRsEntry INTO vAuxEntryFk;
|
||||||
|
@ -62,7 +62,7 @@ BEGIN
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
CALL entry_cloneHeader(vAuxEntryFk, vNewEntryFk, vNewTravelFk);
|
CALL entry_cloneHeader(vAuxEntryFk, vNewEntryFk, vNewTravelFk);
|
||||||
CALL entry_copyBuys(vAuxEntryFk, vNewEntryFk);
|
CALL entry_copyBuys(vAuxEntryFk, vNewEntryFk);
|
||||||
|
|
||||||
SELECT evaNotes INTO vEvaNotes
|
SELECT evaNotes INTO vEvaNotes
|
||||||
FROM entry
|
FROM entry
|
||||||
|
@ -76,6 +76,6 @@ BEGIN
|
||||||
SET @isModeInventory = FALSE;
|
SET @isModeInventory = FALSE;
|
||||||
CLOSE vRsEntry;
|
CLOSE vRsEntry;
|
||||||
|
|
||||||
COMMIT;
|
CALL util.tx_commit(vTx);
|
||||||
END$$
|
END$$
|
||||||
DELIMITER ;
|
DELIMITER ;
|
||||||
|
|
|
@ -27,7 +27,7 @@ BEGIN
|
||||||
DECLARE vEvaNotes VARCHAR(255);
|
DECLARE vEvaNotes VARCHAR(255);
|
||||||
DECLARE vDone BOOL;
|
DECLARE vDone BOOL;
|
||||||
DECLARE vAuxEntryFk INT;
|
DECLARE vAuxEntryFk INT;
|
||||||
DECLARE vTx BOOLEAN DEFAULT !@@in_transaction;
|
DECLARE vTx BOOLEAN DEFAULT @@in_transaction;
|
||||||
DECLARE vRsEntry CURSOR FOR
|
DECLARE vRsEntry CURSOR FOR
|
||||||
SELECT e.id
|
SELECT e.id
|
||||||
FROM entry e
|
FROM entry e
|
||||||
|
@ -41,8 +41,8 @@ BEGIN
|
||||||
CALL util.tx_rollback(vTx);
|
CALL util.tx_rollback(vTx);
|
||||||
RESIGNAL;
|
RESIGNAL;
|
||||||
END;
|
END;
|
||||||
|
|
||||||
CALL util.tx_start(vTx);
|
CALL util.tx_start(vTx);
|
||||||
|
|
||||||
INSERT INTO travel (shipped, landed, warehouseInFk, warehouseOutFk, agencyModeFk, `ref`, isDelivered, isReceived, m3, cargoSupplierFk, kg,clonedFrom)
|
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
|
SELECT vDateStart, vDateEnd, vWarehouseInFk, vWarehouseOutFk, vAgencyModeFk, vRef, isDelivered, isReceived, m3,cargoSupplierFk, kg,vTravelFk
|
||||||
|
|
|
@ -27,7 +27,10 @@ describe('Travel cloneWithEntries()', () => {
|
||||||
expect(newTravel.warehouseOutFk).toEqual(warehouseThree);
|
expect(newTravel.warehouseOutFk).toEqual(warehouseThree);
|
||||||
expect(newTravel.agencyModeFk).toEqual(agencyModeOne);
|
expect(newTravel.agencyModeFk).toEqual(agencyModeOne);
|
||||||
expect(travelEntries.length).toBeGreaterThan(0);
|
expect(travelEntries.length).toBeGreaterThan(0);
|
||||||
|
await models.Entry.destroyAll({
|
||||||
|
travelFk: newTravelId
|
||||||
|
}, options);
|
||||||
|
await models.Travel.destroyById(newTravelId, options);
|
||||||
alexm marked this conversation as resolved
jsegarra
commented
Comentario de Alex: Aunque fasa rollback cal borrar les entrades i el travel??? Comentario de Alex: Aunque fasa rollback cal borrar les entrades i el travel???
jsegarra
commented
Si, no hace rollback de las líneas clonadas Si, no hace rollback de las líneas clonadas
|
|||||||
await tx.rollback();
|
await tx.rollback();
|
||||||
const travelRemoved = await models.Travel.findById(newTravelId, options);
|
const travelRemoved = await models.Travel.findById(newTravelId, options);
|
||||||
|
|
||||||
|
|
El IN sobra, además, toda variable booleana tiene que tener el prefijo isXXX, hasXXXX (https://wiki.verdnatura.es/index.php/Convenciones_SQL#Booleano)