From b95db2eff134044ae5ee83bd91feefed86c7b75e Mon Sep 17 00:00:00 2001 From: Pako Date: Wed, 12 Feb 2025 13:45:07 +0100 Subject: [PATCH 1/3] feat(productionControl and collection_new): refs #8575 new itempackingtype a Refs: #8575 --- db/routines/vn/procedures/collection_new.sql | 4 +++- db/routines/vn/procedures/productionControl.sql | 8 +++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/db/routines/vn/procedures/collection_new.sql b/db/routines/vn/procedures/collection_new.sql index 84133d36eb..42ab85dfdb 100644 --- a/db/routines/vn/procedures/collection_new.sql +++ b/db/routines/vn/procedures/collection_new.sql @@ -160,9 +160,11 @@ BEGIN OR (NOT s.isPreparable AND NOT s.isPrintable) OR pb.collectionH IS NOT NULL OR pb.collectionV IS NOT NULL + OR pb.collectionA IS NOT NULL OR pb.collectionN IS NOT NULL - OR (NOT pb.H AND pb.V > 0 AND vItemPackingTypeFk = 'H') + OR (NOT pb.H AND pb.V + pb.A > 0 AND vItemPackingTypeFk = 'H') OR (NOT pb.V AND vItemPackingTypeFk = 'V') + OR (NOT pb.A AND vItemPackingTypeFk = 'A') OR (pc.isPreviousPreparationRequired AND pb.previousWithoutParking) OR LENGTH(pb.problem) OR pb.lines > vLinesLimit diff --git a/db/routines/vn/procedures/productionControl.sql b/db/routines/vn/procedures/productionControl.sql index 605c06dba7..e23232b8b0 100644 --- a/db/routines/vn/procedures/productionControl.sql +++ b/db/routines/vn/procedures/productionControl.sql @@ -91,6 +91,7 @@ proc: BEGIN pk.code parking, 0 H, 0 V, + 0 A, 0 N, st.isOk, ag.isOwn, @@ -138,6 +139,7 @@ proc: BEGIN CHANGE COLUMN `problem` `problem` VARCHAR(255), ADD COLUMN `collectionH` INT, ADD COLUMN `collectionV` INT, + ADD COLUMN `collectionA` INT, ADD COLUMN `collectionN` INT; -- Clientes Nuevos o Recuperados @@ -178,12 +180,14 @@ proc: BEGIN ENGINE = MEMORY SELECT ticketFk, SUM(sub.H) H, - SUM(sub.V) V, + SUM(sub.V) V, + SUM(sub.A) A, SUM(sub.N) N FROM ( SELECT t.ticketFk, SUM(i.itemPackingTypeFk = 'H') H, SUM(i.itemPackingTypeFk = 'V') V, + SUM(i.itemPackingTypeFk = 'A') A, SUM(i.itemPackingTypeFk IS NULL) N FROM tmp.productionTicket t JOIN sale s ON s.ticketFk = t.ticketFk @@ -196,6 +200,7 @@ proc: BEGIN JOIN tItemPackingType ti ON ti.ticketFk = pb.ticketFk SET pb.H = ti.H, pb.V = ti.V, + pb.A = ti.A, pb.N = ti.N; -- Colecciones segun tipo de encajado @@ -203,6 +208,7 @@ proc: BEGIN JOIN ticketCollection tc ON pb.ticketFk = tc.ticketFk SET pb.collectionH = IF(pb.H, tc.collectionFk, NULL), pb.collectionV = IF(pb.V, tc.collectionFk, NULL), + pb.collectionA = IF(pb.A, tc.collectionFk, NULL), pb.collectionN = IF(pb.N, tc.collectionFk, NULL); -- Previa pendiente From 514ddf1045a0eddc857fb834ce1f58daa2f8f9ef Mon Sep 17 00:00:00 2001 From: pablone Date: Wed, 12 Feb 2025 19:40:22 +0100 Subject: [PATCH 2/3] feat: refs #6897 add search method and enhance ACL permissions for Entry model --- .../11399-bronzeOak/00-firstScript.sql | 78 ++++++++++++++++++- modules/item/back/methods/item/search.js | 38 +++++++++ modules/item/back/models/item.js | 1 + 3 files changed, 116 insertions(+), 1 deletion(-) create mode 100644 modules/item/back/methods/item/search.js diff --git a/db/versions/11399-bronzeOak/00-firstScript.sql b/db/versions/11399-bronzeOak/00-firstScript.sql index e37efe8e61..513cc96c5b 100644 --- a/db/versions/11399-bronzeOak/00-firstScript.sql +++ b/db/versions/11399-bronzeOak/00-firstScript.sql @@ -1,6 +1,7 @@ INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId) VALUES ('Entry','getBuyList','READ','ALLOW','ROLE','buyer'), ('Entry','getBuyUltimate','READ','ALLOW','ROLE','buyer'), + ('Entry','search','READ','ALLOW','ROLE','buyer'), ('Entry','create','WRITE','ALLOW','ROLE','buyer'), ('Entry','cloneEntry','WRITE','ALLOW','ROLE','buyer'), ('Entry','deleteEntry','WRITE','ALLOW','ROLE','buyer'), @@ -11,4 +12,79 @@ INSERT INTO salix.ACL (model,property,accessType,permission,principalType,princi ALTER TABLE vn.ink ADD IF NOT EXISTS hexJson TEXT NOT NULL; UPDATE vn.ink - SET hexJson = CONCAT('{"value": ["',hex,'"]}') + SET hexJson = CONCAT('{"value": ["',hex,'"]}'); + +UPDATE vn.ink +SET hexJson = CASE `name` + WHEN 'Blanco/Naranja' THEN '{"value": ["FFFFFF", "FFA500"]}' + WHEN 'Sin especificar' THEN '{"value": ["808080"]}' + WHEN '2 Colores' THEN '{"value": ["000000", "FFFFFF"]}' + WHEN 'Amarillo/Marrón' THEN '{"value": ["FFFF00", "8B4513"]}' + WHEN 'Amarillo/Naranja' THEN '{"value": ["FFFF00", "FFA500"]}' + WHEN 'Rosa/Blanco/Amarillo' THEN '{"value": ["FFC0CB", "FFFFFF", "FFFF00"]}' + WHEN 'Rosa/Amarillo' THEN '{"value": ["FFC0CB", "FFFF00"]}' + WHEN 'Antracita' THEN '{"value": ["2F2F2F"]}' + WHEN 'Azul/Amarillo' THEN '{"value": ["0000FF", "FFFF00"]}' + WHEN 'Azul Claro' THEN '{"value": ["ADD8E6"]}' + WHEN 'Azul/Marron' THEN '{"value": ["0000FF", "8B4513"]}' + WHEN 'Azul/Verde' THEN '{"value": ["0000FF", "008000"]}' + WHEN 'Blanco/Amarillo' THEN '{"value": ["FFFFFF", "FFFF00"]}' + WHEN 'Blaugrana' THEN '{"value": ["A50044", "004D98"]}' + WHEN 'Blanco/Negro' THEN '{"value": ["FFFFFF", "000000"]}' + WHEN 'Blanco/Verde' THEN '{"value": ["FFFFFF", "008000"]}' + WHEN 'Blanco/Azul' THEN '{"value": ["FFFFFF", "0000FF"]}' + WHEN 'Blanco/Rosa' THEN '{"value": ["FFFFFF", "FFC0CB"]}' + WHEN 'Cognac/Verde' THEN '{"value": ["9A463D", "008000"]}' + WHEN 'Champagne/Verde' THEN '{"value": ["F7E7CE", "008000"]}' + WHEN 'Camuflaje' THEN '{"value": ["6B8E23", "556B2F", "8B4513"]}' + WHEN 'Crema/Rosa' THEN '{"value": ["FFFDD0", "FFC0CB"]}' + WHEN 'Fucsia/Amarillo' THEN '{"value": ["FF00FF", "FFFF00"]}' + WHEN 'Fucsia/Blanco' THEN '{"value": ["FF00FF", "FFFFFF"]}' + WHEN 'Fucsia/Crema' THEN '{"value": ["FF00FF", "FFFDD0"]}' + WHEN 'Fucsia/Rosa' THEN '{"value": ["FF00FF", "FFC0CB"]}' + WHEN 'Fucsia/Verde' THEN '{"value": ["FF00FF", "008000"]}' + WHEN 'Granate/Blanco' THEN '{"value": ["800000", "FFFFFF"]}' + WHEN 'Gris Lila' THEN '{"value": ["808080", "C8A2C8"]}' + WHEN 'Lavanda/Amarillo' THEN '{"value": ["E6E6FA", "FFFF00"]}' + WHEN 'Lavanda/Gris' THEN '{"value": ["E6E6FA", "808080"]}' + WHEN 'Lividum' THEN '{"value": ["702963"]}' + WHEN 'Morado/Amarillo' THEN '{"value": ["800080", "FFFF00"]}' + WHEN 'Marrón/Blanco' THEN '{"value": ["8B4513", "FFFFFF"]}' + WHEN 'Marron/Gris' THEN '{"value": ["8B4513", "808080"]}' + WHEN 'Marron/Negro' THEN '{"value": ["8B4513", "000000"]}' + WHEN 'Marrón/Verde' THEN '{"value": ["8B4513", "008000"]}' + WHEN 'Matizado' THEN '{"value": ["D3D3D3", "808080", "FFFFFF"]}' + WHEN 'Mixto' THEN '{"value": ["FF0000", "0000FF", "008000", "FFFF00"]}' + WHEN 'Marrón Oscuro' THEN '{"value": ["654321"]}' + WHEN 'Naranja/Marron' THEN '{"value": ["FFA500", "8B4513"]}' + WHEN 'Naranja/Rosa' THEN '{"value": ["FFA500", "FFC0CB"]}' + WHEN 'Ocre/Burgundi' THEN '{"value": ["CC7722", "800020"]}' + WHEN 'Oro/Plata' THEN '{"value": ["FFD700", "C0C0C0"]}' + WHEN 'Oro/Negro' THEN '{"value": ["FFD700", "000000"]}' + WHEN 'Oro/Verde' THEN '{"value": ["FFD700", "008000"]}' + WHEN 'Purpura/Blanco' THEN '{"value": ["800080", "FFFFFF"]}' + WHEN 'Purpura/Rosa' THEN '{"value": ["800080", "FFC0CB"]}' + WHEN 'Pastel' THEN '{"value": ["FFB6C1", "87CEFA", "98FB98"]}' + WHEN 'Plata' THEN '{"value": ["C0C0C0"]}' + WHEN 'Plata/Verde' THEN '{"value": ["C0C0C0", "008000"]}' + WHEN 'Rojo/Amarillo' THEN '{"value": ["FF0000", "FFFF00"]}' + WHEN 'Rojo/Blanco' THEN '{"value": ["FF0000", "FFFFFF"]}' + WHEN 'Rojo/Naranja' THEN '{"value": ["FF0000", "FFA500"]}' + WHEN 'Rojo/Oro' THEN '{"value": ["FF0000", "FFD700"]}' + WHEN 'Rojo/Verde' THEN '{"value": ["FF0000", "008000"]}' + WHEN 'Rosa/Lila' THEN '{"value": ["FFC0CB", "C8A2C8"]}' + WHEN 'Rosa/Naranja' THEN '{"value": ["FFC0CB", "FFA500"]}' + WHEN 'Rojo/Rosa' THEN '{"value": ["FF0000", "FFC0CB"]}' + WHEN 'Rosa empolvado' THEN '{"value": ["E6B8AF"]}' + WHEN 'Rosa/Verde' THEN '{"value": ["FFC0CB", "008000"]}' + WHEN 'Topo/Blanco' THEN '{"value": ["8B8589", "FFFFFF"]}' + WHEN 'Topo' THEN '{"value": ["8B8589"]}' + WHEN 'Transparente' THEN '{"value": ["00000000"]}' + WHEN 'Verde/Amarillo' THEN '{"value": ["008000", "FFFF00"]}' + WHEN 'Verde/Negro' THEN '{"value": ["008000", "000000"]}' + WHEN 'Variado' THEN '{"value": ["FF0000", "0000FF", "008000", "FFFF00", "FFA500"]}' + WHEN 'Verde Claro/Morado' THEN '{"value": ["90EE90", "800080"]}' + WHEN 'Verde/Lila' THEN '{"value": ["008000", "C8A2C8"]}' + WHEN 'Vaquero Neon' THEN '{"value": ["1560BD", "FFFF00"]}' + ELSE hexJson +END; diff --git a/modules/item/back/methods/item/search.js b/modules/item/back/methods/item/search.js new file mode 100644 index 0000000000..447e0fadd4 --- /dev/null +++ b/modules/item/back/methods/item/search.js @@ -0,0 +1,38 @@ +const ParameterizedSQL = require('loopback-connector').ParameterizedSQL; + +module.exports = Self => { + Self.remoteMethodCtx('search', { + description: 'Returns an array of search results for a specified item', + accepts: [{ + arg: 'filter', + type: 'object', + description: 'Filter to define conditions and paginate the data.', + required: true + }], + returns: { + type: ['object'], + root: true + }, + http: { + path: `/search`, + verb: 'GET' + } + }); + + Self.search = async(ctx, filter) => { + const conn = Self.dataSource.connector; + + const stmt = new ParameterizedSQL(` + SELECT * + FROM( + SELECT i.id, i.name, i.size, p.name producerName + FROM item i + LEFT JOIN producer p ON p.id = i.producerFk + ) sub + `); + + stmt.merge(conn.makeSuffix(filter)); + + return conn.executeStmt(stmt); + }; +}; diff --git a/modules/item/back/models/item.js b/modules/item/back/models/item.js index db2f565518..5ecd174057 100644 --- a/modules/item/back/models/item.js +++ b/modules/item/back/models/item.js @@ -18,6 +18,7 @@ module.exports = Self => { require('../methods/item/buyerWasteEmail')(Self); require('../methods/item/setVisibleDiscard')(Self); require('../methods/item/get')(Self); + require('../methods/item/search')(Self); Self.validatesPresenceOf('originFk', {message: 'Cannot be blank'}); From 3a1849326bce234f237d087231ff90438e2537df Mon Sep 17 00:00:00 2001 From: Pako Date: Thu, 13 Feb 2025 08:41:13 +0100 Subject: [PATCH 3/3] fix(item_getBalance): refs #8408 availabled field prevails over landed Refs: #8408 --- db/routines/vn/procedures/item_getBalance.sql | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/db/routines/vn/procedures/item_getBalance.sql b/db/routines/vn/procedures/item_getBalance.sql index c4974491cc..4c425e20be 100644 --- a/db/routines/vn/procedures/item_getBalance.sql +++ b/db/routines/vn/procedures/item_getBalance.sql @@ -30,7 +30,7 @@ BEGIN WITH entriesIn AS ( SELECT 'entry' originType, e.id originId, - tr.landed shipped, + IFNULL(tr.availabled, tr.landed) shipped, b.quantity `in`, NULL `out`, st.alertLevel , @@ -54,7 +54,7 @@ BEGIN OR (util.VN_CURDATE() AND tr.isReceived), 'DELIVERED', 'FREE') - WHERE tr.landed >= vDateInventory + WHERE IFNULL(tr.availabled, tr.landed) >= vDateInventory AND tr.warehouseInFk = vWarehouseFk AND (s.id <> vSupplierInventoryFk OR vDated IS NULL) AND b.itemFk = vItemFk @@ -99,7 +99,7 @@ BEGIN ), sales AS ( WITH itemSales AS ( - SELECT DATE(t.shipped) shipped, + SELECT DATE(t.shipped) + INTERVAL HOUR(z.`hour`) HOUR shipped, s.quantity, st2.alertLevel, st2.name, @@ -114,6 +114,7 @@ BEGIN cb.claimFk FROM vn.sale s JOIN vn.ticket t ON t.id = s.ticketFk + JOIN vn.`zone` z ON z.id = t.zoneFk LEFT JOIN vn.ticketState ts ON ts.ticketFk = t.id LEFT JOIN vn.state st ON st.code = ts.code JOIN vn.client c ON c.id = t.clientFk @@ -189,14 +190,15 @@ BEGIN SELECT * FROM sales UNION ALL SELECT * FROM orders - ORDER BY shipped, + ORDER BY DATE(shipped), (inventorySupplierFk = entityId) DESC, alertLevel DESC, isTicket, `order` DESC, isPicked DESC, `in` DESC, - `out` DESC; + `out` DESC, + shipped; IF vDated IS NULL THEN SET @a := 0; @@ -205,7 +207,7 @@ BEGIN SELECT t.originType, t.originId, - DATE(@shipped:= t.shipped) shipped, + @shipped:= t.shipped, t.alertLevel, t.stateName, t.reference,