From 7496a419ccdba7e49a97c428bc3195ad554b1374 Mon Sep 17 00:00:00 2001 From: guillermo Date: Fri, 5 Apr 2024 12:29:16 +0200 Subject: [PATCH 1/9] feat: refs #4948 Added ticket_doSelfConsumptionPackaging proc & event --- .../ticket_doSelfConsumptionPackaging.sql | 8 ++++ .../ticket_doSelfConsumptionPackaging.sql | 39 +++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 db/routines/vn/events/ticket_doSelfConsumptionPackaging.sql create mode 100644 db/routines/vn/procedures/ticket_doSelfConsumptionPackaging.sql diff --git a/db/routines/vn/events/ticket_doSelfConsumptionPackaging.sql b/db/routines/vn/events/ticket_doSelfConsumptionPackaging.sql new file mode 100644 index 0000000000..0876a38aa7 --- /dev/null +++ b/db/routines/vn/events/ticket_doSelfConsumptionPackaging.sql @@ -0,0 +1,8 @@ +DELIMITER $$ +CREATE OR REPLACE DEFINER=`root`@`localhost` EVENT `vn`.`ticket_doSelfConsumptionPackaging` + ON SCHEDULE EVERY 1 DAY + STARTS '2024-04-19 04:05:00.000' + ON COMPLETION PRESERVE + ENABLE +DO CALL ticket_doSelfConsumptionPackaging(util.yesterday(), util.yesterday())$$ +DELIMITER ; diff --git a/db/routines/vn/procedures/ticket_doSelfConsumptionPackaging.sql b/db/routines/vn/procedures/ticket_doSelfConsumptionPackaging.sql new file mode 100644 index 0000000000..0866118f3e --- /dev/null +++ b/db/routines/vn/procedures/ticket_doSelfConsumptionPackaging.sql @@ -0,0 +1,39 @@ +DELIMITER $$ +CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_doSelfConsumptionPackaging`( + vDateFrom DATE, + vDateTo DATE +) +BEGIN +/** +* Crea un ticket de autoconsumo de un rango determinado de fechas. +* +* @param vDateFrom Fecha desde +* @param vDateTo Fecha hasta +*/ + DECLARE vClientFk INT; + DECLARE vAddressFk INT; + DECLARE vTicketFk INT; + DECLARE vWarehouseFk INT; + + SELECT clientSelfConsumptionFk, addressSelfConsumptionFk + INTO vClientFk, vAddressFk + FROM productionConfig; + + SELECT id INTO vWarehouseFk + FROM warehouse + WHERE code = 'alg'; + + INSERT INTO ticket(clientFk, warehouseFk, shipped, nickname, addressFk) + SELECT vClientFk, vWarehouseFk, vDateFrom, 'AUTOCONSUMO CAJAS', vAddressFk; + + SET vTicketFk = LAST_INSERT_ID(); + + INSERT INTO sale(itemFk, ticketFk, concept, quantity) + SELECT i.id, vTicketFk, i.name, COUNT(*) + FROM expedition e + JOIN packaging p ON p.id = e.packagingFk + JOIN item i ON i.id = p.itemFk + WHERE e.created BETWEEN vDateFrom AND util.dayEnd(vDateTo) + GROUP BY e.packagingFk; +END$$ +DELIMITER ; -- 2.40.1 From bdc202b14521a6230b14d51e4aa901d0698fb110 Mon Sep 17 00:00:00 2001 From: guillermo Date: Fri, 5 Apr 2024 12:36:08 +0200 Subject: [PATCH 2/9] feat: refs #4948 Minor change --- .../ticket_doSelfConsumptionPackaging.sql | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/db/routines/vn/procedures/ticket_doSelfConsumptionPackaging.sql b/db/routines/vn/procedures/ticket_doSelfConsumptionPackaging.sql index 0866118f3e..4f2dc14012 100644 --- a/db/routines/vn/procedures/ticket_doSelfConsumptionPackaging.sql +++ b/db/routines/vn/procedures/ticket_doSelfConsumptionPackaging.sql @@ -15,16 +15,13 @@ BEGIN DECLARE vTicketFk INT; DECLARE vWarehouseFk INT; - SELECT clientSelfConsumptionFk, addressSelfConsumptionFk - INTO vClientFk, vAddressFk - FROM productionConfig; - - SELECT id INTO vWarehouseFk - FROM warehouse - WHERE code = 'alg'; + SELECT pc.clientSelfConsumptionFk, pc.addressSelfConsumptionFk, w.id + INTO vClientFk, vAddressFk, vWarehouseFk + FROM productionConfig pc + JOIN warehouse w ON w.code = 'alg'; INSERT INTO ticket(clientFk, warehouseFk, shipped, nickname, addressFk) - SELECT vClientFk, vWarehouseFk, vDateFrom, 'AUTOCONSUMO CAJAS', vAddressFk; + SELECT vClientFk, vWarehouseFk, vDateFrom, 'CAJAS AUTOCONSUMO', vAddressFk; SET vTicketFk = LAST_INSERT_ID(); -- 2.40.1 From 2e482d85ad81177e003a4e88f9912d31f4462179 Mon Sep 17 00:00:00 2001 From: guillermo Date: Tue, 29 Oct 2024 14:25:06 +0100 Subject: [PATCH 3/9] feat: refs #4948 Version expedition_doSelfConsumptionPackaging --- .../ticket_doSelfConsumptionPackaging.sql | 8 --- .../ticket_doSelfConsumptionPackaging.sql | 69 +++++++++++++------ 2 files changed, 48 insertions(+), 29 deletions(-) delete mode 100644 db/routines/vn/events/ticket_doSelfConsumptionPackaging.sql diff --git a/db/routines/vn/events/ticket_doSelfConsumptionPackaging.sql b/db/routines/vn/events/ticket_doSelfConsumptionPackaging.sql deleted file mode 100644 index 0876a38aa7..0000000000 --- a/db/routines/vn/events/ticket_doSelfConsumptionPackaging.sql +++ /dev/null @@ -1,8 +0,0 @@ -DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` EVENT `vn`.`ticket_doSelfConsumptionPackaging` - ON SCHEDULE EVERY 1 DAY - STARTS '2024-04-19 04:05:00.000' - ON COMPLETION PRESERVE - ENABLE -DO CALL ticket_doSelfConsumptionPackaging(util.yesterday(), util.yesterday())$$ -DELIMITER ; diff --git a/db/routines/vn/procedures/ticket_doSelfConsumptionPackaging.sql b/db/routines/vn/procedures/ticket_doSelfConsumptionPackaging.sql index 4f2dc14012..4c7edd49ce 100644 --- a/db/routines/vn/procedures/ticket_doSelfConsumptionPackaging.sql +++ b/db/routines/vn/procedures/ticket_doSelfConsumptionPackaging.sql @@ -1,36 +1,63 @@ DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_doSelfConsumptionPackaging`( - vDateFrom DATE, - vDateTo DATE +CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`expedition_doSelfConsumptionPackaging`( + vSelf DATE, ) BEGIN /** -* Crea un ticket de autoconsumo de un rango determinado de fechas. +* Comprueba si existe un ticket de autoconsumo ese mismo día +* si no lo está lo crea, y añade la caja utilizada. * -* @param vDateFrom Fecha desde -* @param vDateTo Fecha hasta +* @param vSelf Id de expedición */ + DECLARE vCurdate DATE; DECLARE vClientFk INT; DECLARE vAddressFk INT; DECLARE vTicketFk INT; - DECLARE vWarehouseFk INT; + DECLARE vItemFk INT; + DECLARE vItemName VARCHAR(50); + DECLARE vExists BOOL; - SELECT pc.clientSelfConsumptionFk, pc.addressSelfConsumptionFk, w.id - INTO vClientFk, vAddressFk, vWarehouseFk - FROM productionConfig pc - JOIN warehouse w ON w.code = 'alg'; + SET vCurdate = util.VN_CURDATE(); - INSERT INTO ticket(clientFk, warehouseFk, shipped, nickname, addressFk) - SELECT vClientFk, vWarehouseFk, vDateFrom, 'CAJAS AUTOCONSUMO', vAddressFk; + SELECT clientSelfConsumptionFk, addressSelfConsumptionFk + INTO vClientFk, vAddressFk + FROM productionConfig; - SET vTicketFk = LAST_INSERT_ID(); + IF vClientFk IS NULL OR vAddressFk IS NULL THEN + CALL util.throw('Some config parameters are not set'); + END IF; - INSERT INTO sale(itemFk, ticketFk, concept, quantity) - SELECT i.id, vTicketFk, i.name, COUNT(*) - FROM expedition e - JOIN packaging p ON p.id = e.packagingFk - JOIN item i ON i.id = p.itemFk - WHERE e.created BETWEEN vDateFrom AND util.dayEnd(vDateTo) - GROUP BY e.packagingFk; + SELECT i.id, t.warehouseFk, i.name + INTO vItemFk, vWarehouseFk, vItemName + FROM expedition e + JOIN packaging p ON p.id = e.packagingFk + JOIN item i ON i.id = p.itemFk + JOIN ticket t ON t.id = e.ticketFk + WHERE e.id = vSelf; + + SELECT id INTO vTicketFk + FROM ticket + WHERE shipped BETWEEN vCurdate AND util.dayEnd(vCurdate) + AND clientFk = vClientFk + AND addressFk = vAddressFk + AND warehouseFk = vWarehouseFk; + + IF vTicketFk IS NULL THEN + INSERT INTO ticket(clientFk, warehouseFk, shipped, nickname, addressFk) + SELECT vClientFk, vWarehouseFk, vCurdate, 'CAJAS AUTOCONSUMO', vAddressFk; + + SET vTicketFk = LAST_INSERT_ID(); + + INSERT INTO sale(itemFk, ticketFk, concept, quantity) + SELECT vItemFk, vTicketFk, vItemName, 1; + ELSE + SELECT id INTO vExists + FROM sale + WHERE itemFk = vItemFk + AND ticketFk = vTicketFk; + + -- Comprobar si existe o no y si existe, sumar +1 la quantity, si no, lo creamos + + END IF; END$$ DELIMITER ; -- 2.40.1 From c9f8788ef4ae6822f9b1a9b446e70e49733902bb Mon Sep 17 00:00:00 2001 From: guillermo Date: Thu, 7 Nov 2024 12:21:51 +0100 Subject: [PATCH 4/9] feat: refs #4948 Version expedition_doSelfConsumptionPackaging --- .../ticket_doSelfConsumptionPackaging.sql | 31 +++++++++++-------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/db/routines/vn/procedures/ticket_doSelfConsumptionPackaging.sql b/db/routines/vn/procedures/ticket_doSelfConsumptionPackaging.sql index 4c7edd49ce..3ccb04726b 100644 --- a/db/routines/vn/procedures/ticket_doSelfConsumptionPackaging.sql +++ b/db/routines/vn/procedures/ticket_doSelfConsumptionPackaging.sql @@ -1,8 +1,8 @@ DELIMITER $$ CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`expedition_doSelfConsumptionPackaging`( - vSelf DATE, + vSelf INT ) -BEGIN +proc: BEGIN /** * Comprueba si existe un ticket de autoconsumo ese mismo día * si no lo está lo crea, y añade la caja utilizada. @@ -15,7 +15,8 @@ BEGIN DECLARE vTicketFk INT; DECLARE vItemFk INT; DECLARE vItemName VARCHAR(50); - DECLARE vExists BOOL; + DECLARE vWarehouseFk INT; + DECLARE vSaleFk INT; SET vCurdate = util.VN_CURDATE(); @@ -27,8 +28,8 @@ BEGIN CALL util.throw('Some config parameters are not set'); END IF; - SELECT i.id, t.warehouseFk, i.name - INTO vItemFk, vWarehouseFk, vItemName + SELECT i.id, i.name, t.warehouseFk + INTO vItemFk, vItemName, vWarehouseFk FROM expedition e JOIN packaging p ON p.id = e.packagingFk JOIN item i ON i.id = p.itemFk @@ -47,17 +48,21 @@ BEGIN SELECT vClientFk, vWarehouseFk, vCurdate, 'CAJAS AUTOCONSUMO', vAddressFk; SET vTicketFk = LAST_INSERT_ID(); - - INSERT INTO sale(itemFk, ticketFk, concept, quantity) - SELECT vItemFk, vTicketFk, vItemName, 1; ELSE - SELECT id INTO vExists + SELECT id INTO vSaleFk FROM sale - WHERE itemFk = vItemFk - AND ticketFk = vTicketFk; - - -- Comprobar si existe o no y si existe, sumar +1 la quantity, si no, lo creamos + WHERE itemFk = vItemFk + AND ticketFk = vTicketFk; + IF vSaleFk NOT IS NULL THEN + UPDATE sale + SET quantity = quantity + 1 + WHERE id = vSaleFk; + LEAVE proc; + END IF; END IF; + + INSERT INTO sale(itemFk, ticketFk, concept, quantity) + SELECT vItemFk, vTicketFk, vItemName, 1; END$$ DELIMITER ; -- 2.40.1 From 73f1afda1f9504105045de6455ff19147278152c Mon Sep 17 00:00:00 2001 From: guillermo Date: Thu, 7 Nov 2024 12:24:40 +0100 Subject: [PATCH 5/9] feat: refs #4948 Version expedition_doSelfConsumptionPackaging --- db/routines/vn/procedures/ticket_doSelfConsumptionPackaging.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/routines/vn/procedures/ticket_doSelfConsumptionPackaging.sql b/db/routines/vn/procedures/ticket_doSelfConsumptionPackaging.sql index 3ccb04726b..93eb7a45f9 100644 --- a/db/routines/vn/procedures/ticket_doSelfConsumptionPackaging.sql +++ b/db/routines/vn/procedures/ticket_doSelfConsumptionPackaging.sql @@ -54,7 +54,7 @@ proc: BEGIN WHERE itemFk = vItemFk AND ticketFk = vTicketFk; - IF vSaleFk NOT IS NULL THEN + IF vSaleFk IS NOT NULL THEN UPDATE sale SET quantity = quantity + 1 WHERE id = vSaleFk; -- 2.40.1 From ad3b9ce36599843f86d225ba7a4afe00d75880e8 Mon Sep 17 00:00:00 2001 From: guillermo Date: Thu, 7 Nov 2024 12:57:31 +0100 Subject: [PATCH 6/9] feat: refs #4948 Version expedition_undoSelfConsumptionPackaging --- ...expedition_doSelfConsumptionPackaging.sql} | 39 ++++++----- ...xpedition_undoSelfConsumptionPackaging.sql | 69 +++++++++++++++++++ .../vn/triggers/expedition_afterDelete.sql | 2 + 3 files changed, 93 insertions(+), 17 deletions(-) rename db/routines/vn/procedures/{ticket_doSelfConsumptionPackaging.sql => expedition_doSelfConsumptionPackaging.sql} (81%) create mode 100644 db/routines/vn/procedures/expedition_undoSelfConsumptionPackaging.sql diff --git a/db/routines/vn/procedures/ticket_doSelfConsumptionPackaging.sql b/db/routines/vn/procedures/expedition_doSelfConsumptionPackaging.sql similarity index 81% rename from db/routines/vn/procedures/ticket_doSelfConsumptionPackaging.sql rename to db/routines/vn/procedures/expedition_doSelfConsumptionPackaging.sql index 93eb7a45f9..8177336fb3 100644 --- a/db/routines/vn/procedures/ticket_doSelfConsumptionPackaging.sql +++ b/db/routines/vn/procedures/expedition_doSelfConsumptionPackaging.sql @@ -4,37 +4,42 @@ CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`expedition_doSelfCons ) proc: BEGIN /** -* Comprueba si existe un ticket de autoconsumo ese mismo día -* si no lo está lo crea, y añade la caja utilizada. -* +* Comprueba si existe un ticket de cajas autoconsumo ese mismo día, +* si no lo está lo crea y añade la caja utilizada. +* * @param vSelf Id de expedición */ - DECLARE vCurdate DATE; DECLARE vClientFk INT; DECLARE vAddressFk INT; - DECLARE vTicketFk INT; DECLARE vItemFk INT; DECLARE vItemName VARCHAR(50); DECLARE vWarehouseFk INT; + DECLARE vCurdate DATE; + DECLARE vTicketFk INT; DECLARE vSaleFk INT; - SET vCurdate = util.VN_CURDATE(); - - SELECT clientSelfConsumptionFk, addressSelfConsumptionFk - INTO vClientFk, vAddressFk - FROM productionConfig; + SELECT pc.clientSelfConsumptionFk, + pc.addressSelfConsumptionFk, + i.id, + i.name, + t.warehouseFk + INTO vClientFk, + vAddressFk, + vItemFk, + vItemName, + vWarehouseFk + FROM expedition e + JOIN packaging p ON p.id = e.packagingFk + JOIN item i ON i.id = p.itemFk + JOIN ticket t ON t.id = e.ticketFk + JOIN productionConfig pc + WHERE e.id = vSelf; IF vClientFk IS NULL OR vAddressFk IS NULL THEN CALL util.throw('Some config parameters are not set'); END IF; - SELECT i.id, i.name, t.warehouseFk - INTO vItemFk, vItemName, vWarehouseFk - FROM expedition e - JOIN packaging p ON p.id = e.packagingFk - JOIN item i ON i.id = p.itemFk - JOIN ticket t ON t.id = e.ticketFk - WHERE e.id = vSelf; + SET vCurdate = util.VN_CURDATE(); SELECT id INTO vTicketFk FROM ticket diff --git a/db/routines/vn/procedures/expedition_undoSelfConsumptionPackaging.sql b/db/routines/vn/procedures/expedition_undoSelfConsumptionPackaging.sql new file mode 100644 index 0000000000..a204dcedda --- /dev/null +++ b/db/routines/vn/procedures/expedition_undoSelfConsumptionPackaging.sql @@ -0,0 +1,69 @@ +DELIMITER $$ +CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`expedition_undoSelfConsumptionPackaging`( + vSelf INT +) +BEGIN +/** +* Comprueba si existe un ticket de cajas autoconsumo ese mismo día, +* si lo está quita la caja utilizada. +* +* @param vSelf Id de expedición +*/ + DECLARE vClientFk INT; + DECLARE vAddressFk INT; + DECLARE vItemFk INT; + DECLARE vItemName VARCHAR(50); + DECLARE vWarehouseFk INT; + DECLARE vCurdate DATE; + DECLARE vTicketFk INT; + DECLARE vSaleFk INT; + DECLARE vQuantity INT; + + SELECT pc.clientSelfConsumptionFk, + pc.addressSelfConsumptionFk, + i.id, + i.name, + t.warehouseFk + INTO vClientFk, + vAddressFk, + vItemFk, + vItemName, + vWarehouseFk + FROM expedition e + JOIN packaging p ON p.id = e.packagingFk + JOIN item i ON i.id = p.itemFk + JOIN ticket t ON t.id = e.ticketFk + JOIN productionConfig pc + WHERE e.id = vSelf; + + IF vClientFk IS NULL OR vAddressFk IS NULL THEN + CALL util.throw('Some config parameters are not set'); + END IF; + + SET vCurdate = util.VN_CURDATE(); + + SELECT id INTO vTicketFk + FROM ticket + WHERE shipped BETWEEN vCurdate AND util.dayEnd(vCurdate) + AND clientFk = vClientFk + AND addressFk = vAddressFk + AND warehouseFk = vWarehouseFk; + + IF vTicketFk IS NOT NULL THEN + SELECT id, quantity INTO vSaleFk, vQuantity + FROM sale + WHERE itemFk = vItemFk + AND ticketFk = vTicketFk; + + IF vSaleFk IS NOT NULL THEN + IF vQuantity <= 1 THEN + DELETE FROM sale WHERE id = vSaleFk; + ELSE + UPDATE sale + SET quantity = quantity - 1 + WHERE id = vSaleFk; + END IF; + END IF; + END IF; +END$$ +DELIMITER ; diff --git a/db/routines/vn/triggers/expedition_afterDelete.sql b/db/routines/vn/triggers/expedition_afterDelete.sql index 5d74a71e59..273fe76d48 100644 --- a/db/routines/vn/triggers/expedition_afterDelete.sql +++ b/db/routines/vn/triggers/expedition_afterDelete.sql @@ -8,5 +8,7 @@ BEGIN `changedModel` = 'Expedition', `changedModelId` = OLD.id, `userFk` = account.myUser_getId(); + + CALL expedition_undoSelfConsumptionPackaging(OLD.id); END$$ DELIMITER ; -- 2.40.1 From 927e837a2978535706a390757a58e5d6344a2277 Mon Sep 17 00:00:00 2001 From: guillermo Date: Fri, 8 Nov 2024 09:40:27 +0100 Subject: [PATCH 7/9] feat: refs #4948 Requested changes --- ...> expedition_selfConsumptionPackaging.sql} | 64 +++++++++++------ ...xpedition_undoSelfConsumptionPackaging.sql | 69 ------------------- .../vn/triggers/expedition_afterDelete.sql | 2 +- 3 files changed, 43 insertions(+), 92 deletions(-) rename db/routines/vn/procedures/{expedition_doSelfConsumptionPackaging.sql => expedition_selfConsumptionPackaging.sql} (50%) delete mode 100644 db/routines/vn/procedures/expedition_undoSelfConsumptionPackaging.sql diff --git a/db/routines/vn/procedures/expedition_doSelfConsumptionPackaging.sql b/db/routines/vn/procedures/expedition_selfConsumptionPackaging.sql similarity index 50% rename from db/routines/vn/procedures/expedition_doSelfConsumptionPackaging.sql rename to db/routines/vn/procedures/expedition_selfConsumptionPackaging.sql index 8177336fb3..2eb6ac5560 100644 --- a/db/routines/vn/procedures/expedition_doSelfConsumptionPackaging.sql +++ b/db/routines/vn/procedures/expedition_selfConsumptionPackaging.sql @@ -1,11 +1,12 @@ DELIMITER $$ -CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`expedition_doSelfConsumptionPackaging`( - vSelf INT +CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`expedition_selfConsumptionPackaging`( + vSelf INT, + vAction ENUM('add', 'remove') ) -proc: BEGIN +BEGIN /** -* Comprueba si existe un ticket de cajas autoconsumo ese mismo día, -* si no lo está lo crea y añade la caja utilizada. +* Maneja el consumo de cajas para autoconsumo, permitiendo +* añadir o quitar cajas utilizadas según la acción indicada. * * @param vSelf Id de expedición */ @@ -14,20 +15,27 @@ proc: BEGIN DECLARE vItemFk INT; DECLARE vItemName VARCHAR(50); DECLARE vWarehouseFk INT; - DECLARE vCurdate DATE; + DECLARE vCreated DATE; DECLARE vTicketFk INT; DECLARE vSaleFk INT; + DECLARE vQuantity INT; + + IF vAction NOT IN ('add', 'remove') THEN + CALL util.throw('Action not supported'); + END IF; SELECT pc.clientSelfConsumptionFk, pc.addressSelfConsumptionFk, i.id, i.name, - t.warehouseFk + t.warehouseFk, + e.created INTO vClientFk, vAddressFk, vItemFk, vItemName, - vWarehouseFk + vWarehouseFk, + vCreated FROM expedition e JOIN packaging p ON p.id = e.packagingFk JOIN item i ON i.id = p.itemFk @@ -39,35 +47,47 @@ proc: BEGIN CALL util.throw('Some config parameters are not set'); END IF; - SET vCurdate = util.VN_CURDATE(); + SET vCreated = DATE(vCreated); SELECT id INTO vTicketFk FROM ticket - WHERE shipped BETWEEN vCurdate AND util.dayEnd(vCurdate) + WHERE shipped BETWEEN vCreated AND util.dayEnd(vCreated) AND clientFk = vClientFk AND addressFk = vAddressFk AND warehouseFk = vWarehouseFk; - IF vTicketFk IS NULL THEN + IF vTicketFk IS NULL AND vAction = 'add' THEN INSERT INTO ticket(clientFk, warehouseFk, shipped, nickname, addressFk) - SELECT vClientFk, vWarehouseFk, vCurdate, 'CAJAS AUTOCONSUMO', vAddressFk; + VALUES (vClientFk, vWarehouseFk, vCreated, 'CAJAS AUTOCONSUMO', vAddressFk); SET vTicketFk = LAST_INSERT_ID(); - ELSE - SELECT id INTO vSaleFk - FROM sale - WHERE itemFk = vItemFk - AND ticketFk = vTicketFk; + END IF; + SELECT id, quantity INTO vSaleFk, vQuantity + FROM sale + WHERE itemFk = vItemFk + AND ticketFk = vTicketFk + LIMIT 1; + + IF vAction = 'add' THEN IF vSaleFk IS NOT NULL THEN UPDATE sale SET quantity = quantity + 1 WHERE id = vSaleFk; - LEAVE proc; - END IF; + ELSE + INSERT INTO sale(itemFk, ticketFk, concept, quantity) + VALUES (vItemFk, vTicketFk, vItemName, 1); + END IF; + ELSE + IF vSaleFk IS NOT NULL THEN + IF vQuantity > 1 THEN + UPDATE sale + SET quantity = quantity - 1 + WHERE id = vSaleFk; + ELSE + DELETE FROM sale WHERE id = vSaleFk; + END IF; + END IF; END IF; - - INSERT INTO sale(itemFk, ticketFk, concept, quantity) - SELECT vItemFk, vTicketFk, vItemName, 1; END$$ DELIMITER ; diff --git a/db/routines/vn/procedures/expedition_undoSelfConsumptionPackaging.sql b/db/routines/vn/procedures/expedition_undoSelfConsumptionPackaging.sql deleted file mode 100644 index a204dcedda..0000000000 --- a/db/routines/vn/procedures/expedition_undoSelfConsumptionPackaging.sql +++ /dev/null @@ -1,69 +0,0 @@ -DELIMITER $$ -CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`expedition_undoSelfConsumptionPackaging`( - vSelf INT -) -BEGIN -/** -* Comprueba si existe un ticket de cajas autoconsumo ese mismo día, -* si lo está quita la caja utilizada. -* -* @param vSelf Id de expedición -*/ - DECLARE vClientFk INT; - DECLARE vAddressFk INT; - DECLARE vItemFk INT; - DECLARE vItemName VARCHAR(50); - DECLARE vWarehouseFk INT; - DECLARE vCurdate DATE; - DECLARE vTicketFk INT; - DECLARE vSaleFk INT; - DECLARE vQuantity INT; - - SELECT pc.clientSelfConsumptionFk, - pc.addressSelfConsumptionFk, - i.id, - i.name, - t.warehouseFk - INTO vClientFk, - vAddressFk, - vItemFk, - vItemName, - vWarehouseFk - FROM expedition e - JOIN packaging p ON p.id = e.packagingFk - JOIN item i ON i.id = p.itemFk - JOIN ticket t ON t.id = e.ticketFk - JOIN productionConfig pc - WHERE e.id = vSelf; - - IF vClientFk IS NULL OR vAddressFk IS NULL THEN - CALL util.throw('Some config parameters are not set'); - END IF; - - SET vCurdate = util.VN_CURDATE(); - - SELECT id INTO vTicketFk - FROM ticket - WHERE shipped BETWEEN vCurdate AND util.dayEnd(vCurdate) - AND clientFk = vClientFk - AND addressFk = vAddressFk - AND warehouseFk = vWarehouseFk; - - IF vTicketFk IS NOT NULL THEN - SELECT id, quantity INTO vSaleFk, vQuantity - FROM sale - WHERE itemFk = vItemFk - AND ticketFk = vTicketFk; - - IF vSaleFk IS NOT NULL THEN - IF vQuantity <= 1 THEN - DELETE FROM sale WHERE id = vSaleFk; - ELSE - UPDATE sale - SET quantity = quantity - 1 - WHERE id = vSaleFk; - END IF; - END IF; - END IF; -END$$ -DELIMITER ; diff --git a/db/routines/vn/triggers/expedition_afterDelete.sql b/db/routines/vn/triggers/expedition_afterDelete.sql index 273fe76d48..43a7864a12 100644 --- a/db/routines/vn/triggers/expedition_afterDelete.sql +++ b/db/routines/vn/triggers/expedition_afterDelete.sql @@ -9,6 +9,6 @@ BEGIN `changedModelId` = OLD.id, `userFk` = account.myUser_getId(); - CALL expedition_undoSelfConsumptionPackaging(OLD.id); + CALL expedition_selfConsumptionPackaging(OLD.id, 'remove'); END$$ DELIMITER ; -- 2.40.1 From 019adc35f1cb540898a539fb4ba5a8c617ef6209 Mon Sep 17 00:00:00 2001 From: guillermo Date: Mon, 11 Nov 2024 07:23:47 +0100 Subject: [PATCH 8/9] feat: refs #4948 Minor change --- .../procedures/expedition_selfConsumptionPackaging.sql | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/db/routines/vn/procedures/expedition_selfConsumptionPackaging.sql b/db/routines/vn/procedures/expedition_selfConsumptionPackaging.sql index 2eb6ac5560..43660f2154 100644 --- a/db/routines/vn/procedures/expedition_selfConsumptionPackaging.sql +++ b/db/routines/vn/procedures/expedition_selfConsumptionPackaging.sql @@ -5,11 +5,11 @@ CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`expedition_selfConsum ) BEGIN /** -* Maneja el consumo de cajas para autoconsumo, permitiendo -* añadir o quitar cajas utilizadas según la acción indicada. -* -* @param vSelf Id de expedición -*/ + * Maneja el consumo de cajas para autoconsumo, permitiendo + * añadir o quitar cajas utilizadas según la acción indicada. + * + * @param vSelf Id de expedición + */ DECLARE vClientFk INT; DECLARE vAddressFk INT; DECLARE vItemFk INT; -- 2.40.1 From 83ba2d29b383d4db50ec0bbb461fe7d6114c8117 Mon Sep 17 00:00:00 2001 From: guillermo Date: Mon, 11 Nov 2024 07:28:20 +0100 Subject: [PATCH 9/9] feat: refs #4948 Minor change --- .../vn/procedures/expedition_selfConsumptionPackaging.sql | 1 + 1 file changed, 1 insertion(+) diff --git a/db/routines/vn/procedures/expedition_selfConsumptionPackaging.sql b/db/routines/vn/procedures/expedition_selfConsumptionPackaging.sql index 43660f2154..14348fbd2b 100644 --- a/db/routines/vn/procedures/expedition_selfConsumptionPackaging.sql +++ b/db/routines/vn/procedures/expedition_selfConsumptionPackaging.sql @@ -89,5 +89,6 @@ BEGIN END IF; END IF; END IF; + -- Test END$$ DELIMITER ; -- 2.40.1