From bafd4456ef6b6f2c22ae4dec19a81a27cb7e3b96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s?= Date: Fri, 15 Mar 2024 14:46:43 +0100 Subject: [PATCH 01/70] feat: conversion art. A1 a A2 refs #4979 --- db/routines/vn/procedures/buy_clone.sql | 61 +++ db/routines/vn/procedures/buy_cloneByBuy.sql | 23 ++ .../vn/procedures/entry_cloneHeader.sql | 2 +- db/routines/vn/procedures/entry_copyBuys.sql | 57 +-- db/routines/vn/procedures/item_devalueA2.sql | 352 ++++++++++++++++++ .../10955-orangeRuscus/00-firstScript.sql | 17 + 6 files changed, 462 insertions(+), 50 deletions(-) create mode 100644 db/routines/vn/procedures/buy_clone.sql create mode 100644 db/routines/vn/procedures/buy_cloneByBuy.sql create mode 100644 db/routines/vn/procedures/item_devalueA2.sql create mode 100644 db/versions/10955-orangeRuscus/00-firstScript.sql diff --git a/db/routines/vn/procedures/buy_clone.sql b/db/routines/vn/procedures/buy_clone.sql new file mode 100644 index 0000000000..bbf742b232 --- /dev/null +++ b/db/routines/vn/procedures/buy_clone.sql @@ -0,0 +1,61 @@ +DELIMITER $$ +CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`buy_clone`(vEntryFk INT) +BEGIN +/** + * Clone buys to an entry + * + * @param vEntryFk The entry id + * @table tmp.buy(id) + */ + INSERT INTO buy( + entryFk, + itemFk, + quantity, + buyingValue, + freightValue, + isIgnored, + stickers, + packagingFk, + packing, + `grouping`, + groupingMode, + containerFk, + comissionValue, + packageValue, + packageFk, + price1, + price2, + price3, + minPrice, + isChecked, + location, + weight, + itemOriginalFk) + SELECT vEntryFk, + b.itemFk, + b.quantity, + b.buyingValue, + b.freightValue, + b.isIgnored, + b.stickers, + b.packagingFk, + b.packing, + b.`grouping`, + b.groupingMode, + b.containerFk, + b.comissionValue, + b.packageValue, + b.packageFk, + b.price1, + b.price2, + b.price3, + b.minPrice, + b.isChecked, + b.location, + b.weight, + b.itemOriginalFk + FROM tmp.buy tb + JOIN vn.buy b ON b.id = tb.id; + +END$$ +DELIMITER ; \ No newline at end of file diff --git a/db/routines/vn/procedures/buy_cloneByBuy.sql b/db/routines/vn/procedures/buy_cloneByBuy.sql new file mode 100644 index 0000000000..73e91a9df3 --- /dev/null +++ b/db/routines/vn/procedures/buy_cloneByBuy.sql @@ -0,0 +1,23 @@ +DELIMITER $$ +CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`buy_cloneByBuy`( + OUT vBuyClonedFk INT, + IN vSelf INT, + IN vEntryFk INT +) +BEGIN +/** + * Clone a buy to an entry + * + * @param OUT vBuyClonedFk The new cloned buy id + * @param vSelf The buy id to clone + * @param vEntryFk The destination entry id + */ + CREATE OR REPLACE TEMPORARY TABLE tmp.buy + SELECT vSelf id; + + CALL buy_clone(vEntryFk); + SET vBuyClonedFk = LAST_INSERT_ID(); + + DROP TEMPORARY TABLE tmp.buy; +END$$ +DELIMITER ; \ No newline at end of file diff --git a/db/routines/vn/procedures/entry_cloneHeader.sql b/db/routines/vn/procedures/entry_cloneHeader.sql index 6a6df9194d..7f94266632 100644 --- a/db/routines/vn/procedures/entry_cloneHeader.sql +++ b/db/routines/vn/procedures/entry_cloneHeader.sql @@ -9,8 +9,8 @@ BEGIN * Clones an entry header. * * @param vSelf The entry id + * @param OUT vNewEntryFk The new entry id * @param vTravelFk Travel for the new entry or %NULL to use the source entry travel - * @param vNewEntryFk The new entry id */ INSERT INTO entry( travelFk, diff --git a/db/routines/vn/procedures/entry_copyBuys.sql b/db/routines/vn/procedures/entry_copyBuys.sql index a00fbc846b..9bf4a55e4d 100644 --- a/db/routines/vn/procedures/entry_copyBuys.sql +++ b/db/routines/vn/procedures/entry_copyBuys.sql @@ -1,59 +1,18 @@ DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`entry_copyBuys`(vSelf INT, vCopyTo INT) +CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`entry_copyBuys`(vSelf INT, vDestinationEntryFk INT) BEGIN /** - * Copies an entry buys to another buy. + * Copies all buys from an entry to an entry. * * @param vSelf The entry id - * @param vCopyTo The destination entry id + * @param vDestinationEntryFk The destination entry id */ - INSERT INTO buy( - entryFk, - itemFk, - quantity, - buyingValue, - freightValue, - isIgnored, - stickers, - packing, - `grouping`, - groupingMode, - containerFk, - comissionValue, - packageValue, - packagingFk, - price1, - price2, - price3, - minPrice, - isChecked, - location, - weight, - itemOriginalFk - ) - SELECT vCopyTo, - itemFk, - quantity, - buyingValue, - freightValue, - isIgnored, - stickers, - packing, - `grouping`, - groupingMode, - containerFk, - comissionValue, - packageValue, - packagingFk, - price1, - price2, - price3, - minPrice, - isChecked, - location, - weight, - itemOriginalFk + CREATE OR REPLACE TEMPORARY TABLE tmp.buy + SELECT id FROM buy WHERE entryFk = vSelf; + + CALL buy_clone(vDestinationEntryFk); + DROP TEMPORARY TABLE tmp.buy; END$$ DELIMITER ; diff --git a/db/routines/vn/procedures/item_devalueA2.sql b/db/routines/vn/procedures/item_devalueA2.sql new file mode 100644 index 0000000000..e1fb08388b --- /dev/null +++ b/db/routines/vn/procedures/item_devalueA2.sql @@ -0,0 +1,352 @@ +DELIMITER $$ +CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_devalueA2`( + vShelvingFK VARCHAR(10), + vItemFk INT, + vBuyingValue DECIMAL(10,4), + vQuantity INT +) +BEGIN +/** + * Devalua un item modificando su calidad de A1 a A2. + * Si no existe el item A2 lo crea y genera los movimientos de las entradas + * de almacén y shelvings correspondientes + * + * @param vShelvingFK Ubicación actual del artículo + * @param vItemFk Id de artículo a devaluar + * @param vBuyingValue Nuevo precio de coste + */ + DECLARE vItemA2Fk INT; + DECLARE vLastBuyFk BIGINT; + DECLARE vA1BuyFk INT; + DECLARE vA2BuyFk INT; + DECLARE vTargetEntryFk INT; + DECLARE vTargetEntryDate DATE; + DECLARE vTargetItemShelvingFk BIGINT; + DECLARE vWarehouseFk INT; + DECLARE vCacheFk INT; + DECLARE vLastEntryFk INT; + DECLARE vCurrentVisible INT; + DECLARE vInventoryTravelFk INT; + DECLARE vCurdate DATE; + + DECLARE CONTINUE HANDLER FOR SQLEXCEPTION + BEGIN + ROLLBACK; + RESIGNAL; + END; + + IF (SELECT TRUE FROM item WHERE id = vItemFk AND (category <> 'A1' OR category IS NULL)) THEN + CALL util.throw('Item has not category A1'); + END IF; + + SELECT warehouseFk INTO vWarehouseFk + FROM userConfig + WHERE userFk = account.myUser_getId(); + + IF NOT vWarehouseFk OR vWarehouseFk IS NULL THEN + CALL util.throw ('Operator has not a valid warehouse'); + END IF; + + SELECT util.VN_CURDATE() INTO vCurdate; + + SELECT t.id INTO vInventoryTravelFk + FROM travel t + JOIN travelConfig tc + WHERE t.shipped = vCurdate + AND t.landed = vCurdate + AND t.warehouseInFk = vWarehouseFk + AND t.warehouseOutFk = tc.devalueWarehouseOutFk + AND t.agencyModeFk = tc.devalueAgencyModeFk + LIMIT 1; + + IF NOT vInventoryTravelFk OR vInventoryTravelFk IS NULL THEN + INSERT INTO travel ( + shipped, + landed, + warehouseInFk, + warehouseOutFk, + `ref`, + isReceived, + agencyModeFk) + SELECT vCurdate, + vCurdate, + vWarehouseFk, + tc.devalueWarehouseOutFk, + tc.devalueRef, + TRUE, + tc.devalueAgencyModeFk + FROM travelConfig tc; + SET vInventoryTravelFk = LAST_INSERT_ID(); + END IF; + + SELECT id, dated INTO vTargetEntryFk, vTargetEntryDate + FROM `entry` e + WHERE created = vCurdate + AND typeFk ='devaluation' + AND travelFk = vInventoryTravelFk + ORDER BY created DESC + LIMIT 1; + + CALL buyUltimate(vWarehouseFk, vCurdate); + + SELECT b.entryFk, bu.buyFk INTO vLastEntryFk,vLastBuyFk + FROM tmp.buyUltimate bu + JOIN vn.buy b ON b.id =bu.buyFk + WHERE bu.itemFk = vItemFk + AND bu.warehouseFk = vWarehouseFk; + + SELECT id,visible INTO vTargetItemShelvingFk,vCurrentVisible + FROM itemShelving + WHERE shelvingFk = vShelvingFK COLLATE utf8mb3_general_ci + AND itemFk = vItemFk + LIMIT 1; + + IF vQuantity >= vCurrentVisible THEN + CALL util.throw('Quantity is greater than visible'); + END IF; + + START TRANSACTION; + + IF NOT vTargetEntryFk OR vTargetEntryFk IS NULL + OR NOT vTargetEntryDate <=> vCurdate THEN + INSERT INTO entry( + travelFk, + supplierFk, + dated, + commission, + currencyFk, + companyFk, + clonedFrom, + typeFk + ) + SELECT vInventoryTravelFk, + supplierFk, + vCurdate, + commission, + currencyFk, + companyFk, + vLastEntryFk, + 'devaluation' + FROM entry + WHERE id = vLastEntryFk; + + SET vTargetEntryFk = LAST_INSERT_ID(); + END IF; + + SELECT i.id INTO vItemA2Fk + FROM item i + JOIN ( + SELECT i.id, + i.name, + i.subname, + i.value5, + i.value6, + i.value7, + i.value8, + i.value9, + i.value10, + i.NumberOfItemsPerCask, + i.EmbalageCode, + i.quality + FROM item i + WHERE i.id = vItemFk + )i2 ON i2.name <=> i.name + AND i2.subname <=> i.subname + AND i2.value5 <=> i.value5 + AND i2.value6 <=> i.value6 + AND i2.value8 <=> i.value8 + AND i2.value9 <=> i.value9 + AND i2.value10 <=> i.value10 + AND i2.NumberOfItemsPerCask <=> i.NumberOfItemsPerCask + AND i2.EmbalageCode <=> i.EmbalageCode + AND i2.quality <=> i.quality + WHERE i.id <> i2.id + AND i.category = 'A2' + LIMIT 1; + + IF vItemA2Fk IS NULL THEN + INSERT INTO item ( + equivalent, + name, + `size`, + stems, + minPrice, + isToPrint, + family, + box, + category, + originFk, + doPhoto, + image, + inkFk, + intrastatFk, + hasMinPrice, + created, + comment, + typeFk, + generic, + producerFk, + description, + density, + relevancy, + expenseFk, + isActive, + longName, + subName, + tag5, + value5, + tag6, + value6, + tag7, + value7, + tag8, + value8, + tag9, + value9, + tag10, + value10, + minimum, + upToDown, + supplyResponseFk, + hasKgPrice, + isFloramondo, + isFragile, + numberOfItemsPerCask, + embalageCode, + quality, + stemMultiplier, + itemPackingTypeFk, + packingOut, + genericFk, + isLaid, + lastUsed, + weightByPiece, + editorFk, + recycledPlastic, + nonRecycledPlastic) + SELECT equivalent, + name, + `size`, + stems, + minPrice, + isToPrint, + family, + box, + 'A2', + originFk, + doPhoto, + image, + inkFk, + intrastatFk, + hasMinPrice, + created, + comment, + typeFk, + generic, + producerFk, + description, + density, + relevancy, + expenseFk, + isActive, + longName, + subName, + tag5, + value5, + tag6, + value6, + tag7, + value7, + tag8, + value8, + tag9, + value9, + tag10, + value10, + minimum, + upToDown, + supplyResponseFk, + hasKgPrice, + isFloramondo, + isFragile, + numberOfItemsPerCask, + embalageCode, + quality, + stemMultiplier, + itemPackingTypeFk, + packingOut, + genericFk, + isLaid, + lastUsed, + weightByPiece, + editorFk, + recycledPlastic, + nonRecycledPlastic + FROM item + WHERE id = vItemFk; + + SET vItemA2Fk = LAST_INSERT_ID(); + + UPDATE itemTaxCountry itc + JOIN itemTaxCountry itc2 ON itc2.itemFk = vItemFk + AND itc2.countryFk = itc.countryFk + SET itc2.taxClassFk = itc.taxClassFk + WHERE itc.id = vItemA2Fk; + + INSERT INTO itemBotanical (itemFk, genusFk, specieFk) + SELECT vItemA2Fk, genusFk, specieFk + FROM itemBotanical + WHERE itemFk = vItemFk; + END IF; + + IF vQuantity = vCurrentVisible THEN + DELETE FROM itemShelving + WHERE id = vTargetItemShelvingFk; + ELSE + UPDATE itemShelving + SET visible = vCurrentVisible - vQuantity + WHERE id = vTargetItemShelvingFk; + END IF; + + CALL buy_cloneByBuy(vA1BuyFk, vLastBuyFk, vTargetEntryFk); + UPDATE buy + SET quantity = - LEAST(vQuantity,vCurrentVisible), + isIgnored = TRUE, + buyingValue = vBuyingValue + WHERE id = vA1BuyFk; + + CALL buy_cloneByBuy(vA2BuyFk, vLastBuyFk, vTargetEntryFk); + UPDATE buy + SET quantity = vQuantity, + isIgnored = TRUE, + buyingValue = vBuyingValue, + itemFk = vItemA2Fk + WHERE id = vA2BuyFk; + + INSERT INTO itemShelving ( + itemFk, + shelvingFk, + visible, + `grouping`, + packing, + packagingFk, + userFk, + isChecked) + SELECT vItemA2Fk, + shelvingFk, + vQuantity, + `grouping`, + packing, + packagingFk, + account.myUser_getId(), + isChecked + FROM itemShelving + WHERE itemFK = vItemFk + AND shelvingFk = vShelvingFK COLLATE utf8mb3_general_ci; + + COMMIT; + CALL cache.visible_refresh(vCacheFk, TRUE, vWarehouseFk); + CALL cache.available_refresh(vCacheFk, TRUE, vWarehouseFk, vCurdate); + CALL buy_recalcPricesByBuy(vA2BuyFk); +END$$ +DELIMITER ; \ No newline at end of file diff --git a/db/versions/10955-orangeRuscus/00-firstScript.sql b/db/versions/10955-orangeRuscus/00-firstScript.sql new file mode 100644 index 0000000000..745c058bfc --- /dev/null +++ b/db/versions/10955-orangeRuscus/00-firstScript.sql @@ -0,0 +1,17 @@ +INSERT IGNORE INTO vn.entryType (code, description) + VALUES ('devaluation', 'Devaluación'); + +ALTER TABLE vn.travelConfig ADD IF NOT EXISTS devalueWarehouseOutFk SMALLINT(6) UNSIGNED NULL + COMMENT 'Datos del travel para las entradas generadas al devaluar artículos de A1 a A2'; + +ALTER TABLE vn.travelConfig ADD IF NOT EXISTS devalueAgencyModeFk INT(11) NULL; +ALTER TABLE vn.travelConfig ADD IF NOT EXISTS devalueRef varchar(20) NULL; + +ALTER TABLE vn.travelConfig DROP FOREIGN KEY IF EXISTS travelConfig_agencyMode_FK; + +ALTER TABLE vn.travelConfig ADD CONSTRAINT travelConfig_agencyMode_FK + FOREIGN KEY (devalueAgencyModeFk) REFERENCES vn.agencyMode(id) ON DELETE SET NULL ON UPDATE CASCADE; + +ALTER TABLE vn.travelConfig DROP FOREIGN KEY IF EXISTS travelConfig_warehouse_FK; +ALTER TABLE vn.travelConfig ADD CONSTRAINT travelConfig_warehouse_FK + FOREIGN KEY (devalueWarehouseOutFk) REFERENCES vn.warehouse(id) ON DELETE SET NULL ON UPDATE CASCADE; From 02bee2e07c143ad45df6891e3a1d6d9ec652b87e Mon Sep 17 00:00:00 2001 From: carlossa Date: Thu, 4 Apr 2024 12:45:43 +0200 Subject: [PATCH 02/70] refs #6111 routeList sql --- db/versions/10978-wheatMoss/00-firstScript.sql | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 db/versions/10978-wheatMoss/00-firstScript.sql diff --git a/db/versions/10978-wheatMoss/00-firstScript.sql b/db/versions/10978-wheatMoss/00-firstScript.sql new file mode 100644 index 0000000000..39bf1c3188 --- /dev/null +++ b/db/versions/10978-wheatMoss/00-firstScript.sql @@ -0,0 +1,4 @@ +-- Place your SQL code here +INSERT INTO salix.defaultViewConfig +(tableCode, `columns`) +VALUES('routesList', '{"ID":true,"worker":true,"agency":true,"vehicle":true,"date":true,"volume":true,"description":true,"started":true,"finished":true,"actions":true}'); From d6451a94e3f080fed07f6406d92396ea2f1627d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s?= Date: Wed, 8 May 2024 17:38:52 +0200 Subject: [PATCH 03/70] feat: conversion art. A1 a A2 refs #4979 --- db/routines/vn/procedures/buy_clone.sql | 2 - db/routines/vn/procedures/buy_cloneByBuy.sql | 23 ----- db/routines/vn/procedures/item_devalueA2.sql | 88 ++++++++++++++++---- 3 files changed, 73 insertions(+), 40 deletions(-) delete mode 100644 db/routines/vn/procedures/buy_cloneByBuy.sql diff --git a/db/routines/vn/procedures/buy_clone.sql b/db/routines/vn/procedures/buy_clone.sql index bbf742b232..d3fbf888dc 100644 --- a/db/routines/vn/procedures/buy_clone.sql +++ b/db/routines/vn/procedures/buy_clone.sql @@ -22,7 +22,6 @@ BEGIN containerFk, comissionValue, packageValue, - packageFk, price1, price2, price3, @@ -45,7 +44,6 @@ BEGIN b.containerFk, b.comissionValue, b.packageValue, - b.packageFk, b.price1, b.price2, b.price3, diff --git a/db/routines/vn/procedures/buy_cloneByBuy.sql b/db/routines/vn/procedures/buy_cloneByBuy.sql deleted file mode 100644 index 73e91a9df3..0000000000 --- a/db/routines/vn/procedures/buy_cloneByBuy.sql +++ /dev/null @@ -1,23 +0,0 @@ -DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`buy_cloneByBuy`( - OUT vBuyClonedFk INT, - IN vSelf INT, - IN vEntryFk INT -) -BEGIN -/** - * Clone a buy to an entry - * - * @param OUT vBuyClonedFk The new cloned buy id - * @param vSelf The buy id to clone - * @param vEntryFk The destination entry id - */ - CREATE OR REPLACE TEMPORARY TABLE tmp.buy - SELECT vSelf id; - - CALL buy_clone(vEntryFk); - SET vBuyClonedFk = LAST_INSERT_ID(); - - DROP TEMPORARY TABLE tmp.buy; -END$$ -DELIMITER ; \ No newline at end of file diff --git a/db/routines/vn/procedures/item_devalueA2.sql b/db/routines/vn/procedures/item_devalueA2.sql index e1fb08388b..4ad6fcfa28 100644 --- a/db/routines/vn/procedures/item_devalueA2.sql +++ b/db/routines/vn/procedures/item_devalueA2.sql @@ -308,21 +308,79 @@ BEGIN WHERE id = vTargetItemShelvingFk; END IF; - CALL buy_cloneByBuy(vA1BuyFk, vLastBuyFk, vTargetEntryFk); - UPDATE buy - SET quantity = - LEAST(vQuantity,vCurrentVisible), - isIgnored = TRUE, - buyingValue = vBuyingValue - WHERE id = vA1BuyFk; - - CALL buy_cloneByBuy(vA2BuyFk, vLastBuyFk, vTargetEntryFk); - UPDATE buy - SET quantity = vQuantity, - isIgnored = TRUE, - buyingValue = vBuyingValue, - itemFk = vItemA2Fk - WHERE id = vA2BuyFk; - + INSERT INTO buy( + entryFk, + itemFk, + quantity, + buyingValue, + freightValue, + isIgnored, + stickers, + packagingFk, + packing, + `grouping`, + groupingMode, + containerFk, + comissionValue, + packageValue, + price1, + price2, + price3, + minPrice, + isChecked, + location, + weight, + itemOriginalFk) + SELECT vTargetEntryFk, + itemFk, + - LEAST(vQuantity, vCurrentVisible), + vBuyingValue, + freightValue, + TRUE, + stickers, + packagingFk, + packing, + `grouping`, + groupingMode, + containerFk, + comissionValue, + packageValue, + price1, + price2, + price3, + minPrice, + isChecked, + location, + weight, + itemOriginalFk + FROM vn.buy + WHERE id = vLastBuyFk + UNION + SELECT vTargetEntryFk, + vItemA2Fk, + vQuantity, + vBuyingValue, + freightValue, + TRUE, + stickers, + packagingFk, + packing, + `grouping`, + groupingMode, + containerFk, + comissionValue, + packageValue, + price1, + price2, + price3, + minPrice, + isChecked, + location, + weight, + itemOriginalFk + FROM vn.buy + WHERE id = vLastBuyFk; + INSERT INTO itemShelving ( itemFk, shelvingFk, From cc941de606be39dfebce5cc529e84b1c609d503e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s?= Date: Thu, 9 May 2024 14:24:20 +0200 Subject: [PATCH 04/70] feat: conversion art. A1 a A2 refs #4979 --- .../vn/procedures/buy_recalcPricesByBuy.sql | 2 +- db/routines/vn/procedures/item_devalueA2.sql | 99 +++++++++---------- 2 files changed, 48 insertions(+), 53 deletions(-) diff --git a/db/routines/vn/procedures/buy_recalcPricesByBuy.sql b/db/routines/vn/procedures/buy_recalcPricesByBuy.sql index b963bae143..12c0df9856 100644 --- a/db/routines/vn/procedures/buy_recalcPricesByBuy.sql +++ b/db/routines/vn/procedures/buy_recalcPricesByBuy.sql @@ -8,7 +8,7 @@ BEGIN */ DROP TEMPORARY TABLE IF EXISTS tmp.buyRecalc; - CREATE TEMPORARY TABLE tmp.buyRecalc + CREATE TEMPORARY TABLE tmp.buyRecalc SELECT vBuyFk id; CALL buy_recalcPrices(); diff --git a/db/routines/vn/procedures/item_devalueA2.sql b/db/routines/vn/procedures/item_devalueA2.sql index 4ad6fcfa28..276c5b5083 100644 --- a/db/routines/vn/procedures/item_devalueA2.sql +++ b/db/routines/vn/procedures/item_devalueA2.sql @@ -1,7 +1,7 @@ DELIMITER $$ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_devalueA2`( + vSelf INT, vShelvingFK VARCHAR(10), - vItemFk INT, vBuyingValue DECIMAL(10,4), vQuantity INT ) @@ -11,8 +11,8 @@ BEGIN * Si no existe el item A2 lo crea y genera los movimientos de las entradas * de almacén y shelvings correspondientes * + * @param vSelf Id de artículo a devaluar * @param vShelvingFK Ubicación actual del artículo - * @param vItemFk Id de artículo a devaluar * @param vBuyingValue Nuevo precio de coste */ DECLARE vItemA2Fk INT; @@ -26,7 +26,7 @@ BEGIN DECLARE vCacheFk INT; DECLARE vLastEntryFk INT; DECLARE vCurrentVisible INT; - DECLARE vInventoryTravelFk INT; + DECLARE vDevalueTravelFk INT; DECLARE vCurdate DATE; DECLARE CONTINUE HANDLER FOR SQLEXCEPTION @@ -35,7 +35,7 @@ BEGIN RESIGNAL; END; - IF (SELECT TRUE FROM item WHERE id = vItemFk AND (category <> 'A1' OR category IS NULL)) THEN + IF (SELECT TRUE FROM item WHERE id = vSelf AND (category <> 'A1' OR category IS NULL)) THEN CALL util.throw('Item has not category A1'); END IF; @@ -47,11 +47,15 @@ BEGIN CALL util.throw ('Operator has not a valid warehouse'); END IF; + IF vQuantity <= 0 OR vQuantity IS NULL THEN + CALL util.throw ('The quantity is incorrect'); + END IF; + SELECT util.VN_CURDATE() INTO vCurdate; - SELECT t.id INTO vInventoryTravelFk + SELECT t.id INTO vDevalueTravelFk FROM travel t - JOIN travelConfig tc + JOIN travelConfig tc WHERE t.shipped = vCurdate AND t.landed = vCurdate AND t.warehouseInFk = vWarehouseFk @@ -59,7 +63,7 @@ BEGIN AND t.agencyModeFk = tc.devalueAgencyModeFk LIMIT 1; - IF NOT vInventoryTravelFk OR vInventoryTravelFk IS NULL THEN + IF NOT vDevalueTravelFk OR vDevalueTravelFk IS NULL THEN INSERT INTO travel ( shipped, landed, @@ -76,14 +80,14 @@ BEGIN TRUE, tc.devalueAgencyModeFk FROM travelConfig tc; - SET vInventoryTravelFk = LAST_INSERT_ID(); + SET vDevalueTravelFk = LAST_INSERT_ID(); END IF; - SELECT id, dated INTO vTargetEntryFk, vTargetEntryDate + SELECT id, DATE(dated) INTO vTargetEntryFk, vTargetEntryDate FROM `entry` e - WHERE created = vCurdate + WHERE DATE(dated) = vCurdate AND typeFk ='devaluation' - AND travelFk = vInventoryTravelFk + AND travelFk = vDevalueTravelFk ORDER BY created DESC LIMIT 1; @@ -92,23 +96,31 @@ BEGIN SELECT b.entryFk, bu.buyFk INTO vLastEntryFk,vLastBuyFk FROM tmp.buyUltimate bu JOIN vn.buy b ON b.id =bu.buyFk - WHERE bu.itemFk = vItemFk + WHERE bu.itemFk = vSelf AND bu.warehouseFk = vWarehouseFk; - SELECT id,visible INTO vTargetItemShelvingFk,vCurrentVisible + IF vLastEntryFk IS NULL OR vLastBuyFk IS NULL THEN + CALL util.throw ('The item has not a buy'); + END IF; + + SELECT id,visible INTO vTargetItemShelvingFk, vCurrentVisible FROM itemShelving WHERE shelvingFk = vShelvingFK COLLATE utf8mb3_general_ci - AND itemFk = vItemFk + AND itemFk = vSelf LIMIT 1; - IF vQuantity >= vCurrentVisible THEN + IF vCurrentVisible IS NULL THEN + CALL util.throw ('The shelving has not a visible for this item'); + END IF; + + IF vQuantity > vCurrentVisible THEN CALL util.throw('Quantity is greater than visible'); END IF; START TRANSACTION; IF NOT vTargetEntryFk OR vTargetEntryFk IS NULL - OR NOT vTargetEntryDate <=> vCurdate THEN + OR NOT vTargetEntryDate <=> vCurdate THEN INSERT INTO entry( travelFk, supplierFk, @@ -119,7 +131,7 @@ BEGIN clonedFrom, typeFk ) - SELECT vInventoryTravelFk, + SELECT vDevalueTravelFk, supplierFk, vCurdate, commission, @@ -149,7 +161,7 @@ BEGIN i.EmbalageCode, i.quality FROM item i - WHERE i.id = vItemFk + WHERE i.id = vSelf )i2 ON i2.name <=> i.name AND i2.subname <=> i.subname AND i2.value5 <=> i.value5 @@ -193,18 +205,6 @@ BEGIN isActive, longName, subName, - tag5, - value5, - tag6, - value6, - tag7, - value7, - tag8, - value8, - tag9, - value9, - tag10, - value10, minimum, upToDown, supplyResponseFk, @@ -250,19 +250,7 @@ BEGIN expenseFk, isActive, longName, - subName, - tag5, - value5, - tag6, - value6, - tag7, - value7, - tag8, - value8, - tag9, - value9, - tag10, - value10, + subName, minimum, upToDown, supplyResponseFk, @@ -283,20 +271,25 @@ BEGIN recycledPlastic, nonRecycledPlastic FROM item - WHERE id = vItemFk; + WHERE id = vSelf; SET vItemA2Fk = LAST_INSERT_ID(); + INSERT INTO itemTag (itemFk, tagFk, `value`, intValue, priority, editorFk) + SELECT vItemA2Fk, tagFk, `value`, intValue, priority, editorFk + FROM itemTag + WHERE id = vSelf; + UPDATE itemTaxCountry itc - JOIN itemTaxCountry itc2 ON itc2.itemFk = vItemFk + JOIN itemTaxCountry itc2 ON itc2.itemFk = vSelf AND itc2.countryFk = itc.countryFk SET itc2.taxClassFk = itc.taxClassFk WHERE itc.id = vItemA2Fk; - + INSERT INTO itemBotanical (itemFk, genusFk, specieFk) SELECT vItemA2Fk, genusFk, specieFk FROM itemBotanical - WHERE itemFk = vItemFk; + WHERE itemFk = vSelf; END IF; IF vQuantity = vCurrentVisible THEN @@ -334,7 +327,7 @@ BEGIN SELECT vTargetEntryFk, itemFk, - LEAST(vQuantity, vCurrentVisible), - vBuyingValue, + buyingValue, freightValue, TRUE, stickers, @@ -381,7 +374,7 @@ BEGIN FROM vn.buy WHERE id = vLastBuyFk; - INSERT INTO itemShelving ( + INSERT IGNORE INTO itemShelving ( itemFk, shelvingFk, visible, @@ -392,15 +385,17 @@ BEGIN isChecked) SELECT vItemA2Fk, shelvingFk, - vQuantity, + vQuantity , `grouping`, packing, packagingFk, account.myUser_getId(), isChecked FROM itemShelving - WHERE itemFK = vItemFk - AND shelvingFk = vShelvingFK COLLATE utf8mb3_general_ci; + WHERE itemFK = vSelf + AND shelvingFk = vShelvingFK COLLATE utf8mb3_general_ci + ON DUPLICATE KEY UPDATE + visible = vQuantity + VALUES(visible); COMMIT; CALL cache.visible_refresh(vCacheFk, TRUE, vWarehouseFk); From 9b73cdfa6ffe0edfa39a228b0e9d40fc241a868b Mon Sep 17 00:00:00 2001 From: sergiodt Date: Wed, 15 May 2024 17:03:33 +0200 Subject: [PATCH 05/70] refs #4979 feat:getInfoDetails && item_devalueA2 --- .../itemShelving_getItemDetails.sql | 90 +++++++++++++++++++ db/routines/vn/procedures/item_devalueA2.sql | 14 ++- 2 files changed, 100 insertions(+), 4 deletions(-) create mode 100644 db/routines/vn/procedures/itemShelving_getItemDetails.sql diff --git a/db/routines/vn/procedures/itemShelving_getItemDetails.sql b/db/routines/vn/procedures/itemShelving_getItemDetails.sql new file mode 100644 index 0000000000..2134f00c4d --- /dev/null +++ b/db/routines/vn/procedures/itemShelving_getItemDetails.sql @@ -0,0 +1,90 @@ +DELIMITER $$ +CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelving_getItemDetails`(vBarcodeItem INT, vShelvingFK VARCHAR(10) ) +BEGIN + +/** + * Obtiene el precio y visible de un item + * + * @param vBarcodeItem barcode de artículo + * @param vBarcodeItem Ubicación actual del artículo + */ + DECLARE vIsItem BOOL; + DECLARE vItemFk INT; + DECLARE vItemCost DECIMAL(10,4); + DECLARE vCacheVisibleFk INT; + DECLARE vWarehouseFk INT; + DECLARE vVisible INT; + + + SELECT COUNT(*)>0 INTO vIsItem + FROM vn.item + WHERE id = vBarcodeItem; + + IF NOT vIsItem THEN + + SELECT IFNULL(b.buyingValue, 0) + + IFNULL(b.freightValue, 0) + + IFNULL(b.comissionValue, 0) + + IFNULL(b.packageValue, 0), + SUM(is2.visible) , + b.itemFk + INTO vItemCost, vVisible, vItemFk + FROM itemShelving is2 + JOIN buy b ON b.itemFk = is2.itemFk AND b.id = vBarcodeItem + WHERE is2.shelvingFk = vShelvingFK COLLATE utf8mb3_general_ci + GROUP BY shelvingFK; + + SELECT vItemFk itemFk, + vShelvingFK shelvingFk, + vItemCost itemCost, + vVisible quantity; + + END IF; + + IF vItemCost IS NULL THEN + + SELECT warehouseFk INTO vWarehouseFk + FROM operator + WHERE workerFk = account.myUser_getId(); + + SELECT barcodeToItem(vBarcodeItem) INTO vItemFk; + + IF vItemFk IS NULL THEN + CALL util.throw ('Item not valid'); + ELSE + CALL buyUltimate(vWarehouseFk, util.VN_CURDATE()); + + SELECT IFNULL(b.buyingValue, 0) + + IFNULL(b.freightValue, 0) + + IFNULL(b.comissionValue, 0) + + IFNULL(b.packageValue, 0) itemCost, + SUM(is2.visible) visible, + is2.itemFk + INTO vItemCost, vVisible, vItemFk + FROM itemShelving is2 + JOIN tmp.buyUltimate bu ON bu.itemFk = is2.itemFk + JOIN buy b ON b.id = bu.buyFk + WHERE is2.itemFk = vBarcodeItem AND + is2.shelvingFk = vShelvingFK COLLATE utf8mb3_general_ci; + + IF vItemFk IS NULL THEN + CALL util.throw ('Item not valid'); + ELSE + SELECT vItemFk itemFk, + vShelvingFK shelvingFk, + vItemCost itemCost, + vVisible quantity; + END IF; + + DELETE FROM tmp.buyUltimate; + + END IF; + + END IF; + + IF vItemCost IS NULL THEN + CALL util.throw ('Item not valid'); + END IF; + +END$$ +DELIMITER ; \ No newline at end of file diff --git a/db/routines/vn/procedures/item_devalueA2.sql b/db/routines/vn/procedures/item_devalueA2.sql index 276c5b5083..f331c7230e 100644 --- a/db/routines/vn/procedures/item_devalueA2.sql +++ b/db/routines/vn/procedures/item_devalueA2.sql @@ -14,6 +14,7 @@ BEGIN * @param vSelf Id de artículo a devaluar * @param vShelvingFK Ubicación actual del artículo * @param vBuyingValue Nuevo precio de coste + * @param vQuantity Cantidad del ítem a pasar a A2 */ DECLARE vItemA2Fk INT; DECLARE vLastBuyFk BIGINT; @@ -28,6 +29,7 @@ BEGIN DECLARE vCurrentVisible INT; DECLARE vDevalueTravelFk INT; DECLARE vCurdate DATE; + DECLARE vBuyingValueOriginal DECIMAL(10,4); DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN @@ -86,19 +88,23 @@ BEGIN SELECT id, DATE(dated) INTO vTargetEntryFk, vTargetEntryDate FROM `entry` e WHERE DATE(dated) = vCurdate - AND typeFk ='devaluation' + AND typeFk = 'devaluation' AND travelFk = vDevalueTravelFk ORDER BY created DESC LIMIT 1; CALL buyUltimate(vWarehouseFk, vCurdate); - SELECT b.entryFk, bu.buyFk INTO vLastEntryFk,vLastBuyFk + SELECT b.entryFk, bu.buyFk,IFNULL(b.buyingValue, 0) INTO vLastEntryFk, vLastBuyFk, vBuyingValueOriginal FROM tmp.buyUltimate bu - JOIN vn.buy b ON b.id =bu.buyFk + JOIN vn.buy b ON b.id = bu.buyFk WHERE bu.itemFk = vSelf AND bu.warehouseFk = vWarehouseFk; - + + IF vBuyingValue > vBuyingValueOriginal THEN + CALL util.throw ('Price not valid'); + END IF; + IF vLastEntryFk IS NULL OR vLastBuyFk IS NULL THEN CALL util.throw ('The item has not a buy'); END IF; From 11a0b98495d7f6a5b2d15db726a3dae261cd5c10 Mon Sep 17 00:00:00 2001 From: robert Date: Thu, 16 May 2024 10:20:08 +0200 Subject: [PATCH 06/70] feat: refs #7296 roadmapStop --- modules/route/back/methods/roadmap/clone.js | 10 +++++----- modules/route/back/model-config.json | 2 +- modules/route/back/models/roadmap.json | 2 +- ...{expedition-truck.json => roadmapStop.json} | 4 ++-- modules/route/front/roadmap/stops/index.html | 16 ++++++++-------- modules/route/front/roadmap/summary/index.html | 18 +++++++++--------- modules/route/front/roadmap/summary/index.js | 12 ++++++------ .../ticket/back/models/expeditionPallet.json | 2 +- myt.config.yml | 2 +- 9 files changed, 34 insertions(+), 34 deletions(-) rename modules/route/back/models/{expedition-truck.json => roadmapStop.json} (92%) diff --git a/modules/route/back/methods/roadmap/clone.js b/modules/route/back/methods/roadmap/clone.js index 456ed823d4..2226b1e509 100644 --- a/modules/route/back/methods/roadmap/clone.js +++ b/modules/route/back/methods/roadmap/clone.js @@ -62,12 +62,12 @@ module.exports = Self => { const clone = await models.Roadmap.create(roadmap, options); - const expeditionTrucks = roadmap.expeditionTruck(); - expeditionTrucks.map(expeditionTruck => { - expeditionTruck.roadmapFk = clone.id; - return expeditionTruck; + const roadmapStops = roadmap.roadmapStop(); + roadmapStops.map(roadmapStop => { + roadmapStop.roadmapFk = clone.id; + return roadmapStop; }); - await models.ExpeditionTruck.create(expeditionTrucks, options); + await models.roadmapStop.create(roadmapStops, options); } await tx.commit(); diff --git a/modules/route/back/model-config.json b/modules/route/back/model-config.json index 6cf8da9868..09cda6b2d7 100644 --- a/modules/route/back/model-config.json +++ b/modules/route/back/model-config.json @@ -8,7 +8,7 @@ "DeliveryPoint": { "dataSource": "vn" }, - "ExpeditionTruck": { + "RoadmapStop": { "dataSource": "vn" }, "Roadmap": { diff --git a/modules/route/back/models/roadmap.json b/modules/route/back/models/roadmap.json index 2f6bb8c02c..2b02c64f21 100644 --- a/modules/route/back/models/roadmap.json +++ b/modules/route/back/models/roadmap.json @@ -56,7 +56,7 @@ }, "expeditionTruck": { "type": "hasMany", - "model": "ExpeditionTruck", + "model": "roadmapStop", "foreignKey": "roadmapFk" } } diff --git a/modules/route/back/models/expedition-truck.json b/modules/route/back/models/roadmapStop.json similarity index 92% rename from modules/route/back/models/expedition-truck.json rename to modules/route/back/models/roadmapStop.json index 8edc7347f0..51aa3a6db1 100644 --- a/modules/route/back/models/expedition-truck.json +++ b/modules/route/back/models/roadmapStop.json @@ -1,9 +1,9 @@ { - "name": "ExpeditionTruck", + "name": "RoadmapStop", "base": "VnModel", "options": { "mysql": { - "table": "expeditionTruck" + "table": "roadmapStop" } }, "properties": { diff --git a/modules/route/front/roadmap/stops/index.html b/modules/route/front/roadmap/stops/index.html index b69492a21a..82f30c3263 100644 --- a/modules/route/front/roadmap/stops/index.html +++ b/modules/route/front/roadmap/stops/index.html @@ -1,22 +1,22 @@
- + + ng-model="roadmapStop.eta"> diff --git a/modules/route/front/roadmap/summary/index.html b/modules/route/front/roadmap/summary/index.html index 9fab0bf874..abf5ff90a6 100644 --- a/modules/route/front/roadmap/summary/index.html +++ b/modules/route/front/roadmap/summary/index.html @@ -49,7 +49,7 @@ vn-bind="+" vn-tooltip="Add stop" icon="add_circle" - vn-click-stop="addExpeditionTruck.show()"> + vn-click-stop="addRoadmapStop.show()"> @@ -61,9 +61,9 @@ - - {{expeditionTruck.warehouse.name}} - {{expeditionTruck.eta | date:'dd/MM/yyyy HH:mm'}} + + {{roadmapStop.warehouse.name}} + {{roadmapStop.eta | date:'dd/MM/yyyy HH:mm'}} @@ -75,14 +75,14 @@ + ng-model="$ctrl.roadmapStop.eta"> diff --git a/modules/route/front/roadmap/summary/index.js b/modules/route/front/roadmap/summary/index.js index 041b43ce34..e0903f3a7f 100644 --- a/modules/route/front/roadmap/summary/index.js +++ b/modules/route/front/roadmap/summary/index.js @@ -20,7 +20,7 @@ class Controller extends Component { include: [ {relation: 'supplier'}, {relation: 'worker'}, - {relation: 'expeditionTruck', + {relation: 'ExpeditionTruck', scope: { include: [ {relation: 'warehouse'} @@ -36,19 +36,19 @@ class Controller extends Component { const eta = new Date(this.roadmap.etd); eta.setDate(eta.getDate() + 1); - this.expeditionTruck = {eta: eta}; + this.roadmapStop = {eta: eta}; } onAddAccept() { try { const data = { roadmapFk: this.roadmap.id, - warehouseFk: this.expeditionTruck.warehouseFk, - eta: this.expeditionTruck.eta, - description: this.expeditionTruck.description + warehouseFk: this.roadmapStop.warehouseFk, + eta: this.roadmapStop.eta, + description: this.roadmapStop.description }; - this.$http.post(`ExpeditionTrucks`, data) + this.$http.post(`roadmapStops`, data) .then(() => { this.loadData(); this.vnApp.showSuccess(this.$t('Data saved!')); diff --git a/modules/ticket/back/models/expeditionPallet.json b/modules/ticket/back/models/expeditionPallet.json index cab3af6ecf..8384ab8838 100644 --- a/modules/ticket/back/models/expeditionPallet.json +++ b/modules/ticket/back/models/expeditionPallet.json @@ -25,7 +25,7 @@ "relations": { "expeditionTruck": { "type": "belongsTo", - "model": "ExpeditionTruck", + "model": "RoadmapStop", "foreignKey": "truckFk" } } diff --git a/myt.config.yml b/myt.config.yml index 17300aa372..56239ca3c5 100755 --- a/myt.config.yml +++ b/myt.config.yml @@ -227,7 +227,7 @@ localFixtures: - expeditionScan - expeditionState - expeditionStateType - - expeditionTruck + - roadmapStop - expense - genus - greuge From 47c573a324c1c314ce0385d22f6cc7c472f3c8af Mon Sep 17 00:00:00 2001 From: pablone Date: Fri, 17 May 2024 10:51:37 +0200 Subject: [PATCH 07/70] fix: refs #6095 filter by refFk null --- modules/invoiceOut/front/index/manual/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/invoiceOut/front/index/manual/index.html b/modules/invoiceOut/front/index/manual/index.html index 5872911e46..3b991618d1 100644 --- a/modules/invoiceOut/front/index/manual/index.html +++ b/modules/invoiceOut/front/index/manual/index.html @@ -27,7 +27,7 @@ Date: Fri, 17 May 2024 11:20:26 +0200 Subject: [PATCH 08/70] refs #4979 feat:getInfoDetails && item_devalueA2 --- db/routines/vn/procedures/itemShelving_getItemDetails.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/routines/vn/procedures/itemShelving_getItemDetails.sql b/db/routines/vn/procedures/itemShelving_getItemDetails.sql index 2134f00c4d..fdfd2a5b69 100644 --- a/db/routines/vn/procedures/itemShelving_getItemDetails.sql +++ b/db/routines/vn/procedures/itemShelving_getItemDetails.sql @@ -6,7 +6,7 @@ BEGIN * Obtiene el precio y visible de un item * * @param vBarcodeItem barcode de artículo - * @param vBarcodeItem Ubicación actual del artículo + * @param vShelvingFK Ubicación actual del artículo */ DECLARE vIsItem BOOL; DECLARE vItemFk INT; From 968effc93641ab9948274122a2d3966b8ba9c552 Mon Sep 17 00:00:00 2001 From: guillermo Date: Fri, 17 May 2024 11:56:04 +0200 Subject: [PATCH 09/70] hotfix: ticket 135539 Unroute tickets --- modules/ticket/back/methods/ticket/closeAll.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/modules/ticket/back/methods/ticket/closeAll.js b/modules/ticket/back/methods/ticket/closeAll.js index d35bd1e3ea..e3cbc83e24 100644 --- a/modules/ticket/back/methods/ticket/closeAll.js +++ b/modules/ticket/back/methods/ticket/closeAll.js @@ -138,12 +138,10 @@ module.exports = Self => { JOIN alertLevel al ON al.id = ts.alertLevel JOIN agencyMode am ON am.id = t.agencyModeFk JOIN deliveryMethod dm ON dm.id = am.deliveryMethodFk - JOIN zone z ON z.id = t.zoneFk SET t.routeFk = NULL WHERE DATE(t.shipped) BETWEEN ? - INTERVAL 2 DAY AND util.dayEnd(?) - AND al.code NOT IN('DELIVERED','PACKED') - AND t.routeFk - AND z.name LIKE '%MADRID%'`, [toDate, toDate], {userId: ctx.req.accessToken.userId}); + AND al.code NOT IN ('DELIVERED', 'PACKED') + AND t.routeFk`, [toDate, toDate], {userId: ctx.req.accessToken.userId}); return { message: 'Success' From 0b5f05cbed5305df285d47a491c637f2da75bff5 Mon Sep 17 00:00:00 2001 From: guillermo Date: Fri, 17 May 2024 12:36:54 +0200 Subject: [PATCH 10/70] refactor: refs #7375 Refactor clientsDisable --- db/routines/vn/events/client_userDisable.sql | 8 +++++ db/routines/vn/events/clientsDisable.sql | 25 -------------- .../vn/procedures/client_userDisable.sql | 33 +++++++++++++++++++ .../11055-wheatPaniculata/00-firstScript.sql | 5 +++ 4 files changed, 46 insertions(+), 25 deletions(-) create mode 100644 db/routines/vn/events/client_userDisable.sql delete mode 100644 db/routines/vn/events/clientsDisable.sql create mode 100644 db/routines/vn/procedures/client_userDisable.sql create mode 100644 db/versions/11055-wheatPaniculata/00-firstScript.sql diff --git a/db/routines/vn/events/client_userDisable.sql b/db/routines/vn/events/client_userDisable.sql new file mode 100644 index 0000000000..b3354f8fd2 --- /dev/null +++ b/db/routines/vn/events/client_userDisable.sql @@ -0,0 +1,8 @@ +DELIMITER $$ +CREATE OR REPLACE DEFINER=`root`@`localhost` EVENT `vn`.`client_userDisable` + ON SCHEDULE EVERY 1 MONTH + STARTS '2023-06-01 00:00:00.000' + ON COMPLETION PRESERVE + ENABLE +DO CALL client_userDisable()$$ +DELIMITER ; diff --git a/db/routines/vn/events/clientsDisable.sql b/db/routines/vn/events/clientsDisable.sql deleted file mode 100644 index 35e6554a2d..0000000000 --- a/db/routines/vn/events/clientsDisable.sql +++ /dev/null @@ -1,25 +0,0 @@ -DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` EVENT `vn`.`clientsDisable` - ON SCHEDULE EVERY 1 MONTH - STARTS '2023-06-01 00:00:00.000' - ON COMPLETION PRESERVE - ENABLE -DO BEGIN - UPDATE account.user u - JOIN client c ON c.id = u.id - LEFT JOIN account.account a ON a.id = u.id - SET u.active = FALSE - WHERE c.typeFk = 'normal' - AND a.id IS NULL - AND u.active - AND c.created < util.VN_CURDATE() - INTERVAL 12 MONTH - AND u.id NOT IN ( - SELECT DISTINCT c.id - FROM client c - LEFT JOIN ticket t ON t.clientFk = c.id - WHERE c.salesPersonFk IS NOT NULL - OR t.created > util.VN_CURDATE() - INTERVAL 12 MONTH - OR shipped > util.VN_CURDATE() - INTERVAL 12 MONTH - ); -END$$ -DELIMITER ; diff --git a/db/routines/vn/procedures/client_userDisable.sql b/db/routines/vn/procedures/client_userDisable.sql new file mode 100644 index 0000000000..f2ba65c1cd --- /dev/null +++ b/db/routines/vn/procedures/client_userDisable.sql @@ -0,0 +1,33 @@ +DELIMITER $$ +CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`client_userDisable`() +BEGIN +/** +* Desactiva los clientes inactivos en los últimos X meses. +*/ + DECLARE vMonths INT; + + SELECT monthsToDisableUser INTO vMonths + FROM clientConfig; + + IF vMonths IS NULL THEN + CALL util.throw('Config parameter not set'); + END IF; + + UPDATE account.user u + JOIN client c ON c.id = u.id + LEFT JOIN account.account a ON a.id = u.id + SET u.active = FALSE + WHERE c.typeFk = 'normal' + AND a.id IS NULL + AND u.active + AND c.created < util.VN_CURDATE() - INTERVAL vMonths MONTH + AND u.id NOT IN ( + SELECT DISTINCT c.id + FROM client c + LEFT JOIN ticket t ON t.clientFk = c.id + WHERE c.salesPersonFk IS NOT NULL + OR t.created > util.VN_CURDATE() - INTERVAL vMonths MONTH + OR shipped > util.VN_CURDATE() - INTERVAL vMonths MONTH + ); +END$$ +DELIMITER ; diff --git a/db/versions/11055-wheatPaniculata/00-firstScript.sql b/db/versions/11055-wheatPaniculata/00-firstScript.sql new file mode 100644 index 0000000000..6eec62fd8b --- /dev/null +++ b/db/versions/11055-wheatPaniculata/00-firstScript.sql @@ -0,0 +1,5 @@ +ALTER TABLE vn.clientConfig + ADD monthsToDisableUser int(10) unsigned DEFAULT NULL NULL; + +UPDATE IGNORE vn.clientConfig + SET monthsToDisableUser = 12; \ No newline at end of file From c8db0a3aa817e1bbd1e4a7e4891414e9364f1cc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s?= Date: Fri, 17 May 2024 12:48:16 +0200 Subject: [PATCH 11/70] refs #4979 feat:getInfoDetails && item_devalueA2 --- db/.pullinfo.json | 2 +- .../itemShelving_getItemDetails.sql | 101 ++++++------------ 2 files changed, 34 insertions(+), 69 deletions(-) diff --git a/db/.pullinfo.json b/db/.pullinfo.json index f4afbc5fbb..0defed8458 100644 --- a/db/.pullinfo.json +++ b/db/.pullinfo.json @@ -9,7 +9,7 @@ }, "vn": { "view": { - "expeditionPallet_Print": "288cbd6e8289df083ed5eb1a2c808f7a82ba4c90c8ad9781104808a7a54471fb" + "expeditionPallet_Print": "06613719475fcdba8309607c38cc78efc2e348cca7bc96b48dc3ae3c12426f54" } } } diff --git a/db/routines/vn/procedures/itemShelving_getItemDetails.sql b/db/routines/vn/procedures/itemShelving_getItemDetails.sql index fdfd2a5b69..25afd192bd 100644 --- a/db/routines/vn/procedures/itemShelving_getItemDetails.sql +++ b/db/routines/vn/procedures/itemShelving_getItemDetails.sql @@ -1,7 +1,9 @@ DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelving_getItemDetails`(vBarcodeItem INT, vShelvingFK VARCHAR(10) ) +CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelving_getItemDetails`( + vBarcodeItem INT, + vShelvingFK VARCHAR(10) +) BEGIN - /** * Obtiene el precio y visible de un item * @@ -9,82 +11,45 @@ BEGIN * @param vShelvingFK Ubicación actual del artículo */ DECLARE vIsItem BOOL; - DECLARE vItemFk INT; - DECLARE vItemCost DECIMAL(10,4); - DECLARE vCacheVisibleFk INT; + DECLARE vBuyFk INT; DECLARE vWarehouseFk INT; - DECLARE vVisible INT; - - SELECT COUNT(*)>0 INTO vIsItem - FROM vn.item + SELECT COUNT(*) > 0 INTO vIsItem + FROM item WHERE id = vBarcodeItem; - IF NOT vIsItem THEN - - SELECT IFNULL(b.buyingValue, 0) + - IFNULL(b.freightValue, 0) + - IFNULL(b.comissionValue, 0) + - IFNULL(b.packageValue, 0), - SUM(is2.visible) , - b.itemFk - INTO vItemCost, vVisible, vItemFk - FROM itemShelving is2 - JOIN buy b ON b.itemFk = is2.itemFk AND b.id = vBarcodeItem - WHERE is2.shelvingFk = vShelvingFK COLLATE utf8mb3_general_ci - GROUP BY shelvingFK; - - SELECT vItemFk itemFk, - vShelvingFK shelvingFk, - vItemCost itemCost, - vVisible quantity; - - END IF; - - IF vItemCost IS NULL THEN - + IF vIsItem THEN SELECT warehouseFk INTO vWarehouseFk FROM operator WHERE workerFk = account.myUser_getId(); - SELECT barcodeToItem(vBarcodeItem) INTO vItemFk; + CALL buyUltimate(vWarehouseFk, util.VN_CURDATE()); - IF vItemFk IS NULL THEN - CALL util.throw ('Item not valid'); - ELSE - CALL buyUltimate(vWarehouseFk, util.VN_CURDATE()); - - SELECT IFNULL(b.buyingValue, 0) + - IFNULL(b.freightValue, 0) + - IFNULL(b.comissionValue, 0) + - IFNULL(b.packageValue, 0) itemCost, - SUM(is2.visible) visible, - is2.itemFk - INTO vItemCost, vVisible, vItemFk - FROM itemShelving is2 - JOIN tmp.buyUltimate bu ON bu.itemFk = is2.itemFk - JOIN buy b ON b.id = bu.buyFk - WHERE is2.itemFk = vBarcodeItem AND - is2.shelvingFk = vShelvingFK COLLATE utf8mb3_general_ci; - - IF vItemFk IS NULL THEN - CALL util.throw ('Item not valid'); - ELSE - SELECT vItemFk itemFk, - vShelvingFK shelvingFk, - vItemCost itemCost, - vVisible quantity; - END IF; - - DELETE FROM tmp.buyUltimate; - - END IF; + SELECT buyFk INTO vBuyFk + FROM tmp.buyUltimate + WHERE itemFk = vBarcodeItem + AND warehouseFk = vWarehouseFk; + DELETE FROM tmp.buyUltimate; + ELSE + SELECT vBarcodeItem INTO vBuyFk; END IF; - - IF vItemCost IS NULL THEN - CALL util.throw ('Item not valid'); - END IF; - + + WITH visible AS( + SELECT itemFk, + IFNULL(buyingValue, 0) + + IFNULL(freightValue, 0) + + IFNULL(comissionValue, 0) + + IFNULL(packageValue, 0) itemCost + FROM vn.buy b + WHERE b.id = vBuyFk + ) SELECT v.itemFk, + vShelvingFK, + v.itemCost, + SUM(ish.visible) visible + FROM vn.itemShelving ish + JOIN visible v + WHERE ish.shelvingFK = vShelvingFK + AND ish.itemFk = v.itemFk; END$$ DELIMITER ; \ No newline at end of file From 6a576e69e1f64546b9ed95815bd5353950043714 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s?= Date: Fri, 17 May 2024 12:50:51 +0200 Subject: [PATCH 12/70] refs #4979 feat:getInfoDetails && item_devalueA2 --- db/.pullinfo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/.pullinfo.json b/db/.pullinfo.json index 0defed8458..f4afbc5fbb 100644 --- a/db/.pullinfo.json +++ b/db/.pullinfo.json @@ -9,7 +9,7 @@ }, "vn": { "view": { - "expeditionPallet_Print": "06613719475fcdba8309607c38cc78efc2e348cca7bc96b48dc3ae3c12426f54" + "expeditionPallet_Print": "288cbd6e8289df083ed5eb1a2c808f7a82ba4c90c8ad9781104808a7a54471fb" } } } From 2694f277d28009dd3da7796040dbf41486e03cac Mon Sep 17 00:00:00 2001 From: jorgep Date: Fri, 17 May 2024 12:59:39 +0200 Subject: [PATCH 13/70] fix: refs #6744 add es locale --- loopback/locale/es.json | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/loopback/locale/es.json b/loopback/locale/es.json index f1c57455eb..bc3a8c2a5c 100644 --- a/loopback/locale/es.json +++ b/loopback/locale/es.json @@ -355,6 +355,7 @@ "No results found": "No se han encontrado resultados", "InvoiceIn is already booked": "La factura recibida está contabilizada", "This workCenter is already assigned to this agency": "Este centro de trabajo ya está asignado a esta agencia", - "Select ticket or client": "Elija un ticket o un client", - "It was not able to create the invoice": "No se pudo crear la factura" -} + "Select ticket or client": "Elija un ticket o un client", + "It was not able to create the invoice": "No se pudo crear la factura", + "ticketCommercial": "El ticket {{ ticket }} para el vendedor {{ salesMan }} está en preparación. (mensaje generado automáticamente)" +} \ No newline at end of file From dd7ee27e9b8b1cabdb487b6cddc453efbb5e7e88 Mon Sep 17 00:00:00 2001 From: carlossa Date: Fri, 17 May 2024 14:28:28 +0200 Subject: [PATCH 14/70] refs #7396 fix worker model --- loopback/locale/en.json | 9 +++++---- modules/worker/back/models/worker.json | 16 ++++++++++++++++ 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/loopback/locale/en.json b/loopback/locale/en.json index ca76eae428..601a26f5b8 100644 --- a/loopback/locale/en.json +++ b/loopback/locale/en.json @@ -223,7 +223,8 @@ "printerNotExists": "The printer does not exist", "There are not picking tickets": "There are not picking tickets", "ticketCommercial": "The ticket {{ ticket }} for the salesperson {{ salesMan }} is in preparation. (automatically generated message)", - "This password can only be changed by the user themselves": "This password can only be changed by the user themselves", - "They're not your subordinate": "They're not your subordinate", - "InvoiceIn is already booked": "InvoiceIn is already booked" -} + "This password can only be changed by the user themselves": "This password can only be changed by the user themselves", + "They're not your subordinate": "They're not your subordinate", + "InvoiceIn is already booked": "InvoiceIn is already booked", + "This workCenter is already assigned to this agency": "This workCenter is already assigned to this agency" +} \ No newline at end of file diff --git a/modules/worker/back/models/worker.json b/modules/worker/back/models/worker.json index adfe2c58e9..4e7617aabe 100644 --- a/modules/worker/back/models/worker.json +++ b/modules/worker/back/models/worker.json @@ -62,7 +62,23 @@ }, "isFreelance": { "type" : "boolean" + }, + "fiDueDate": { + "type": "date" + }, + "hasMachineryAuthorized": { + "type": "boolean" + }, + "seniority": { + "type": "date" + }, + "isDisable": { + "type": "boolean" + }, + "isSsDiscounted": { + "type": "boolean" } + }, "relations": { "user": { From 7fb6ecd6178c3064e420e9c9e8a867d62968b145 Mon Sep 17 00:00:00 2001 From: pablone Date: Fri, 17 May 2024 14:46:49 +0200 Subject: [PATCH 15/70] feat: refs #7187 redirect to lilium --- modules/worker/front/pda/index.html | 50 ------------------ modules/worker/front/pda/index.js | 48 +++-------------- modules/worker/front/pda/index.spec.js | 72 -------------------------- modules/worker/front/pda/style.scss | 6 --- 4 files changed, 8 insertions(+), 168 deletions(-) delete mode 100644 modules/worker/front/pda/index.html delete mode 100644 modules/worker/front/pda/index.spec.js delete mode 100644 modules/worker/front/pda/style.scss diff --git a/modules/worker/front/pda/index.html b/modules/worker/front/pda/index.html deleted file mode 100644 index c6d31dc858..0000000000 --- a/modules/worker/front/pda/index.html +++ /dev/null @@ -1,50 +0,0 @@ -
- - - - - - - - - - -
- - - - - -
- ID: {{id}} -
-
- {{modelFk}}, {{serialNumber}} -
-
-
-
-
- - - - - diff --git a/modules/worker/front/pda/index.js b/modules/worker/front/pda/index.js index 885261e5c4..b1f8dcac27 100644 --- a/modules/worker/front/pda/index.js +++ b/modules/worker/front/pda/index.js @@ -1,53 +1,21 @@ import ngModule from '../module'; import Section from 'salix/components/section'; -import './style.scss'; class Controller extends Section { constructor($element, $) { super($element, $); - const filter = { - where: {userFk: this.$params.id}, - include: {relation: 'deviceProduction'} - }; - this.$http.get('DeviceProductionUsers', {filter}). - then(res => { - if (res.data && res.data.length > 0) - this.setCurrentPDA(res.data[0]); - }); } - deallocatePDA() { - this.$http.post(`Workers/${this.$params.id}/deallocatePDA`, {pda: this.currentPDA.deviceProductionFk}) - .then(() => { - this.vnApp.showSuccess(this.$t('PDA deallocated')); - delete this.currentPDA; - }); - } - - allocatePDA() { - this.$http.post(`Workers/${this.$params.id}/allocatePDA`, {pda: this.newPDA}) - .then(res => { - if (res.data) - this.setCurrentPDA(res.data); - - this.vnApp.showSuccess(this.$t('PDA allocated')); - delete this.newPDA; - }); - } - - setCurrentPDA(data) { - this.currentPDA = data; - this.currentPDA.description = []; - this.currentPDA.description.push(`ID: ${this.currentPDA.deviceProductionFk}`); - this.currentPDA.description.push(`${this.$t('Model')}: ${this.currentPDA.deviceProduction.modelFk}`); - this.currentPDA.description.push(`${this.$t('Serial Number')}: ${this.currentPDA.deviceProduction.serialNumber}`); - this.currentPDA.description = this.currentPDA.description.join(' '); + async $onInit() { + const url = await this.vnApp.getUrl(`worker/${this.$params.id}/pda`); + console.log('url: ', url); + window.location.href = url; } } -Controller.$inject = ['$element', '$scope']; - -ngModule.vnComponent('vnWorkerPda', { - template: require('./index.html'), +ngModule.vnComponent('vnClaimPhotos', { controller: Controller, + bindings: { + claim: '<' + } }); diff --git a/modules/worker/front/pda/index.spec.js b/modules/worker/front/pda/index.spec.js deleted file mode 100644 index a0540af45c..0000000000 --- a/modules/worker/front/pda/index.spec.js +++ /dev/null @@ -1,72 +0,0 @@ -import './index'; - -describe('Worker', () => { - describe('Component vnWorkerPda', () => { - let $httpBackend; - let $scope; - let $element; - let controller; - - beforeEach(ngModule('worker')); - - beforeEach(inject(($componentController, $rootScope, _$httpBackend_) => { - $httpBackend = _$httpBackend_; - $scope = $rootScope.$new(); - $element = angular.element(''); - controller = $componentController('vnWorkerPda', {$element, $scope}); - $httpBackend.expectGET(`DeviceProductionUsers`).respond(); - })); - - describe('deallocatePDA()', () => { - it('should make an HTTP Post query to deallocatePDA', () => { - jest.spyOn(controller.vnApp, 'showSuccess'); - controller.currentPDA = {deviceProductionFk: 1}; - controller.$params.id = 1; - - $httpBackend - .expectPOST(`Workers/${controller.$params.id}/deallocatePDA`, - {pda: controller.currentPDA.deviceProductionFk}) - .respond(); - controller.deallocatePDA(); - $httpBackend.flush(); - - expect(controller.vnApp.showSuccess).toHaveBeenCalled(); - expect(controller.currentPDA).toBeUndefined(); - }); - }); - - describe('allocatePDA()', () => { - it('should make an HTTP Post query to allocatePDA', () => { - jest.spyOn(controller.vnApp, 'showSuccess'); - controller.newPDA = 4; - controller.$params.id = 1; - - $httpBackend - .expectPOST(`Workers/${controller.$params.id}/allocatePDA`, - {pda: controller.newPDA}) - .respond(); - controller.allocatePDA(); - $httpBackend.flush(); - - expect(controller.vnApp.showSuccess).toHaveBeenCalled(); - expect(controller.newPDA).toBeUndefined(); - }); - }); - - describe('setCurrentPDA()', () => { - it('should set CurrentPDA', () => { - const data = { - deviceProductionFk: 1, - deviceProduction: { - modelFk: 1, - serialNumber: 1 - } - }; - controller.setCurrentPDA(data); - - expect(controller.currentPDA).toBeDefined(); - expect(controller.currentPDA.description).toBeDefined(); - }); - }); - }); -}); diff --git a/modules/worker/front/pda/style.scss b/modules/worker/front/pda/style.scss deleted file mode 100644 index c55c9d2187..0000000000 --- a/modules/worker/front/pda/style.scss +++ /dev/null @@ -1,6 +0,0 @@ -@import "./variables"; - -.text-grey { - color: $color-font-light; -} - From 05f09d0b875f29b9d4838dcfbbe708ca1e447b36 Mon Sep 17 00:00:00 2001 From: carlossa Date: Fri, 17 May 2024 14:56:40 +0200 Subject: [PATCH 16/70] refs #7187 fix workerPda --- modules/worker/front/pda/index.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/worker/front/pda/index.js b/modules/worker/front/pda/index.js index b1f8dcac27..a578865563 100644 --- a/modules/worker/front/pda/index.js +++ b/modules/worker/front/pda/index.js @@ -8,12 +8,11 @@ class Controller extends Section { async $onInit() { const url = await this.vnApp.getUrl(`worker/${this.$params.id}/pda`); - console.log('url: ', url); window.location.href = url; } } -ngModule.vnComponent('vnClaimPhotos', { +ngModule.vnComponent('vnWorkerPda', { controller: Controller, bindings: { claim: '<' From c822a64dc7b2074c5a4a01bc1363c8d77901acf3 Mon Sep 17 00:00:00 2001 From: sergiodt Date: Fri, 17 May 2024 16:38:11 +0200 Subject: [PATCH 17/70] refs #4979 feat:getInfoDetails && item_devalueA2 --- db/routines/vn/procedures/itemShelving_getItemDetails.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/routines/vn/procedures/itemShelving_getItemDetails.sql b/db/routines/vn/procedures/itemShelving_getItemDetails.sql index 25afd192bd..c01bc348ca 100644 --- a/db/routines/vn/procedures/itemShelving_getItemDetails.sql +++ b/db/routines/vn/procedures/itemShelving_getItemDetails.sql @@ -49,7 +49,7 @@ BEGIN SUM(ish.visible) visible FROM vn.itemShelving ish JOIN visible v - WHERE ish.shelvingFK = vShelvingFK + WHERE ish.shelvingFK = vShelvingFK COLLATE utf8mb3_general_ci AND ish.itemFk = v.itemFk; END$$ DELIMITER ; \ No newline at end of file From 9d98ae4a037f6c672708637167f5e5c229e3e360 Mon Sep 17 00:00:00 2001 From: guillermo Date: Mon, 20 May 2024 07:02:00 +0200 Subject: [PATCH 18/70] Merge branch 'test' into dev --- loopback/locale/es.json | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/loopback/locale/es.json b/loopback/locale/es.json index 458f5b1f0e..77e707590e 100644 --- a/loopback/locale/es.json +++ b/loopback/locale/es.json @@ -357,9 +357,6 @@ "This workCenter is already assigned to this agency": "Este centro de trabajo ya está asignado a esta agencia", "Select ticket or client": "Elija un ticket o un client", "It was not able to create the invoice": "No se pudo crear la factura", -<<<<<<< HEAD - "This PDA is already assigned to another user": "This PDA is already assigned to another user" -======= + "This PDA is already assigned to another user": "This PDA is already assigned to another user", "ticketCommercial": "El ticket {{ ticket }} para el vendedor {{ salesMan }} está en preparación. (mensaje generado automáticamente)" ->>>>>>> test } \ No newline at end of file From 9a5acedd38b0ab3bfda5264507ab735722107417 Mon Sep 17 00:00:00 2001 From: Pako Date: Mon, 20 May 2024 08:21:54 +0200 Subject: [PATCH 19/70] improved proc --- .../supplierPackaging_ReportSource.sql | 88 ++++++++++++++++++- 1 file changed, 85 insertions(+), 3 deletions(-) diff --git a/db/routines/vn/procedures/supplierPackaging_ReportSource.sql b/db/routines/vn/procedures/supplierPackaging_ReportSource.sql index f9d43f9256..2cf9b85c5c 100644 --- a/db/routines/vn/procedures/supplierPackaging_ReportSource.sql +++ b/db/routines/vn/procedures/supplierPackaging_ReportSource.sql @@ -35,7 +35,7 @@ BEGIN itemFk, longName, supplier, - entryFk, + CONCAT('E',entryFk) entryFk, landed, `in`, `out`, @@ -49,16 +49,98 @@ BEGIN itemFk, longName, supplier, - 'previous', + 'E previous', vFromDated, SUM(`in`), SUM(`out`), NULL, - buyingValue + AVG(buyingValue) FROM supplierPackaging WHERE supplierFk = vSupplierFk AND landed < vFromDated GROUP BY itemFk + UNION ALL + SELECT vSupplierFk, + s.itemFk, + i.longName, + c.name, + CONCAT('T',s.ticketFk), + DATE(t.shipped), + -LEAST(s.quantity,0) `in`, + GREATEST(s.quantity,0) `out`, + t.warehouseFk, + s.price * (100 - s.discount) / 100 + FROM sale s + JOIN item i ON i.id = s.itemFk + JOIN packaging p ON p.itemFk = i.id + JOIN ticket t ON t.id = s.ticketFk + JOIN client c ON c.id = t.clientFk + JOIN supplier su ON su.nif = c.fi + WHERE su.id = vSupplierFk + AND t.shipped >= vFromDated + AND p.isPackageReturnable + UNION ALL + SELECT vSupplierFk, + s.itemFk, + i.longName, + c.name, + 'T previous', + vFromDated, + SUM(-LEAST(s.quantity,0)) `in`, + SUM(GREATEST(s.quantity,0)) `out`, + NULL, + AVG(s.price * (100 - s.discount) / 100) + FROM sale s + JOIN item i ON i.id = s.itemFk + JOIN packaging p ON p.itemFk = i.id + JOIN ticket t ON t.id = s.ticketFk + JOIN client c ON c.id = t.clientFk + JOIN supplier su ON su.nif = c.fi + WHERE su.id = vSupplierFk + AND t.shipped < vFromDated + AND p.isPackageReturnable + GROUP BY s.itemFk + UNION ALL + SELECT vSupplierFk, + p.itemFk, + i.longName, + c.name, + CONCAT('TP',tp.ticketFk), + DATE(t.shipped), + -LEAST(tp.quantity,0) `in`, + GREATEST(tp.quantity,0) `out`, + t.warehouseFk, + 0 + FROM ticketPackaging tp + JOIN packaging p ON p.id = tp.packagingFk + JOIN item i ON i.id = p.itemFk + JOIN ticket t ON t.id = tp.ticketFk + JOIN client c ON c.id = t.clientFk + JOIN supplier su ON su.nif = c.fi + WHERE su.id = vSupplierFk + AND t.shipped >= vFromDated + AND p.isPackageReturnable + UNION ALL + SELECT vSupplierFk, + p.itemFk, + i.longName, + c.name, + 'TP previous', + vFromDated, + SUM(-LEAST(tp.quantity,0)) `in`, + SUM(GREATEST(tp.quantity,0)) `out`, + NULL, + 0 + FROM ticketPackaging tp + JOIN packaging p ON p.id = tp.packagingFk + JOIN item i ON i.id = p.itemFk + JOIN ticket t ON t.id = tp.ticketFk + JOIN client c ON c.id = t.clientFk + JOIN supplier su ON su.nif = c.fi + WHERE su.id = vSupplierFk + AND t.shipped >= vFromDated + AND p.isPackageReturnable + GROUP BY p.itemFk ORDER BY itemFk, landed, entryFk ) sub WHERE `out` OR `in`; From 7f0f1b954710ec4b382c0ec551248a87a4c6430b Mon Sep 17 00:00:00 2001 From: guillermo Date: Mon, 20 May 2024 09:54:30 +0200 Subject: [PATCH 20/70] refactor: refs #7422 Deleted tables --- .../11057-chocolateMoss/00-firstScript.sql | 106 ++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 db/versions/11057-chocolateMoss/00-firstScript.sql diff --git a/db/versions/11057-chocolateMoss/00-firstScript.sql b/db/versions/11057-chocolateMoss/00-firstScript.sql new file mode 100644 index 0000000000..7484b8c33e --- /dev/null +++ b/db/versions/11057-chocolateMoss/00-firstScript.sql @@ -0,0 +1,106 @@ +DROP TABLE vn2008.scanTree__; +DROP TABLE vn2008.payroll_embargos__; +DROP TABLE vn2008.unary_scan_line__; +DROP TABLE vn2008.unary_source__; +DROP TABLE vn2008.unary_scan__; +DROP TABLE vn2008.scan_line__; +DROP TABLE vn2008.Familias__; +DROP TABLE vn2008.language__; +DROP TABLE vn2008.Clientes_dits__; +DROP TABLE vn2008.unary_scan_line_expedition__; +DROP TABLE vn2008.warehouse_group__; +DROP TABLE vn2008.Espionajes__; +DROP TABLE vn2008.jerarquia__; +DROP TABLE vn2008.wks__; +DROP TABLE vn2008.Proveedores_comunicados__; +DROP TABLE vn2008.integra2_escala__; +DROP TABLE vn2008.cp__; +DROP TABLE vn2008.unary__; +DROP TABLE vn2008.Estados__; +DROP TABLE vn2008.agency_hour__; +DROP TABLE vn2008.Reservas__; +DROP TABLE vn2008.cyc_declaration__; +DROP TABLE vn2008.route__; +DROP TABLE vn2008.Proveedores_escritos__; +DROP TABLE vn2008.config__; +DROP TABLE vn2008.guillen__; +DROP TABLE vn2008.expeditions_deleted__; +DROP TABLE vn2008.Tipos_f11__; +DROP TABLE vn2008.commission__; +DROP TABLE vn2008.Movimientos_revisar__; +DROP TABLE vn2008.recibida_agricola__; +DROP TABLE vn2008.tipsa__; +DROP TABLE vn2008.rounding__; +DROP TABLE vn2008.Informes__; +DROP TABLE vn2008.Forms__; +DROP TABLE vn2008.Clientes_event__; +DROP TABLE vn2008.wh_selection__; +DROP TABLE vn2008.template_bionic_component__; +DROP TABLE vn2008.Agencias_province__; +DROP TABLE vn2008.travel_pattern__; +DROP TABLE vn2008.sort_merge_results_ernesto__; +DROP TABLE vn2008.Conteo__; +DROP TABLE vn2008.Consignatarios_devices__; +DROP TABLE vn2008.link__; +DROP TABLE vn2008.agency_warehouse__; +DROP TABLE vn2008.warehouse_lc__; +DROP TABLE vn2008.emp_day_pay__; +DROP TABLE vn2008.Entradas_kop__; +DROP TABLE vn2008.dock__; +DROP TABLE vn2008.unaryScanFilter__; +DROP TABLE vn2008.Grupos__; +DROP TABLE vn2008.nichos__; +DROP TABLE vn2008.form_query__; +DROP TABLE vn2008.filtros__; +DROP TABLE vn2008.Objetivos__; +DROP TABLE vn2008.zones__; +DROP TABLE vn2008.rec_translator__; +DROP TABLE vn2008.warehouse_joined__; +DROP TABLE vn2008.warehouse_filtro__; +DROP TABLE vn2008.viaxpress__; +DROP TABLE vn2008.cl_que__; +DROP TABLE vn2008.Recibos_recorded__; +DROP TABLE vn2008.cooler_path__; +DROP TABLE vn2008.payrroll_apEmpresarial__; +DROP TABLE vn2008.Compres_ok__; +DROP TABLE vn2008.Movimientos_avisar__; +DROP TABLE vn2008.Clases__; +DROP TABLE vn2008.payroll_tipobasess__; +DROP TABLE vn2008.guillen_carry__; +DROP TABLE vn2008.unary_scan_line_buy__; +DROP TABLE vn2008.Series__; +DROP TABLE vn2008.Permisos__; +DROP TABLE vn2008.container__; +DROP TABLE vn2008.travel_reserve__; +DROP TABLE vn2008.tmpNEWTARIFAS__; +DROP TABLE vn2008.Clientes_potenciales__; +DROP TABLE vn2008.duaDismissed__; +DROP TABLE vn2008.cl_pet__; +DROP TABLE vn2008.preparation_exception__; +DROP TABLE vn2008.Clientes_empresa__; +DROP TABLE vn2008.call_information__; +DROP TABLE vn2008.template_bionic_price__; +DROP TABLE vn2008.invoice_observation__; +DROP TABLE vn2008.edi_testigos__; +DROP TABLE vn2008.cl_dep__; +DROP TABLE vn2008.agencia_descuadre__; +DROP TABLE vn2008.Monitoring__; +DROP TABLE vn2008.payroll_datos__; +DROP TABLE vn2008.tblIVA__; +DROP TABLE vn2008.cyc__; +DROP TABLE vn2008.Tickets_stack__; +DROP TABLE vn2008.config_host_forms__; +DROP TABLE vn2008.template_bionic_lot__; +DROP TABLE vn2008.payroll_bonificaciones__; +DROP TABLE vn2008.widget__; +DROP TABLE vn2008.accion_dits__; +DROP TABLE vn2008.credit_card__; +DROP TABLE vn2008.Brasa__; +DROP TABLE vn2008.Jefes__; +DROP TABLE vn2008.call_option__; +DROP TABLE vn2008.expeditions_pictures__; +DROP TABLE vn2008.scan__; +DROP TABLE vn2008.trolley__; +DROP TABLE vn2008.transport__; +DROP TABLE vn2008.Baldas__; +DROP TABLE vn2008.payroll_basess__; \ No newline at end of file From 7f1210e712f43d38a874d8a92e76e796649a868b Mon Sep 17 00:00:00 2001 From: carlossa Date: Mon, 20 May 2024 10:26:09 +0200 Subject: [PATCH 21/70] refs #6820 fix back --- back/model-config.json | 3 +++ back/models/routeConfig.json | 21 +++++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 back/models/routeConfig.json diff --git a/back/model-config.json b/back/model-config.json index e64386300e..b643ab54f1 100644 --- a/back/model-config.json +++ b/back/model-config.json @@ -186,5 +186,8 @@ }, "AgencyWorkCenter": { "dataSource": "vn" + }, + "RouteConfig": { + "dataSource": "vn" } } diff --git a/back/models/routeConfig.json b/back/models/routeConfig.json new file mode 100644 index 0000000000..28adbe756f --- /dev/null +++ b/back/models/routeConfig.json @@ -0,0 +1,21 @@ +{ + "name": "RouteConfig", + "base": "VnModel", + "mixins": { + "Loggable": true + }, + "options": { + "mysql": { + "table": "routeConfig" + } + }, + "properties": { + "id": { + "type": "number", + "description": "Identifier" + }, + "kmMax": { + "type": "number" + } + } +} From abdacb362751559fe51bc0d8de6badb78ca3bb62 Mon Sep 17 00:00:00 2001 From: Pako Date: Mon, 20 May 2024 10:33:01 +0200 Subject: [PATCH 22/70] casting values --- db/routines/vn/procedures/supplierPackaging_ReportSource.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/db/routines/vn/procedures/supplierPackaging_ReportSource.sql b/db/routines/vn/procedures/supplierPackaging_ReportSource.sql index 2cf9b85c5c..a3401843ad 100644 --- a/db/routines/vn/procedures/supplierPackaging_ReportSource.sql +++ b/db/routines/vn/procedures/supplierPackaging_ReportSource.sql @@ -151,8 +151,8 @@ BEGIN supplier, entryFk, landed, - `in`, - `out`, + CAST(`in` AS DECIMAL(10,0)) `in`, + CAST(`out` AS DECIMAL(10,0)) `out`, warehouse, buyingValue, balance From 6d66c0f71f6c6765b46ae7fdad2a8747f02d0889 Mon Sep 17 00:00:00 2001 From: carlossa Date: Mon, 20 May 2024 11:14:30 +0200 Subject: [PATCH 23/70] hotfix TicketLog filter --- modules/ticket/back/models/ticket-log.json | 3 ++- modules/ticket/front/descriptor-menu/index.js | 7 ++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/modules/ticket/back/models/ticket-log.json b/modules/ticket/back/models/ticket-log.json index 32b4afd13b..d75589f115 100644 --- a/modules/ticket/back/models/ticket-log.json +++ b/modules/ticket/back/models/ticket-log.json @@ -8,7 +8,8 @@ }, "properties": { "id": { - "type": "string" + "type": "number", + "id": true }, "originFk": { "type": "number" diff --git a/modules/ticket/front/descriptor-menu/index.js b/modules/ticket/front/descriptor-menu/index.js index 52cac141c2..89590e86a7 100644 --- a/modules/ticket/front/descriptor-menu/index.js +++ b/modules/ticket/front/descriptor-menu/index.js @@ -37,14 +37,15 @@ class Controller extends Section { }); const filter = { - fields: ['originFk', 'creationDate', 'newInstance'], + fields: ['id', 'originFk', 'creationDate', 'newInstance'], where: { originFk: value, newInstance: {like: '%"isDeleted":true%'} }, - order: 'creationDate DESC' + order: 'creationDate DESC', + limit: 1 }; - this.$http.get(`TicketLogs/findOne`, {filter}) + this.$http.get(`TicketLogs`, {filter}) .then(res => { if (res && res.data) { const now = Date.vnNew(); From f82b1054306ad370948010248e5cdfded6fff6b2 Mon Sep 17 00:00:00 2001 From: alexm Date: Mon, 20 May 2024 11:30:43 +0200 Subject: [PATCH 24/70] fix: TicketLog res.data --- modules/ticket/front/descriptor-menu/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/ticket/front/descriptor-menu/index.js b/modules/ticket/front/descriptor-menu/index.js index 89590e86a7..32f2454543 100644 --- a/modules/ticket/front/descriptor-menu/index.js +++ b/modules/ticket/front/descriptor-menu/index.js @@ -47,9 +47,9 @@ class Controller extends Section { }; this.$http.get(`TicketLogs`, {filter}) .then(res => { - if (res && res.data) { + if (res && res.data && res.data.length) { const now = Date.vnNew(); - const maxDate = new Date(res.data.creationDate); + const maxDate = new Date(res.data[0].creationDate); maxDate.setHours(maxDate.getHours() + 1); if (now <= maxDate) return this.canRestoreTicket = true; From b203d94b272d33131272cf47a152482c37565480 Mon Sep 17 00:00:00 2001 From: pablone Date: Mon, 20 May 2024 11:37:40 +0200 Subject: [PATCH 25/70] feat: refs #6021 add new column --- db/versions/11058-aquaCataractarum/00-firstScript.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 db/versions/11058-aquaCataractarum/00-firstScript.sql diff --git a/db/versions/11058-aquaCataractarum/00-firstScript.sql b/db/versions/11058-aquaCataractarum/00-firstScript.sql new file mode 100644 index 0000000000..98fc910ad6 --- /dev/null +++ b/db/versions/11058-aquaCataractarum/00-firstScript.sql @@ -0,0 +1,2 @@ +-- Place your SQL code here +ALTER TABLE floranet.`order` ADD IF NOT EXISTS observations TEXT NULL; From d51c9fc12061bd612fd48697fe22ad4decfaf108 Mon Sep 17 00:00:00 2001 From: pablone Date: Mon, 20 May 2024 12:14:59 +0200 Subject: [PATCH 26/70] fix: refs #6404 fix cancel shipment --- back/methods/mrw-config/cancelShipment.js | 4 ++-- back/methods/mrw-config/createShipment.js | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/back/methods/mrw-config/cancelShipment.js b/back/methods/mrw-config/cancelShipment.js index 218b6a96bb..dd33694ea8 100644 --- a/back/methods/mrw-config/cancelShipment.js +++ b/back/methods/mrw-config/cancelShipment.js @@ -39,8 +39,8 @@ module.exports = Self => { const xmlString = response.data; const parser = new DOMParser(); const xmlDoc = parser.parseFromString(xmlString, 'text/xml'); - const [resultElement] = xmlDoc.getElementsByTagName('Mensaje'); + const resultElement = xmlDoc.getElementsByTagName('Mensaje')[0].textContent; - return resultElement.textContent; + return resultElement; }; }; diff --git a/back/methods/mrw-config/createShipment.js b/back/methods/mrw-config/createShipment.js index 12263de033..7d226a5bc5 100644 --- a/back/methods/mrw-config/createShipment.js +++ b/back/methods/mrw-config/createShipment.js @@ -42,7 +42,8 @@ module.exports = Self => { throw new UserError(`Some mrwConfig parameters are not set`); const query = - `SELECT CASE co.code + `SELECT + CASE co.code WHEN 'ES' THEN a.postalCode WHEN 'PT' THEN LEFT(a.postalCode, 4) WHEN 'AD' THEN REPLACE(a.postalCode, 'AD', '00') From 143f9cf0bbbdf93e539ff15ae8db887096687a6e Mon Sep 17 00:00:00 2001 From: pablone Date: Mon, 20 May 2024 12:17:10 +0200 Subject: [PATCH 27/70] fix: refs #6404 fix return --- back/methods/mrw-config/cancelShipment.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/back/methods/mrw-config/cancelShipment.js b/back/methods/mrw-config/cancelShipment.js index dd33694ea8..86bbb7410c 100644 --- a/back/methods/mrw-config/cancelShipment.js +++ b/back/methods/mrw-config/cancelShipment.js @@ -39,8 +39,6 @@ module.exports = Self => { const xmlString = response.data; const parser = new DOMParser(); const xmlDoc = parser.parseFromString(xmlString, 'text/xml'); - const resultElement = xmlDoc.getElementsByTagName('Mensaje')[0].textContent; - - return resultElement; + return xmlDoc.getElementsByTagName('Mensaje')[0].textContent; }; }; From 62ca4885c4ccad02f9c8826f0e7bbeb79a8b27e7 Mon Sep 17 00:00:00 2001 From: robert Date: Mon, 20 May 2024 12:28:27 +0200 Subject: [PATCH 28/70] feat: refs #7296 requested changes --- modules/route/back/models/roadmap.json | 2 +- modules/ticket/back/models/expeditionPallet.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/route/back/models/roadmap.json b/modules/route/back/models/roadmap.json index 2b02c64f21..c7c1f15eb1 100644 --- a/modules/route/back/models/roadmap.json +++ b/modules/route/back/models/roadmap.json @@ -54,7 +54,7 @@ "model": "Supplier", "foreignKey": "supplierFk" }, - "expeditionTruck": { + "roadmapStop": { "type": "hasMany", "model": "roadmapStop", "foreignKey": "roadmapFk" diff --git a/modules/ticket/back/models/expeditionPallet.json b/modules/ticket/back/models/expeditionPallet.json index 8384ab8838..017c5e5d41 100644 --- a/modules/ticket/back/models/expeditionPallet.json +++ b/modules/ticket/back/models/expeditionPallet.json @@ -23,7 +23,7 @@ } }, "relations": { - "expeditionTruck": { + "RoadmapStop": { "type": "belongsTo", "model": "RoadmapStop", "foreignKey": "truckFk" From 34f48e46e7c8b18e4fef7e7c287bba0fba2c5e94 Mon Sep 17 00:00:00 2001 From: robert Date: Mon, 20 May 2024 13:19:01 +0200 Subject: [PATCH 29/70] feat: refs #7296 requested changes2 --- modules/route/front/roadmap/summary/index.js | 4 ++-- modules/ticket/back/models/expeditionPallet.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/route/front/roadmap/summary/index.js b/modules/route/front/roadmap/summary/index.js index e0903f3a7f..46abe5ca2f 100644 --- a/modules/route/front/roadmap/summary/index.js +++ b/modules/route/front/roadmap/summary/index.js @@ -20,7 +20,7 @@ class Controller extends Component { include: [ {relation: 'supplier'}, {relation: 'worker'}, - {relation: 'ExpeditionTruck', + {relation: 'roadmapStop', scope: { include: [ {relation: 'warehouse'} @@ -48,7 +48,7 @@ class Controller extends Component { description: this.roadmapStop.description }; - this.$http.post(`roadmapStops`, data) + this.$http.post(`RoadmapStops`, data) .then(() => { this.loadData(); this.vnApp.showSuccess(this.$t('Data saved!')); diff --git a/modules/ticket/back/models/expeditionPallet.json b/modules/ticket/back/models/expeditionPallet.json index 017c5e5d41..64b3092ae7 100644 --- a/modules/ticket/back/models/expeditionPallet.json +++ b/modules/ticket/back/models/expeditionPallet.json @@ -23,7 +23,7 @@ } }, "relations": { - "RoadmapStop": { + "roadmapStop": { "type": "belongsTo", "model": "RoadmapStop", "foreignKey": "truckFk" From 823e8fd7a154a4631fdb454d04297658913d7e89 Mon Sep 17 00:00:00 2001 From: robert Date: Mon, 20 May 2024 13:27:38 +0200 Subject: [PATCH 30/70] feat: refs #7296 requested changes3 --- modules/route/back/methods/roadmap/clone.js | 2 +- modules/route/back/models/roadmap.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/route/back/methods/roadmap/clone.js b/modules/route/back/methods/roadmap/clone.js index 2226b1e509..b74cf803c7 100644 --- a/modules/route/back/methods/roadmap/clone.js +++ b/modules/route/back/methods/roadmap/clone.js @@ -67,7 +67,7 @@ module.exports = Self => { roadmapStop.roadmapFk = clone.id; return roadmapStop; }); - await models.roadmapStop.create(roadmapStops, options); + await models.RoadmapStop.create(roadmapStops, options); } await tx.commit(); diff --git a/modules/route/back/models/roadmap.json b/modules/route/back/models/roadmap.json index c7c1f15eb1..01572d718b 100644 --- a/modules/route/back/models/roadmap.json +++ b/modules/route/back/models/roadmap.json @@ -56,7 +56,7 @@ }, "roadmapStop": { "type": "hasMany", - "model": "roadmapStop", + "model": "RoadmapStop", "foreignKey": "roadmapFk" } } From 3fa557f90d1e5adaefc826c74b2356ee836d62ea Mon Sep 17 00:00:00 2001 From: pablone Date: Mon, 20 May 2024 13:58:32 +0200 Subject: [PATCH 31/70] fix: refs #6404 create shipment --- back/methods/mrw-config/createShipment.js | 11 +++-------- back/methods/mrw-config/specs/createShipment.spec.js | 4 ++-- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/back/methods/mrw-config/createShipment.js b/back/methods/mrw-config/createShipment.js index 7d226a5bc5..081a833829 100644 --- a/back/methods/mrw-config/createShipment.js +++ b/back/methods/mrw-config/createShipment.js @@ -90,14 +90,9 @@ module.exports = Self => { const getLabelResponse = await sendXmlDoc('getLabel', {mrw, shipmentId}, 'text/xml'); const file = getTextByTag(getLabelResponse, 'EtiquetaFile'); - 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; + if (tx) await tx.commit(); + + return {shipmentId, file}; }; function getTextByTag(xmlDoc, tag) { diff --git a/back/methods/mrw-config/specs/createShipment.spec.js b/back/methods/mrw-config/specs/createShipment.spec.js index 0f48bc2d31..f05f9a81d6 100644 --- a/back/methods/mrw-config/specs/createShipment.spec.js +++ b/back/methods/mrw-config/specs/createShipment.spec.js @@ -81,9 +81,9 @@ describe('MRWConfig createShipment()', () => { spyOn(axios, 'post').and.callFake(() => Promise.resolve(mockPostResponses.pop())); - const base64Binary = await models.MrwConfig.createShipment(expedition1.id, options); + const {file} = await models.MrwConfig.createShipment(expedition1.id, options); - expect(base64Binary).toEqual(mockBase64Binary); + expect(file).toEqual(mockBase64Binary); }); it('should fail if mrwConfig has no data', async() => { From 119102b0b3cf5fef4390364e7e6d16ff6788cd17 Mon Sep 17 00:00:00 2001 From: carlossa Date: Mon, 20 May 2024 16:00:38 +0200 Subject: [PATCH 32/70] refs #6820 acl --- db/versions/11059-crimsonAnthurium/00-firstScript.sql | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 db/versions/11059-crimsonAnthurium/00-firstScript.sql diff --git a/db/versions/11059-crimsonAnthurium/00-firstScript.sql b/db/versions/11059-crimsonAnthurium/00-firstScript.sql new file mode 100644 index 0000000000..7fe3e01ca6 --- /dev/null +++ b/db/versions/11059-crimsonAnthurium/00-firstScript.sql @@ -0,0 +1,3 @@ +-- Place your SQL code here +INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId) + VALUES ('RouteConfig','*','*','ALLOW','ROLE','employee'); From 335b9caaa40337e4db2661cd68f19e582f16de0c Mon Sep 17 00:00:00 2001 From: pablone Date: Tue, 21 May 2024 01:10:53 +0200 Subject: [PATCH 33/70] fix: refs #7187 got summary before lilium --- modules/worker/front/pda/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/worker/front/pda/index.js b/modules/worker/front/pda/index.js index a578865563..099e0e34c7 100644 --- a/modules/worker/front/pda/index.js +++ b/modules/worker/front/pda/index.js @@ -8,6 +8,7 @@ class Controller extends Section { async $onInit() { const url = await this.vnApp.getUrl(`worker/${this.$params.id}/pda`); + this.$state.go('worker.card.summary', {id: this.$params.id}); window.location.href = url; } } From 82d985ff3a8a77e72698f0afcff4e2e70bc0fda3 Mon Sep 17 00:00:00 2001 From: guillermo Date: Tue, 21 May 2024 07:19:04 +0200 Subject: [PATCH 34/70] refs #7422 Fix --- .../11057-chocolateMoss/00-firstScript.sql | 106 ------------------ db/versions/11057-chocolateMoss/00-part.sql | 26 +++++ db/versions/11057-chocolateMoss/01-part.sql | 26 +++++ db/versions/11057-chocolateMoss/02-part.sql | 26 +++++ db/versions/11057-chocolateMoss/03-part.sql | 28 +++++ 5 files changed, 106 insertions(+), 106 deletions(-) delete mode 100644 db/versions/11057-chocolateMoss/00-firstScript.sql create mode 100644 db/versions/11057-chocolateMoss/00-part.sql create mode 100644 db/versions/11057-chocolateMoss/01-part.sql create mode 100644 db/versions/11057-chocolateMoss/02-part.sql create mode 100644 db/versions/11057-chocolateMoss/03-part.sql diff --git a/db/versions/11057-chocolateMoss/00-firstScript.sql b/db/versions/11057-chocolateMoss/00-firstScript.sql deleted file mode 100644 index 7484b8c33e..0000000000 --- a/db/versions/11057-chocolateMoss/00-firstScript.sql +++ /dev/null @@ -1,106 +0,0 @@ -DROP TABLE vn2008.scanTree__; -DROP TABLE vn2008.payroll_embargos__; -DROP TABLE vn2008.unary_scan_line__; -DROP TABLE vn2008.unary_source__; -DROP TABLE vn2008.unary_scan__; -DROP TABLE vn2008.scan_line__; -DROP TABLE vn2008.Familias__; -DROP TABLE vn2008.language__; -DROP TABLE vn2008.Clientes_dits__; -DROP TABLE vn2008.unary_scan_line_expedition__; -DROP TABLE vn2008.warehouse_group__; -DROP TABLE vn2008.Espionajes__; -DROP TABLE vn2008.jerarquia__; -DROP TABLE vn2008.wks__; -DROP TABLE vn2008.Proveedores_comunicados__; -DROP TABLE vn2008.integra2_escala__; -DROP TABLE vn2008.cp__; -DROP TABLE vn2008.unary__; -DROP TABLE vn2008.Estados__; -DROP TABLE vn2008.agency_hour__; -DROP TABLE vn2008.Reservas__; -DROP TABLE vn2008.cyc_declaration__; -DROP TABLE vn2008.route__; -DROP TABLE vn2008.Proveedores_escritos__; -DROP TABLE vn2008.config__; -DROP TABLE vn2008.guillen__; -DROP TABLE vn2008.expeditions_deleted__; -DROP TABLE vn2008.Tipos_f11__; -DROP TABLE vn2008.commission__; -DROP TABLE vn2008.Movimientos_revisar__; -DROP TABLE vn2008.recibida_agricola__; -DROP TABLE vn2008.tipsa__; -DROP TABLE vn2008.rounding__; -DROP TABLE vn2008.Informes__; -DROP TABLE vn2008.Forms__; -DROP TABLE vn2008.Clientes_event__; -DROP TABLE vn2008.wh_selection__; -DROP TABLE vn2008.template_bionic_component__; -DROP TABLE vn2008.Agencias_province__; -DROP TABLE vn2008.travel_pattern__; -DROP TABLE vn2008.sort_merge_results_ernesto__; -DROP TABLE vn2008.Conteo__; -DROP TABLE vn2008.Consignatarios_devices__; -DROP TABLE vn2008.link__; -DROP TABLE vn2008.agency_warehouse__; -DROP TABLE vn2008.warehouse_lc__; -DROP TABLE vn2008.emp_day_pay__; -DROP TABLE vn2008.Entradas_kop__; -DROP TABLE vn2008.dock__; -DROP TABLE vn2008.unaryScanFilter__; -DROP TABLE vn2008.Grupos__; -DROP TABLE vn2008.nichos__; -DROP TABLE vn2008.form_query__; -DROP TABLE vn2008.filtros__; -DROP TABLE vn2008.Objetivos__; -DROP TABLE vn2008.zones__; -DROP TABLE vn2008.rec_translator__; -DROP TABLE vn2008.warehouse_joined__; -DROP TABLE vn2008.warehouse_filtro__; -DROP TABLE vn2008.viaxpress__; -DROP TABLE vn2008.cl_que__; -DROP TABLE vn2008.Recibos_recorded__; -DROP TABLE vn2008.cooler_path__; -DROP TABLE vn2008.payrroll_apEmpresarial__; -DROP TABLE vn2008.Compres_ok__; -DROP TABLE vn2008.Movimientos_avisar__; -DROP TABLE vn2008.Clases__; -DROP TABLE vn2008.payroll_tipobasess__; -DROP TABLE vn2008.guillen_carry__; -DROP TABLE vn2008.unary_scan_line_buy__; -DROP TABLE vn2008.Series__; -DROP TABLE vn2008.Permisos__; -DROP TABLE vn2008.container__; -DROP TABLE vn2008.travel_reserve__; -DROP TABLE vn2008.tmpNEWTARIFAS__; -DROP TABLE vn2008.Clientes_potenciales__; -DROP TABLE vn2008.duaDismissed__; -DROP TABLE vn2008.cl_pet__; -DROP TABLE vn2008.preparation_exception__; -DROP TABLE vn2008.Clientes_empresa__; -DROP TABLE vn2008.call_information__; -DROP TABLE vn2008.template_bionic_price__; -DROP TABLE vn2008.invoice_observation__; -DROP TABLE vn2008.edi_testigos__; -DROP TABLE vn2008.cl_dep__; -DROP TABLE vn2008.agencia_descuadre__; -DROP TABLE vn2008.Monitoring__; -DROP TABLE vn2008.payroll_datos__; -DROP TABLE vn2008.tblIVA__; -DROP TABLE vn2008.cyc__; -DROP TABLE vn2008.Tickets_stack__; -DROP TABLE vn2008.config_host_forms__; -DROP TABLE vn2008.template_bionic_lot__; -DROP TABLE vn2008.payroll_bonificaciones__; -DROP TABLE vn2008.widget__; -DROP TABLE vn2008.accion_dits__; -DROP TABLE vn2008.credit_card__; -DROP TABLE vn2008.Brasa__; -DROP TABLE vn2008.Jefes__; -DROP TABLE vn2008.call_option__; -DROP TABLE vn2008.expeditions_pictures__; -DROP TABLE vn2008.scan__; -DROP TABLE vn2008.trolley__; -DROP TABLE vn2008.transport__; -DROP TABLE vn2008.Baldas__; -DROP TABLE vn2008.payroll_basess__; \ No newline at end of file diff --git a/db/versions/11057-chocolateMoss/00-part.sql b/db/versions/11057-chocolateMoss/00-part.sql new file mode 100644 index 0000000000..f58507e4f9 --- /dev/null +++ b/db/versions/11057-chocolateMoss/00-part.sql @@ -0,0 +1,26 @@ +DROP TABLE IF EXISTS vn2008.scanTree__; +DROP TABLE IF EXISTS vn2008.payroll_embargos__; +DROP TABLE IF EXISTS vn2008.unary_scan_line__; +DROP TABLE IF EXISTS vn2008.unary_source__; +DROP TABLE IF EXISTS vn2008.unary_scan__; +DROP TABLE IF EXISTS vn2008.scan_line__; +DROP TABLE IF EXISTS vn2008.Familias__; +DROP TABLE IF EXISTS vn2008.language__; +DROP TABLE IF EXISTS vn2008.Clientes_dits__; +DROP TABLE IF EXISTS vn2008.unary_scan_line_expedition__; +DROP TABLE IF EXISTS vn2008.warehouse_group__; +DROP TABLE IF EXISTS vn2008.Espionajes__; +DROP TABLE IF EXISTS vn2008.jerarquia__; +DROP TABLE IF EXISTS vn2008.wks__; +DROP TABLE IF EXISTS vn2008.Proveedores_comunicados__; +DROP TABLE IF EXISTS vn2008.integra2_escala__; +DROP TABLE IF EXISTS vn2008.cp__; +DROP TABLE IF EXISTS vn2008.unary__; +DROP TABLE IF EXISTS vn2008.Estados__; +DROP TABLE IF EXISTS vn2008.agency_hour__; +DROP TABLE IF EXISTS vn2008.Reservas__; +DROP TABLE IF EXISTS vn2008.cyc_declaration__; +DROP TABLE IF EXISTS vn2008.route__; +DROP TABLE IF EXISTS vn2008.Proveedores_escritos__; +DROP TABLE IF EXISTS vn2008.config__; +DROP TABLE IF EXISTS vn2008.guillen__; diff --git a/db/versions/11057-chocolateMoss/01-part.sql b/db/versions/11057-chocolateMoss/01-part.sql new file mode 100644 index 0000000000..bba2167aa6 --- /dev/null +++ b/db/versions/11057-chocolateMoss/01-part.sql @@ -0,0 +1,26 @@ +DROP TABLE IF EXISTS vn2008.expeditions_deleted__; +DROP TABLE IF EXISTS vn2008.Tipos_f11__; +DROP TABLE IF EXISTS vn2008.commission__; +DROP TABLE IF EXISTS vn2008.Movimientos_revisar__; +DROP TABLE IF EXISTS vn2008.recibida_agricola__; +DROP TABLE IF EXISTS vn2008.tipsa__; +DROP TABLE IF EXISTS vn2008.rounding__; +DROP TABLE IF EXISTS vn2008.Informes__; +DROP TABLE IF EXISTS vn2008.Forms__; +DROP TABLE IF EXISTS vn2008.Clientes_event__; +DROP TABLE IF EXISTS vn2008.wh_selection__; +DROP TABLE IF EXISTS vn2008.template_bionic_component__; +DROP TABLE IF EXISTS vn2008.Agencias_province__; +DROP TABLE IF EXISTS vn2008.travel_pattern__; +DROP TABLE IF EXISTS vn2008.sort_merge_results_ernesto__; +DROP TABLE IF EXISTS vn2008.Conteo__; +DROP TABLE IF EXISTS vn2008.Consignatarios_devices__; +DROP TABLE IF EXISTS vn2008.link__; +DROP TABLE IF EXISTS vn2008.agency_warehouse__; +DROP TABLE IF EXISTS vn2008.warehouse_lc__; +DROP TABLE IF EXISTS vn2008.emp_day_pay__; +DROP TABLE IF EXISTS vn2008.Entradas_kop__; +DROP TABLE IF EXISTS vn2008.dock__; +DROP TABLE IF EXISTS vn2008.unaryScanFilter__; +DROP TABLE IF EXISTS vn2008.Grupos__; +DROP TABLE IF EXISTS vn2008.nichos__; diff --git a/db/versions/11057-chocolateMoss/02-part.sql b/db/versions/11057-chocolateMoss/02-part.sql new file mode 100644 index 0000000000..d3b0837756 --- /dev/null +++ b/db/versions/11057-chocolateMoss/02-part.sql @@ -0,0 +1,26 @@ +DROP TABLE IF EXISTS vn2008.form_query__; +DROP TABLE IF EXISTS vn2008.filtros__; +DROP TABLE IF EXISTS vn2008.Objetivos__; +DROP TABLE IF EXISTS vn2008.zones__; +DROP TABLE IF EXISTS vn2008.rec_translator__; +DROP TABLE IF EXISTS vn2008.warehouse_joined__; +DROP TABLE IF EXISTS vn2008.warehouse_filtro__; +DROP TABLE IF EXISTS vn2008.viaxpress__; +DROP TABLE IF EXISTS vn2008.cl_que__; +DROP TABLE IF EXISTS vn2008.Recibos_recorded__; +DROP TABLE IF EXISTS vn2008.cooler_path__; +DROP TABLE IF EXISTS vn2008.payrroll_apEmpresarial__; +DROP TABLE IF EXISTS vn2008.Compres_ok__; +DROP TABLE IF EXISTS vn2008.Movimientos_avisar__; +DROP TABLE IF EXISTS vn2008.Clases__; +DROP TABLE IF EXISTS vn2008.payroll_tipobasess__; +DROP TABLE IF EXISTS vn2008.guillen_carry__; +DROP TABLE IF EXISTS vn2008.unary_scan_line_buy__; +DROP TABLE IF EXISTS vn2008.Series__; +DROP TABLE IF EXISTS vn2008.Permisos__; +DROP TABLE IF EXISTS vn2008.container__; +DROP TABLE IF EXISTS vn2008.travel_reserve__; +DROP TABLE IF EXISTS vn2008.tmpNEWTARIFAS__; +DROP TABLE IF EXISTS vn2008.Clientes_potenciales__; +DROP TABLE IF EXISTS vn2008.duaDismissed__; +DROP TABLE IF EXISTS vn2008.cl_pet__; diff --git a/db/versions/11057-chocolateMoss/03-part.sql b/db/versions/11057-chocolateMoss/03-part.sql new file mode 100644 index 0000000000..f5e4e45c01 --- /dev/null +++ b/db/versions/11057-chocolateMoss/03-part.sql @@ -0,0 +1,28 @@ +DROP TABLE IF EXISTS vn2008.preparation_exception__; +DROP TABLE IF EXISTS vn2008.Clientes_empresa__; +DROP TABLE IF EXISTS vn2008.call_information__; +DROP TABLE IF EXISTS vn2008.template_bionic_price__; +DROP TABLE IF EXISTS vn2008.invoice_observation__; +DROP TABLE IF EXISTS vn2008.edi_testigos__; +DROP TABLE IF EXISTS vn2008.cl_dep__; +DROP TABLE IF EXISTS vn2008.agencia_descuadre__; +DROP TABLE IF EXISTS vn2008.Monitoring__; +DROP TABLE IF EXISTS vn2008.payroll_datos__; +DROP TABLE IF EXISTS vn2008.tblIVA__; +DROP TABLE IF EXISTS vn2008.cyc__; +DROP TABLE IF EXISTS vn2008.Tickets_stack__; +DROP TABLE IF EXISTS vn2008.config_host_forms__; +DROP TABLE IF EXISTS vn2008.template_bionic_lot__; +DROP TABLE IF EXISTS vn2008.payroll_bonificaciones__; +DROP TABLE IF EXISTS vn2008.widget__; +DROP TABLE IF EXISTS vn2008.accion_dits__; +DROP TABLE IF EXISTS vn2008.credit_card__; +DROP TABLE IF EXISTS vn2008.Brasa__; +DROP TABLE IF EXISTS vn2008.Jefes__; +DROP TABLE IF EXISTS vn2008.call_option__; +DROP TABLE IF EXISTS vn2008.expeditions_pictures__; +DROP TABLE IF EXISTS vn2008.scan__; +DROP TABLE IF EXISTS vn2008.trolley__; +DROP TABLE IF EXISTS vn2008.transport__; +DROP TABLE IF EXISTS vn2008.Baldas__; +DROP TABLE IF EXISTS vn2008.payroll_basess__; From cc2b5764e97ad30c71d9da163ed4aa1851353580 Mon Sep 17 00:00:00 2001 From: guillermo Date: Tue, 21 May 2024 07:26:54 +0200 Subject: [PATCH 35/70] refs #7422 Fix --- db/versions/11057-chocolateMoss/00-part.sql | 6 ++++-- db/versions/11057-chocolateMoss/02-part.sql | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/db/versions/11057-chocolateMoss/00-part.sql b/db/versions/11057-chocolateMoss/00-part.sql index f58507e4f9..09555d0d6f 100644 --- a/db/versions/11057-chocolateMoss/00-part.sql +++ b/db/versions/11057-chocolateMoss/00-part.sql @@ -1,8 +1,11 @@ DROP TABLE IF EXISTS vn2008.scanTree__; DROP TABLE IF EXISTS vn2008.payroll_embargos__; -DROP TABLE IF EXISTS vn2008.unary_scan_line__; DROP TABLE IF EXISTS vn2008.unary_source__; +ALTER TABLE vn2008.unary_scan__ DROP FOREIGN KEY unary_scan; +ALTER TABLE vn2008.unary_scan_line__ DROP FOREIGN KEY unary_line; DROP TABLE IF EXISTS vn2008.unary_scan__; +DROP TABLE IF EXISTS vn2008.unary_scan_line_buy__; +DROP TABLE IF EXISTS vn2008.unary_scan_line__; DROP TABLE IF EXISTS vn2008.scan_line__; DROP TABLE IF EXISTS vn2008.Familias__; DROP TABLE IF EXISTS vn2008.language__; @@ -23,4 +26,3 @@ DROP TABLE IF EXISTS vn2008.cyc_declaration__; DROP TABLE IF EXISTS vn2008.route__; DROP TABLE IF EXISTS vn2008.Proveedores_escritos__; DROP TABLE IF EXISTS vn2008.config__; -DROP TABLE IF EXISTS vn2008.guillen__; diff --git a/db/versions/11057-chocolateMoss/02-part.sql b/db/versions/11057-chocolateMoss/02-part.sql index d3b0837756..dbdd6b3c4a 100644 --- a/db/versions/11057-chocolateMoss/02-part.sql +++ b/db/versions/11057-chocolateMoss/02-part.sql @@ -14,8 +14,8 @@ DROP TABLE IF EXISTS vn2008.Compres_ok__; DROP TABLE IF EXISTS vn2008.Movimientos_avisar__; DROP TABLE IF EXISTS vn2008.Clases__; DROP TABLE IF EXISTS vn2008.payroll_tipobasess__; +DROP TABLE IF EXISTS vn2008.guillen__; DROP TABLE IF EXISTS vn2008.guillen_carry__; -DROP TABLE IF EXISTS vn2008.unary_scan_line_buy__; DROP TABLE IF EXISTS vn2008.Series__; DROP TABLE IF EXISTS vn2008.Permisos__; DROP TABLE IF EXISTS vn2008.container__; From 93314d67b62ae342db55826a4a6aaf06dbd6fc2f Mon Sep 17 00:00:00 2001 From: guillermo Date: Tue, 21 May 2024 07:31:24 +0200 Subject: [PATCH 36/70] refs #7422 Fix --- db/versions/11057-chocolateMoss/00-part.sql | 2 -- 1 file changed, 2 deletions(-) diff --git a/db/versions/11057-chocolateMoss/00-part.sql b/db/versions/11057-chocolateMoss/00-part.sql index 09555d0d6f..4cabb0e337 100644 --- a/db/versions/11057-chocolateMoss/00-part.sql +++ b/db/versions/11057-chocolateMoss/00-part.sql @@ -1,8 +1,6 @@ DROP TABLE IF EXISTS vn2008.scanTree__; DROP TABLE IF EXISTS vn2008.payroll_embargos__; DROP TABLE IF EXISTS vn2008.unary_source__; -ALTER TABLE vn2008.unary_scan__ DROP FOREIGN KEY unary_scan; -ALTER TABLE vn2008.unary_scan_line__ DROP FOREIGN KEY unary_line; DROP TABLE IF EXISTS vn2008.unary_scan__; DROP TABLE IF EXISTS vn2008.unary_scan_line_buy__; DROP TABLE IF EXISTS vn2008.unary_scan_line__; From cbf9a4c4e902a452d24b74bda85a78af08748761 Mon Sep 17 00:00:00 2001 From: guillermo Date: Tue, 21 May 2024 07:58:51 +0200 Subject: [PATCH 37/70] refs #7422 Fixed all problems --- db/versions/11057-chocolateMoss/01-part.sql | 67 +++++++++++++-------- db/versions/11057-chocolateMoss/02-part.sql | 53 ++++++++-------- db/versions/11057-chocolateMoss/03-part.sql | 2 - 3 files changed, 68 insertions(+), 54 deletions(-) diff --git a/db/versions/11057-chocolateMoss/01-part.sql b/db/versions/11057-chocolateMoss/01-part.sql index bba2167aa6..db6a5774d5 100644 --- a/db/versions/11057-chocolateMoss/01-part.sql +++ b/db/versions/11057-chocolateMoss/01-part.sql @@ -1,26 +1,41 @@ -DROP TABLE IF EXISTS vn2008.expeditions_deleted__; -DROP TABLE IF EXISTS vn2008.Tipos_f11__; -DROP TABLE IF EXISTS vn2008.commission__; -DROP TABLE IF EXISTS vn2008.Movimientos_revisar__; -DROP TABLE IF EXISTS vn2008.recibida_agricola__; -DROP TABLE IF EXISTS vn2008.tipsa__; -DROP TABLE IF EXISTS vn2008.rounding__; -DROP TABLE IF EXISTS vn2008.Informes__; -DROP TABLE IF EXISTS vn2008.Forms__; -DROP TABLE IF EXISTS vn2008.Clientes_event__; -DROP TABLE IF EXISTS vn2008.wh_selection__; -DROP TABLE IF EXISTS vn2008.template_bionic_component__; -DROP TABLE IF EXISTS vn2008.Agencias_province__; -DROP TABLE IF EXISTS vn2008.travel_pattern__; -DROP TABLE IF EXISTS vn2008.sort_merge_results_ernesto__; -DROP TABLE IF EXISTS vn2008.Conteo__; -DROP TABLE IF EXISTS vn2008.Consignatarios_devices__; -DROP TABLE IF EXISTS vn2008.link__; -DROP TABLE IF EXISTS vn2008.agency_warehouse__; -DROP TABLE IF EXISTS vn2008.warehouse_lc__; -DROP TABLE IF EXISTS vn2008.emp_day_pay__; -DROP TABLE IF EXISTS vn2008.Entradas_kop__; -DROP TABLE IF EXISTS vn2008.dock__; -DROP TABLE IF EXISTS vn2008.unaryScanFilter__; -DROP TABLE IF EXISTS vn2008.Grupos__; -DROP TABLE IF EXISTS vn2008.nichos__; +DROP TABLE IF EXISTS vn2008.form_query__; +DROP TABLE IF EXISTS vn2008.filtros__; +DROP TABLE IF EXISTS vn2008.Objetivos__; +UPDATE IGNORE vn.province + SET zoneFk = NULL + WHERE zoneFk IN ( + SELECT zoneFk + FROM vn.province + WHERE zoneFk IS NOT NULL AND zoneFk NOT IN (SELECT id FROM vn.`zone`) + ); +ALTER TABLE vn.province DROP FOREIGN KEY province_zone_fk; +ALTER TABLE vn.province MODIFY COLUMN zoneFk int(11) DEFAULT NULL NULL; +ALTER TABLE vn.province ADD CONSTRAINT + province_zone_FK FOREIGN KEY (zoneFk) REFERENCES vn.`zone`(id) ON DELETE CASCADE ON UPDATE CASCADE; +DROP TABLE IF EXISTS vn2008.zones__; +DROP TABLE IF EXISTS vn2008.rec_translator__; +DROP TABLE IF EXISTS vn2008.warehouse_joined__; +DROP TABLE IF EXISTS vn2008.warehouse_filtro__; +DROP TABLE IF EXISTS vn2008.viaxpress__; +DROP TABLE IF EXISTS vn2008.cl_que__; +DROP TABLE IF EXISTS vn2008.Recibos_recorded__; +RENAME TABLE vn.coolerPathDetail TO vn.coolerPathDetail__; +ALTER TABLE vn.coolerPathDetail DROP FOREIGN KEY coolerPathDetail_FK; +DROP TABLE IF EXISTS vn2008.cooler_path__; +DROP TABLE IF EXISTS vn2008.payrroll_apEmpresarial__; +DROP TABLE IF EXISTS vn2008.Compres_ok__; +DROP TABLE IF EXISTS vn2008.Movimientos_avisar__; +DROP TABLE IF EXISTS vn2008.Clases__; +DROP TABLE IF EXISTS vn2008.payroll_basess__; +DROP TABLE IF EXISTS vn2008.payroll_tipobasess__; +DROP TABLE IF EXISTS vn2008.guillen__; +DROP TABLE IF EXISTS vn2008.guillen_carry__; +DROP TABLE IF EXISTS vn2008.Series__; +DROP TABLE IF EXISTS vn2008.Permisos__; +ALTER TABLE vn.buy DROP FOREIGN KEY buy_FK_1; +DROP TABLE IF EXISTS vn2008.container__; +DROP TABLE IF EXISTS vn2008.travel_reserve__; +DROP TABLE IF EXISTS vn2008.tmpNEWTARIFAS__; +DROP TABLE IF EXISTS vn2008.Clientes_potenciales__; +DROP TABLE IF EXISTS vn2008.duaDismissed__; +DROP TABLE IF EXISTS vn2008.cl_pet__; diff --git a/db/versions/11057-chocolateMoss/02-part.sql b/db/versions/11057-chocolateMoss/02-part.sql index dbdd6b3c4a..46cda539a0 100644 --- a/db/versions/11057-chocolateMoss/02-part.sql +++ b/db/versions/11057-chocolateMoss/02-part.sql @@ -1,26 +1,27 @@ -DROP TABLE IF EXISTS vn2008.form_query__; -DROP TABLE IF EXISTS vn2008.filtros__; -DROP TABLE IF EXISTS vn2008.Objetivos__; -DROP TABLE IF EXISTS vn2008.zones__; -DROP TABLE IF EXISTS vn2008.rec_translator__; -DROP TABLE IF EXISTS vn2008.warehouse_joined__; -DROP TABLE IF EXISTS vn2008.warehouse_filtro__; -DROP TABLE IF EXISTS vn2008.viaxpress__; -DROP TABLE IF EXISTS vn2008.cl_que__; -DROP TABLE IF EXISTS vn2008.Recibos_recorded__; -DROP TABLE IF EXISTS vn2008.cooler_path__; -DROP TABLE IF EXISTS vn2008.payrroll_apEmpresarial__; -DROP TABLE IF EXISTS vn2008.Compres_ok__; -DROP TABLE IF EXISTS vn2008.Movimientos_avisar__; -DROP TABLE IF EXISTS vn2008.Clases__; -DROP TABLE IF EXISTS vn2008.payroll_tipobasess__; -DROP TABLE IF EXISTS vn2008.guillen__; -DROP TABLE IF EXISTS vn2008.guillen_carry__; -DROP TABLE IF EXISTS vn2008.Series__; -DROP TABLE IF EXISTS vn2008.Permisos__; -DROP TABLE IF EXISTS vn2008.container__; -DROP TABLE IF EXISTS vn2008.travel_reserve__; -DROP TABLE IF EXISTS vn2008.tmpNEWTARIFAS__; -DROP TABLE IF EXISTS vn2008.Clientes_potenciales__; -DROP TABLE IF EXISTS vn2008.duaDismissed__; -DROP TABLE IF EXISTS vn2008.cl_pet__; +DROP TABLE IF EXISTS vn2008.expeditions_deleted__; +DROP TABLE IF EXISTS vn2008.Tipos_f11__; +DROP TABLE IF EXISTS vn2008.commission__; +DROP TABLE IF EXISTS vn2008.Movimientos_revisar__; +DROP TABLE IF EXISTS vn2008.recibida_agricola__; +DROP TABLE IF EXISTS vn2008.tipsa__; +DROP TABLE IF EXISTS vn2008.rounding__; +DROP TABLE IF EXISTS vn2008.Informes__; +DROP TABLE IF EXISTS vn2008.Monitoring__; +DROP TABLE IF EXISTS vn2008.Forms__; +DROP TABLE IF EXISTS vn2008.Clientes_event__; +DROP TABLE IF EXISTS vn2008.wh_selection__; +DROP TABLE IF EXISTS vn2008.template_bionic_component__; +DROP TABLE IF EXISTS vn2008.Agencias_province__; +DROP TABLE IF EXISTS vn2008.travel_pattern__; +DROP TABLE IF EXISTS vn2008.sort_merge_results_ernesto__; +DROP TABLE IF EXISTS vn2008.Conteo__; +DROP TABLE IF EXISTS vn2008.Consignatarios_devices__; +DROP TABLE IF EXISTS vn2008.link__; +DROP TABLE IF EXISTS vn2008.agency_warehouse__; +DROP TABLE IF EXISTS vn2008.warehouse_lc__; +DROP TABLE IF EXISTS vn2008.emp_day_pay__; +DROP TABLE IF EXISTS vn2008.Entradas_kop__; +DROP TABLE IF EXISTS vn2008.dock__; +DROP TABLE IF EXISTS vn2008.unaryScanFilter__; +DROP TABLE IF EXISTS vn2008.Grupos__; +DROP TABLE IF EXISTS vn2008.nichos__; diff --git a/db/versions/11057-chocolateMoss/03-part.sql b/db/versions/11057-chocolateMoss/03-part.sql index f5e4e45c01..e1947f064f 100644 --- a/db/versions/11057-chocolateMoss/03-part.sql +++ b/db/versions/11057-chocolateMoss/03-part.sql @@ -6,7 +6,6 @@ DROP TABLE IF EXISTS vn2008.invoice_observation__; DROP TABLE IF EXISTS vn2008.edi_testigos__; DROP TABLE IF EXISTS vn2008.cl_dep__; DROP TABLE IF EXISTS vn2008.agencia_descuadre__; -DROP TABLE IF EXISTS vn2008.Monitoring__; DROP TABLE IF EXISTS vn2008.payroll_datos__; DROP TABLE IF EXISTS vn2008.tblIVA__; DROP TABLE IF EXISTS vn2008.cyc__; @@ -25,4 +24,3 @@ DROP TABLE IF EXISTS vn2008.scan__; DROP TABLE IF EXISTS vn2008.trolley__; DROP TABLE IF EXISTS vn2008.transport__; DROP TABLE IF EXISTS vn2008.Baldas__; -DROP TABLE IF EXISTS vn2008.payroll_basess__; From ac2ed0956b94cc6c2b010c67b69d6dd8fb2a4c34 Mon Sep 17 00:00:00 2001 From: guillermo Date: Tue, 21 May 2024 08:04:28 +0200 Subject: [PATCH 38/70] refs #7422 Fixed all problems --- db/versions/11057-chocolateMoss/01-part.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/versions/11057-chocolateMoss/01-part.sql b/db/versions/11057-chocolateMoss/01-part.sql index db6a5774d5..59df77f207 100644 --- a/db/versions/11057-chocolateMoss/01-part.sql +++ b/db/versions/11057-chocolateMoss/01-part.sql @@ -20,7 +20,7 @@ DROP TABLE IF EXISTS vn2008.viaxpress__; DROP TABLE IF EXISTS vn2008.cl_que__; DROP TABLE IF EXISTS vn2008.Recibos_recorded__; RENAME TABLE vn.coolerPathDetail TO vn.coolerPathDetail__; -ALTER TABLE vn.coolerPathDetail DROP FOREIGN KEY coolerPathDetail_FK; +ALTER TABLE vn.coolerPathDetail__ DROP FOREIGN KEY coolerPathDetail_FK; DROP TABLE IF EXISTS vn2008.cooler_path__; DROP TABLE IF EXISTS vn2008.payrroll_apEmpresarial__; DROP TABLE IF EXISTS vn2008.Compres_ok__; From 030106f06d653263a0331642a057a75e5c9880cc Mon Sep 17 00:00:00 2001 From: guillermo Date: Tue, 21 May 2024 08:13:06 +0200 Subject: [PATCH 39/70] refactor: refs #7422 Deprecated column --- db/versions/11061-silverMastic/00-firstScript.sql | 1 + 1 file changed, 1 insertion(+) create mode 100644 db/versions/11061-silverMastic/00-firstScript.sql diff --git a/db/versions/11061-silverMastic/00-firstScript.sql b/db/versions/11061-silverMastic/00-firstScript.sql new file mode 100644 index 0000000000..32dbc0c2e1 --- /dev/null +++ b/db/versions/11061-silverMastic/00-firstScript.sql @@ -0,0 +1 @@ +ALTER TABLE vn.buy CHANGE containerFk containerFk__ smallint(5) unsigned DEFAULT NULL NULL; From c4b8cef4f8697eb8f6dc5178b2c14c940e5923d6 Mon Sep 17 00:00:00 2001 From: guillermo Date: Tue, 21 May 2024 08:17:37 +0200 Subject: [PATCH 40/70] refactor: refs #7422 Deleted column of Compres --- db/routines/vn2008/views/Compres.sql | 1 - 1 file changed, 1 deletion(-) diff --git a/db/routines/vn2008/views/Compres.sql b/db/routines/vn2008/views/Compres.sql index 5571361923..b99dd2b73c 100644 --- a/db/routines/vn2008/views/Compres.sql +++ b/db/routines/vn2008/views/Compres.sql @@ -28,6 +28,5 @@ AS SELECT `c`.`id` AS `Id_Compra`, `c`.`workerFk` AS `Id_Trabajador`, `c`.`weight` AS `weight`, `c`.`dispatched` AS `dispatched`, - `c`.`containerFk` AS `container_id`, `c`.`itemOriginalFk` AS `itemOriginalFk` FROM `vn`.`buy` `c` From 1fef00789f5636c4839a074a87f4c1664bb627bb Mon Sep 17 00:00:00 2001 From: pablone Date: Tue, 21 May 2024 08:54:53 +0200 Subject: [PATCH 41/70] fix: refs #7187 remove bindings --- modules/worker/front/pda/index.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/modules/worker/front/pda/index.js b/modules/worker/front/pda/index.js index 099e0e34c7..c3616b41e4 100644 --- a/modules/worker/front/pda/index.js +++ b/modules/worker/front/pda/index.js @@ -14,8 +14,5 @@ class Controller extends Section { } ngModule.vnComponent('vnWorkerPda', { - controller: Controller, - bindings: { - claim: '<' - } + controller: Controller }); From 6438ce3a164464c92156b348cf9468b63007d23c Mon Sep 17 00:00:00 2001 From: pablone Date: Tue, 21 May 2024 09:13:31 +0200 Subject: [PATCH 42/70] fix: refs #7187 e2e --- e2e/paths/03-worker/07_pda.spec.js | 41 ------------------------------ 1 file changed, 41 deletions(-) delete mode 100644 e2e/paths/03-worker/07_pda.spec.js diff --git a/e2e/paths/03-worker/07_pda.spec.js b/e2e/paths/03-worker/07_pda.spec.js deleted file mode 100644 index 2b743823ec..0000000000 --- a/e2e/paths/03-worker/07_pda.spec.js +++ /dev/null @@ -1,41 +0,0 @@ -import selectors from '../../helpers/selectors.js'; -import getBrowser from '../../helpers/puppeteer'; - -describe('Worker pda path', () => { - let browser; - let page; - beforeAll(async() => { - browser = await getBrowser(); - page = browser.page; - await page.loginAndModule('hr', 'worker'); - await page.accessToSearchResult('employeeNick'); - await page.accessToSection('worker.card.pda'); - }); - - afterAll(async() => { - await browser.close(); - }); - - it('should check if worker has already a PDA allocated', async() => { - expect(await page.waitToGetProperty(selectors.workerPda.currentPDA, 'value')).toContain('serialNumber1'); - }); - - it('should deallocate the PDA', async() => { - await page.waitToClick(selectors.workerPda.delete); - let message = await page.waitForSnackbar(); - - expect(message.text).toContain('PDA deallocated'); - }); - - it('should allocate a new PDA', async() => { - await page.autocompleteSearch(selectors.workerPda.newPDA, 'serialNumber2'); - await page.waitToClick(selectors.workerPda.submit); - let message = await page.waitForSnackbar(); - - expect(message.text).toContain('PDA allocated'); - }); - - it('should check if a new PDA has been allocated', async() => { - expect(await page.waitToGetProperty(selectors.workerPda.currentPDA, 'value')).toContain('serialNumber2'); - }); -}); From cb866b4ab77992af7e2a0b5ba5a3fa0b0f8fc1cb Mon Sep 17 00:00:00 2001 From: sergiodt Date: Tue, 21 May 2024 09:16:47 +0200 Subject: [PATCH 43/70] refs #7431 feat: itemPlacementSupplyStockGetTargetList --- .../procedures/itemPlacementSupplyStockGetTargetList.sql | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/db/routines/vn/procedures/itemPlacementSupplyStockGetTargetList.sql b/db/routines/vn/procedures/itemPlacementSupplyStockGetTargetList.sql index bdc13ae9d9..0a99703f35 100644 --- a/db/routines/vn/procedures/itemPlacementSupplyStockGetTargetList.sql +++ b/db/routines/vn/procedures/itemPlacementSupplyStockGetTargetList.sql @@ -18,11 +18,12 @@ BEGIN JOIN vn.parking p ON p.id = sh.parkingFk JOIN vn.sector sc ON sc.id = p.sectorFk JOIN vn.warehouse w ON w.id = sc.warehouseFk - WHERE sc.id = vSectorFk - AND ish.visible > 0 + WHERE ish.visible > 0 AND ish.itemFk = vItemFk GROUP BY ish.id - ORDER BY sh.priority DESC, + ORDER BY + (sc.id = vSectorFk) DESC + sh.priority DESC, ish.created, p.pickingOrder; END$$ From 6dad3d8af4fb9dea158e2d01626c213e7a7cc9ed Mon Sep 17 00:00:00 2001 From: sergiodt Date: Tue, 21 May 2024 09:37:29 +0200 Subject: [PATCH 44/70] refs #7431 feat: itemPlacementSupplyStockGetTargetList --- .../vn/procedures/itemPlacementSupplyStockGetTargetList.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/routines/vn/procedures/itemPlacementSupplyStockGetTargetList.sql b/db/routines/vn/procedures/itemPlacementSupplyStockGetTargetList.sql index 0a99703f35..86d62cad48 100644 --- a/db/routines/vn/procedures/itemPlacementSupplyStockGetTargetList.sql +++ b/db/routines/vn/procedures/itemPlacementSupplyStockGetTargetList.sql @@ -22,7 +22,7 @@ BEGIN AND ish.itemFk = vItemFk GROUP BY ish.id ORDER BY - (sc.id = vSectorFk) DESC + (sc.id = vSectorFk) DESC, sh.priority DESC, ish.created, p.pickingOrder; From 6f9826421d1b07abcd4db09567f60879c792f077 Mon Sep 17 00:00:00 2001 From: guillermo Date: Tue, 21 May 2024 09:39:09 +0200 Subject: [PATCH 45/70] refactor: refs #7422 Fix e2e --- db/routines/vn/procedures/buy_clone.sql | 2 -- db/routines/vn/procedures/entry_fixMisfit.sql | 2 -- db/routines/vn/procedures/entry_moveNotPrinted.sql | 4 ---- db/routines/vn/procedures/entry_splitByShelving.sql | 2 -- db/routines/vn/procedures/item_devalueA2.sql | 3 --- modules/entry/back/methods/entry/addFromBuy.js | 1 - modules/entry/back/models/buy.json | 3 --- 7 files changed, 17 deletions(-) diff --git a/db/routines/vn/procedures/buy_clone.sql b/db/routines/vn/procedures/buy_clone.sql index d3fbf888dc..7b77204c9e 100644 --- a/db/routines/vn/procedures/buy_clone.sql +++ b/db/routines/vn/procedures/buy_clone.sql @@ -19,7 +19,6 @@ BEGIN packing, `grouping`, groupingMode, - containerFk, comissionValue, packageValue, price1, @@ -41,7 +40,6 @@ BEGIN b.packing, b.`grouping`, b.groupingMode, - b.containerFk, b.comissionValue, b.packageValue, b.price1, diff --git a/db/routines/vn/procedures/entry_fixMisfit.sql b/db/routines/vn/procedures/entry_fixMisfit.sql index 3e57d362e3..986a0ae9ee 100644 --- a/db/routines/vn/procedures/entry_fixMisfit.sql +++ b/db/routines/vn/procedures/entry_fixMisfit.sql @@ -26,7 +26,6 @@ BEGIN packing, `grouping`, groupingMode, - containerFk, comissionValue, packageValue, location, @@ -46,7 +45,6 @@ BEGIN packing, `grouping`, groupingMode, - containerFk, comissionValue, packageValue, location, diff --git a/db/routines/vn/procedures/entry_moveNotPrinted.sql b/db/routines/vn/procedures/entry_moveNotPrinted.sql index 526ae9d437..3a12007d17 100644 --- a/db/routines/vn/procedures/entry_moveNotPrinted.sql +++ b/db/routines/vn/procedures/entry_moveNotPrinted.sql @@ -56,7 +56,6 @@ BEGIN packing, `grouping`, groupingMode, - containerFk, comissionValue, packageValue, packagingFk, @@ -77,7 +76,6 @@ BEGIN packing, `grouping`, groupingMode, - containerFk, comissionValue, packageValue, packagingFk, @@ -114,7 +112,6 @@ BEGIN packing, `grouping`, groupingMode, - containerFk, comissionValue, packageValue, location, @@ -133,7 +130,6 @@ BEGIN packing, `grouping`, groupingMode, - containerFk, comissionValue, packageValue, location, diff --git a/db/routines/vn/procedures/entry_splitByShelving.sql b/db/routines/vn/procedures/entry_splitByShelving.sql index b7d9c77b31..2898141eae 100644 --- a/db/routines/vn/procedures/entry_splitByShelving.sql +++ b/db/routines/vn/procedures/entry_splitByShelving.sql @@ -76,7 +76,6 @@ BEGIN packing, `grouping`, groupingMode, - containerFk, comissionValue, packageValue, location, @@ -103,7 +102,6 @@ BEGIN packing, `grouping`, groupingMode, - containerFk, comissionValue, packageValue, location, diff --git a/db/routines/vn/procedures/item_devalueA2.sql b/db/routines/vn/procedures/item_devalueA2.sql index f331c7230e..c9f716d8fa 100644 --- a/db/routines/vn/procedures/item_devalueA2.sql +++ b/db/routines/vn/procedures/item_devalueA2.sql @@ -319,7 +319,6 @@ BEGIN packing, `grouping`, groupingMode, - containerFk, comissionValue, packageValue, price1, @@ -341,7 +340,6 @@ BEGIN packing, `grouping`, groupingMode, - containerFk, comissionValue, packageValue, price1, @@ -366,7 +364,6 @@ BEGIN packing, `grouping`, groupingMode, - containerFk, comissionValue, packageValue, price1, diff --git a/modules/entry/back/methods/entry/addFromBuy.js b/modules/entry/back/methods/entry/addFromBuy.js index 307c04b97e..e5cc427a85 100644 --- a/modules/entry/back/methods/entry/addFromBuy.js +++ b/modules/entry/back/methods/entry/addFromBuy.js @@ -76,7 +76,6 @@ module.exports = Self => { packing: buyUltimate.packing, grouping: buyUltimate.grouping, groupingMode: buyUltimate.groupingMode, - containerFk: buyUltimate.containerFk, comissionValue: buyUltimate.comissionValue, packageValue: buyUltimate.packageValue, location: buyUltimate.location, diff --git a/modules/entry/back/models/buy.json b/modules/entry/back/models/buy.json index 35861fd81a..14cafde06b 100644 --- a/modules/entry/back/models/buy.json +++ b/modules/entry/back/models/buy.json @@ -63,9 +63,6 @@ "isIgnored": { "type": "boolean" }, - "containerFk": { - "type": "number" - }, "location": { "type": "number" }, From 35e892a90c1d8dbba89f3501ad8e65e443aec69f Mon Sep 17 00:00:00 2001 From: guillermo Date: Tue, 21 May 2024 10:07:51 +0200 Subject: [PATCH 46/70] refs #7422 Fix --- db/.pullinfo.json | 2 +- db/versions/11057-chocolateMoss/00-part.sql | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/db/.pullinfo.json b/db/.pullinfo.json index f4afbc5fbb..0defed8458 100644 --- a/db/.pullinfo.json +++ b/db/.pullinfo.json @@ -9,7 +9,7 @@ }, "vn": { "view": { - "expeditionPallet_Print": "288cbd6e8289df083ed5eb1a2c808f7a82ba4c90c8ad9781104808a7a54471fb" + "expeditionPallet_Print": "06613719475fcdba8309607c38cc78efc2e348cca7bc96b48dc3ae3c12426f54" } } } diff --git a/db/versions/11057-chocolateMoss/00-part.sql b/db/versions/11057-chocolateMoss/00-part.sql index 4cabb0e337..bd6c69955f 100644 --- a/db/versions/11057-chocolateMoss/00-part.sql +++ b/db/versions/11057-chocolateMoss/00-part.sql @@ -1,9 +1,9 @@ DROP TABLE IF EXISTS vn2008.scanTree__; DROP TABLE IF EXISTS vn2008.payroll_embargos__; DROP TABLE IF EXISTS vn2008.unary_source__; -DROP TABLE IF EXISTS vn2008.unary_scan__; DROP TABLE IF EXISTS vn2008.unary_scan_line_buy__; DROP TABLE IF EXISTS vn2008.unary_scan_line__; +DROP TABLE IF EXISTS vn2008.unary_scan__; DROP TABLE IF EXISTS vn2008.scan_line__; DROP TABLE IF EXISTS vn2008.Familias__; DROP TABLE IF EXISTS vn2008.language__; From 9bd5244f647663a2e9f515ff6f6cf841adf65645 Mon Sep 17 00:00:00 2001 From: carlossa Date: Tue, 21 May 2024 10:19:21 +0200 Subject: [PATCH 47/70] refs #7292 hook ueemember --- e2e/paths/02-client/05_add_address.spec.js | 2 +- loopback/locale/en.json | 3 ++- modules/client/back/methods/client/createAddress.js | 11 ++++++----- .../back/methods/client/specs/createAddress.spec.js | 2 +- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/e2e/paths/02-client/05_add_address.spec.js b/e2e/paths/02-client/05_add_address.spec.js index 0581635d0b..2f5999359c 100644 --- a/e2e/paths/02-client/05_add_address.spec.js +++ b/e2e/paths/02-client/05_add_address.spec.js @@ -51,7 +51,7 @@ describe('Client Add address path', () => { await page.waitToClick(selectors.clientAddresses.saveButton); const message = await page.waitForSnackbar(); - expect(message.text).toContain('Incoterms is required for a non UEE member'); + expect(message.text).toContain('Incoterms and Customs agent are required for a non UEE member'); }); it(`should receive an error after clicking save button as customsAgent is empty`, async() => { diff --git a/loopback/locale/en.json b/loopback/locale/en.json index 601a26f5b8..1fffe7f35a 100644 --- a/loopback/locale/en.json +++ b/loopback/locale/en.json @@ -226,5 +226,6 @@ "This password can only be changed by the user themselves": "This password can only be changed by the user themselves", "They're not your subordinate": "They're not your subordinate", "InvoiceIn is already booked": "InvoiceIn is already booked", - "This workCenter is already assigned to this agency": "This workCenter is already assigned to this agency" + "This workCenter is already assigned to this agency": "This workCenter is already assigned to this agency", + "Incoterms and Customs agent are required for a non UEE member": "Incoterms and Customs agent are required for a non UEE member" } \ No newline at end of file diff --git a/modules/client/back/methods/client/createAddress.js b/modules/client/back/methods/client/createAddress.js index 8e6db2a22d..cb55025ceb 100644 --- a/modules/client/back/methods/client/createAddress.js +++ b/modules/client/back/methods/client/createAddress.js @@ -92,11 +92,12 @@ module.exports = function(Self) { }, myOptions); const isUeeMember = province.country().isUeeMember; - if (!isUeeMember && !args.incotermsFk) - throw new UserError(`Incoterms is required for a non UEE member`); - - if (!isUeeMember && !args.customsAgentFk) - throw new UserError(`Customs agent is required for a non UEE member`); + if (!isUeeMember && (!args.incotermsFk || !args.customsAgentFk)) { + if (!args.incotermsFk) + throw new UserError(`Incoterms and Customs agent are required for a non UEE member`); + else + throw new UserError(`Customs agent is required for a non UEE member`); + } delete args.ctx; // Remove unwanted properties const newAddress = await models.Address.create(args, myOptions); diff --git a/modules/client/back/methods/client/specs/createAddress.spec.js b/modules/client/back/methods/client/specs/createAddress.spec.js index 0841ad98ce..bd41d9c506 100644 --- a/modules/client/back/methods/client/specs/createAddress.spec.js +++ b/modules/client/back/methods/client/specs/createAddress.spec.js @@ -50,7 +50,7 @@ describe('Address createAddress', () => { } expect(error).toBeDefined(); - expect(error.message).toEqual('Incoterms is required for a non UEE member'); + expect(error.message).toEqual('Incoterms and Customs agent are required for a non UEE member'); }); it('should throw a non uee member error if no customsAgent is defined', async() => { From cf630a72135635f722b24dc25955b130d4957b5d Mon Sep 17 00:00:00 2001 From: carlossa Date: Tue, 21 May 2024 10:20:54 +0200 Subject: [PATCH 48/70] refs #7292 traduction es --- loopback/locale/es.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/loopback/locale/es.json b/loopback/locale/es.json index 77e707590e..090cfe0594 100644 --- a/loopback/locale/es.json +++ b/loopback/locale/es.json @@ -358,5 +358,6 @@ "Select ticket or client": "Elija un ticket o un client", "It was not able to create the invoice": "No se pudo crear la factura", "This PDA is already assigned to another user": "This PDA is already assigned to another user", - "ticketCommercial": "El ticket {{ ticket }} para el vendedor {{ salesMan }} está en preparación. (mensaje generado automáticamente)" -} \ No newline at end of file + "ticketCommercial": "El ticket {{ ticket }} para el vendedor {{ salesMan }} está en preparación. (mensaje generado automáticamente)", + "Incoterms and Customs agent are required for a non UEE member": "Se requieren Incoterms y agente de aduanas para un no miembro de la UEE" +} From da75bf95c99b50462b5e12a559233771afb44907 Mon Sep 17 00:00:00 2001 From: alexm Date: Tue, 21 May 2024 11:16:12 +0200 Subject: [PATCH 49/70] deploy: init version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 390b61be1b..c2f6309749 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "salix-back", - "version": "24.22.0", + "version": "24.24.0", "author": "Verdnatura Levante SL", "description": "Salix backend", "license": "GPL-3.0", From d672385776020c1a97236e15880f27260012f0b9 Mon Sep 17 00:00:00 2001 From: guillermo Date: Tue, 21 May 2024 11:44:11 +0200 Subject: [PATCH 50/70] =?UTF-8?q?hotfix:=20Rectificaci=C3=B3n=20Pepe?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/ticket/back/methods/ticket/closeAll.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modules/ticket/back/methods/ticket/closeAll.js b/modules/ticket/back/methods/ticket/closeAll.js index e3cbc83e24..35b9b1e379 100644 --- a/modules/ticket/back/methods/ticket/closeAll.js +++ b/modules/ticket/back/methods/ticket/closeAll.js @@ -138,9 +138,12 @@ module.exports = Self => { JOIN alertLevel al ON al.id = ts.alertLevel JOIN agencyMode am ON am.id = t.agencyModeFk JOIN deliveryMethod dm ON dm.id = am.deliveryMethodFk + LEFT JOIN ticketObservation tob ON tob.ticketFk = t.id SET t.routeFk = NULL WHERE DATE(t.shipped) BETWEEN ? - INTERVAL 2 DAY AND util.dayEnd(?) AND al.code NOT IN ('DELIVERED', 'PACKED') + AND NOT t.packages + AND tob.id IS NULL AND t.routeFk`, [toDate, toDate], {userId: ctx.req.accessToken.userId}); return { From dfde2f684650e045bde67d6617a94a071f901bd9 Mon Sep 17 00:00:00 2001 From: Pako Date: Tue, 21 May 2024 13:28:05 +0200 Subject: [PATCH 51/70] evita facturacion proveedores --- db/routines/vn/procedures/ticketPackaging_add.sql | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/db/routines/vn/procedures/ticketPackaging_add.sql b/db/routines/vn/procedures/ticketPackaging_add.sql index d669b95f55..f96068b568 100644 --- a/db/routines/vn/procedures/ticketPackaging_add.sql +++ b/db/routines/vn/procedures/ticketPackaging_add.sql @@ -27,7 +27,10 @@ BEGIN SELECT DISTINCT clientFk FROM ( SELECT clientFk, SUM(quantity) totalQuantity - FROM tmp.packagingToInvoice + FROM tmp.packagingToInvoice tpi + JOIN client c ON c.id = tpi.clientFk + LEFT JOIN supplier s ON s.nif = c.fi + WHERE s.id IS NULL GROUP BY itemFk, clientFk HAVING totalQuantity > 0)sub; From 18bb8a4ea558fc1a722bcd9b18c2a792ee1a63f1 Mon Sep 17 00:00:00 2001 From: alexm Date: Tue, 21 May 2024 13:50:45 +0200 Subject: [PATCH 52/70] fix: checking process.env.NODE_ENV --- back/methods/chat/sendCheckingPresence.js | 2 +- back/methods/chat/sendQueued.js | 4 ++-- back/methods/dms/deleteTrashFiles.js | 2 +- back/methods/docuware/upload.js | 2 +- back/methods/image/scrub.js | 3 +-- back/methods/image/upload.js | 2 +- back/methods/notification/send.js | 2 +- loopback/common/methods/application/isProduction.js | 3 +++ loopback/common/models/application.js | 5 +++++ modules/account/back/models/ldap-config.js | 3 ++- modules/account/back/models/samba-config.js | 3 ++- modules/client/back/methods/sms/send.js | 2 +- modules/invoiceOut/back/methods/invoiceOut/download.js | 2 +- modules/invoiceOut/back/models/invoice-out.js | 2 +- modules/mdb/back/methods/mdbVersion/upload.js | 2 +- 15 files changed, 24 insertions(+), 15 deletions(-) create mode 100644 loopback/common/methods/application/isProduction.js diff --git a/back/methods/chat/sendCheckingPresence.js b/back/methods/chat/sendCheckingPresence.js index 85b66e94be..12cadec041 100644 --- a/back/methods/chat/sendCheckingPresence.js +++ b/back/methods/chat/sendCheckingPresence.js @@ -37,7 +37,7 @@ module.exports = Self => { if (!recipient) throw new Error(`Could not send message "${message}" to worker id ${recipientId} from user ${userId}`); - if (process.env.NODE_ENV == 'test') + if (!Self.app.models.Application.isProduction()) message = `[Test:Environment to user ${userId}] ` + message; const chat = await models.Chat.create({ diff --git a/back/methods/chat/sendQueued.js b/back/methods/chat/sendQueued.js index 9a23af3795..1ab4cb6e01 100644 --- a/back/methods/chat/sendQueued.js +++ b/back/methods/chat/sendQueued.js @@ -94,7 +94,7 @@ module.exports = Self => { * @return {Promise} - The request promise */ Self.sendMessage = async function sendMessage(senderFk, recipient, message) { - if (process.env.NODE_ENV !== 'production') { + if (!Self.app.models.Application.isProduction()) { return new Promise(resolve => { return resolve({ statusCode: 200, @@ -149,7 +149,7 @@ module.exports = Self => { * @return {Promise} - The request promise */ Self.getUserStatus = async function getUserStatus(username) { - if (process.env.NODE_ENV !== 'production') { + if (!Self.app.models.Application.isProduction()) { return new Promise(resolve => { return resolve({ data: { diff --git a/back/methods/dms/deleteTrashFiles.js b/back/methods/dms/deleteTrashFiles.js index 239d654ef3..77e33929af 100644 --- a/back/methods/dms/deleteTrashFiles.js +++ b/back/methods/dms/deleteTrashFiles.js @@ -22,7 +22,7 @@ module.exports = Self => { if (typeof options == 'object') Object.assign(myOptions, options); - if (process.env.NODE_ENV == 'test') + if (!Self.app.models.Application.isProduction()) throw new UserError(`Action not allowed on the test environment`); const models = Self.app.models; diff --git a/back/methods/docuware/upload.js b/back/methods/docuware/upload.js index 27be72295e..ae3989def0 100644 --- a/back/methods/docuware/upload.js +++ b/back/methods/docuware/upload.js @@ -119,7 +119,7 @@ module.exports = Self => { ] }; - if (process.env.NODE_ENV != 'production') + if (!Self.app.models.Application.isProduction(false)) throw new UserError('Action not allowed on the test environment'); // delete old diff --git a/back/methods/image/scrub.js b/back/methods/image/scrub.js index 99c6bcbf33..4af2d8d494 100644 --- a/back/methods/image/scrub.js +++ b/back/methods/image/scrub.js @@ -43,8 +43,7 @@ module.exports = Self => { Self.scrub = async function(collection, remove, limit, dryRun, skipLock) { const $ = Self.app.models; - const env = process.env.NODE_ENV; - dryRun = dryRun || (env && env !== 'production'); + dryRun = dryRun || !Self.app.models.Application.isProduction(false); const instance = await $.ImageCollection.findOne({ fields: ['id'], diff --git a/back/methods/image/upload.js b/back/methods/image/upload.js index 51da327f67..81d9759e6f 100644 --- a/back/methods/image/upload.js +++ b/back/methods/image/upload.js @@ -41,7 +41,7 @@ module.exports = Self => { if (!hasWriteRole) throw new UserError(`You don't have enough privileges`); - if (process.env.NODE_ENV == 'test') + if (!Self.app.models.Application.isProduction()) throw new UserError(`Action not allowed on the test environment`); // Upload file to temporary path diff --git a/back/methods/notification/send.js b/back/methods/notification/send.js index b2748477d5..4f8f436da9 100644 --- a/back/methods/notification/send.js +++ b/back/methods/notification/send.js @@ -70,7 +70,7 @@ module.exports = Self => { const newParams = Object.assign({}, queueParams, sendParams); const email = new Email(queueName, newParams); - if (process.env.NODE_ENV != 'test') + if (Self.app.models.Application.isProduction()) await email.send(); await queue.updateAttribute('status', statusSent); diff --git a/loopback/common/methods/application/isProduction.js b/loopback/common/methods/application/isProduction.js new file mode 100644 index 0000000000..9479b67af1 --- /dev/null +++ b/loopback/common/methods/application/isProduction.js @@ -0,0 +1,3 @@ +module.exports = (localAsProduction = true) => { + if ((!process.env.NODE_ENV && localAsProduction) || process.env.NODE_ENV == 'production') return true; +}; diff --git a/loopback/common/models/application.js b/loopback/common/models/application.js index 6bdc2c13a2..70db17de26 100644 --- a/loopback/common/models/application.js +++ b/loopback/common/models/application.js @@ -1,3 +1,4 @@ +const isProductionFn = require('../methods/application/isProduction'); module.exports = function(Self) { require('../methods/application/status')(Self); @@ -6,4 +7,8 @@ module.exports = function(Self) { require('../methods/application/executeProc')(Self); require('../methods/application/executeFunc')(Self); require('../methods/application/getEnumValues')(Self); + + Self.isProduction = (localAsProduction = true) => { + return isProductionFn(localAsProduction); + }; }; diff --git a/modules/account/back/models/ldap-config.js b/modules/account/back/models/ldap-config.js index 89f0add486..4f5c0218dc 100644 --- a/modules/account/back/models/ldap-config.js +++ b/modules/account/back/models/ldap-config.js @@ -3,9 +3,10 @@ const app = require('vn-loopback/server/server'); const ldap = require('../util/ldapjs-extra'); const crypto = require('crypto'); const nthash = require('smbhash').nthash; +const isProduction = require('vn-loopback/common/methods/application/isProduction'); module.exports = Self => { - const shouldSync = process.env.NODE_ENV !== 'test'; + const shouldSync = isProduction(); Self.getLinker = async function() { return await Self.findOne({ diff --git a/modules/account/back/models/samba-config.js b/modules/account/back/models/samba-config.js index 927510a291..aa68af35d5 100644 --- a/modules/account/back/models/samba-config.js +++ b/modules/account/back/models/samba-config.js @@ -1,6 +1,7 @@ const ldap = require('../util/ldapjs-extra'); const execFile = require('child_process').execFile; +const isProduction = require('vn-loopback/common/methods/application/isProduction'); /** * Summary of userAccountControl flags: @@ -12,7 +13,7 @@ const UserAccountControlFlags = { }; module.exports = Self => { - const shouldSync = process.env.NODE_ENV !== 'test'; + const shouldSync = isProduction(); Self.getLinker = async function() { return await Self.findOne({ diff --git a/modules/client/back/methods/sms/send.js b/modules/client/back/methods/sms/send.js index 94b2b6c276..269dedacb0 100644 --- a/modules/client/back/methods/sms/send.js +++ b/modules/client/back/methods/sms/send.js @@ -47,7 +47,7 @@ module.exports = Self => { let response; try { - if (process.env.NODE_ENV !== 'production') + if (!Self.app.models.Application.isProduction(false)) response = {result: [{status: 'ok'}]}; else { const jsonTest = { diff --git a/modules/invoiceOut/back/methods/invoiceOut/download.js b/modules/invoiceOut/back/methods/invoiceOut/download.js index 748e2df17b..5a9d5bc51d 100644 --- a/modules/invoiceOut/back/methods/invoiceOut/download.js +++ b/modules/invoiceOut/back/methods/invoiceOut/download.js @@ -66,7 +66,7 @@ module.exports = Self => { console.error(err); }); - if (process.env.NODE_ENV == 'test') { + if (!Self.app.models.Application.isProduction()) { try { await fs.access(file.path); } catch (error) { diff --git a/modules/invoiceOut/back/models/invoice-out.js b/modules/invoiceOut/back/models/invoice-out.js index e4fcc1a69a..166565fe21 100644 --- a/modules/invoiceOut/back/models/invoice-out.js +++ b/modules/invoiceOut/back/models/invoice-out.js @@ -59,7 +59,7 @@ module.exports = Self => { hasPdf: true }, options); - if (process.env.NODE_ENV !== 'test') { + if (Self.app.models.Application.isProduction()) { await print.storage.write(buffer, { type: 'invoice', path: pdfFile.path, diff --git a/modules/mdb/back/methods/mdbVersion/upload.js b/modules/mdb/back/methods/mdbVersion/upload.js index 58fc46abb5..9edaf454f8 100644 --- a/modules/mdb/back/methods/mdbVersion/upload.js +++ b/modules/mdb/back/methods/mdbVersion/upload.js @@ -111,7 +111,7 @@ module.exports = Self => { const destinationFile = path.join( accessContainer.client.root, accessContainer.name, appName, `${toVersion}.7z`); - if (process.env.NODE_ENV == 'test') + if (!Self.app.models.Application.isProduction()) await fs.unlink(srcFile); else { await fs.move(srcFile, destinationFile, { From d8841920665fcf07e3c0eb63a9e5e81f953bebf8 Mon Sep 17 00:00:00 2001 From: alexm Date: Tue, 21 May 2024 13:52:50 +0200 Subject: [PATCH 53/70] fix: checking process.env.NODE_ENV --- back/methods/chat/sendQueued.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/back/methods/chat/sendQueued.js b/back/methods/chat/sendQueued.js index 1ab4cb6e01..ee1a82be27 100644 --- a/back/methods/chat/sendQueued.js +++ b/back/methods/chat/sendQueued.js @@ -94,7 +94,7 @@ module.exports = Self => { * @return {Promise} - The request promise */ Self.sendMessage = async function sendMessage(senderFk, recipient, message) { - if (!Self.app.models.Application.isProduction()) { + if (!Self.app.models.Application.isProduction(false)) { return new Promise(resolve => { return resolve({ statusCode: 200, @@ -149,7 +149,7 @@ module.exports = Self => { * @return {Promise} - The request promise */ Self.getUserStatus = async function getUserStatus(username) { - if (!Self.app.models.Application.isProduction()) { + if (!Self.app.models.Application.isProduction(false)) { return new Promise(resolve => { return resolve({ data: { From 1f2017c2727ce8e653e61124445735ea3436650f Mon Sep 17 00:00:00 2001 From: alexm Date: Tue, 21 May 2024 14:03:13 +0200 Subject: [PATCH 54/70] fix: simplify --- loopback/common/methods/application/isProduction.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/loopback/common/methods/application/isProduction.js b/loopback/common/methods/application/isProduction.js index 9479b67af1..151afa9cbe 100644 --- a/loopback/common/methods/application/isProduction.js +++ b/loopback/common/methods/application/isProduction.js @@ -1,3 +1,3 @@ module.exports = (localAsProduction = true) => { - if ((!process.env.NODE_ENV && localAsProduction) || process.env.NODE_ENV == 'production') return true; + return (!process.env.NODE_ENV && localAsProduction) || process.env.NODE_ENV == 'production'; }; From 2ffdce3c64753453d8b0f53fe0e34eb5efb2808d Mon Sep 17 00:00:00 2001 From: guillermo Date: Tue, 21 May 2024 14:40:42 +0200 Subject: [PATCH 55/70] refactor: refs #7398 Refactor and change ekt_scan --- db/routines/edi/procedures/ekt_scan.sql | 66 +++++++++++++------------ 1 file changed, 34 insertions(+), 32 deletions(-) diff --git a/db/routines/edi/procedures/ekt_scan.sql b/db/routines/edi/procedures/ekt_scan.sql index b0b75a6a7b..ccb9adf0a4 100644 --- a/db/routines/edi/procedures/ekt_scan.sql +++ b/db/routines/edi/procedures/ekt_scan.sql @@ -23,42 +23,39 @@ BEGIN DECLARE vXtraLongAgj INT; DECLARE vDefaultKlo INT; - SELECT - ec.usefulAuctionLeftSegmentLength, - ec.standardBarcodeLength, - ec.floridayBarcodeLength, - ec.floramondoBarcodeLength, - ec.defaultKlo - INTO - vUsefulAuctionLeftSegmentLength, + SELECT usefulAuctionLeftSegmentLength, + standardBarcodeLength, + floridayBarcodeLength, + floramondoBarcodeLength, + defaultKlo + INTO vUsefulAuctionLeftSegmentLength, vStandardBarcodeLength, vFloridayBarcodeLength, vFloramondoBarcodeLength, vDefaultKlo - FROM edi.ektConfig ec; + FROM ektConfig; - DROP TEMPORARY TABLE IF EXISTS tmp.ekt; - CREATE TEMPORARY TABLE tmp.ekt + CREATE OR REPLACE TEMPORARY TABLE tmp.ekt ENGINE = MEMORY SELECT id ektFk FROM ekt LIMIT 0; - CASE + CASE WHEN LENGTH(vBarcode) <= vFloridayBarcodeLength THEN INSERT INTO tmp.ekt SELECT id - FROM edi.ektRecent e + FROM ektRecent e WHERE e.cps = vBarcode OR e.batchNumber = vBarcode; WHEN LENGTH(vBarcode) = vFloramondoBarcodeLength THEN INSERT INTO tmp.ekt SELECT e.id - FROM edi.ektRecent e + FROM ektRecent e WHERE e.pro = MID(vBarcode,2,6) - AND CAST(e.ptd AS SIGNED) = MID(vBarcode,8,5); + AND CAST(e.ptd AS SIGNED) = MID(vBarcode, 8, 5); ELSE - SET vBarcode = LPAD(vBarcode,vStandardBarcodeLength,'0'); + SET vBarcode = LPAD(vBarcode, vStandardBarcodeLength, '0'); SET vAuction = MID(vBarcode, 1, 3); SET vKlo = MID(vBarcode, 4, 2); SET vFec = MAKEDATE(YEAR(util.VN_CURDATE()), MID(vBarcode, 6, 3)); @@ -69,21 +66,25 @@ BEGIN -- Clásico de subasta -- Trade standard -- Trade que construye como la subasta - -- Trade como el anterior pero sin trade code + -- Trade como el anterior pero sin trade code INSERT INTO tmp.ekt SELECT id FROM ekt WHERE fec >= vFec - INTERVAL 1 DAY - AND (( - vKlo = vDefaultKlo + AND ( + (vKlo = vDefaultKlo AND (klo = vKlo OR klo IS NULL OR klo = 0) - AND agj IN (vShortAgj, vLongAgj, vXtraLongAgj)) - OR (klo = vKlo + AND agj IN (vShortAgj, vLongAgj, vXtraLongAgj) + ) OR ( + klo = vKlo AND auction = vAuction - AND agj = vShortAgj) + AND agj = vShortAgj + ) OR ( + klo = auction -- No se si se refiere a esto + ) ) - ORDER BY agj DESC, fec DESC - LIMIT 1; + ORDER BY agj DESC, fec DESC + LIMIT 1; SELECT COUNT(*) FROM tmp.ekt INTO vIsFound; @@ -91,9 +92,11 @@ BEGIN IF NOT vIsFound THEN INSERT INTO tmp.ekt SELECT id - FROM edi.ektRecent e - WHERE e.batchNumber - = LEFT(vBarcode,vUsefulAuctionLeftSegmentLength) + FROM ektRecent e + WHERE e.batchNumber = LEFT( + vBarcode, + vUsefulAuctionLeftSegmentLength + ) AND e.batchNumber > 0; SELECT COUNT(*) FROM tmp.ekt INTO vIsFound; @@ -103,7 +106,7 @@ BEGIN IF NOT vIsFound THEN INSERT INTO tmp.ekt SELECT id - FROM edi.ektRecent e + FROM ektRecent e WHERE e.putOrderFk = vBarcode; SELECT COUNT(*) FROM tmp.ekt INTO vIsFound; @@ -113,9 +116,8 @@ BEGIN IF NOT vIsFound THEN INSERT INTO tmp.ekt SELECT id - FROM edi.ektRecent e - WHERE e.deliveryNumber - = MID(vBarcode, 4, 13) + FROM ektRecent e + WHERE e.deliveryNumber = MID(vBarcode, 4, 13) AND e.deliveryNumber > 0; SELECT COUNT(*) FROM tmp.ekt INTO vIsFound; @@ -124,7 +126,7 @@ BEGIN IF vIsFound THEN UPDATE ekt e - JOIN tmp.ekt t ON t.ektFk = e.id + JOIN tmp.ekt t ON t.ektFk = e.id SET e.scanned = TRUE; END IF; END$$ From ff33c926af40723cbb57ed05641deefe8c6c64f6 Mon Sep 17 00:00:00 2001 From: alexm Date: Tue, 21 May 2024 15:11:32 +0200 Subject: [PATCH 56/70] fix: move to boot --- back/methods/chat/sendCheckingPresence.js | 4 +++- back/methods/chat/sendQueued.js | 6 ++++-- back/methods/dms/deleteTrashFiles.js | 3 ++- back/methods/docuware/upload.js | 3 ++- back/methods/image/scrub.js | 3 ++- back/methods/image/upload.js | 3 ++- back/methods/notification/send.js | 3 ++- loopback/common/models/application.js | 6 ------ .../methods/application => server/boot}/isProduction.js | 0 modules/account/back/models/ldap-config.js | 2 +- modules/account/back/models/samba-config.js | 2 +- modules/client/back/methods/sms/send.js | 3 ++- modules/invoiceOut/back/methods/invoiceOut/download.js | 3 ++- modules/invoiceOut/back/models/invoice-out.js | 3 ++- modules/mdb/back/methods/mdbVersion/upload.js | 3 ++- 15 files changed, 27 insertions(+), 20 deletions(-) rename loopback/{common/methods/application => server/boot}/isProduction.js (100%) diff --git a/back/methods/chat/sendCheckingPresence.js b/back/methods/chat/sendCheckingPresence.js index 12cadec041..7ab5d63fef 100644 --- a/back/methods/chat/sendCheckingPresence.js +++ b/back/methods/chat/sendCheckingPresence.js @@ -1,3 +1,5 @@ +const isProduction = require('vn-loopback/server/boot/isProduction'); + module.exports = Self => { Self.remoteMethodCtx('sendCheckingPresence', { description: 'Creates a message in the chat model checking the user status', @@ -37,7 +39,7 @@ module.exports = Self => { if (!recipient) throw new Error(`Could not send message "${message}" to worker id ${recipientId} from user ${userId}`); - if (!Self.app.models.Application.isProduction()) + if (!isProduction()) message = `[Test:Environment to user ${userId}] ` + message; const chat = await models.Chat.create({ diff --git a/back/methods/chat/sendQueued.js b/back/methods/chat/sendQueued.js index ee1a82be27..abda2ddc1c 100644 --- a/back/methods/chat/sendQueued.js +++ b/back/methods/chat/sendQueued.js @@ -1,4 +1,6 @@ const axios = require('axios'); +const isProduction = require('vn-loopback/server/boot/isProduction'); + module.exports = Self => { Self.remoteMethodCtx('sendQueued', { description: 'Send a RocketChat message', @@ -94,7 +96,7 @@ module.exports = Self => { * @return {Promise} - The request promise */ Self.sendMessage = async function sendMessage(senderFk, recipient, message) { - if (!Self.app.models.Application.isProduction(false)) { + if (!isProduction(false)) { return new Promise(resolve => { return resolve({ statusCode: 200, @@ -149,7 +151,7 @@ module.exports = Self => { * @return {Promise} - The request promise */ Self.getUserStatus = async function getUserStatus(username) { - if (!Self.app.models.Application.isProduction(false)) { + if (!isProduction(false)) { return new Promise(resolve => { return resolve({ data: { diff --git a/back/methods/dms/deleteTrashFiles.js b/back/methods/dms/deleteTrashFiles.js index 77e33929af..e07f93c90a 100644 --- a/back/methods/dms/deleteTrashFiles.js +++ b/back/methods/dms/deleteTrashFiles.js @@ -1,6 +1,7 @@ const UserError = require('vn-loopback/util/user-error'); const fs = require('fs-extra'); const path = require('path'); +const isProduction = require('vn-loopback/server/boot/isProduction'); module.exports = Self => { Self.remoteMethod('deleteTrashFiles', { @@ -22,7 +23,7 @@ module.exports = Self => { if (typeof options == 'object') Object.assign(myOptions, options); - if (!Self.app.models.Application.isProduction()) + if (!isProduction()) throw new UserError(`Action not allowed on the test environment`); const models = Self.app.models; diff --git a/back/methods/docuware/upload.js b/back/methods/docuware/upload.js index ae3989def0..0102911e04 100644 --- a/back/methods/docuware/upload.js +++ b/back/methods/docuware/upload.js @@ -1,5 +1,6 @@ const UserError = require('vn-loopback/util/user-error'); const axios = require('axios'); +const isProduction = require('vn-loopback/server/boot/isProduction'); module.exports = Self => { Self.remoteMethodCtx('upload', { @@ -119,7 +120,7 @@ module.exports = Self => { ] }; - if (!Self.app.models.Application.isProduction(false)) + if (!isProduction(false)) throw new UserError('Action not allowed on the test environment'); // delete old diff --git a/back/methods/image/scrub.js b/back/methods/image/scrub.js index 4af2d8d494..3c83b3be71 100644 --- a/back/methods/image/scrub.js +++ b/back/methods/image/scrub.js @@ -1,6 +1,7 @@ const fs = require('fs-extra'); const path = require('path'); const UserError = require('vn-loopback/util/user-error'); +const isProduction = require('vn-loopback/server/boot/isProduction'); module.exports = Self => { Self.remoteMethod('scrub', { @@ -43,7 +44,7 @@ module.exports = Self => { Self.scrub = async function(collection, remove, limit, dryRun, skipLock) { const $ = Self.app.models; - dryRun = dryRun || !Self.app.models.Application.isProduction(false); + dryRun = dryRun || !isProduction(false); const instance = await $.ImageCollection.findOne({ fields: ['id'], diff --git a/back/methods/image/upload.js b/back/methods/image/upload.js index 81d9759e6f..b3cdfb88bb 100644 --- a/back/methods/image/upload.js +++ b/back/methods/image/upload.js @@ -1,6 +1,7 @@ const UserError = require('vn-loopback/util/user-error'); const fs = require('fs/promises'); const path = require('path'); +const isProduction = require('vn-loopback/server/boot/isProduction'); module.exports = Self => { Self.remoteMethodCtx('upload', { @@ -41,7 +42,7 @@ module.exports = Self => { if (!hasWriteRole) throw new UserError(`You don't have enough privileges`); - if (!Self.app.models.Application.isProduction()) + if (!isProduction()) throw new UserError(`Action not allowed on the test environment`); // Upload file to temporary path diff --git a/back/methods/notification/send.js b/back/methods/notification/send.js index 4f8f436da9..1bff7f6864 100644 --- a/back/methods/notification/send.js +++ b/back/methods/notification/send.js @@ -1,4 +1,5 @@ const {Email} = require('vn-print'); +const isProduction = require('vn-loopback/server/boot/isProduction'); module.exports = Self => { Self.remoteMethod('send', { @@ -70,7 +71,7 @@ module.exports = Self => { const newParams = Object.assign({}, queueParams, sendParams); const email = new Email(queueName, newParams); - if (Self.app.models.Application.isProduction()) + if (isProduction()) await email.send(); await queue.updateAttribute('status', statusSent); diff --git a/loopback/common/models/application.js b/loopback/common/models/application.js index 70db17de26..80c58ddc1f 100644 --- a/loopback/common/models/application.js +++ b/loopback/common/models/application.js @@ -1,5 +1,3 @@ -const isProductionFn = require('../methods/application/isProduction'); - module.exports = function(Self) { require('../methods/application/status')(Self); require('../methods/application/post')(Self); @@ -7,8 +5,4 @@ module.exports = function(Self) { require('../methods/application/executeProc')(Self); require('../methods/application/executeFunc')(Self); require('../methods/application/getEnumValues')(Self); - - Self.isProduction = (localAsProduction = true) => { - return isProductionFn(localAsProduction); - }; }; diff --git a/loopback/common/methods/application/isProduction.js b/loopback/server/boot/isProduction.js similarity index 100% rename from loopback/common/methods/application/isProduction.js rename to loopback/server/boot/isProduction.js diff --git a/modules/account/back/models/ldap-config.js b/modules/account/back/models/ldap-config.js index 4f5c0218dc..583ce084ba 100644 --- a/modules/account/back/models/ldap-config.js +++ b/modules/account/back/models/ldap-config.js @@ -3,7 +3,7 @@ const app = require('vn-loopback/server/server'); const ldap = require('../util/ldapjs-extra'); const crypto = require('crypto'); const nthash = require('smbhash').nthash; -const isProduction = require('vn-loopback/common/methods/application/isProduction'); +const isProduction = require('vn-loopback/server/boot/isProduction'); module.exports = Self => { const shouldSync = isProduction(); diff --git a/modules/account/back/models/samba-config.js b/modules/account/back/models/samba-config.js index aa68af35d5..359b4b1875 100644 --- a/modules/account/back/models/samba-config.js +++ b/modules/account/back/models/samba-config.js @@ -1,7 +1,7 @@ const ldap = require('../util/ldapjs-extra'); const execFile = require('child_process').execFile; -const isProduction = require('vn-loopback/common/methods/application/isProduction'); +const isProduction = require('vn-loopback/server/boot/isProduction'); /** * Summary of userAccountControl flags: diff --git a/modules/client/back/methods/sms/send.js b/modules/client/back/methods/sms/send.js index 269dedacb0..2b5674f86c 100644 --- a/modules/client/back/methods/sms/send.js +++ b/modules/client/back/methods/sms/send.js @@ -1,5 +1,6 @@ const got = require('got'); const UserError = require('vn-loopback/util/user-error'); +const isProduction = require('vn-loopback/server/boot/isProduction'); module.exports = Self => { Self.remoteMethod('send', { @@ -47,7 +48,7 @@ module.exports = Self => { let response; try { - if (!Self.app.models.Application.isProduction(false)) + if (!isProduction(false)) response = {result: [{status: 'ok'}]}; else { const jsonTest = { diff --git a/modules/invoiceOut/back/methods/invoiceOut/download.js b/modules/invoiceOut/back/methods/invoiceOut/download.js index 5a9d5bc51d..f8d42072cf 100644 --- a/modules/invoiceOut/back/methods/invoiceOut/download.js +++ b/modules/invoiceOut/back/methods/invoiceOut/download.js @@ -1,5 +1,6 @@ const fs = require('fs-extra'); const path = require('path'); +const isProduction = require('vn-loopback/server/boot/isProduction'); module.exports = Self => { Self.remoteMethodCtx('download', { @@ -66,7 +67,7 @@ module.exports = Self => { console.error(err); }); - if (!Self.app.models.Application.isProduction()) { + if (!isProduction()) { try { await fs.access(file.path); } catch (error) { diff --git a/modules/invoiceOut/back/models/invoice-out.js b/modules/invoiceOut/back/models/invoice-out.js index 166565fe21..b0e05b6262 100644 --- a/modules/invoiceOut/back/models/invoice-out.js +++ b/modules/invoiceOut/back/models/invoice-out.js @@ -1,6 +1,7 @@ const print = require('vn-print'); const path = require('path'); const UserError = require('vn-loopback/util/user-error'); +const isProduction = require('vn-loopback/server/boot/isProduction'); module.exports = Self => { require('../methods/invoiceOut/filter')(Self); @@ -59,7 +60,7 @@ module.exports = Self => { hasPdf: true }, options); - if (Self.app.models.Application.isProduction()) { + if (isProduction()) { await print.storage.write(buffer, { type: 'invoice', path: pdfFile.path, diff --git a/modules/mdb/back/methods/mdbVersion/upload.js b/modules/mdb/back/methods/mdbVersion/upload.js index 9edaf454f8..64de726791 100644 --- a/modules/mdb/back/methods/mdbVersion/upload.js +++ b/modules/mdb/back/methods/mdbVersion/upload.js @@ -1,6 +1,7 @@ const fs = require('fs-extra'); const path = require('path'); const UserError = require('vn-loopback/util/user-error'); +const isProduction = require('vn-loopback/server/boot/isProduction'); module.exports = Self => { Self.remoteMethodCtx('upload', { @@ -111,7 +112,7 @@ module.exports = Self => { const destinationFile = path.join( accessContainer.client.root, accessContainer.name, appName, `${toVersion}.7z`); - if (!Self.app.models.Application.isProduction()) + if (!isProduction()) await fs.unlink(srcFile); else { await fs.move(srcFile, destinationFile, { From 365e5a3ba365a24ef4e2460b7aa24d66d5d670c5 Mon Sep 17 00:00:00 2001 From: jorgep Date: Tue, 21 May 2024 17:31:29 +0200 Subject: [PATCH 57/70] fix: refs # 7400 ledger_next --- db/dump/fixtures.before.sql | 31 +++-- .../procedures/tpvTransaction_confirm.sql | 2 +- db/routines/vn/functions/till_new.sql | 110 +++++++++--------- db/routines/vn/functions/xdiario_new.sql | 45 ------- db/routines/vn/procedures/ledger_next.sql | 52 ++++++++- db/routines/vn/procedures/xdiario_new.sql | 64 ++++++++++ .../back/methods/client/createReceipt.js | 10 +- 7 files changed, 189 insertions(+), 125 deletions(-) delete mode 100644 db/routines/vn/functions/xdiario_new.sql create mode 100644 db/routines/vn/procedures/xdiario_new.sql diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql index 3e6edf07db..b8094471a9 100644 --- a/db/dump/fixtures.before.sql +++ b/db/dump/fixtures.before.sql @@ -2549,18 +2549,18 @@ INSERT INTO `vn`.`duaEntry` (`duaFk`, `entryFk`, `value`, `customsValue`, `euroV (7, 7, 1.00, 1.00, 1.00), (8, 8, 1.00, 1.00, 1.00); -REPLACE INTO `vn`.`invoiceIn`(`id`, `serialNumber`,`serial`, `supplierFk`, `issued`, `created`, `supplierRef`, `isBooked`, `companyFk`, `docFk`) +REPLACE INTO `vn`.`invoiceIn`(`id`, `serialNumber`,`serial`, `supplierFk`, `issued`, `created`, `supplierRef`, `isBooked`, `companyFk`, `docFk`, `bookEntried`) VALUES - (1, 1001, 'R', 1, util.VN_CURDATE(), util.VN_CURDATE(), 1234, 0, 442, 1), - (2, 1002, 'R', 1, util.VN_CURDATE(), util.VN_CURDATE(), 1235, 0, 442, 1), - (3, 1003, 'R', 1, util.VN_CURDATE(), util.VN_CURDATE(), 1236, 0, 442, 1), - (4, 1004, 'R', 1, util.VN_CURDATE(), util.VN_CURDATE(), 1237, 0, 442, 1), - (5, 1005, 'R', 1, util.VN_CURDATE(), util.VN_CURDATE(), 1238, 0, 442, 1), - (6, 1006, 'R', 2, util.VN_CURDATE(), util.VN_CURDATE(), 1239, 0, 442, 1), - (7, 1007, 'R', 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1240, 0, 442, 1), - (8, 1008, 'R', 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1241, 0, 442, 1), - (9, 1009, 'R', 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1242, 0, 442, 1), - (10, 1010, 'R', 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1243, 0, 442, 1); + (1, 1001, 'R', 1, util.VN_CURDATE(), util.VN_CURDATE(), 1234, 0, 442, 1,util.VN_CURDATE()), + (2, 1002, 'R', 1, util.VN_CURDATE(), util.VN_CURDATE(), 1235, 0, 442, 1,util.VN_CURDATE()), + (3, 1003, 'R', 1, util.VN_CURDATE(), util.VN_CURDATE(), 1236, 0, 442, 1,util.VN_CURDATE()), + (4, 1004, 'R', 1, util.VN_CURDATE(), util.VN_CURDATE(), 1237, 0, 442, 1,util.VN_CURDATE()), + (5, 1005, 'R', 1, util.VN_CURDATE(), util.VN_CURDATE(), 1238, 0, 442, 1,util.VN_CURDATE()), + (6, 1006, 'R', 2, util.VN_CURDATE(), util.VN_CURDATE(), 1239, 0, 442, 1,util.VN_CURDATE()), + (7, 1007, 'R', 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1240, 0, 442, 1,util.VN_CURDATE()), + (8, 1008, 'R', 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1241, 0, 442, 1,util.VN_CURDATE()), + (9, 1009, 'R', 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1242, 0, 442, 1,util.VN_CURDATE()), + (10, 1010, 'R', 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1243, 0, 442, 1,util.VN_CURDATE()); INSERT INTO `vn`.`invoiceInConfig` (`id`, `retentionRate`, `retentionName`, `sageFarmerWithholdingFk`, `daysAgo`) VALUES @@ -3791,4 +3791,11 @@ INSERT INTO vn.workerTeam(id, team, workerFk) INSERT INTO vn.workCenter (id, name, payrollCenterFk, counter, warehouseFk, street, geoFk, deliveryManAdjustment) VALUES(100, 'workCenterOne', 1, NULL, 1, 'gotham', NULL, NULL); -UPDATE vn.locker SET workerFk = 1110 WHERE id = 147; \ No newline at end of file +UPDATE vn.locker SET workerFk = 1110 WHERE id = 147; + +INSERT INTO `vn`.`ledgerCompany` SET + fiscalYear = YEAR(util.VN_CURDATE()), + bookEntry = 2; + +INSERT INTO `vn`.`ledgerConfig` SET + maxTolerance = 0.01; diff --git a/db/routines/hedera/procedures/tpvTransaction_confirm.sql b/db/routines/hedera/procedures/tpvTransaction_confirm.sql index e4a8c932fb..60a6d8452a 100644 --- a/db/routines/hedera/procedures/tpvTransaction_confirm.sql +++ b/db/routines/hedera/procedures/tpvTransaction_confirm.sql @@ -81,7 +81,7 @@ BEGIN -- Código redundante - DO vn.till_new( + CALL vn.till_new( vCustomer ,vBank ,vAmount / 100 diff --git a/db/routines/vn/functions/till_new.sql b/db/routines/vn/functions/till_new.sql index 24f4f2b798..b930725964 100644 --- a/db/routines/vn/functions/till_new.sql +++ b/db/routines/vn/functions/till_new.sql @@ -1,79 +1,73 @@ DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`till_new`(vClient INT - ,vBank INT - ,vAmount DOUBLE - ,vConcept VARCHAR(25) - ,vDated DATE - ,vSerie CHAR(1) - ,vBatch TINYINT - ,vNumber INT - ,vCompany SMALLINT - ,vWorker INT +CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`till_new`( + vClient INT, + vBank INT, + vAmount DOUBLE, + vConcept VARCHAR(25), + vDated DATE, + vSerie CHAR(1), + vBatch TINYINT, + vNumber INT, + vCompany SMALLINT, + vWorker INT ) - RETURNS int(11) - DETERMINISTIC BEGIN DECLARE vAccount VARCHAR(12); DECLARE vSubaccount VARCHAR(12); DECLARE vAsiento INT DEFAULT NULL; -- Inserta el registro en cajas - INSERT INTO till SET - workerFk = vWorker - ,bankFk = vBank - ,`in` = vAmount - ,concept = vConcept - ,dated = vDated - ,serie = vSerie - ,isAccountable = vBatch - ,`number` = vNumber - ,companyFk = vCompany; + workerFk = vWorker, + bankFk = vBank, + `in` = vAmount, + concept = vConcept, + dated = vDated, + serie = vSerie, + isAccountable = vBatch, + `number` = vNumber, + companyFk = vCompany; -- Inserta los asientos contables - SELECT account INTO vAccount FROM accounting WHERE id = vBank; SELECT accountingAccount INTO vSubaccount FROM `client` WHERE id = vClient; - SET vAsiento = xdiario_new - ( - vAsiento - ,vDated - ,vAccount - ,vSubaccount - ,vConcept - ,vAmount - ,0 - ,0 - ,NULL -- Serie - ,NULL -- Factura - ,NULL -- IVA - ,NULL -- Recargo - ,FALSE -- Auxiliar - ,vCompany - ); - DO xdiario_new - ( - vAsiento - ,vDated - ,vSubaccount - ,vAccount - ,vConcept - ,0 - ,vAmount - ,0 - ,NULL -- Serie - ,NULL -- Factura - ,NULL -- IVA - ,NULL -- Recargo - ,FALSE -- Auxiliar - ,vCompany - ); + CALL xdiario_new( + vAsiento, + vDated, + vAccount, + vSubaccount, + vConcept, + vAmount, + 0, + 0, + NULL, -- Serie + NULL, -- Factura + NULL, -- IVA + NULL, -- Recargo + FALSE, -- Auxiliar + vCompany, + vAsiento); - RETURN NULL; + CALL xdiario_new( + vAsiento, + vDated, + vSubaccount, + vAccount, + vConcept, + 0, + vAmount, + 0, + NULL, -- Serie + NULL, -- Factura + NULL, -- IVA + NULL, -- Recargo + FALSE, -- Auxiliar + vCompany, + vAsiento); END$$ DELIMITER ; diff --git a/db/routines/vn/functions/xdiario_new.sql b/db/routines/vn/functions/xdiario_new.sql deleted file mode 100644 index 4f4b3f3fd2..0000000000 --- a/db/routines/vn/functions/xdiario_new.sql +++ /dev/null @@ -1,45 +0,0 @@ -DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`xdiario_new`( - vBookNumber INT, - vDated DATE, - vSubaccount VARCHAR(12), - vAccount VARCHAR(12), - vConcept VARCHAR(25), - vDebit DOUBLE, - vCredit DOUBLE, - vEuro DOUBLE, - vSerie CHAR(1), - vInvoice VARCHAR(8), - vVat DOUBLE, - vRe DOUBLE, - vAux TINYINT, - vCompanyFk INT -) - RETURNS int(11) - NOT DETERMINISTIC - NO SQL -BEGIN - IF vBookNumber IS NULL THEN - CALL ledger_next(YEAR(vDated), vBookNumber); - END IF; - - INSERT INTO XDiario - SET ASIEN = vBookNumber, - FECHA = vDated, - SUBCTA = vSubaccount, - CONTRA = vAccount, - CONCEPTO = vConcept, - EURODEBE = vDebit, - EUROHABER = vCredit, - BASEEURO = vEuro, - SERIE = vSerie, - FACTURA = vInvoice, - IVA = vVat, - RECEQUIV = vRe, - AUXILIAR = IF(vAux = FALSE, NULL, '*'), - MONEDAUSO = 2, - empresa_id = vCompanyFk; - - RETURN vBookNumber; -END$$ -DELIMITER ; \ No newline at end of file diff --git a/db/routines/vn/procedures/ledger_next.sql b/db/routines/vn/procedures/ledger_next.sql index 5cde90defd..dccce3a769 100644 --- a/db/routines/vn/procedures/ledger_next.sql +++ b/db/routines/vn/procedures/ledger_next.sql @@ -1,13 +1,55 @@ DELIMITER $$ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ledger_next`( IN vFiscalYear INT, - OUT vNewBookEntry INT + OUT vLastBookEntry INT ) BEGIN - UPDATE ledgerCompany - SET bookEntry = LAST_INSERT_ID(bookEntry + 1) + DECLARE vHasStartTransaction BOOLEAN; + + DECLARE EXIT HANDLER FOR SQLEXCEPTION + BEGIN + + IF vHasStartTransaction THEN + ROLLBACK TO sp; + RESIGNAL; + ELSE + ROLLBACK; + CALL util.throw ('It has not been possible to generate a new ledger'); + END IF; + END; + + IF vFiscalYear IS NULL THEN + CALL util.throw('Fiscal year is required'); + END IF; + + SELECT @@in_transaction INTO vHasStartTransaction; + + IF NOT vHasStartTransaction THEN + START TRANSACTION; + ELSE + SAVEPOINT sp; + END IF; + + SELECT bookEntry + 1 INTO vLastBookEntry + FROM ledgerCompany + WHERE fiscalYear = vFiscalYear + FOR UPDATE; + + IF vLastBookEntry IS NULL THEN + INSERT INTO ledgerCompany + SET fiscalYear = vFiscalYear, + bookEntry = 1; + SET vLastBookEntry = 1; + END IF; + + UPDATE ledgerCompany + SET bookEntry = vLastBookEntry WHERE fiscalYear = vFiscalYear; - SET vNewBookEntry = LAST_INSERT_ID(); + IF vHasStartTransaction THEN + RELEASE SAVEPOINT sp; + ELSE + COMMIT; + END IF; END$$ -DELIMITER ; +DELIMITER ; \ No newline at end of file diff --git a/db/routines/vn/procedures/xdiario_new.sql b/db/routines/vn/procedures/xdiario_new.sql new file mode 100644 index 0000000000..8204f46524 --- /dev/null +++ b/db/routines/vn/procedures/xdiario_new.sql @@ -0,0 +1,64 @@ +DELIMITER $$ +CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`xdiario_new`( + vBookNumber INT, + vDated DATE, + vSubaccount VARCHAR(12), + vAccount VARCHAR(12), + vConcept VARCHAR(25), + vDebit DOUBLE, + vCredit DOUBLE, + vEuro DOUBLE, + vSerie CHAR(1), + vInvoice VARCHAR(8), + vVat DOUBLE, + vRe DOUBLE, + vAux TINYINT, + vCompanyFk INT, + OUT vNewBookNumber INT +) +/** + * Este procedimiento se encarga de la inserción de registros en la tabla XDiario. + * Si el número de asiento (vBookNumber) no está definido, se genera uno nuevo utilizando + * vn.ledger_next. + * + * @param vBookNumber Número de asiento. Si es NULL, se generará uno nuevo. + * @param vDated Fecha utilizada para generar un nuevo número de libro si vBookNumber es NULL. + * @param vSubaccount Subcuenta para la transacción. + * @param vAccount Cuenta para la transacción. + * @param vConcept Concepto de la transacción. + * @param vDebit Monto del débito para la transacción. + * @param vCredit Monto del crédito para la transacción. + * @param vEuro Monto en euros para la transacción. + * @param vSerie Serie para la transacción. + * @param vInvoice Número de factura para la transacción. + * @param vVat Monto del IVA para la transacción. + * @param vRe Monto del RE para la transacción. + * @param vAux Variable auxiliar para la transacción. + * @param vCompanyFk Clave foránea de la compañía para la transacción. + * @return No retorna un valor, pero realiza una inserción en la tabla XDiario. + */ +BEGIN + IF vBookNumber IS NULL THEN + CALL ledger_next(YEAR(vDated), vBookNumber); + END IF; + + INSERT INTO XDiario + SET ASIEN = vBookNumber, + FECHA = vDated, + SUBCTA = vSubaccount, + CONTRA = vAccount, + CONCEPTO = vConcept, + EURODEBE = vDebit, + EUROHABER = vCredit, + BASEEURO = vEuro, + SERIE = vSerie, + FACTURA = vInvoice, + IVA = vVat, + RECEQUIV = vRe, + AUXILIAR = IF(vAux = FALSE, NULL, '*'), + MONEDAUSO = 2, + empresa_id = vCompanyFk; + + SET vNewBookNumber = vBookNumber; +END$$ +DELIMITER ; \ No newline at end of file diff --git a/modules/client/back/methods/client/createReceipt.js b/modules/client/back/methods/client/createReceipt.js index e2a57272b3..23570baf23 100644 --- a/modules/client/back/methods/client/createReceipt.js +++ b/modules/client/back/methods/client/createReceipt.js @@ -95,9 +95,11 @@ module.exports = function(Self) { myOptions ); } else if (accountingType.isAutoConciliated == true) { - const description = `${originalClient.id} : ${originalClient.socialName} - ${accountingType.receiptDescription}`; - const [xdiarioNew] = await Self.rawSql( - `SELECT xdiario_new(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ledger;`, + const description = + `${originalClient.id} : ${originalClient.socialName} - ${accountingType.receiptDescription}`; + const [, [xdiarioNew]] = await Self.rawSql( + `CALL xdiario_new(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, @xdiarioNew); + SELECT @xdiarioNew ledger;`, [ null, date, @@ -118,7 +120,7 @@ module.exports = function(Self) { ); await Self.rawSql( - `SELECT xdiario_new(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);`, + `CALL xdiario_new(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, @xdiarioNew);`, [ xdiarioNew.ledger, date, From 2142b78deba30e7587e0b3af598d987eb9c62c5b Mon Sep 17 00:00:00 2001 From: pablone Date: Tue, 21 May 2024 19:25:18 +0200 Subject: [PATCH 58/70] feat: refs #7187 Add support for multiple PDAs per user --- loopback/locale/en.json | 3 ++- loopback/locale/es.json | 5 +++-- modules/worker/back/models/device-production-user.js | 3 +++ 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/loopback/locale/en.json b/loopback/locale/en.json index 601a26f5b8..551b544b67 100644 --- a/loopback/locale/en.json +++ b/loopback/locale/en.json @@ -226,5 +226,6 @@ "This password can only be changed by the user themselves": "This password can only be changed by the user themselves", "They're not your subordinate": "They're not your subordinate", "InvoiceIn is already booked": "InvoiceIn is already booked", - "This workCenter is already assigned to this agency": "This workCenter is already assigned to this agency" + "This workCenter is already assigned to this agency": "This workCenter is already assigned to this agency", + "You can only have one PDA": "You can only have one PDA" } \ No newline at end of file diff --git a/loopback/locale/es.json b/loopback/locale/es.json index 77e707590e..4a7e1505ca 100644 --- a/loopback/locale/es.json +++ b/loopback/locale/es.json @@ -357,6 +357,7 @@ "This workCenter is already assigned to this agency": "Este centro de trabajo ya está asignado a esta agencia", "Select ticket or client": "Elija un ticket o un client", "It was not able to create the invoice": "No se pudo crear la factura", - "This PDA is already assigned to another user": "This PDA is already assigned to another user", - "ticketCommercial": "El ticket {{ ticket }} para el vendedor {{ salesMan }} está en preparación. (mensaje generado automáticamente)" + "ticketCommercial": "El ticket {{ ticket }} para el vendedor {{ salesMan }} está en preparación. (mensaje generado automáticamente)", + "This PDA is already assigned to another user": "Este PDA ya está asignado a otro usuario", + "You can only have one PDA": "Solo puedes tener un PDA" } \ No newline at end of file diff --git a/modules/worker/back/models/device-production-user.js b/modules/worker/back/models/device-production-user.js index 81af484d30..692a804f08 100644 --- a/modules/worker/back/models/device-production-user.js +++ b/modules/worker/back/models/device-production-user.js @@ -3,6 +3,9 @@ module.exports = Self => { Self.rewriteDbError(function(err) { if (err.code === 'ER_DUP_ENTRY') return new UserError(`This PDA is already assigned to another user`); + + if (err.code === 'ER_SIGNAL_EXCEPTION' && err.sqlMessage === 'You can only have one active PDA') + return new UserError(`You can only have one active PDA`); return err; }); }; From 0d620c6f33cb061abbf3f9aa6efd03b80ea11c7d Mon Sep 17 00:00:00 2001 From: guillermo Date: Wed, 22 May 2024 08:11:27 +0200 Subject: [PATCH 59/70] feat: refs #7398 Change --- db/routines/edi/procedures/ekt_scan.sql | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/db/routines/edi/procedures/ekt_scan.sql b/db/routines/edi/procedures/ekt_scan.sql index ccb9adf0a4..0cf8bb4669 100644 --- a/db/routines/edi/procedures/ekt_scan.sql +++ b/db/routines/edi/procedures/ekt_scan.sql @@ -79,8 +79,6 @@ BEGIN klo = vKlo AND auction = vAuction AND agj = vShortAgj - ) OR ( - klo = auction -- No se si se refiere a esto ) ) ORDER BY agj DESC, fec DESC @@ -122,6 +120,17 @@ BEGIN SELECT COUNT(*) FROM tmp.ekt INTO vIsFound; END IF; + + -- Solo campo agj + IF NOT vIsFound THEN + INSERT INTO tmp.ekt + SELECT id + FROM ektRecent + WHERE agj = vShortAgj; + + SELECT COUNT(*) FROM tmp.ekt INTO vIsFound; + END IF; + END CASE; IF vIsFound THEN From bc6af32962a17c26d9df113a4cb8a3482105c41a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s?= Date: Wed, 22 May 2024 14:50:45 +0200 Subject: [PATCH 60/70] fix: problems in colums ticket and sale refs #7213 --- .../sale_setProblemComponentLackByComponent.sql | 15 +++++++++------ .../vn/procedures/sale_setProblemRounding.sql | 6 +++--- .../vn/procedures/ticket_setProblemFreeze.sql | 2 +- .../vn/procedures/ticket_setProblemRisk.sql | 2 +- .../vn/procedures/ticket_setProblemRounding.sql | 6 +++--- .../ticket_setProblemTooLittleItemCost.sql | 2 +- 6 files changed, 18 insertions(+), 15 deletions(-) diff --git a/db/routines/vn/procedures/sale_setProblemComponentLackByComponent.sql b/db/routines/vn/procedures/sale_setProblemComponentLackByComponent.sql index 895598e844..62db0d9cfb 100644 --- a/db/routines/vn/procedures/sale_setProblemComponentLackByComponent.sql +++ b/db/routines/vn/procedures/sale_setProblemComponentLackByComponent.sql @@ -12,12 +12,15 @@ BEGIN CREATE OR REPLACE TEMPORARY TABLE tmp.sale (INDEX(saleFk)) ENGINE = MEMORY - SELECT s.id saleFk, sale_hasComponentLack(s.id) hasProblem - FROM ticket t - JOIN sale s ON s.ticketFk = t.id - LEFT JOIN saleComponent sc ON sc.saleFk = s.id - WHERE t.shipped >= util.midnight() - AND (vComponentFk IS NULL OR sc.componentFk = vComponentFk); + SELECT saleFk, sale_hasComponentLack(saleFk)hasProblem + FROM ( + SELECT s.id saleFk + FROM ticket t + JOIN sale s ON s.ticketFk = t.id + LEFT JOIN saleComponent sc ON sc.saleFk = s.id + WHERE t.shipped >= util.midnight() + AND (vComponentFk IS NULL OR sc.componentFk = vComponentFk) + GROUP BY s.id) sub; CALL sale_setProblem('hasComponentLack'); diff --git a/db/routines/vn/procedures/sale_setProblemRounding.sql b/db/routines/vn/procedures/sale_setProblemRounding.sql index 366fbf8fda..f14cd408f2 100644 --- a/db/routines/vn/procedures/sale_setProblemRounding.sql +++ b/db/routines/vn/procedures/sale_setProblemRounding.sql @@ -20,15 +20,15 @@ BEGIN CALL buyUltimate(vWarehouseFk, vShipped); - CREATE OR REPLACE TEMPORARY TABLE tmp.ticket - SELECT vSelf saleFk, MOD(vQuantity, bu.`grouping`) hasProblem + CREATE OR REPLACE TEMPORARY TABLE tmp.sale + SELECT vSelf saleFk, MOD(vQuantity, b.`grouping`) hasProblem FROM tmp.buyUltimate bu JOIN buy b ON b.id = bu.buyFk WHERE bu.itemFk = vItemFk; CALL sale_setProblem('hasRounding'); - DROP TEMPORARY TABLE tmp.ticket; + DROP TEMPORARY TABLE tmp.sale; DROP TEMPORARY TABLE tmp.buyUltimate; END$$ DELIMITER ; \ No newline at end of file diff --git a/db/routines/vn/procedures/ticket_setProblemFreeze.sql b/db/routines/vn/procedures/ticket_setProblemFreeze.sql index bdb32b3fed..2a5d67b0dc 100644 --- a/db/routines/vn/procedures/ticket_setProblemFreeze.sql +++ b/db/routines/vn/procedures/ticket_setProblemFreeze.sql @@ -22,7 +22,7 @@ BEGIN SET t.hasProblem = TRUE WHERE c.isFreezed; - CALL ticket_setProblem('hasTicketRequest'); + CALL ticket_setProblem('isFreezed'); DROP TEMPORARY TABLE tmp.ticket; END$$ diff --git a/db/routines/vn/procedures/ticket_setProblemRisk.sql b/db/routines/vn/procedures/ticket_setProblemRisk.sql index 7c499f5bad..5f73ee838e 100644 --- a/db/routines/vn/procedures/ticket_setProblemRisk.sql +++ b/db/routines/vn/procedures/ticket_setProblemRisk.sql @@ -19,7 +19,7 @@ BEGIN WHERE t.id = vSelf; CREATE OR REPLACE TEMPORARY TABLE tmp.ticket - SELECT vSelf ticketFk, vRisk hasProblem; + SELECT vSelf ticketFk, vHasRisk hasProblem; CALL ticket_setProblem('hasRisk'); diff --git a/db/routines/vn/procedures/ticket_setProblemRounding.sql b/db/routines/vn/procedures/ticket_setProblemRounding.sql index 272a48151b..81294325ca 100644 --- a/db/routines/vn/procedures/ticket_setProblemRounding.sql +++ b/db/routines/vn/procedures/ticket_setProblemRounding.sql @@ -18,17 +18,17 @@ BEGIN CALL buyUltimate(vWarehouseFk, vDated); - CREATE OR REPLACE TEMPORARY TABLE tmp.ticket + CREATE OR REPLACE TEMPORARY TABLE tmp.sale SELECT s.id saleFk , MOD(s.quantity, b.`grouping`) hasProblem FROM ticket t - JOIN sale s ON s.ticketFk = tl.ticketFk + JOIN sale s ON s.ticketFk = t.id JOIN tmp.buyUltimate bu ON bu.itemFk = s.itemFk JOIN buy b ON b.id = bu.buyFk WHERE t.id = vSelf; CALL sale_setProblem('hasRounding'); - DROP TEMPORARY TABLE tmp.ticket; + DROP TEMPORARY TABLE tmp.sale; DROP TEMPORARY TABLE tmp.buyUltimate; END$$ DELIMITER ; \ No newline at end of file diff --git a/db/routines/vn/procedures/ticket_setProblemTooLittleItemCost.sql b/db/routines/vn/procedures/ticket_setProblemTooLittleItemCost.sql index 9a7852ac56..4403292fcd 100644 --- a/db/routines/vn/procedures/ticket_setProblemTooLittleItemCost.sql +++ b/db/routines/vn/procedures/ticket_setProblemTooLittleItemCost.sql @@ -15,7 +15,7 @@ BEGIN WITH tickets AS( SELECT t.id ticketFk FROM vn.ticket t - JOIN vn.sale s ON s.ticketFk = t.id + LEFT JOIN vn.sale s ON s.ticketFk = t.id WHERE t.shipped >= util.midnight() AND (s.itemFk = vItemFk OR vItemFk IS NULL) GROUP BY t.id From 4dee90ff57ff0e6283bb2d622eb4e4fea34a39aa Mon Sep 17 00:00:00 2001 From: carlossa Date: Wed, 22 May 2024 14:56:46 +0200 Subject: [PATCH 61/70] refs #6820 fix pr --- back/models/routeConfig.json | 3 --- db/versions/11059-crimsonAnthurium/00-firstScript.sql | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/back/models/routeConfig.json b/back/models/routeConfig.json index 28adbe756f..f3d9297498 100644 --- a/back/models/routeConfig.json +++ b/back/models/routeConfig.json @@ -1,9 +1,6 @@ { "name": "RouteConfig", "base": "VnModel", - "mixins": { - "Loggable": true - }, "options": { "mysql": { "table": "routeConfig" diff --git a/db/versions/11059-crimsonAnthurium/00-firstScript.sql b/db/versions/11059-crimsonAnthurium/00-firstScript.sql index 7fe3e01ca6..b0eade302b 100644 --- a/db/versions/11059-crimsonAnthurium/00-firstScript.sql +++ b/db/versions/11059-crimsonAnthurium/00-firstScript.sql @@ -1,3 +1,3 @@ -- Place your SQL code here INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId) - VALUES ('RouteConfig','*','*','ALLOW','ROLE','employee'); + VALUES ('RouteConfig','*','READ','ALLOW','ROLE','employee'); From 56aec1c781fbdb889e82fdab8f8075dd703915bc Mon Sep 17 00:00:00 2001 From: guillermo Date: Thu, 23 May 2024 09:44:18 +0200 Subject: [PATCH 62/70] refs #7440 Optimized item_comparative --- .../vn/procedures/item_comparative.sql | 134 +++++++++--------- 1 file changed, 67 insertions(+), 67 deletions(-) diff --git a/db/routines/vn/procedures/item_comparative.sql b/db/routines/vn/procedures/item_comparative.sql index e721883631..430f847563 100644 --- a/db/routines/vn/procedures/item_comparative.sql +++ b/db/routines/vn/procedures/item_comparative.sql @@ -6,23 +6,23 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_comparative`( vAvailableSince DATE, vBuyerFk INT, vIsFloramondo BOOL, - vCountryFk INT + vCountryFk INT ) proc: BEGIN /** - * Genera una tabla de comparativa de artículos por itemType/comprador/fecha. - * Los datos se calculan en función de los parámetros proporcionados. - * - * @param vDate La fecha para la cual se generará la comparativa. - * @param vDayRange El rango de días a considerar para la comparativa. - * @param vWarehouseFk El identificador del almacén para filtrar los artículos. - * @param vAvailableSince La fecha de disponibilidad desde la cual se consideran los artículos disponibles. - * @param vBuyerFk El identificador del comprador para filtrar los artículos. - * @param vIsFloramondo Indica si se deben incluir solo los artículos de Floramondo (opcional). - * @param vCountryFk El identificador del país. - * @param tmp.comparativeFilterType(filterFk INT ,itemTypeFk INT) - * @return tmp.comparative - */ +* Genera una tabla de comparativa de artículos por itemType/comprador/fecha. +* Los datos se calculan en función de los parámetros proporcionados. +* +* @param vDate La fecha para la cual se generará la comparativa. +* @param vDayRange El rango de días a considerar para la comparativa. +* @param vWarehouseFk El identificador del almacén para filtrar los artículos. +* @param vAvailableSince La fecha de disponibilidad desde la cual se consideran los artículos disponibles. +* @param vBuyerFk El identificador del comprador para filtrar los artículos. +* @param vIsFloramondo Indica si se deben incluir solo los artículos de Floramondo (opcional). +* @param vCountryFk El identificador del país. +* @param tmp.comparativeFilterType(filterFk INT ,itemTypeFk INT) +* @return tmp.comparative +*/ DECLARE vDayRangeStart DATE; DECLARE vDayRangeEnd DATE; @@ -59,14 +59,14 @@ proc: BEGIN END IF; SELECT MIN(dated) INTO vDayRangeStart - FROM vn.time + FROM `time` WHERE dated <= vDate GROUP BY period ORDER BY dated desc LIMIT 1 OFFSET vWeekRange; SELECT MAX(dated) INTO vDayRangeEnd - FROM vn.time + FROM `time` WHERE dated >= vDate GROUP BY period ORDER BY dated ASC @@ -83,12 +83,11 @@ proc: BEGIN JOIN itemType t ON t.id = i.typeFk JOIN itemCategory c ON c.id = t.categoryFk LEFT JOIN worker w ON w.id = t.workerFk - WHERE (NOT vHasTypeFilter - OR t.id IN (SELECT itemTypeFk FROM tmp.comparativeFilterType)) - AND (vBuyerFk IS NULL - OR t.workerFk = vBuyerFk) - AND (vIsFloramondo IS NULL - OR i.isFloramondo = vIsFloramondo); + WHERE (NOT vHasTypeFilter OR t.id IN ( + SELECT itemTypeFk FROM tmp.comparativeFilterType + )) + AND (vBuyerFk IS NULL OR t.workerFk = vBuyerFk) + AND (vIsFloramondo IS NULL OR i.isFloramondo = vIsFloramondo); IF vDate < util.VN_CURDATE() THEN ALTER TABLE tmp.itemInventory @@ -115,10 +114,11 @@ proc: BEGIN SET i = i + 1; SELECT t.period INTO vPeriod - FROM vn.`time` t + FROM `time` t WHERE t.dated = vDayRangeStart + INTERVAL (vWeekCount * (i - 1)) DAY; - INSERT IGNORE INTO tTable(cy, ly, zy) VALUES(vPeriod, vPeriod - 100, vPeriod - 200); + INSERT IGNORE INTO tTable(cy, ly, zy) + VALUES(vPeriod, vPeriod - 100, vPeriod - 200); UNTIL i = vWeekCount END REPEAT; SELECT cy, ly, zy INTO w1, y1, z1 FROM tTable LIMIT 1; @@ -130,7 +130,6 @@ proc: BEGIN SELECT cy, ly, zy INTO w7, y7, z7 FROM tTable WHERE cy > w6 LIMIT 1; -- Genera una tabla con los datos del año pasado. - CREATE OR REPLACE TEMPORARY TABLE tLastYear (KEY (lItemFk)) ENGINE = MEMORY @@ -153,13 +152,12 @@ proc: BEGIN JOIN comparative c ON c.itemFk = ai.id JOIN warehouse w on w.id = c.warehouseFk JOIN tTable wt ON c.timePeriod = wt.ly - WHERE IFNULL(vWarehouseFk, c.warehouseFk) = c.warehouseFk + WHERE (vWarehouseFk IS NULL OR vWarehouseFk = c.warehouseFk) AND w.isComparative AND (vCountryFk IS NULL OR c.countryFk = vCountryFk) GROUP BY ai.id; -- Genera una tabla con los datos de hace DOS años. - CREATE OR REPLACE TEMPORARY TABLE tTwoYearsAgo (KEY (tItemFk)) ENGINE = MEMORY @@ -182,71 +180,70 @@ proc: BEGIN JOIN comparative c ON c.itemFk = ai.id JOIN warehouse w on w.id = c.warehouseFk JOIN tTable wt ON c.timePeriod = wt.zy - WHERE IFNULL(vWarehouseFk, c.warehouseFk) = c.warehouseFk + WHERE (vWarehouseFk IS NULL OR vWarehouseFk = c.warehouseFk) AND w.isComparative AND (vCountryFk IS NULL OR c.countryFk = vCountryFk) GROUP BY ai.id; - -- Genera una tabla con los datos de este año.ss - + -- Genera una tabla con los datos de este año CREATE OR REPLACE TEMPORARY TABLE tCurrentYear (KEY (cItemFk)) ENGINE = MEMORY SELECT t.itemFk cItemFk, - SUM(IF(week = w1, total, 0)) cweek1, - SUM(IF(week = w2, total, 0)) cweek2, - SUM(IF(week = w3, total, 0)) cweek3, - SUM(IF(week = w4, total, 0)) cweek4, - SUM(IF(week = w5, total, 0)) cweek5, - SUM(IF(week = w6, total, 0)) cweek6, - SUM(IF(week = w7, total, 0)) cweek7, - SUM(IF(week = w1, price, 0)) cprice1, - SUM(IF(week = w2, price, 0)) cprice2, - SUM(IF(week = w3, price, 0)) cprice3, - SUM(IF(week = w4, price, 0)) cprice4, - SUM(IF(week = w5, price, 0)) cprice5, - SUM(IF(week = w6, price, 0)) cprice6, - SUM(IF(week = w7, price, 0)) cprice7 + SUM(IF(`week` = w1, total, 0)) cweek1, + SUM(IF(`week` = w2, total, 0)) cweek2, + SUM(IF(`week` = w3, total, 0)) cweek3, + SUM(IF(`week` = w4, total, 0)) cweek4, + SUM(IF(`week` = w5, total, 0)) cweek5, + SUM(IF(`week` = w6, total, 0)) cweek6, + SUM(IF(`week` = w7, total, 0)) cweek7, + SUM(IF(`week` = w1, price, 0)) cprice1, + SUM(IF(`week` = w2, price, 0)) cprice2, + SUM(IF(`week` = w3, price, 0)) cprice3, + SUM(IF(`week` = w4, price, 0)) cprice4, + SUM(IF(`week` = w5, price, 0)) cprice5, + SUM(IF(`week` = w6, price, 0)) cprice6, + SUM(IF(`week` = w7, price, 0)) cprice7 FROM ( SELECT s.itemFk, ti.period `week`, SUM(s.quantity) total, - TRUNCATE(SUM(s.quantity * s.priceFixed),0) price - FROM ticket t + TRUNCATE(SUM(s.quantity * s.priceFixed), 0) price + FROM ticket t FORCE INDEX (Fecha) JOIN sale s ON t.id = s.ticketFk - JOIN tmp.itemInventory it ON it.id = s.itemFk - JOIN time ti ON ti.dated = DATE(t.shipped) + JOIN tmp.itemInventory it ON it.id = s.itemFk + JOIN `time` ti ON ti.dated = DATE(t.shipped) JOIN item i ON i.id = s.itemFk JOIN itemType tp ON tp.id = i.typeFk JOIN itemCategory ic ON ic.id = tp.categoryFk JOIN warehouse w ON w.id = t.warehouseFk - STRAIGHT_JOIN address ad ON ad.id = t.addressFk - JOIN province p ON p.id = ad.provinceFk + JOIN `address` ad ON ad.id = t.addressFk + JOIN province p ON p.id = ad.provinceFk JOIN `client` c ON c.id = ad.clientFk WHERE t.shipped BETWEEN vDayRangeStart AND util.dayEnd(vDayRangeEnd) - AND c.typeFk IN ('Normal','handMaking') - AND w.id = COALESCE(vWarehouseFk, w.id) + AND c.typeFk IN ('normal', 'handMaking') + AND (vWarehouseFk IS NULL OR vWarehouseFk = w.id) + AND (vCountryFk IS NULL OR p.countryFk = vCountryFk) AND w.isComparative - AND (vCountryFk IS NULL OR p.countryFk = vCountryFk) - GROUP BY i.id, week + GROUP BY i.id, `week` ) t GROUP BY t.itemFk; -- Genera la tabla con la comparativa. CREATE OR REPLACE TEMPORARY TABLE tmp.comparative ENGINE = MEMORY - SELECT it.subName productor, - b.packing, + SELECT it.subName productor, + b.packing, b.buyingValue costefijo, b.groupingMode caja, it.image ArticleImage, - IFNULL(it.inkFk,"?") color, + IFNULL(it.inkFk, '?') color, tp.code tipo, it.typeFk tipo_id, o.code origen, it.category categoria, it.stems tallos, - it.size medida, + it.`size` medida, it.name article, w.code codigoTrabajador, tp.categoryFk reino_id, @@ -257,24 +254,27 @@ proc: BEGIN it.id Id_Article, i.buy_id, tp.life, - IFNULL(i.sd,0) sd, + IFNULL(i.sd, 0) sd, i.avalaible, i.visible, i.buy_date, e.id provider_id, it.comment comments, it.description itemDescription, - IF(cy.cItemFk IS NULL AND i.visible = 0 AND i.avalaible = 0 - AND IFNULL(i.sd, 0) = 0, FALSE, TRUE) filtret, + IF(cy.cItemFk IS NULL AND i.visible = 0 + AND i.avalaible = 0 AND (i.sd IS NULL OR i.sd = 0), + FALSE, + TRUE + ) filtret, IF(it.hasMinPrice, FORMAT(it.minPrice, 2), "") pvp, s.company_name FROM tmp.itemInventory i JOIN item it ON it.id = i.id - LEFT JOIN itemType tp ON tp.id = it.typeFk - LEFT JOIN worker w ON w.id = tp.workerFk + JOIN itemType tp ON tp.id = it.typeFk + JOIN worker w ON w.id = tp.workerFk LEFT JOIN buy b ON b.id = i.buy_id - LEFT JOIN entry e ON e.id = b.entryFk - LEFT JOIN origin o ON o.id = it.originFk + LEFT JOIN `entry` e ON e.id = b.entryFk + JOIN origin o ON o.id = it.originFk LEFT JOIN tLastYear ly ON ly.lItemFk = it.id LEFT JOIN tCurrentYear cy ON cy.cItemFk = it.id LEFT JOIN tTwoYearsAgo zy ON zy.tItemFk = it.id @@ -287,8 +287,8 @@ proc: BEGIN OR ly.lweek1 OR ly.lweek2 OR ly.lweek3 OR ly.lweek4 OR ly.lweek5 OR ly.lweek6 OR ly.lweek7 OR zy.vlweek1 OR zy.vlweek2 OR zy.vlweek3 OR zy.vlweek4 OR zy.vlweek5 OR zy.vlweek6 OR zy.vlweek7; - -- Elimina las tablas temporales creadas... - DROP TEMPORARY TABLE IF EXISTS tmp.itemInventory, + DROP TEMPORARY TABLE IF EXISTS + tmp.itemInventory, tTwoYearsAgo, tLastYear, tCurrentYear, From bbd948c6545a1af1ad3e7d80d87d961cdabbbd94 Mon Sep 17 00:00:00 2001 From: guillermo Date: Thu, 23 May 2024 09:47:14 +0200 Subject: [PATCH 63/70] refs #7440 Minor change --- .../vn/procedures/item_comparative.sql | 35 +++++++++---------- 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/db/routines/vn/procedures/item_comparative.sql b/db/routines/vn/procedures/item_comparative.sql index 430f847563..d429cf009a 100644 --- a/db/routines/vn/procedures/item_comparative.sql +++ b/db/routines/vn/procedures/item_comparative.sql @@ -10,20 +10,19 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_comparative`( ) proc: BEGIN /** -* Genera una tabla de comparativa de artículos por itemType/comprador/fecha. -* Los datos se calculan en función de los parámetros proporcionados. -* -* @param vDate La fecha para la cual se generará la comparativa. -* @param vDayRange El rango de días a considerar para la comparativa. -* @param vWarehouseFk El identificador del almacén para filtrar los artículos. -* @param vAvailableSince La fecha de disponibilidad desde la cual se consideran los artículos disponibles. -* @param vBuyerFk El identificador del comprador para filtrar los artículos. -* @param vIsFloramondo Indica si se deben incluir solo los artículos de Floramondo (opcional). -* @param vCountryFk El identificador del país. -* @param tmp.comparativeFilterType(filterFk INT ,itemTypeFk INT) -* @return tmp.comparative -*/ - + * Genera una tabla de comparativa de artículos por itemType/comprador/fecha. + * Los datos se calculan en función de los parámetros proporcionados. + * + * @param vDate La fecha para la cual se generará la comparativa. + * @param vDayRange El rango de días a considerar para la comparativa. + * @param vWarehouseFk El identificador del almacén para filtrar los artículos. + * @param vAvailableSince La fecha de disponibilidad desde la cual se consideran los artículos disponibles. + * @param vBuyerFk El identificador del comprador para filtrar los artículos. + * @param vIsFloramondo Indica si se deben incluir solo los artículos de Floramondo (opcional). + * @param vCountryFk El identificador del país. + * @param tmp.comparativeFilterType(filterFk INT ,itemTypeFk INT) + * @return tmp.comparative + */ DECLARE vDayRangeStart DATE; DECLARE vDayRangeEnd DATE; DECLARE w1, w2, w3, w4, w5, w6, w7 INT; @@ -150,14 +149,14 @@ proc: BEGIN SUM(IF(c.timePeriod = y7, c.price, 0)) lprice7 FROM tmp.itemInventory ai JOIN comparative c ON c.itemFk = ai.id - JOIN warehouse w on w.id = c.warehouseFk + JOIN warehouse w ON w.id = c.warehouseFk JOIN tTable wt ON c.timePeriod = wt.ly WHERE (vWarehouseFk IS NULL OR vWarehouseFk = c.warehouseFk) AND w.isComparative AND (vCountryFk IS NULL OR c.countryFk = vCountryFk) GROUP BY ai.id; - -- Genera una tabla con los datos de hace DOS años. + -- Genera una tabla con los datos de hace 2 años CREATE OR REPLACE TEMPORARY TABLE tTwoYearsAgo (KEY (tItemFk)) ENGINE = MEMORY @@ -178,7 +177,7 @@ proc: BEGIN SUM(IF(c.timePeriod = z7, c.price, 0)) vlprice7 FROM tmp.itemInventory ai JOIN comparative c ON c.itemFk = ai.id - JOIN warehouse w on w.id = c.warehouseFk + JOIN warehouse w ON w.id = c.warehouseFk JOIN tTable wt ON c.timePeriod = wt.zy WHERE (vWarehouseFk IS NULL OR vWarehouseFk = c.warehouseFk) AND w.isComparative @@ -229,7 +228,7 @@ proc: BEGIN ) t GROUP BY t.itemFk; - -- Genera la tabla con la comparativa. + -- Genera la tabla con la comparativa CREATE OR REPLACE TEMPORARY TABLE tmp.comparative ENGINE = MEMORY SELECT it.subName productor, From 86a6211cd813a9f4926878688c4de2c677ad875c Mon Sep 17 00:00:00 2001 From: pablone Date: Thu, 23 May 2024 12:23:31 +0200 Subject: [PATCH 64/70] fix: refs #7187 fix duplicate --- modules/worker/back/models/device-production-user.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/worker/back/models/device-production-user.js b/modules/worker/back/models/device-production-user.js index 692a804f08..8eead58e07 100644 --- a/modules/worker/back/models/device-production-user.js +++ b/modules/worker/back/models/device-production-user.js @@ -5,7 +5,7 @@ module.exports = Self => { return new UserError(`This PDA is already assigned to another user`); if (err.code === 'ER_SIGNAL_EXCEPTION' && err.sqlMessage === 'You can only have one active PDA') - return new UserError(`You can only have one active PDA`); + return new UserError(err.sqlMessage); return err; }); }; From 35ce259e5aa29e60536f8cdb44459b293c9b8d82 Mon Sep 17 00:00:00 2001 From: guillermo Date: Thu, 23 May 2024 14:26:11 +0200 Subject: [PATCH 65/70] feat: refs #7438 Added volume to item_valuateInventory --- .../vn/procedures/item_ValuateInventory.sql | 81 +++++++++---------- 1 file changed, 36 insertions(+), 45 deletions(-) diff --git a/db/routines/vn/procedures/item_ValuateInventory.sql b/db/routines/vn/procedures/item_ValuateInventory.sql index bfd96fa82c..137f766542 100644 --- a/db/routines/vn/procedures/item_ValuateInventory.sql +++ b/db/routines/vn/procedures/item_ValuateInventory.sql @@ -1,5 +1,7 @@ DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_ValuateInventory`(vDated DATE, vIsDetailed BOOLEAN) +CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_valuateInventory`( + vDated DATE +) BEGIN DECLARE vInventoried DATE; DECLARE vHasNotInventory BOOLEAN DEFAULT FALSE; @@ -38,13 +40,14 @@ BEGIN END IF; CREATE OR REPLACE TEMPORARY TABLE tInventory( - warehouseFk SMALLINT, - itemFk BIGINT, - quantity INT, - cost DOUBLE DEFAULT 0, - total DOUBLE DEFAULT 0, - warehouseInventory VARCHAR(20), - PRIMARY KEY (warehouseInventory, itemFk) USING HASH + warehouseFk SMALLINT, + itemFk BIGINT, + quantity INT, + volume DECIMAL(10,2), + cost DOUBLE DEFAULT 0, + total DOUBLE DEFAULT 0, + warehouseInventory VARCHAR(20), + PRIMARY KEY (warehouseInventory, itemFk) USING HASH ) ENGINE = MEMORY; @@ -183,7 +186,7 @@ BEGIN AND e.isConfirmed ON DUPLICATE KEY UPDATE tInventory.quantity = tInventory.quantity + (b.quantity); - CALL vn.buyUltimate(NULL, vDateDayEnd); + CALL buyUltimate(NULL, vDateDayEnd); UPDATE tInventory i JOIN tmp.buyUltimate bu ON i.warehouseFk = bu.warehouseFk AND i.itemFk = bu.itemFk @@ -192,43 +195,31 @@ BEGIN cost = IFNULL(b.buyingValue, 0) + IFNULL(b.packageValue, 0) + IFNULL(b.freightValue, 0) + IFNULL(b.comissionValue, 0) WHERE i.quantity; - DELETE FROM tInventory - WHERE quantity IS NULL OR NOT quantity; + DELETE FROM tInventory WHERE quantity IS NULL OR NOT quantity; - IF vIsDetailed THEN - SELECT ti.warehouseFk, - i.id itemFk, - i.longName, - i.size, - ti.quantity, - tp.name Tipo, - ic.name Reino, - ti.cost, - CAST(ti.total AS DECIMAL(10, 2)) total, - ti.warehouseInventory almacen - FROM tInventory ti - JOIN warehouse w ON w.id = warehouseFk - JOIN item i ON i.id = ti.itemFk - JOIN itemType tp ON tp.id = i.typeFk - JOIN itemCategory ic ON ic.id = tp.categoryFk - WHERE w.valuatedInventory - AND ti.total > 0 - ORDER BY ti.total DESC; - ELSE - SELECT i.warehouseInventory Almacen, - ic.name Reino, - CAST(i.total AS DECIMAL(10, 2)) Euros, - w.code Comprador, - it.id - FROM tInventory i - JOIN warehouse wh ON wh.id = warehouseFk - JOIN item it ON it.id = i.itemFk - JOIN itemType itp ON itp.id = it.typeFk - LEFT JOIN worker w ON w.id = itp.workerFk - JOIN itemCategory ic ON ic.id = itp.categoryFk - WHERE wh.valuatedInventory - AND i.total > 0; - END IF; + UPDATE tInventory i + JOIN itemCost ic ON ic.itemFk = i.itemFk + AND ic.warehouseFk = i.warehouseFk + SET i.volume = i.quantity * ic.cm3delivery / 1000000; + + SELECT ti.warehouseFk, + i.id, + i.longName, + i.size, + ti.quantity, + ti.volume, + tp.name itemTypeName, + ic.name itemCategoryName, + ti.cost, + ti.total, + ti.warehouseInventory + FROM tInventory ti + JOIN warehouse w ON w.id = warehouseFk + JOIN item i ON i.id = ti.itemFk + JOIN itemType tp ON tp.id = i.typeFk + JOIN itemCategory ic ON ic.id = tp.categoryFk + WHERE w.valuatedInventory + AND ti.total > 0; DROP TEMPORARY TABLE tmp.buyUltimate, From ee010a3bb3ae6b28eda418dcd503b2085703e0ae Mon Sep 17 00:00:00 2001 From: carlossa Date: Thu, 23 May 2024 14:44:47 +0200 Subject: [PATCH 66/70] refs #7296 fix pr errors, trad --- loopback/locale/es.json | 3 ++- modules/client/back/methods/client/createAddress.js | 8 ++------ 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/loopback/locale/es.json b/loopback/locale/es.json index 090cfe0594..8586301fb0 100644 --- a/loopback/locale/es.json +++ b/loopback/locale/es.json @@ -359,5 +359,6 @@ "It was not able to create the invoice": "No se pudo crear la factura", "This PDA is already assigned to another user": "This PDA is already assigned to another user", "ticketCommercial": "El ticket {{ ticket }} para el vendedor {{ salesMan }} está en preparación. (mensaje generado automáticamente)", - "Incoterms and Customs agent are required for a non UEE member": "Se requieren Incoterms y agente de aduanas para un no miembro de la UEE" + "Incoterms and Customs agent are required for a non UEE member": "Se requieren Incoterms y agente de aduanas para un no miembro de la UEE", + "Cannot add holidays on this day": "No se pueden agregar vacaciones en este día" } diff --git a/modules/client/back/methods/client/createAddress.js b/modules/client/back/methods/client/createAddress.js index cb55025ceb..2709632cb9 100644 --- a/modules/client/back/methods/client/createAddress.js +++ b/modules/client/back/methods/client/createAddress.js @@ -92,12 +92,8 @@ module.exports = function(Self) { }, myOptions); const isUeeMember = province.country().isUeeMember; - if (!isUeeMember && (!args.incotermsFk || !args.customsAgentFk)) { - if (!args.incotermsFk) - throw new UserError(`Incoterms and Customs agent are required for a non UEE member`); - else - throw new UserError(`Customs agent is required for a non UEE member`); - } + if (!isUeeMember && (!args.incotermsFk || !args.customsAgentFk)) + throw new UserError(`Incoterms and Customs agent are required for a non UEE member`); delete args.ctx; // Remove unwanted properties const newAddress = await models.Address.create(args, myOptions); From ee17ea4842ef5bf7f042d3eabc565f456080a54d Mon Sep 17 00:00:00 2001 From: pablone Date: Thu, 23 May 2024 21:38:02 +0200 Subject: [PATCH 67/70] feat: refs #6021 add new field --- db/routines/floranet/procedures/order_put.sql | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/db/routines/floranet/procedures/order_put.sql b/db/routines/floranet/procedures/order_put.sql index 979588f8ff..c5eb714728 100644 --- a/db/routines/floranet/procedures/order_put.sql +++ b/db/routines/floranet/procedures/order_put.sql @@ -7,7 +7,7 @@ BEGIN * * @param vJsonData The order data in json format */ - INSERT INTO `order` + REPLACE `order` SET catalogueFk = JSON_UNQUOTE(JSON_EXTRACT(vJsonData, '$.customer.customerData.products[0].id')), customerName = JSON_UNQUOTE(JSON_EXTRACT(vJsonData, '$.customer.customerData.customerName')), email = JSON_UNQUOTE(JSON_EXTRACT(vJsonData, '$.customer.customerData.email')), @@ -15,7 +15,8 @@ BEGIN message= JSON_UNQUOTE(JSON_EXTRACT(vJsonData, '$.customer.customerData.message')), deliveryName = JSON_UNQUOTE(JSON_EXTRACT(vJsonData, '$.customer.customerData.deliveryName')), address = JSON_UNQUOTE(JSON_EXTRACT(vJsonData, '$.customer.customerData.address')), - deliveryPhone = JSON_UNQUOTE(JSON_EXTRACT(vJsonData, '$.customer.customerData.deliveryPhone')); + deliveryPhone = JSON_UNQUOTE(JSON_EXTRACT(vJsonData, '$.customer.customerData.deliveryPhone')), + observations = JSON_UNQUOTE(JSON_EXTRACT(vJsonData, '$.customer.customerData.observations')); SELECT LAST_INSERT_ID() orderFk; END$$ From 2fe279ed47f3a54dcfad9e9b44865a4f7abd82e0 Mon Sep 17 00:00:00 2001 From: guillermo Date: Fri, 24 May 2024 07:20:27 +0200 Subject: [PATCH 68/70] feat: refs #7438 Requested changes and little changes --- ...nventory.sql => item_valuateInventory.sql} | 34 +++++++------------ 1 file changed, 13 insertions(+), 21 deletions(-) rename db/routines/vn/procedures/{item_ValuateInventory.sql => item_valuateInventory.sql} (89%) diff --git a/db/routines/vn/procedures/item_ValuateInventory.sql b/db/routines/vn/procedures/item_valuateInventory.sql similarity index 89% rename from db/routines/vn/procedures/item_ValuateInventory.sql rename to db/routines/vn/procedures/item_valuateInventory.sql index 137f766542..18aefdf7b9 100644 --- a/db/routines/vn/procedures/item_ValuateInventory.sql +++ b/db/routines/vn/procedures/item_valuateInventory.sql @@ -17,8 +17,7 @@ BEGIN SELECT tr.landed INTO vInventoried FROM travel tr JOIN `entry` e ON e.travelFk = tr.id - JOIN entryConfig ec - WHERE landed <= vDateDayEnd + WHERE tr.landed <= vDateDayEnd AND e.supplierFk = vInventorySupplierFk ORDER BY tr.landed DESC LIMIT 1; @@ -29,8 +28,7 @@ BEGIN SELECT landed INTO vInventoryClone FROM travel tr JOIN `entry` e ON e.travelFk = tr.id - JOIN entryConfig ec - WHERE landed >= vDated + WHERE tr.landed >= vDated AND e.supplierFk = vInventorySupplierFk ORDER BY landed ASC LIMIT 1; @@ -63,9 +61,8 @@ BEGIN JOIN `entry` e ON e.id = b.entryFk JOIN travel tr ON tr.id = e.travelFk JOIN itemType t ON t.id = i.typeFk - JOIN warehouse w ON w.id = warehouseInFk - JOIN entryConfig ec - WHERE landed = vDateDayEnd + JOIN warehouse w ON w.id = tr.warehouseInFk + WHERE tr.landed = vDateDayEnd AND e.supplierFk = vInventorySupplierFk AND w.valuatedInventory AND t.isInventory @@ -81,9 +78,8 @@ BEGIN JOIN `entry` e ON e.id = b.entryFk JOIN travel tr ON tr.id = e.travelFk JOIN itemType t ON t.id = i.typeFk - JOIN warehouse w ON w.id = warehouseInFk - JOIN entryConfig ec - WHERE landed = vInventoried + JOIN warehouse w ON w.id = tr.warehouseInFk + WHERE tr.landed = vInventoried AND e.supplierFk = vInventorySupplierFk AND w.valuatedInventory AND t.isInventory @@ -102,7 +98,6 @@ BEGIN JOIN travel tr ON tr.id = e.travelFk JOIN itemType t ON t.id = i.typeFk JOIN warehouse w ON w.id = tr.warehouseInFk - JOIN entryConfig ec WHERE tr.landed BETWEEN vInventoried AND vDateDayEnd AND IF(tr.landed = util.VN_CURDATE(), tr.isReceived, TRUE) AND NOT e.isRaid @@ -188,19 +183,16 @@ BEGIN CALL buyUltimate(NULL, vDateDayEnd); - UPDATE tInventory i - JOIN tmp.buyUltimate bu ON i.warehouseFk = bu.warehouseFk AND i.itemFk = bu.itemFk - JOIN buy b ON b.id = bu.buyFk - SET total = i.quantity * (IFNULL(b.buyingValue, 0) + IFNULL(b.packageValue, 0) + IFNULL(b.freightValue, 0) + IFNULL(b.comissionValue, 0)), - cost = IFNULL(b.buyingValue, 0) + IFNULL(b.packageValue, 0) + IFNULL(b.freightValue, 0) + IFNULL(b.comissionValue, 0) - WHERE i.quantity; - DELETE FROM tInventory WHERE quantity IS NULL OR NOT quantity; UPDATE tInventory i - JOIN itemCost ic ON ic.itemFk = i.itemFk - AND ic.warehouseFk = i.warehouseFk - SET i.volume = i.quantity * ic.cm3delivery / 1000000; + JOIN tmp.buyUltimate bu ON i.warehouseFk = bu.warehouseFk AND i.itemFk = bu.itemFk + JOIN buy b ON b.id = bu.buyFk + LEFT JOIN itemCost ic ON ic.itemFk = i.itemFk + AND ic.warehouseFk = i.warehouseFk + SET i.total = i.quantity * (IFNULL(b.buyingValue, 0) + IFNULL(b.packageValue, 0) + IFNULL(b.freightValue, 0) + IFNULL(b.comissionValue, 0)), + i.cost = IFNULL(b.buyingValue, 0) + IFNULL(b.packageValue, 0) + IFNULL(b.freightValue, 0) + IFNULL(b.comissionValue, 0), + i.volume = i.quantity * ic.cm3delivery / 1000000; SELECT ti.warehouseFk, i.id, From 4c3428da552415d30f615232f2015045f22b6636 Mon Sep 17 00:00:00 2001 From: carlossa Date: Fri, 24 May 2024 08:21:28 +0200 Subject: [PATCH 69/70] refs #7292 add traduction --- loopback/locale/es.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/loopback/locale/es.json b/loopback/locale/es.json index d95ba6d704..fff7ebf70e 100644 --- a/loopback/locale/es.json +++ b/loopback/locale/es.json @@ -359,5 +359,6 @@ "It was not able to create the invoice": "No se pudo crear la factura", "ticketCommercial": "El ticket {{ ticket }} para el vendedor {{ salesMan }} está en preparación. (mensaje generado automáticamente)", "This PDA is already assigned to another user": "Este PDA ya está asignado a otro usuario", - "You can only have one PDA": "Solo puedes tener un PDA" + "You can only have one PDA": "Solo puedes tener un PDA", + "Incoterms and Customs agent are required for a non UEE member": "Se requieren Incoterms y agente de aduanas para un no miembro de la UEE" } From a435d88e55d1218ea7e1cdbfb6d316d21f468f71 Mon Sep 17 00:00:00 2001 From: carlossa Date: Fri, 24 May 2024 08:37:46 +0200 Subject: [PATCH 70/70] refs #7292 fix tback --- modules/client/back/methods/client/specs/createAddress.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/client/back/methods/client/specs/createAddress.spec.js b/modules/client/back/methods/client/specs/createAddress.spec.js index bd41d9c506..ae179cf6cc 100644 --- a/modules/client/back/methods/client/specs/createAddress.spec.js +++ b/modules/client/back/methods/client/specs/createAddress.spec.js @@ -81,7 +81,7 @@ describe('Address createAddress', () => { } expect(error).toBeDefined(); - expect(error.message).toEqual('Customs agent is required for a non UEE member'); + expect(error.message).toEqual('Incoterms and Customs agent are required for a non UEE member'); }); it('should create a new address and set as a client default address', async() => {