From 0ea69427ecfff06efb288206340747b4b2545035 Mon Sep 17 00:00:00 2001 From: pablone Date: Wed, 17 Jul 2024 08:16:01 +0200 Subject: [PATCH 01/18] feat: refs #6403 add cancelShipment on deleteExpeditions --- back/methods/mrw-config/cancelShipment.js | 5 +++-- .../methods/expedition/deleteExpeditions.js | 20 ++++++++++++------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/back/methods/mrw-config/cancelShipment.js b/back/methods/mrw-config/cancelShipment.js index 10d5565758..57b764858a 100644 --- a/back/methods/mrw-config/cancelShipment.js +++ b/back/methods/mrw-config/cancelShipment.js @@ -13,7 +13,7 @@ module.exports = Self => { required: true }], returns: { - type: ['object'], + type: 'boolean', root: true }, http: { @@ -39,6 +39,7 @@ module.exports = Self => { const xmlString = response.data; const parser = new DOMParser(); const xmlDoc = parser.parseFromString(xmlString, 'text/xml'); - return xmlDoc.getElementsByTagName('Mensaje')[0].textContent; + const [{textContent}] = xmlDoc.getElementsByTagName('Mensaje'); + return textContent.toLowerCase().includes('se ha cancelado correctamente'); }; }; diff --git a/modules/ticket/back/methods/expedition/deleteExpeditions.js b/modules/ticket/back/methods/expedition/deleteExpeditions.js index 55ca474d7d..90a6494253 100644 --- a/modules/ticket/back/methods/expedition/deleteExpeditions.js +++ b/modules/ticket/back/methods/expedition/deleteExpeditions.js @@ -44,15 +44,21 @@ module.exports = Self => { const expedition = await models.Expedition.findOne(filter); const {code} = expedition.agencyMode(); + let isDeleted = true; - if (code && code.toLowerCase().substring(0, 10) == 'viaexpress') { - const isDeleted = await models.ViaexpressConfig.deleteExpedition(expeditionId); + if (code?.toLowerCase()?.includes('mrw')) { + const result = await models.MrwConfig.cancelShipment(expeditionId); + isDeleted = result; + } - if (isDeleted === 'true') { - const deletedExpedition = await models.Expedition.destroyById(expeditionId); - deletedExpeditions.push(deletedExpedition); - } else notDeletedExpeditions.push(expeditionId); - } else { + if (code?.toLowerCase()?.substring(0, 10) == 'viaexpress') { + const result = await models.ViaexpressConfig.deleteExpedition(expeditionId); + if (result !== 'true') isDeleted = false; + } + + if (!isDeleted) + notDeletedExpeditions.push(expeditionId); + else { const deletedExpedition = await models.Expedition.destroyById(expeditionId); deletedExpeditions.push(deletedExpedition); } From f83dd37a28d891083d3ea3828cde70a5da8cd51d Mon Sep 17 00:00:00 2001 From: pablone Date: Wed, 17 Jul 2024 08:23:33 +0200 Subject: [PATCH 02/18] fix: refs #6403 remove line --- modules/ticket/back/methods/expedition/deleteExpeditions.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/modules/ticket/back/methods/expedition/deleteExpeditions.js b/modules/ticket/back/methods/expedition/deleteExpeditions.js index 90a6494253..1255f19b82 100644 --- a/modules/ticket/back/methods/expedition/deleteExpeditions.js +++ b/modules/ticket/back/methods/expedition/deleteExpeditions.js @@ -46,10 +46,8 @@ module.exports = Self => { const {code} = expedition.agencyMode(); let isDeleted = true; - if (code?.toLowerCase()?.includes('mrw')) { - const result = await models.MrwConfig.cancelShipment(expeditionId); - isDeleted = result; - } + if (code?.toLowerCase()?.includes('mrw')) + isDeleted = await models.MrwConfig.cancelShipment(expeditionId); if (code?.toLowerCase()?.substring(0, 10) == 'viaexpress') { const result = await models.ViaexpressConfig.deleteExpedition(expeditionId); From 4ff388198b0fada3b022004dc618768a6e0a7b8a Mon Sep 17 00:00:00 2001 From: alexm Date: Wed, 17 Jul 2024 10:14:41 +0200 Subject: [PATCH 03/18] fix(deletExpeditions): add try catch --- .../methods/expedition/deleteExpeditions.js | 47 +++++++++---------- 1 file changed, 21 insertions(+), 26 deletions(-) diff --git a/modules/ticket/back/methods/expedition/deleteExpeditions.js b/modules/ticket/back/methods/expedition/deleteExpeditions.js index 1255f19b82..75993a485d 100644 --- a/modules/ticket/back/methods/expedition/deleteExpeditions.js +++ b/modules/ticket/back/methods/expedition/deleteExpeditions.js @@ -27,38 +27,33 @@ module.exports = Self => { const deletedExpeditions = []; for (let expeditionId of expeditionIds) { - const filter = { - fields: [], - where: { - id: expeditionId - }, - include: [ - { - relation: 'agencyMode', - scope: { - fields: ['code'], + try { + const expedition = await models.Expedition.findById(expeditionId, { + include: [ + { + relation: 'agencyMode', + scope: { + fields: ['code'], + } } - } - ] - }; + ] + }); + const {code} = expedition.agencyMode(); - const expedition = await models.Expedition.findOne(filter); - const {code} = expedition.agencyMode(); - let isDeleted = true; + if (code?.toLowerCase()?.includes('mrw') && expedition.externalId) { + const result = await models.MrwConfig.cancelShipment(expeditionId); + if (!result) throw new Error('not deleted'); + } - if (code?.toLowerCase()?.includes('mrw')) - isDeleted = await models.MrwConfig.cancelShipment(expeditionId); + if (code?.toLowerCase()?.substring(0, 10) == 'viaexpress') { + const result = await models.ViaexpressConfig.deleteExpedition(expeditionId); + if (result !== 'true') throw new Error('not deleted'); + } - if (code?.toLowerCase()?.substring(0, 10) == 'viaexpress') { - const result = await models.ViaexpressConfig.deleteExpedition(expeditionId); - if (result !== 'true') isDeleted = false; - } - - if (!isDeleted) - notDeletedExpeditions.push(expeditionId); - else { const deletedExpedition = await models.Expedition.destroyById(expeditionId); deletedExpeditions.push(deletedExpedition); + } catch (e) { + notDeletedExpeditions.push(expeditionId); } } From 563c70c65d882833c3550ed54c7a2364f791da49 Mon Sep 17 00:00:00 2001 From: alexm Date: Wed, 17 Jul 2024 11:18:12 +0200 Subject: [PATCH 04/18] fix(cancelShipment): fix --- back/methods/mrw-config/cancelShipment.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/back/methods/mrw-config/cancelShipment.js b/back/methods/mrw-config/cancelShipment.js index 57b764858a..56d2065290 100644 --- a/back/methods/mrw-config/cancelShipment.js +++ b/back/methods/mrw-config/cancelShipment.js @@ -39,7 +39,7 @@ module.exports = Self => { const xmlString = response.data; const parser = new DOMParser(); const xmlDoc = parser.parseFromString(xmlString, 'text/xml'); - const [{textContent}] = xmlDoc.getElementsByTagName('Mensaje'); - return textContent.toLowerCase().includes('se ha cancelado correctamente'); + const result = xmlDoc.getElementsByTagName('Mensaje')[0].textContent; + return result.toLowerCase().includes('se ha cancelado correctamente'); }; }; From 021d315a010559cdf9ba1c1550df8778100a67b0 Mon Sep 17 00:00:00 2001 From: alexm Date: Wed, 17 Jul 2024 13:30:47 +0200 Subject: [PATCH 05/18] fix: weeklyHourRecordEmail workerId prop and correct request in frontend --- modules/worker/back/methods/worker-time-control/sendMail.js | 4 ++-- .../back/methods/worker-time-control/weeklyHourRecordEmail.js | 2 +- modules/worker/front/time-control/index.js | 2 +- modules/worker/front/time-control/index.spec.js | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/modules/worker/back/methods/worker-time-control/sendMail.js b/modules/worker/back/methods/worker-time-control/sendMail.js index e43f4a8ab5..2e1e00d83e 100644 --- a/modules/worker/back/methods/worker-time-control/sendMail.js +++ b/modules/worker/back/methods/worker-time-control/sendMail.js @@ -165,8 +165,8 @@ module.exports = Self => { const sql = ParameterizedSQL.join(stmts, ';'); const days = await conn.executeStmt(sql, myOptions); - let previousWorkerFk = days[index][0].workerFk; - let previousReceiver = days[index][0].receiver; + let previousWorkerFk = days[index][0]?.workerFk; + let previousReceiver = days[index][0]?.receiver; const workerTimeControlConfig = await models.WorkerTimeControlConfig.findOne(null, myOptions); diff --git a/modules/worker/back/methods/worker-time-control/weeklyHourRecordEmail.js b/modules/worker/back/methods/worker-time-control/weeklyHourRecordEmail.js index f19ab17e1f..e352eb3cb1 100644 --- a/modules/worker/back/methods/worker-time-control/weeklyHourRecordEmail.js +++ b/modules/worker/back/methods/worker-time-control/weeklyHourRecordEmail.js @@ -61,7 +61,7 @@ module.exports = Self => { const url = `${salix.url}worker/${args.workerId}/time-control?timestamp=${timestamp}`; ctx.args.url = url; - await models.WorkerTimeControl.updateMailState(ctx, ctx.workerId, myOptions); + await models.WorkerTimeControl.updateMailState(ctx, ctx.args.workerId, myOptions); return Self.sendTemplate(ctx, 'weekly-hour-record'); }; diff --git a/modules/worker/front/time-control/index.js b/modules/worker/front/time-control/index.js index 7f7bad1371..5bad04593c 100644 --- a/modules/worker/front/time-control/index.js +++ b/modules/worker/front/time-control/index.js @@ -389,7 +389,7 @@ class Controller extends Section { if (reason) params.reason = reason; - const query = `WorkerTimeControls/updateWorkerTimeControlMail`; + const query = `WorkerTimeControls/updateMailState`; this.$http.post(query, params).then(() => { this.getMailStates(this.date); this.getWeekData(); diff --git a/modules/worker/front/time-control/index.spec.js b/modules/worker/front/time-control/index.spec.js index 42df4ba9be..88a599e96d 100644 --- a/modules/worker/front/time-control/index.spec.js +++ b/modules/worker/front/time-control/index.spec.js @@ -201,7 +201,7 @@ describe('Component vnWorkerTimeControl', () => { controller.date = today; controller.weekNumber = 1; - $httpBackend.expect('POST', 'WorkerTimeControls/updateWorkerTimeControlMail').respond(); + $httpBackend.expect('POST', 'WorkerTimeControls/updateMailState').respond(); controller.isSatisfied(); $httpBackend.flush(); @@ -236,7 +236,7 @@ describe('Component vnWorkerTimeControl', () => { controller.weekNumber = 1; controller.reason = 'reason'; - $httpBackend.expect('POST', 'WorkerTimeControls/updateWorkerTimeControlMail').respond(); + $httpBackend.expect('POST', 'WorkerTimeControls/updateMailState').respond(); controller.isSatisfied(); $httpBackend.flush(); From d52a2296137ccf75115c2796c0150b975b113524 Mon Sep 17 00:00:00 2001 From: alexm Date: Wed, 17 Jul 2024 13:40:57 +0200 Subject: [PATCH 06/18] hotFix(workerTimeControl): confirm correct url --- modules/worker/front/time-control/index.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/worker/front/time-control/index.js b/modules/worker/front/time-control/index.js index 5bad04593c..2993e3986f 100644 --- a/modules/worker/front/time-control/index.js +++ b/modules/worker/front/time-control/index.js @@ -380,7 +380,6 @@ class Controller extends Section { updateWorkerTimeControlMail(state, reason) { const params = { - workerId: this.worker.id, year: this.date.getFullYear(), week: this.weekNumber, state @@ -389,7 +388,7 @@ class Controller extends Section { if (reason) params.reason = reason; - const query = `WorkerTimeControls/updateMailState`; + const query = `WorkerTimeControls/${this.worker.id}/updateMailState`; this.$http.post(query, params).then(() => { this.getMailStates(this.date); this.getWeekData(); From 2763839c549c38d13d814ac1856308e72044fc7e Mon Sep 17 00:00:00 2001 From: alexm Date: Wed, 17 Jul 2024 13:42:23 +0200 Subject: [PATCH 07/18] hotFix(workerTimeControl): confirm correct url --- modules/worker/front/time-control/index.spec.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/worker/front/time-control/index.spec.js b/modules/worker/front/time-control/index.spec.js index 88a599e96d..3868ded751 100644 --- a/modules/worker/front/time-control/index.spec.js +++ b/modules/worker/front/time-control/index.spec.js @@ -201,7 +201,7 @@ describe('Component vnWorkerTimeControl', () => { controller.date = today; controller.weekNumber = 1; - $httpBackend.expect('POST', 'WorkerTimeControls/updateMailState').respond(); + $httpBackend.expect('POST', 'WorkerTimeControls/1/updateMailState').respond(); controller.isSatisfied(); $httpBackend.flush(); @@ -236,7 +236,7 @@ describe('Component vnWorkerTimeControl', () => { controller.weekNumber = 1; controller.reason = 'reason'; - $httpBackend.expect('POST', 'WorkerTimeControls/updateMailState').respond(); + $httpBackend.expect('POST', 'WorkerTimeControls/1/updateMailState').respond(); controller.isSatisfied(); $httpBackend.flush(); From 70475788090b9e0cc5117165ce07a57fba3dbc0e Mon Sep 17 00:00:00 2001 From: sergiodt Date: Wed, 17 Jul 2024 16:09:09 +0200 Subject: [PATCH 08/18] hotFix reservas refs #686 --- .../procedures/collection_addWithReservation.sql | 5 +++-- .../itemShelvingSale_addByCollection.sql | 2 +- .../vn/procedures/itemShelvingSale_addBySale.sql | 5 ++++- .../itemShelvingSale_addBySectorCollection.sql | 7 ++++++- .../vn/procedures/itemShelvingSale_doReserve.sql | 10 ++++++---- .../vn/procedures/itemShelvingSale_reallocate.sql | 7 +++++-- .../vn/procedures/itemShelvingSale_setQuantity.sql | 10 ++++++---- db/versions/11158-redRaphis/00-firstScript.sql | 5 +++++ .../itemShelvingSaleSetQuantity.js | 14 ++++++++++---- 9 files changed, 46 insertions(+), 19 deletions(-) create mode 100644 db/versions/11158-redRaphis/00-firstScript.sql diff --git a/db/routines/vn/procedures/collection_addWithReservation.sql b/db/routines/vn/procedures/collection_addWithReservation.sql index e3f4eb8d22..18a3e8ab28 100644 --- a/db/routines/vn/procedures/collection_addWithReservation.sql +++ b/db/routines/vn/procedures/collection_addWithReservation.sql @@ -3,7 +3,8 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`collection_addWithR vItemFk INT, vQuantity INT, vTicketFk INT, - vSaleGroupFk INT + vSaleGroupFk INT, + vSectorFk INT ) BEGIN /** @@ -67,7 +68,7 @@ BEGIN SELECT LAST_INSERT_ID() INTO vSaleFk; CALL sale_calculateComponent(vSaleFk, NULL); - CALL itemShelvingSale_addBySale(vSaleFk); + CALL itemShelvingSale_addBySale(vSaleFk, vSectorFk); IF NOT EXISTS (SELECT TRUE FROM itemShelvingSale WHERE saleFk = vSaleFk LIMIT 1) THEN SET vHasThrow = TRUE; diff --git a/db/routines/vn/procedures/itemShelvingSale_addByCollection.sql b/db/routines/vn/procedures/itemShelvingSale_addByCollection.sql index 7f9cc66162..a6f9b3e8c7 100644 --- a/db/routines/vn/procedures/itemShelvingSale_addByCollection.sql +++ b/db/routines/vn/procedures/itemShelvingSale_addByCollection.sql @@ -44,7 +44,7 @@ BEGIN LEAVE l; END IF; - CALL itemShelvingSale_addBySale(vSaleFk); + CALL itemShelvingSale_addBySale(vSaleFk, NULL); END LOOP; CLOSE vSales; END$$ diff --git a/db/routines/vn/procedures/itemShelvingSale_addBySale.sql b/db/routines/vn/procedures/itemShelvingSale_addBySale.sql index 909ce51554..96c49b7889 100644 --- a/db/routines/vn/procedures/itemShelvingSale_addBySale.sql +++ b/db/routines/vn/procedures/itemShelvingSale_addBySale.sql @@ -1,6 +1,7 @@ DELIMITER $$ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelvingSale_addBySale`( - vSaleFk INT + vSaleFk INT, + vSectorFk INT ) proc: BEGIN /** @@ -8,6 +9,7 @@ proc: BEGIN * * @param vSaleFk Id de sale * @param vItemShelvingSaleFk Id de reserva + * @param vSectorFk Id del sector del operator */ DECLARE vLastPickingOrder INT; DECLARE vDone INT DEFAULT FALSE; @@ -30,6 +32,7 @@ proc: BEGIN JOIN productionConfig pc WHERE s.id = vSaleFk AND NOT sc.isHideForPickers + AND (sc.id = vSectorFk OR vSectorFk IS NULL) ORDER BY s.id, p.pickingOrder >= vLastPickingOrder, sh.priority DESC, diff --git a/db/routines/vn/procedures/itemShelvingSale_addBySectorCollection.sql b/db/routines/vn/procedures/itemShelvingSale_addBySectorCollection.sql index 442abcf5da..c359c7c8d3 100644 --- a/db/routines/vn/procedures/itemShelvingSale_addBySectorCollection.sql +++ b/db/routines/vn/procedures/itemShelvingSale_addBySectorCollection.sql @@ -10,6 +10,7 @@ BEGIN */ DECLARE vDone BOOL DEFAULT FALSE; DECLARE vSaleFk INT; + DECLARE vSectorFk INT; DECLARE vSales CURSOR FOR SELECT s.id FROM sectorCollectionSaleGroup sc @@ -25,6 +26,10 @@ BEGIN DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; + SELECT sectorFk INTO vSectorFk + FROM operator + WHERE workerFk = account.myUser_getId(); + OPEN vSales; l: LOOP SET vDone = FALSE; @@ -34,7 +39,7 @@ BEGIN LEAVE l; END IF; - CALL itemShelvingSale_addBySale(vSaleFk); + CALL itemShelvingSale_addBySale(vSaleFk, vSectorFk); END LOOP; CLOSE vSales; END$$ diff --git a/db/routines/vn/procedures/itemShelvingSale_doReserve.sql b/db/routines/vn/procedures/itemShelvingSale_doReserve.sql index 629e303b31..8109004345 100644 --- a/db/routines/vn/procedures/itemShelvingSale_doReserve.sql +++ b/db/routines/vn/procedures/itemShelvingSale_doReserve.sql @@ -6,6 +6,7 @@ proc: BEGIN */ DECLARE vDone BOOL; DECLARE vSaleFk INT; + DECLARE vSectorFk INT; DECLARE vSales CURSOR FOR SELECT DISTINCT saleFk FROM tSale; @@ -26,24 +27,25 @@ proc: BEGIN CREATE OR REPLACE TEMPORARY TABLE tSale ENGINE = MEMORY - SELECT id, saleFk FROM itemShelvingSaleReserve; + SELECT id, saleFk, sectorFk FROM itemShelvingSaleReserve; OPEN vSales; myLoop: LOOP SET vDone = FALSE; - FETCH vSales INTO vSaleFk; + FETCH vSales INTO vSaleFk, vSectorFk; IF vDone THEN LEAVE myLoop; END IF; - CALL itemShelvingSale_addBySale (vSaleFk); + CALL itemShelvingSale_addBySale (vSaleFk, vSectorFk); END LOOP; CLOSE vSales; - DELETE iss FROM itemShelvingSaleReserve iss JOIN tSale s ON s.id = iss.id; + DELETE iss FROM itemShelvingSaleReserve iss + JOIN tSale s ON s.id = iss.id AND s.sectorFk = iss.sectorFk; DROP TEMPORARY TABLE tSale; diff --git a/db/routines/vn/procedures/itemShelvingSale_reallocate.sql b/db/routines/vn/procedures/itemShelvingSale_reallocate.sql index 85230a386a..2b9f927e48 100644 --- a/db/routines/vn/procedures/itemShelvingSale_reallocate.sql +++ b/db/routines/vn/procedures/itemShelvingSale_reallocate.sql @@ -1,13 +1,16 @@ DELIMITER $$ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelvingSale_reallocate`( vItemShelvingFk INT(10), - vItemFk INT(10) + vItemFk INT(10), + vSectorFk INT ) BEGIN /** * Elimina reservas de un itemShelving e intenta reservar en otra ubicación * * @param vItemShelvingFk Id itemShelving + * @param vItemFk Id del artículo + * @param vSectorFk Id del sector */ DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN @@ -28,7 +31,7 @@ BEGIN WHERE id = vItemShelvingFk AND itemFk = vItemFk; - INSERT INTO itemShelvingSaleReserve (saleFk) + INSERT INTO itemShelvingSaleReserve (saleFk, vSectorFk) SELECT DISTINCT iss.saleFk FROM itemShelvingSale iss JOIN itemShelving ish ON ish.id = iss.itemShelvingFk diff --git a/db/routines/vn/procedures/itemShelvingSale_setQuantity.sql b/db/routines/vn/procedures/itemShelvingSale_setQuantity.sql index 85f56ee686..b65c5df7f5 100644 --- a/db/routines/vn/procedures/itemShelvingSale_setQuantity.sql +++ b/db/routines/vn/procedures/itemShelvingSale_setQuantity.sql @@ -2,7 +2,8 @@ DELIMITER $$ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelvingSale_setQuantity`( vItemShelvingSaleFk INT(10), vQuantity DECIMAL(10,0), - vIsItemShelvingSaleEmpty BOOLEAN + vIsItemShelvingSaleEmpty BOOLEAN, + vSectorFk INT ) BEGIN /** @@ -14,6 +15,7 @@ BEGIN * @param vQuantity Cantidad real que se ha cogido de la ubicación * @param vIsItemShelvingSaleEmpty determina si la ubicación itemShelvingSale se ha * quedado vacio tras el movimiento + * @param vSectorFk Id del sector */ DECLARE vSaleFk INT; DECLARE vItemShelvingFk INT; @@ -72,7 +74,7 @@ BEGIN SET visible = GREATEST(0, visible - vQuantity) WHERE id = vItemShelvingFk; - SELECT SUM(IF(isPicked, 0, quantity)), SUM(quantity) + SELECT SUM(IF(isPicked OR id = vItemShelvingSaleFk, 0, quantity)), SUM(quantity) INTO vRemainingQuantity, vTotalQuantity FROM itemShelvingSale WHERE saleFk = vSaleFk; @@ -96,9 +98,9 @@ BEGIN COMMIT; IF vIsItemShelvingSaleEmpty AND vQuantity <> vReservedQuantity THEN - INSERT INTO itemShelvingSaleReserve (saleFk) + INSERT INTO itemShelvingSaleReserve (saleFk, vSectorFk) SELECT vSaleFk; - CALL itemShelvingSale_reallocate(vItemShelvingFk, vItemFk); + CALL itemShelvingSale_reallocate(vItemShelvingFk, vItemFk, vSectorFk); END IF; END$$ DELIMITER ; \ No newline at end of file diff --git a/db/versions/11158-redRaphis/00-firstScript.sql b/db/versions/11158-redRaphis/00-firstScript.sql new file mode 100644 index 0000000000..49fb852d07 --- /dev/null +++ b/db/versions/11158-redRaphis/00-firstScript.sql @@ -0,0 +1,5 @@ +-- Place your SQL code here + + +ALTER TABLE vn.itemShelvingSaleReserve ADD sectorFk int(11) NULL; +ALTER TABLE vn.itemShelvingSaleReserve ADD CONSTRAINT itemShelvingSaleReserve_sector_FK FOREIGN KEY (id) REFERENCES vn.sector(id) ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/modules/item/back/methods/item-shelving-sale/itemShelvingSaleSetQuantity.js b/modules/item/back/methods/item-shelving-sale/itemShelvingSaleSetQuantity.js index 90e66c066f..add2aa4045 100644 --- a/modules/item/back/methods/item-shelving-sale/itemShelvingSaleSetQuantity.js +++ b/modules/item/back/methods/item-shelving-sale/itemShelvingSaleSetQuantity.js @@ -1,6 +1,6 @@ module.exports = Self => { Self.remoteMethodCtx('itemShelvingSaleSetQuantity', { - description: 'Set quanitity of a sale in itemShelvingSale', + description: 'Set quantity of a sale in itemShelvingSale', accessType: 'WRITE', accepts: [ { @@ -20,6 +20,12 @@ module.exports = Self => { type: 'boolean', required: true, description: 'True if the shelvingFk is empty ', + }, + { + arg: 'sectorFk', + type: 'number', + required: true, + description: 'Sector Id', } ], http: { @@ -28,14 +34,14 @@ module.exports = Self => { } }); - Self.itemShelvingSaleSetQuantity = async(ctx, id, quantity, isItemShelvingSaleEmpty, options) => { + Self.itemShelvingSaleSetQuantity = async(ctx, id, quantity, isItemShelvingSaleEmpty, sectorFk, options) => { const myOptions = {userId: ctx.req.accessToken.userId}; if (typeof options == 'object') Object.assign(myOptions, options); - await Self.rawSql(`CALL vn.itemShelvingSale_setQuantity(?, ?, ? )`, - [id, quantity, isItemShelvingSaleEmpty], + await Self.rawSql(`CALL vn.itemShelvingSale_setQuantity(?, ?, ?, ?)`, + [id, quantity, isItemShelvingSaleEmpty, sectorFk], myOptions); }; }; From 3aea6fdd4634fd42cd27c4fdc81953c9a2ed2498 Mon Sep 17 00:00:00 2001 From: sergiodt Date: Wed, 17 Jul 2024 16:09:09 +0200 Subject: [PATCH 09/18] hotFix reservas refs #6861 --- .../procedures/collection_addWithReservation.sql | 5 +++-- .../itemShelvingSale_addByCollection.sql | 2 +- .../vn/procedures/itemShelvingSale_addBySale.sql | 5 ++++- .../itemShelvingSale_addBySectorCollection.sql | 7 ++++++- .../vn/procedures/itemShelvingSale_doReserve.sql | 10 ++++++---- .../vn/procedures/itemShelvingSale_reallocate.sql | 7 +++++-- .../vn/procedures/itemShelvingSale_setQuantity.sql | 10 ++++++---- db/versions/11158-redRaphis/00-firstScript.sql | 5 +++++ .../itemShelvingSaleSetQuantity.js | 14 ++++++++++---- 9 files changed, 46 insertions(+), 19 deletions(-) create mode 100644 db/versions/11158-redRaphis/00-firstScript.sql diff --git a/db/routines/vn/procedures/collection_addWithReservation.sql b/db/routines/vn/procedures/collection_addWithReservation.sql index e3f4eb8d22..18a3e8ab28 100644 --- a/db/routines/vn/procedures/collection_addWithReservation.sql +++ b/db/routines/vn/procedures/collection_addWithReservation.sql @@ -3,7 +3,8 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`collection_addWithR vItemFk INT, vQuantity INT, vTicketFk INT, - vSaleGroupFk INT + vSaleGroupFk INT, + vSectorFk INT ) BEGIN /** @@ -67,7 +68,7 @@ BEGIN SELECT LAST_INSERT_ID() INTO vSaleFk; CALL sale_calculateComponent(vSaleFk, NULL); - CALL itemShelvingSale_addBySale(vSaleFk); + CALL itemShelvingSale_addBySale(vSaleFk, vSectorFk); IF NOT EXISTS (SELECT TRUE FROM itemShelvingSale WHERE saleFk = vSaleFk LIMIT 1) THEN SET vHasThrow = TRUE; diff --git a/db/routines/vn/procedures/itemShelvingSale_addByCollection.sql b/db/routines/vn/procedures/itemShelvingSale_addByCollection.sql index 7f9cc66162..a6f9b3e8c7 100644 --- a/db/routines/vn/procedures/itemShelvingSale_addByCollection.sql +++ b/db/routines/vn/procedures/itemShelvingSale_addByCollection.sql @@ -44,7 +44,7 @@ BEGIN LEAVE l; END IF; - CALL itemShelvingSale_addBySale(vSaleFk); + CALL itemShelvingSale_addBySale(vSaleFk, NULL); END LOOP; CLOSE vSales; END$$ diff --git a/db/routines/vn/procedures/itemShelvingSale_addBySale.sql b/db/routines/vn/procedures/itemShelvingSale_addBySale.sql index 909ce51554..96c49b7889 100644 --- a/db/routines/vn/procedures/itemShelvingSale_addBySale.sql +++ b/db/routines/vn/procedures/itemShelvingSale_addBySale.sql @@ -1,6 +1,7 @@ DELIMITER $$ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelvingSale_addBySale`( - vSaleFk INT + vSaleFk INT, + vSectorFk INT ) proc: BEGIN /** @@ -8,6 +9,7 @@ proc: BEGIN * * @param vSaleFk Id de sale * @param vItemShelvingSaleFk Id de reserva + * @param vSectorFk Id del sector del operator */ DECLARE vLastPickingOrder INT; DECLARE vDone INT DEFAULT FALSE; @@ -30,6 +32,7 @@ proc: BEGIN JOIN productionConfig pc WHERE s.id = vSaleFk AND NOT sc.isHideForPickers + AND (sc.id = vSectorFk OR vSectorFk IS NULL) ORDER BY s.id, p.pickingOrder >= vLastPickingOrder, sh.priority DESC, diff --git a/db/routines/vn/procedures/itemShelvingSale_addBySectorCollection.sql b/db/routines/vn/procedures/itemShelvingSale_addBySectorCollection.sql index 442abcf5da..c359c7c8d3 100644 --- a/db/routines/vn/procedures/itemShelvingSale_addBySectorCollection.sql +++ b/db/routines/vn/procedures/itemShelvingSale_addBySectorCollection.sql @@ -10,6 +10,7 @@ BEGIN */ DECLARE vDone BOOL DEFAULT FALSE; DECLARE vSaleFk INT; + DECLARE vSectorFk INT; DECLARE vSales CURSOR FOR SELECT s.id FROM sectorCollectionSaleGroup sc @@ -25,6 +26,10 @@ BEGIN DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; + SELECT sectorFk INTO vSectorFk + FROM operator + WHERE workerFk = account.myUser_getId(); + OPEN vSales; l: LOOP SET vDone = FALSE; @@ -34,7 +39,7 @@ BEGIN LEAVE l; END IF; - CALL itemShelvingSale_addBySale(vSaleFk); + CALL itemShelvingSale_addBySale(vSaleFk, vSectorFk); END LOOP; CLOSE vSales; END$$ diff --git a/db/routines/vn/procedures/itemShelvingSale_doReserve.sql b/db/routines/vn/procedures/itemShelvingSale_doReserve.sql index 629e303b31..8109004345 100644 --- a/db/routines/vn/procedures/itemShelvingSale_doReserve.sql +++ b/db/routines/vn/procedures/itemShelvingSale_doReserve.sql @@ -6,6 +6,7 @@ proc: BEGIN */ DECLARE vDone BOOL; DECLARE vSaleFk INT; + DECLARE vSectorFk INT; DECLARE vSales CURSOR FOR SELECT DISTINCT saleFk FROM tSale; @@ -26,24 +27,25 @@ proc: BEGIN CREATE OR REPLACE TEMPORARY TABLE tSale ENGINE = MEMORY - SELECT id, saleFk FROM itemShelvingSaleReserve; + SELECT id, saleFk, sectorFk FROM itemShelvingSaleReserve; OPEN vSales; myLoop: LOOP SET vDone = FALSE; - FETCH vSales INTO vSaleFk; + FETCH vSales INTO vSaleFk, vSectorFk; IF vDone THEN LEAVE myLoop; END IF; - CALL itemShelvingSale_addBySale (vSaleFk); + CALL itemShelvingSale_addBySale (vSaleFk, vSectorFk); END LOOP; CLOSE vSales; - DELETE iss FROM itemShelvingSaleReserve iss JOIN tSale s ON s.id = iss.id; + DELETE iss FROM itemShelvingSaleReserve iss + JOIN tSale s ON s.id = iss.id AND s.sectorFk = iss.sectorFk; DROP TEMPORARY TABLE tSale; diff --git a/db/routines/vn/procedures/itemShelvingSale_reallocate.sql b/db/routines/vn/procedures/itemShelvingSale_reallocate.sql index 85230a386a..2b9f927e48 100644 --- a/db/routines/vn/procedures/itemShelvingSale_reallocate.sql +++ b/db/routines/vn/procedures/itemShelvingSale_reallocate.sql @@ -1,13 +1,16 @@ DELIMITER $$ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelvingSale_reallocate`( vItemShelvingFk INT(10), - vItemFk INT(10) + vItemFk INT(10), + vSectorFk INT ) BEGIN /** * Elimina reservas de un itemShelving e intenta reservar en otra ubicación * * @param vItemShelvingFk Id itemShelving + * @param vItemFk Id del artículo + * @param vSectorFk Id del sector */ DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN @@ -28,7 +31,7 @@ BEGIN WHERE id = vItemShelvingFk AND itemFk = vItemFk; - INSERT INTO itemShelvingSaleReserve (saleFk) + INSERT INTO itemShelvingSaleReserve (saleFk, vSectorFk) SELECT DISTINCT iss.saleFk FROM itemShelvingSale iss JOIN itemShelving ish ON ish.id = iss.itemShelvingFk diff --git a/db/routines/vn/procedures/itemShelvingSale_setQuantity.sql b/db/routines/vn/procedures/itemShelvingSale_setQuantity.sql index 85f56ee686..b65c5df7f5 100644 --- a/db/routines/vn/procedures/itemShelvingSale_setQuantity.sql +++ b/db/routines/vn/procedures/itemShelvingSale_setQuantity.sql @@ -2,7 +2,8 @@ DELIMITER $$ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelvingSale_setQuantity`( vItemShelvingSaleFk INT(10), vQuantity DECIMAL(10,0), - vIsItemShelvingSaleEmpty BOOLEAN + vIsItemShelvingSaleEmpty BOOLEAN, + vSectorFk INT ) BEGIN /** @@ -14,6 +15,7 @@ BEGIN * @param vQuantity Cantidad real que se ha cogido de la ubicación * @param vIsItemShelvingSaleEmpty determina si la ubicación itemShelvingSale se ha * quedado vacio tras el movimiento + * @param vSectorFk Id del sector */ DECLARE vSaleFk INT; DECLARE vItemShelvingFk INT; @@ -72,7 +74,7 @@ BEGIN SET visible = GREATEST(0, visible - vQuantity) WHERE id = vItemShelvingFk; - SELECT SUM(IF(isPicked, 0, quantity)), SUM(quantity) + SELECT SUM(IF(isPicked OR id = vItemShelvingSaleFk, 0, quantity)), SUM(quantity) INTO vRemainingQuantity, vTotalQuantity FROM itemShelvingSale WHERE saleFk = vSaleFk; @@ -96,9 +98,9 @@ BEGIN COMMIT; IF vIsItemShelvingSaleEmpty AND vQuantity <> vReservedQuantity THEN - INSERT INTO itemShelvingSaleReserve (saleFk) + INSERT INTO itemShelvingSaleReserve (saleFk, vSectorFk) SELECT vSaleFk; - CALL itemShelvingSale_reallocate(vItemShelvingFk, vItemFk); + CALL itemShelvingSale_reallocate(vItemShelvingFk, vItemFk, vSectorFk); END IF; END$$ DELIMITER ; \ No newline at end of file diff --git a/db/versions/11158-redRaphis/00-firstScript.sql b/db/versions/11158-redRaphis/00-firstScript.sql new file mode 100644 index 0000000000..49fb852d07 --- /dev/null +++ b/db/versions/11158-redRaphis/00-firstScript.sql @@ -0,0 +1,5 @@ +-- Place your SQL code here + + +ALTER TABLE vn.itemShelvingSaleReserve ADD sectorFk int(11) NULL; +ALTER TABLE vn.itemShelvingSaleReserve ADD CONSTRAINT itemShelvingSaleReserve_sector_FK FOREIGN KEY (id) REFERENCES vn.sector(id) ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/modules/item/back/methods/item-shelving-sale/itemShelvingSaleSetQuantity.js b/modules/item/back/methods/item-shelving-sale/itemShelvingSaleSetQuantity.js index 90e66c066f..add2aa4045 100644 --- a/modules/item/back/methods/item-shelving-sale/itemShelvingSaleSetQuantity.js +++ b/modules/item/back/methods/item-shelving-sale/itemShelvingSaleSetQuantity.js @@ -1,6 +1,6 @@ module.exports = Self => { Self.remoteMethodCtx('itemShelvingSaleSetQuantity', { - description: 'Set quanitity of a sale in itemShelvingSale', + description: 'Set quantity of a sale in itemShelvingSale', accessType: 'WRITE', accepts: [ { @@ -20,6 +20,12 @@ module.exports = Self => { type: 'boolean', required: true, description: 'True if the shelvingFk is empty ', + }, + { + arg: 'sectorFk', + type: 'number', + required: true, + description: 'Sector Id', } ], http: { @@ -28,14 +34,14 @@ module.exports = Self => { } }); - Self.itemShelvingSaleSetQuantity = async(ctx, id, quantity, isItemShelvingSaleEmpty, options) => { + Self.itemShelvingSaleSetQuantity = async(ctx, id, quantity, isItemShelvingSaleEmpty, sectorFk, options) => { const myOptions = {userId: ctx.req.accessToken.userId}; if (typeof options == 'object') Object.assign(myOptions, options); - await Self.rawSql(`CALL vn.itemShelvingSale_setQuantity(?, ?, ? )`, - [id, quantity, isItemShelvingSaleEmpty], + await Self.rawSql(`CALL vn.itemShelvingSale_setQuantity(?, ?, ?, ?)`, + [id, quantity, isItemShelvingSaleEmpty, sectorFk], myOptions); }; }; From 8ff3e8acb0a3490600a76438cbef9144281da8d5 Mon Sep 17 00:00:00 2001 From: sergiodt Date: Wed, 17 Jul 2024 16:21:37 +0200 Subject: [PATCH 10/18] hotFix reservas refs #6861 --- db/versions/11158-redRaphis/00-firstScript.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/db/versions/11158-redRaphis/00-firstScript.sql b/db/versions/11158-redRaphis/00-firstScript.sql index 49fb852d07..d82a7eb9dd 100644 --- a/db/versions/11158-redRaphis/00-firstScript.sql +++ b/db/versions/11158-redRaphis/00-firstScript.sql @@ -1,5 +1,5 @@ -- Place your SQL code here -ALTER TABLE vn.itemShelvingSaleReserve ADD sectorFk int(11) NULL; -ALTER TABLE vn.itemShelvingSaleReserve ADD CONSTRAINT itemShelvingSaleReserve_sector_FK FOREIGN KEY (id) REFERENCES vn.sector(id) ON DELETE RESTRICT ON UPDATE CASCADE; +ALTER TABLE IF EXISTS vn.itemShelvingSaleReserve ADD sectorFk int(11) NULL; +ALTER TABLE IF EXISTS vn.itemShelvingSaleReserve ADD CONSTRAINT itemShelvingSaleReserve_sector_FK FOREIGN KEY (id) REFERENCES vn.sector(id) ON DELETE RESTRICT ON UPDATE CASCADE; From a35ec4a42ca27cb20f9a75199659092e980689a4 Mon Sep 17 00:00:00 2001 From: sergiodt Date: Wed, 17 Jul 2024 16:48:52 +0200 Subject: [PATCH 11/18] hotFix reservas refs #6861 --- db/versions/11158-redRaphis/00-firstScript.sql | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/db/versions/11158-redRaphis/00-firstScript.sql b/db/versions/11158-redRaphis/00-firstScript.sql index d82a7eb9dd..7fe41b32b7 100644 --- a/db/versions/11158-redRaphis/00-firstScript.sql +++ b/db/versions/11158-redRaphis/00-firstScript.sql @@ -1,5 +1,11 @@ -- Place your SQL code here +ALTER TABLE IF EXISTS vn.itemShelvingSaleReserve +ADD IF NOT EXISTS sectorFk int(11) NULL; -ALTER TABLE IF EXISTS vn.itemShelvingSaleReserve ADD sectorFk int(11) NULL; -ALTER TABLE IF EXISTS vn.itemShelvingSaleReserve ADD CONSTRAINT itemShelvingSaleReserve_sector_FK FOREIGN KEY (id) REFERENCES vn.sector(id) ON DELETE RESTRICT ON UPDATE CASCADE; +ALTER TABLE IF EXISTS vn.itemShelvingSaleReserve +DROP FOREIGN KEY IF EXISTS itemShelvingSaleReserve_sector_FK; + +ALTER TABLE IF EXISTS vn.itemShelvingSaleReserve +ADD CONSTRAINT itemShelvingSaleReserve_sector_FK FOREIGN KEY (id) +REFERENCES vn.sector(id) ON DELETE RESTRICT ON UPDATE CASCADE; \ No newline at end of file From f7429f392769e711f91fa2ffc8a0165b89aa1406 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s?= Date: Wed, 17 Jul 2024 18:24:27 +0200 Subject: [PATCH 12/18] Hotfix itemShelvingSale_doReserve Ticket #204044 --- db/routines/vn/procedures/itemShelvingSale_doReserve.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/routines/vn/procedures/itemShelvingSale_doReserve.sql b/db/routines/vn/procedures/itemShelvingSale_doReserve.sql index 8109004345..d38a787a10 100644 --- a/db/routines/vn/procedures/itemShelvingSale_doReserve.sql +++ b/db/routines/vn/procedures/itemShelvingSale_doReserve.sql @@ -9,7 +9,7 @@ proc: BEGIN DECLARE vSectorFk INT; DECLARE vSales CURSOR FOR - SELECT DISTINCT saleFk FROM tSale; + SELECT DISTINCT saleFk, sectorFk FROM tSale; DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; From e96fa75356caf77cbd95c9c0fa27278bc10b2f38 Mon Sep 17 00:00:00 2001 From: robert Date: Thu, 18 Jul 2024 09:22:27 +0200 Subject: [PATCH 13/18] fix: refs #7039 country order --- modules/invoiceIn/front/intrastat/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/invoiceIn/front/intrastat/index.html b/modules/invoiceIn/front/intrastat/index.html index fc01393030..b15fdf5431 100644 --- a/modules/invoiceIn/front/intrastat/index.html +++ b/modules/invoiceIn/front/intrastat/index.html @@ -10,7 +10,7 @@ auto-load="true" url="Countries" data="countries" - order="country"> + order="name"> Date: Thu, 18 Jul 2024 10:13:21 +0200 Subject: [PATCH 14/18] feat: refs #6403 add address mobile --- back/methods/mrw-config/createShipment.ejs | 2 +- back/methods/mrw-config/createShipment.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/back/methods/mrw-config/createShipment.ejs b/back/methods/mrw-config/createShipment.ejs index 65326112b5..52ccc859c8 100644 --- a/back/methods/mrw-config/createShipment.ejs +++ b/back/methods/mrw-config/createShipment.ejs @@ -25,7 +25,7 @@ <%= expeditionData.fi %> <%= expeditionData.clientName %> - <%= expeditionData.phone %> + <%= expeditionData.mobile %> <%= expeditionData.deliveryObservation %> diff --git a/back/methods/mrw-config/createShipment.js b/back/methods/mrw-config/createShipment.js index 900e1fc0f1..4db0d0c7de 100644 --- a/back/methods/mrw-config/createShipment.js +++ b/back/methods/mrw-config/createShipment.js @@ -47,7 +47,7 @@ module.exports = Self => { co.code countryCode, c.fi, c.name clientName, - c.phone, + a.mobile, DATE_FORMAT(t.shipped, '%d/%m/%Y') created, t.shipped, CONCAT( e.ticketFk, LPAD(e.counter, mc.counterWidth, '0')) reference, From bd1074131109cf8439a345d300794b098677dd38 Mon Sep 17 00:00:00 2001 From: sergiodt Date: Thu, 18 Jul 2024 12:42:00 +0200 Subject: [PATCH 15/18] hotFix reservas refs #6861 --- .../vn/procedures/itemShelvingSale_reallocate.sql | 13 ++++++++----- .../vn/procedures/itemShelvingSale_setQuantity.sql | 13 +++++++++---- db/versions/11159-redIvy/00-firstScript.sql | 3 +++ 3 files changed, 20 insertions(+), 9 deletions(-) create mode 100644 db/versions/11159-redIvy/00-firstScript.sql diff --git a/db/routines/vn/procedures/itemShelvingSale_reallocate.sql b/db/routines/vn/procedures/itemShelvingSale_reallocate.sql index 2b9f927e48..a60287caa2 100644 --- a/db/routines/vn/procedures/itemShelvingSale_reallocate.sql +++ b/db/routines/vn/procedures/itemShelvingSale_reallocate.sql @@ -20,17 +20,20 @@ BEGIN START TRANSACTION; - SELECT id INTO vItemShelvingFk - FROM itemShelving - WHERE id = vItemShelvingFk - FOR UPDATE; - UPDATE itemShelving SET visible = 0, available = 0 WHERE id = vItemShelvingFk AND itemFk = vItemFk; + SELECT iss.id + FROM itemShelvingSale iss + JOIN itemShelving ish ON ish.id = iss.itemShelvingFk + WHERE iss.itemShelvingFk = vItemShelvingFk + AND iss.itemFk = vItemFk + AND NOT iss.isPicked + FOR UPDATE; + INSERT INTO itemShelvingSaleReserve (saleFk, vSectorFk) SELECT DISTINCT iss.saleFk FROM itemShelvingSale iss diff --git a/db/routines/vn/procedures/itemShelvingSale_setQuantity.sql b/db/routines/vn/procedures/itemShelvingSale_setQuantity.sql index b65c5df7f5..30abefec80 100644 --- a/db/routines/vn/procedures/itemShelvingSale_setQuantity.sql +++ b/db/routines/vn/procedures/itemShelvingSale_setQuantity.sql @@ -31,6 +31,12 @@ BEGIN RESIGNAL; END; + IF vQuantity > vReservedQuantity + OR (vQuantity < vReservedQuantity AND NOT vIsItemShelvingSaleEmpty) + OR (vQuantity = vReservedQuantity AND vIsItemShelvingSaleEmpty) THEN + CALL util.throw('The quantity cannot be different from the reserved'); + END IF; + IF (SELECT isPicked FROM itemShelvingSale WHERE id = vItemShelvingSaleFk) THEN CALL util.throw('Reservation completed'); END IF; @@ -52,9 +58,8 @@ BEGIN AND NOT iss.isPicked; IF vQuantity > vReservedQuantity - OR (vQuantity < vReservedQuantity AND - (NOT vIsItemShelvingSaleEmpty OR vIsItemShelvingSaleEmpty IS NULL)) - OR (vIsItemShelvingSaleEmpty IS NOT NULL AND vQuantity = vReservedQuantity) THEN + OR (vQuantity < vReservedQuantity AND NOT vIsItemShelvingSaleEmpty) + OR (vQuantity = vReservedQuantity AND vIsItemShelvingSaleEmpty) THEN CALL util.throw('The quantity cannot be different from the reserved'); END IF; @@ -99,7 +104,7 @@ BEGIN IF vIsItemShelvingSaleEmpty AND vQuantity <> vReservedQuantity THEN INSERT INTO itemShelvingSaleReserve (saleFk, vSectorFk) - SELECT vSaleFk; + SELECT vSaleFk, vSectorFk; CALL itemShelvingSale_reallocate(vItemShelvingFk, vItemFk, vSectorFk); END IF; END$$ diff --git a/db/versions/11159-redIvy/00-firstScript.sql b/db/versions/11159-redIvy/00-firstScript.sql new file mode 100644 index 0000000000..d0b563b7ab --- /dev/null +++ b/db/versions/11159-redIvy/00-firstScript.sql @@ -0,0 +1,3 @@ + + +ALTER TABLE vn.itemShelvingSale MODIFY COLUMN IF EXISTS isPicked tinyint(1) DEFAULT 1 NOT NULL; From ba5c44994d19103206d284d0900858f9dd661e6c Mon Sep 17 00:00:00 2001 From: guillermo Date: Thu, 18 Jul 2024 13:45:06 +0200 Subject: [PATCH 16/18] feat: refs #7686 Added cascade on update vn.state.alertLevel --- db/versions/11160-blueRoebelini/00-firstScript.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 db/versions/11160-blueRoebelini/00-firstScript.sql diff --git a/db/versions/11160-blueRoebelini/00-firstScript.sql b/db/versions/11160-blueRoebelini/00-firstScript.sql new file mode 100644 index 0000000000..235eda7fd5 --- /dev/null +++ b/db/versions/11160-blueRoebelini/00-firstScript.sql @@ -0,0 +1,2 @@ +ALTER TABLE vn.state DROP FOREIGN KEY state_ibfk_1; +ALTER TABLE vn.state ADD CONSTRAINT state_ibfk_1 FOREIGN KEY (alertLevel) REFERENCES vn.alertLevel(id) ON DELETE RESTRICT ON UPDATE CASCADE; From 684983ee424ecf8c03136548d4f8ff4b374d72a1 Mon Sep 17 00:00:00 2001 From: pablone Date: Thu, 18 Jul 2024 15:14:18 +0200 Subject: [PATCH 17/18] fix: refs #7752 add new state after scan --- .../vn/procedures/expeditionPallet_build.sql | 87 ++++++++++--------- 1 file changed, 45 insertions(+), 42 deletions(-) diff --git a/db/routines/vn/procedures/expeditionPallet_build.sql b/db/routines/vn/procedures/expeditionPallet_build.sql index bea56eae69..2769190dbb 100644 --- a/db/routines/vn/procedures/expeditionPallet_build.sql +++ b/db/routines/vn/procedures/expeditionPallet_build.sql @@ -1,5 +1,10 @@ DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`expeditionPallet_build`(IN vExpeditions JSON, IN vArcId INT, IN vWorkerFk INT, OUT vPalletFk INT) +CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`expeditionPallet_build`( + vExpeditions JSON, + vArcId INT, + vWorkerFk INT, + OUT vPalletFk INT +) BEGIN /** Construye un pallet de expediciones. * @@ -7,28 +12,22 @@ BEGIN * en cuyo caso actualiza ese pallet. * * @param vExpeditions JSON_ARRAY con esta estructura [exp1, exp2, exp3, ...] - * @param vArcId INT Identificador de vn.arcRead - * @param vWorkerFk INT Identificador de vn.worker - * @param out vPalletFk Identificador de vn.expeditionPallet + * @param vArcId INT Identificador de arcRead + * @param vWorkerFk INT Identificador de worker + * @param out vPalletFk Identificador de expeditionPallet */ DECLARE vCounter INT; DECLARE vExpeditionFk INT; DECLARE vTruckFk INT; DECLARE vPrinterFk INT; + DECLARE vExpeditionScanTypeFk INT; - DROP TEMPORARY TABLE IF EXISTS tExpedition; - CREATE TEMPORARY TABLE tExpedition - SELECT - e.id expeditionFk, - r.id routeFk, - ep.id palletFk - FROM - vn.expedition e, - vn.route r, - vn.expeditionPallet ep - LIMIT 0; - - ALTER TABLE tExpedition ADD PRIMARY KEY (expeditionFk); + CREATE OR REPLACE TEMPORARY TABLE tExpedition ( + expeditionFk INT, + routeFk INT, + palletFk INT, + PRIMARY KEY (expeditionFk) + ); SET vCounter = JSON_LENGTH(vExpeditions); @@ -39,53 +38,57 @@ BEGIN INSERT IGNORE INTO tExpedition(expeditionFk, routeFk, palletFk) SELECT vExpeditionFk, t.routeFk, es.palletFk - FROM vn.expedition e - LEFT JOIN vn.ticket t ON t.id = e.ticketFk - LEFT JOIN vn.expeditionScan es ON es.expeditionFk = e.id + FROM expedition e + LEFT JOIN ticket t ON t.id = e.ticketFk + LEFT JOIN expeditionScan es ON es.expeditionFk = e.id WHERE e.id = vExpeditionFk; END WHILE; SELECT palletFk INTO vPalletFk FROM ( - SELECT palletFk, count(*) n - FROM tExpedition - WHERE palletFk > 0 - GROUP BY palletFk - ORDER BY n DESC - LIMIT 100 ) sub + SELECT palletFk, count(*) n + FROM tExpedition + WHERE palletFk > 0 + GROUP BY palletFk + ORDER BY n DESC + LIMIT 100 + ) sub LIMIT 1; IF vPalletFk IS NULL THEN - SELECT roadmapStopFk - INTO vTruckFk - FROM ( - SELECT rm.roadmapStopFk, count(*) n - FROM vn.routesMonitor rm - JOIN tExpedition e ON e.routeFk = rm.routeFk - GROUP BY roadmapStopFk - ORDER BY n DESC - LIMIT 1) sub; + SELECT roadmapStopFk INTO vTruckFk + FROM ( + SELECT rm.roadmapStopFk, count(*) n + FROM routesMonitor rm + JOIN tExpedition e ON e.routeFk = rm.routeFk + GROUP BY roadmapStopFk + ORDER BY n DESC + LIMIT 1 + ) sub; IF vTruckFk IS NULL THEN CALL util.throw ('TRUCK_NOT_AVAILABLE'); END IF; - INSERT INTO vn.expeditionPallet(truckFk) + INSERT INTO expeditionPallet(truckFk) VALUES(vTruckFk); SET vPalletFk = LAST_INSERT_ID(); END IF; - INSERT INTO vn.expeditionScan(expeditionFk, palletFk, workerFk) + INSERT INTO expeditionScan(expeditionFk, palletFk, workerFk) SELECT expeditionFk, vPalletFk, vWorkerFk FROM tExpedition ON DUPLICATE KEY UPDATE palletFk = vPalletFk, workerFk = vWorkerFk; - SELECT printerFk INTO vPrinterFk - FROM vn.arcRead - WHERE id = vArcId; + SELECT id INTO vExpeditionScanTypeFk FROM expeditionScanType WHERE code = 'PALLETIZED'; - CALL vn.report_print( + INSERT INTO expeditionState(expeditionFk, typeFk) + SELECT expeditionFk, vExpeditionScanTypeFk FROM tExpedition; + + SELECT printerFk INTO vPrinterFk FROM arcRead WHERE id = vArcId; + + CALL report_print( 'LabelPalletExpedition', vPrinterFk, account.myUser_getId(), @@ -93,7 +96,7 @@ BEGIN 'high' ); - UPDATE vn.expeditionPallet SET isPrint = TRUE WHERE id = vPalletFk; + UPDATE expeditionPallet SET isPrint = TRUE WHERE id = vPalletFk; DROP TEMPORARY TABLE tExpedition; END$$ From 3b529440ba45735aa62a0f9c8585a1e91ffe6076 Mon Sep 17 00:00:00 2001 From: pablone Date: Thu, 18 Jul 2024 15:16:25 +0200 Subject: [PATCH 18/18] fix: refs #7752 refactor insert --- db/routines/vn/procedures/expeditionPallet_build.sql | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/db/routines/vn/procedures/expeditionPallet_build.sql b/db/routines/vn/procedures/expeditionPallet_build.sql index 2769190dbb..aae10d5a55 100644 --- a/db/routines/vn/procedures/expeditionPallet_build.sql +++ b/db/routines/vn/procedures/expeditionPallet_build.sql @@ -70,8 +70,7 @@ BEGIN CALL util.throw ('TRUCK_NOT_AVAILABLE'); END IF; - INSERT INTO expeditionPallet(truckFk) - VALUES(vTruckFk); + INSERT INTO expeditionPallet SET truckFk = vTruckFk; SET vPalletFk = LAST_INSERT_ID(); END IF;