#2687 - Fix Travel_cloneWithEntries #2021

Merged
jsegarra merged 9 commits from 2687_fix_travel_cloneWithEntries into test 2024-02-15 07:34:50 +00:00
6 changed files with 62 additions and 20 deletions

View File

@ -0,0 +1,13 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `util`.`tx_commit`(isTx BOOL)
jsegarra marked this conversation as resolved Outdated

El IN sobra, además, toda variable booleana tiene que tener el prefijo isXXX, hasXXXX (https://wiki.verdnatura.es/index.php/Convenciones_SQL#Booleano)

El IN sobra, además, toda variable booleana tiene que tener el prefijo isXXX, hasXXXX (https://wiki.verdnatura.es/index.php/Convenciones_SQL#Booleano)
BEGIN
/**
* Confirma los cambios asociados a una transacción.
jsegarra marked this conversation as resolved Outdated

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.
d9756a0f3f5074cb516458f222b7edea7c7dc09f
*
* @param isTx es true si existe transacción asociada
jsegarra marked this conversation as resolved Outdated

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)
d9756a0f3f5074cb516458f222b7edea7c7dc09f
d9756a0f3f5074cb516458f222b7edea7c7dc09f
*/
IF isTx THEN
COMMIT;
END IF;
END$$
DELIMITER ;

View File

@ -0,0 +1,13 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `util`.`tx_rollback`(isTx BOOL)

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.

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

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

Cambiar a: "Deshace los cambios asociados a una transacción."

Cambiar a: "Deshace los cambios asociados a una transacción."
d9756a0f3f5074cb516458f222b7edea7c7dc09f
*
* @param isTx es true si existe transacción asociada
*/
IF isTx THEN
ROLLBACK;
END IF;
END$$
DELIMITER ;

View File

@ -0,0 +1,13 @@
DELIMITER $$
jsegarra marked this conversation as resolved
Review

Quitar esos 2 saltos de linea

Quitar esos 2 saltos de linea
Review
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

Cambiar a: "Inicia una transacción."

Cambiar a: "Inicia una transacción."
d9756a0f3f5074cb516458f222b7edea7c7dc09f
*/
IF isTx THEN
START TRANSACTION;
END IF;
END$$
DELIMITER ;

View File

@ -11,11 +11,10 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`travel_cloneWithEnt
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,6 +24,7 @@ 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
@ -35,11 +35,11 @@ BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
ROLLBACK;
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
@ -76,6 +76,6 @@ BEGIN
SET @isModeInventory = FALSE;
CLOSE vRsEntry;
COMMIT;
CALL util.tx_commit(vTx);
END$$
DELIMITER ;

View File

@ -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

View File

@ -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
Review

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???
Review

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);