From efb8bc46c668b1646f4de1830bf4673e03f6c327 Mon Sep 17 00:00:00 2001 From: jorgep Date: Mon, 22 Jan 2024 15:13:49 +0100 Subject: [PATCH] refactor: refs #6276 saleTracking_mark --- loopback/locale/en.json | 5 +-- loopback/locale/es.json | 3 +- .../ticket/back/methods/sale-tracking/mark.js | 9 ++++- .../methods/sale-tracking/specs/mark.spec.js | 40 ++++++++++++++++++- .../methods/sale/getFromSectorCollection.js | 9 +++-- 5 files changed, 57 insertions(+), 9 deletions(-) diff --git a/loopback/locale/en.json b/loopback/locale/en.json index 6b48fcb98..24c28a927 100644 --- a/loopback/locale/en.json +++ b/loopback/locale/en.json @@ -211,7 +211,6 @@ "You are already using a machine": "You are already using a machine", "This worker does not exist": "This worker does not exist", "this state does not exist": "This state does not exist", - "The line could not be marked": "The line could not be marked" - - + "The line could not be marked": "The line could not be marked", + "The sale can not be tracked": "The sale can not be tracked" } \ No newline at end of file diff --git a/loopback/locale/es.json b/loopback/locale/es.json index 9d6404dac..25fbbda70 100644 --- a/loopback/locale/es.json +++ b/loopback/locale/es.json @@ -348,5 +348,6 @@ "this state does not exist": "Este estado no existe", "Este estado no existe": "Este estado no existe", "The line could not be marked": "No se ha podido marcar la línea", - "No se ha podido marcar la línea": "No se ha podido marcar la línea" + "No se ha podido marcar la línea": "No se ha podido marcar la línea", + "The sale can not be tracked": "La línea no puede ser rastreada" } \ No newline at end of file diff --git a/modules/ticket/back/methods/sale-tracking/mark.js b/modules/ticket/back/methods/sale-tracking/mark.js index c8c73b935..dc288ba93 100644 --- a/modules/ticket/back/methods/sale-tracking/mark.js +++ b/modules/ticket/back/methods/sale-tracking/mark.js @@ -89,10 +89,17 @@ module.exports = Self => { try { const buy = await models.Buy.findById(buyFk, myOptions); if (buy.itemOriginalFk) await models.SaleBuy.create({saleFk, buyFk}, myOptions); - } catch (e) {} + } catch (e) { + throw new UserError($t('The sale can not be tracked')); + } if (tx) await tx.commit(); } catch (e) { + if (e.message == $t('The sale can not be tracked')) { + if (tx) tx.commit(); + throw e; + } + if (tx) await tx.rollback(); throw new UserError($t('The line could not be marked')); } diff --git a/modules/ticket/back/methods/sale-tracking/specs/mark.spec.js b/modules/ticket/back/methods/sale-tracking/specs/mark.spec.js index 49e4ec6e5..353a39c49 100644 --- a/modules/ticket/back/methods/sale-tracking/specs/mark.spec.js +++ b/modules/ticket/back/methods/sale-tracking/specs/mark.spec.js @@ -1,5 +1,5 @@ const {models} = require('vn-loopback/server/server'); -describe('saleTracking mark()', () => { +fdescribe('saleTracking mark()', () => { const saleFk = 1; const originalQuantity = 10; const code = 'PREPARED'; @@ -46,6 +46,44 @@ describe('saleTracking mark()', () => { } }); + it('should throw an error if there are duplicate salebuys', async() => { + const tx = await models.SaleTracking.beginTransaction({}); + const options = {transaction: tx}; + try { + await models.SaleTracking.mark( + ctx, + saleFk, + originalQuantity, + code, + isChecked, + buyFk, + isScanned, + quantity, + itemShelvingFk, + options + ); + + await models.SaleTracking.mark( + ctx, + saleFk, + originalQuantity, + code, + isChecked, + buyFk, + isScanned, + quantity, + itemShelvingFk, + options + ); + await tx.rollback(); + } catch (e) { + const error = e; + + expect(error.message).toEqual('The sale can not be tracked'); + await tx.rollback(); + } + }); + it('should add an itemShelvingSale and Modify a saleTracking', async() => { const tx = await models.SaleTracking.beginTransaction({}); const options = {transaction: tx}; diff --git a/modules/ticket/back/methods/sale/getFromSectorCollection.js b/modules/ticket/back/methods/sale/getFromSectorCollection.js index 323474cb4..a56966887 100644 --- a/modules/ticket/back/methods/sale/getFromSectorCollection.js +++ b/modules/ticket/back/methods/sale/getFromSectorCollection.js @@ -30,7 +30,9 @@ module.exports = Self => { if (typeof options == 'object') Object.assign(myOptions, options); - const sales = await Self.rawSql( + const sales = await Self.rawSql('CALL sectorCollection_getSale(?)', [sectorCollectionFk], myOptions); + + /* const sales = await Self.rawSql( `SELECT s.ticketFk, s.itemFk, i.longName, @@ -52,13 +54,14 @@ module.exports = Self => { JOIN client c ON c.id=t.clientFk LEFT JOIN itemShelvingSaleSum iss ON iss.saleFk = s.id WHERE scsg.sectorCollectionFk = ? - AND st.workerFk = ?;`, [sectorCollectionFk, userId]); + AND st.workerFk = ?;`, [sectorCollectionFk, userId]); */ const itemShelvings = []; for (let sale of sales) { const [carros] = await Self.rawSql( 'CALL vn.itemPlacementSupplyStockGetTargetList(?, ?)', - [sale.itemFk, sectorFk] + [sale.itemFk, sectorFk], + myOptions ); itemShelvings.push({