diff --git a/back/methods/mrw-config/createShipment.js b/back/methods/mrw-config/createShipment.js index f0f7d66a2..12263de03 100644 --- a/back/methods/mrw-config/createShipment.js +++ b/back/methods/mrw-config/createShipment.js @@ -25,12 +25,15 @@ module.exports = Self => { Self.createShipment = async(expeditionFk, options) => { const myOptions = {}; + let tx; if (typeof options == 'object') Object.assign(myOptions, options); - if (!myOptions.transaction) - myOptions.transaction = await Self.beginTransaction({}); + if (!myOptions.transaction) { + tx = await Self.beginTransaction({}); + myOptions.transaction = tx; + } const models = Self.app.models; const mrw = await models.MrwConfig.findOne(null, myOptions); @@ -86,7 +89,13 @@ module.exports = Self => { const getLabelResponse = await sendXmlDoc('getLabel', {mrw, shipmentId}, 'text/xml'); const file = getTextByTag(getLabelResponse, 'EtiquetaFile'); - await models.Expedition.updateAll({id: expeditionFk}, {externalId: shipmentId}, myOptions); + try { + await models.Expedition.updateAll({id: expeditionFk}, {externalId: shipmentId}, myOptions); + if (tx) await tx.commit(); + } catch (error) { + if (tx) await tx.rollback(); + throw error; + } return file; };