#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 $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`travel_cloneWithEntries`(
|
||||
IN vTravelFk INT,
|
||||
IN vDateStart DATE,
|
||||
IN vTravelFk INT,
|
||||
IN vDateStart DATE,
|
||||
IN vDateEnd DATE,
|
||||
IN vWarehouseOutFk INT,
|
||||
IN vWarehouseInFk INT,
|
||||
IN vRef VARCHAR(255),
|
||||
IN vAgencyModeFk INT,
|
||||
IN vWarehouseInFk INT,
|
||||
IN vRef VARCHAR(255),
|
||||
IN vAgencyModeFk INT,
|
||||
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 vWarehouseOutFk warehouse del salida del nuevo travel
|
||||
* @param vWarehouseInFk warehouse de landing del nuevo travel
|
||||
* @param vRef referencia del nuevo travel
|
||||
* @param vAgencyModeFk del nuevo travel
|
||||
|
@ -25,34 +24,35 @@ BEGIN
|
|||
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;
|
||||
BEGIN
|
||||
CALL util.tx_rollback(vTx);
|
||||
RESIGNAL;
|
||||
END;
|
||||
|
||||
START TRANSACTION;
|
||||
|
||||
CALL util.tx_start(vTx);
|
||||
|
||||
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;
|
||||
|
@ -62,7 +62,7 @@ BEGIN
|
|||
END IF;
|
||||
|
||||
CALL entry_cloneHeader(vAuxEntryFk, vNewEntryFk, vNewTravelFk);
|
||||
CALL entry_copyBuys(vAuxEntryFk, vNewEntryFk);
|
||||
CALL entry_copyBuys(vAuxEntryFk, vNewEntryFk);
|
||||
|
||||
SELECT evaNotes INTO vEvaNotes
|
||||
FROM entry
|
||||
|
@ -76,6 +76,6 @@ BEGIN
|
|||
SET @isModeInventory = FALSE;
|
||||
CLOSE vRsEntry;
|
||||
|
||||
COMMIT;
|
||||
CALL util.tx_commit(vTx);
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
|
|
@ -27,7 +27,7 @@ BEGIN
|
|||
DECLARE vEvaNotes VARCHAR(255);
|
||||
DECLARE vDone BOOL;
|
||||
DECLARE vAuxEntryFk INT;
|
||||
DECLARE vTx BOOLEAN DEFAULT !@@in_transaction;
|
||||
DECLARE vTx BOOLEAN DEFAULT @@in_transaction;
|
||||
DECLARE vRsEntry CURSOR FOR
|
||||
SELECT e.id
|
||||
FROM entry e
|
||||
|
@ -41,8 +41,8 @@ BEGIN
|
|||
CALL util.tx_rollback(vTx);
|
||||
RESIGNAL;
|
||||
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)
|
||||
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.agencyModeFk).toEqual(agencyModeOne);
|
||||
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();
|
||||
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)