From 10a16fccd8a79d025fb4f4ea3fbc4df43a053ab1 Mon Sep 17 00:00:00 2001 From: Pako Date: Mon, 25 Mar 2024 13:03:11 +0100 Subject: [PATCH 1/4] primer prototipo --- .../vn/procedures/boxPicking_print.sql | 286 ++++++++++++++++++ .../vn/procedures/sale_getBoxPickingList.sql | 2 + 2 files changed, 288 insertions(+) create mode 100644 db/routines/vn/procedures/boxPicking_print.sql diff --git a/db/routines/vn/procedures/boxPicking_print.sql b/db/routines/vn/procedures/boxPicking_print.sql new file mode 100644 index 0000000000..0d34ed056d --- /dev/null +++ b/db/routines/vn/procedures/boxPicking_print.sql @@ -0,0 +1,286 @@ +DROP PROCEDURE IF EXISTS vn.boxPicking_print; + +DELIMITER $$ +$$ +CREATE PROCEDURE vn.boxPicking_print( + IN vPrinterFk INT, + IN vSaleFk INT, + IN vPacking INT, + IN vSectorFk INT, + IN vUserFk INT, + IN vPackagingFk INT, + IN vPackingSiteFk INT) +BEGIN +/** Splits a line of sale to a different ticket and prints the transport sticker + * + */ + DECLARE vAgencyModeFk INT; + DECLARE vConcept VARCHAR(20); + DECLARE vExpeditionFk INT; + DECLARE vItemFk INT; + DECLARE vItemShelvingFk INT; + DECLARE vItemShelvingSaleFk INT; + DECLARE vItemShelvingSaleFk_old INT; + DECLARE vLastExpeditionTimeStamp DATETIME; + DECLARE vMaxPhoneLength INT DEFAULT 11; + DECLARE vMaxStreetLength INT DEFAULT 36; + DECLARE vNewSaleFk INT; + DECLARE vNewTicketFk INT; + DECLARE vParkingCode VARCHAR(10); + DECLARE vQuantity INT; + DECLARE vRest INT DEFAULT 0; + DECLARE vRestSaleFk INT; + DECLARE vShelving VARCHAR(10); + DECLARE vTicketFk INT; + + SELECT s.quantity, + s.quantity MOD vPacking, + s.ticketFk, + s.itemFk, + s.concept + INTO vQuantity, + vRest, + vTicketFk, + vItemFk, + vConcept + FROM sale s + WHERE s.id = vSaleFk; + + IF vRest THEN + UPDATE sale SET quantity = quantity - vRest WHERE id = vSaleFk; + + INSERT INTO vn.sale(ticketFk, itemFk, quantity, price, discount, concept) + SELECT ticketFk, itemFk, vRest, price, discount, concept + FROM vn.sale + WHERE id = vSaleFk; + + SET vRestSaleFk = LAST_INSERT_ID(); + + INSERT INTO vn.saleComponent(saleFk, componentFk, value) + SELECT vRestSaleFk, componentFk, value + FROM vn.saleComponent + WHERE saleFk = vSaleFk; + END IF; + +w1: WHILE vQuantity >= vPacking DO + + SET vItemShelvingFk = 0; + + SELECT sub.id + INTO vItemShelvingFk + FROM vn.productionConfig pc + JOIN ( + SELECT ish.id, + ish.visible - ifnull(SUM(iss.quantity),0) available, + p.pickingOrder, + ish.created + FROM vn.itemShelving ish + JOIN vn.shelving sh ON sh.code = ish.shelvingFk + JOIN vn.parking p ON p.id = sh.parkingFk + LEFT JOIN vn.itemShelvingSale iss + ON iss.itemShelvingFk = ish.id + AND iss.created >= CURDATE() + AND iss.isPicked = FALSE + WHERE ish.itemFk = vItemFk + AND p.sectorFk = vSectorFk + GROUP BY ish.id + HAVING available >= vPacking) sub + ORDER BY IF(pc.orderMode = 'Location',sub.pickingOrder, sub.created) + LIMIT 1; + + IF vItemShelvingFk THEN + INSERT INTO vn.itemShelvingSale + SET itemShelvingFk = vItemShelvingFk, + saleFk = vSaleFk, + quantity = vPacking, + userFk = vUserFk, + isPicked = TRUE; + + SET vItemShelvingSaleFk = LAST_INSERT_ID(); + + UPDATE vn.sale SET isPicked = FALSE WHERE id = vSaleFk; + ELSE + LEAVE w1; + END IF; + + SET vNewTicketFk = 0; + + SELECT MAX(t.id) INTO vNewTicketFk + FROM vn.ticket t + JOIN vn.ticketLastState tls ON tls.ticketFk = t.id + JOIN (SELECT addressFk, clientFk, date(shipped) shipped, warehouseFk + FROM vn.ticket + WHERE id = vTicketFk) tt + ON tt.addressFk = t.addressFk + AND tt.clientFk = t.clientFk + AND t.shipped BETWEEN tt.shipped AND util.dayend(tt.shipped) + AND t.warehouseFk = tt.warehouseFk + WHERE tls.name = 'Encajado' ; + + IF vNewTicketFk = 0 THEN + INSERT INTO vn.ticket( clientFk, + shipped, + addressFk, + agencyModeFk, + nickname, + warehouseFk, + companyFk, + landed, + zoneFk, + zonePrice, + zoneBonus, + routeFk, + priority, + hasPriority, + clonedFrom) + SELECT clientFk, + shipped, + addressFk, + agencyModeFk, + nickname, + warehouseFk, + companyFk, + landed, + zoneFk, + zonePrice, + zoneBonus, + routeFk, + priority, + hasPriority, + id + FROM vn.ticket + WHERE id = vTicketFk; + + SET vNewTicketFk = LAST_INSERT_ID(); + + INSERT INTO ticketTracking(ticketFk, stateFk, userFk) + SELECT vNewTicketFk, id, vUserFk + FROM state + WHERE code = 'PACKED'; + END IF; + + UPDATE sale SET quantity = quantity - vPacking WHERE id = vSaleFk; + + UPDATE itemShelving SET visible = visible - vPacking WHERE id = vItemShelvingFk; + + SET vNewSaleFk = 0; + + SELECT MAX(id) INTO vNewSaleFk + FROM sale + WHERE ticketFk = vNewTicketFk + AND itemFk = vItemFk; + + IF vNewSaleFk THEN + UPDATE sale + SET quantity = quantity + vPacking + WHERE id = vNewSaleFk; + + SET vItemShelvingSaleFk_old = 0; + + SELECT MAX(id) INTO vItemShelvingSaleFk_old + FROM vn.itemShelvingSale + WHERE itemShelvingFk = vItemShelvingFk + AND saleFk = vNewSaleFk; + + IF vItemShelvingSaleFk_old THEN + UPDATE vn.itemShelvingSale + SET quantity = quantity + vPacking + WHERE id = vItemShelvingSaleFk_old; + + DELETE FROM vn.itemShelvingSale + WHERE id = vItemShelvingSaleFk; + + SET vItemShelvingSaleFk = vItemShelvingSaleFk_old; + ELSE + UPDATE itemShelvingSale + SET saleFk = vNewSaleFk + WHERE id = vItemShelvingSaleFk; + END IF; + ELSE + INSERT INTO vn.sale(ticketFk, itemFk, concept, quantity, discount, price) + SELECT vNewTicketFk, itemFk, concept, vPacking, discount, price + FROM vn.sale + WHERE id = vSaleFk; + + SET vNewSaleFk = LAST_INSERT_ID(); + + INSERT INTO vn.saleComponent(saleFk, componentFk, value, isGreuge) + SELECT vNewSaleFk, componentFk, value, isGreuge + FROM vn.saleComponent + WHERE saleFk = vSaleFk; + + UPDATE itemShelvingSale + SET saleFk = vNewSaleFk + WHERE id = vItemShelvingSaleFk; + END IF; + + INSERT IGNORE INTO vn.saleTracking(saleFk, isChecked, workerFk, stateFk) + SELECT vNewSaleFk, TRUE, vUserFk, id + FROM vn.state + WHERE code = 'PREPARED'; + + SELECT agencyModeFk INTO vAgencyModeFk + FROM ticket + WHERE id = vNewTicketFk; + + INSERT INTO vn.expedition( + agencyModeFk, + ticketFk, + freightItemFk, + workerFk, + packagingFk, + itemPackingTypeFk, + hostFk, + packingSiteFk, + monitorId, + started, + ended + ) + SELECT vAgencyModeFk, + vNewTicketFk, + i.id, + vUserFk, + vPackagingFk, + ps.code, + h.code, + vPackingSiteFk, + ps.monitorId, + started = IFNULL(vLastExpeditionTimeStamp, Now()), + ended = Now() + FROM packingSite ps + JOIN host h ON h.id = ps.hostFk + JOIN item i ON i.name = 'Shipping cost' + WHERE ps.id = vPackingSiteFk + LIMIT 1; + + SET vExpeditionFk = LAST_INSERT_ID(); + + SET vLastExpeditionTimeStamp = Now(); + + CALL dipole.expedition_Add(vExpeditionFk,vPrinterFk, TRUE); + + SELECT shelvingFk, p.code + INTO vShelving, vParkingCode + FROM itemShelving ish + JOIN shelving sh ON sh.code = ish.shelvingFk + JOIN parking p ON p.id = sh.parkingFk + WHERE ish.id = vItemShelvingFk; + + UPDATE dipole.expedition_PrintOut SET + isPrinted = FALSE, + itemFk = vItemFk, + quantity = vPacking, + longName = vConcept, + shelvingFk = vShelving, + parkingCode = vParkingCode, + phone = RIGHT(phone,vMaxPhoneLength), + street = RIGHT(street, vMAxStreetLength) + WHERE expeditionFk = vExpeditionFk; + + DELETE FROM vn.sale + WHERE quantity = 0 + AND id = vSaleFk; + END WHILE; + +END$$ +DELIMITER ; \ No newline at end of file diff --git a/db/routines/vn/procedures/sale_getBoxPickingList.sql b/db/routines/vn/procedures/sale_getBoxPickingList.sql index ff0e85259d..7466eb9be7 100644 --- a/db/routines/vn/procedures/sale_getBoxPickingList.sql +++ b/db/routines/vn/procedures/sale_getBoxPickingList.sql @@ -46,6 +46,7 @@ BEGIN JOIN parking p ON p.id = sh.parkingFk JOIN tmp.productionBuffer pb ON pb.ticketFk = s.ticketFk JOIN agencyMode am ON am.id = pb.agencyModeFk + JOIN agency a ON a .id = am.agencyFk LEFT JOIN routesMonitor rm ON rm.routeFk = pb.routeFk LEFT JOIN saleGroupDetail sgd ON sgd.saleFk = s.id LEFT JOIN ticketState ts ON ts.ticketFk = s.ticketFk @@ -60,6 +61,7 @@ BEGIN AND ((rm.bufferFk AND rm.isPickingAllowed) OR am.code = 'REC_ALG') AND pb.shipped = vDated + AND a.isOwn GROUP BY s.id ORDER BY etd; From 861d9b3135cf52964b5bf21d73e6bb99caa28835 Mon Sep 17 00:00:00 2001 From: Pako Date: Tue, 26 Mar 2024 14:59:06 +0100 Subject: [PATCH 2/4] javi's proposals --- .../vn/procedures/boxPicking_print.sql | 39 +++++++++---------- 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/db/routines/vn/procedures/boxPicking_print.sql b/db/routines/vn/procedures/boxPicking_print.sql index 0d34ed056d..637fde2b95 100644 --- a/db/routines/vn/procedures/boxPicking_print.sql +++ b/db/routines/vn/procedures/boxPicking_print.sql @@ -1,8 +1,6 @@ -DROP PROCEDURE IF EXISTS vn.boxPicking_print; - DELIMITER $$ $$ -CREATE PROCEDURE vn.boxPicking_print( +CREATE OR REPLACE PROCEDURE vn.sale_boxPickingPrint( IN vPrinterFk INT, IN vSaleFk INT, IN vPacking INT, @@ -12,10 +10,9 @@ CREATE PROCEDURE vn.boxPicking_print( IN vPackingSiteFk INT) BEGIN /** Splits a line of sale to a different ticket and prints the transport sticker - * */ DECLARE vAgencyModeFk INT; - DECLARE vConcept VARCHAR(20); + DECLARE vConcept VARCHAR(30); DECLARE vExpeditionFk INT; DECLARE vItemFk INT; DECLARE vItemShelvingFk INT; @@ -64,7 +61,7 @@ BEGIN w1: WHILE vQuantity >= vPacking DO - SET vItemShelvingFk = 0; + SET vItemShelvingFk = NULL; SELECT sub.id INTO vItemShelvingFk @@ -103,7 +100,7 @@ w1: WHILE vQuantity >= vPacking DO LEAVE w1; END IF; - SET vNewTicketFk = 0; + SET vNewTicketFk = NULL; SELECT MAX(t.id) INTO vNewTicketFk FROM vn.ticket t @@ -117,7 +114,7 @@ w1: WHILE vQuantity >= vPacking DO AND t.warehouseFk = tt.warehouseFk WHERE tls.name = 'Encajado' ; - IF vNewTicketFk = 0 THEN + IF ISNULL(vNewTicketFk) THEN INSERT INTO vn.ticket( clientFk, shipped, addressFk, @@ -163,7 +160,7 @@ w1: WHILE vQuantity >= vPacking DO UPDATE itemShelving SET visible = visible - vPacking WHERE id = vItemShelvingFk; - SET vNewSaleFk = 0; + SET vNewSaleFk = NULL; SELECT MAX(id) INTO vNewSaleFk FROM sale @@ -175,7 +172,7 @@ w1: WHILE vQuantity >= vPacking DO SET quantity = quantity + vPacking WHERE id = vNewSaleFk; - SET vItemShelvingSaleFk_old = 0; + SET vItemShelvingSaleFk_old = NULL; SELECT MAX(id) INTO vItemShelvingSaleFk_old FROM vn.itemShelvingSale @@ -245,8 +242,8 @@ w1: WHILE vQuantity >= vPacking DO h.code, vPackingSiteFk, ps.monitorId, - started = IFNULL(vLastExpeditionTimeStamp, Now()), - ended = Now() + IFNULL(vLastExpeditionTimeStamp, Now()), + Now() FROM packingSite ps JOIN host h ON h.id = ps.hostFk JOIN item i ON i.name = 'Shipping cost' @@ -266,15 +263,15 @@ w1: WHILE vQuantity >= vPacking DO JOIN parking p ON p.id = sh.parkingFk WHERE ish.id = vItemShelvingFk; - UPDATE dipole.expedition_PrintOut SET - isPrinted = FALSE, - itemFk = vItemFk, - quantity = vPacking, - longName = vConcept, - shelvingFk = vShelving, - parkingCode = vParkingCode, - phone = RIGHT(phone,vMaxPhoneLength), - street = RIGHT(street, vMAxStreetLength) + UPDATE dipole.expedition_PrintOut + SET isPrinted = FALSE, + itemFk = vItemFk, + quantity = vPacking, + longName = vConcept, + shelvingFk = vShelving, + parkingCode = vParkingCode, + phone = RIGHT(phone,vMaxPhoneLength), + street = RIGHT(street, vMAxStreetLength) WHERE expeditionFk = vExpeditionFk; DELETE FROM vn.sale From c9431e605e12898230576414a036808c78d138e6 Mon Sep 17 00:00:00 2001 From: Pako Date: Wed, 27 Mar 2024 12:22:22 +0100 Subject: [PATCH 3/4] second proposals --- .../vn/procedures/boxPicking_print.sql | 68 +++++++++---------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/db/routines/vn/procedures/boxPicking_print.sql b/db/routines/vn/procedures/boxPicking_print.sql index 637fde2b95..6c890a3fd8 100644 --- a/db/routines/vn/procedures/boxPicking_print.sql +++ b/db/routines/vn/procedures/boxPicking_print.sql @@ -25,7 +25,7 @@ BEGIN DECLARE vNewTicketFk INT; DECLARE vParkingCode VARCHAR(10); DECLARE vQuantity INT; - DECLARE vRest INT DEFAULT 0; + DECLARE vRemainder INT DEFAULT 0; DECLARE vRestSaleFk INT; DECLARE vShelving VARCHAR(10); DECLARE vTicketFk INT; @@ -43,19 +43,19 @@ BEGIN FROM sale s WHERE s.id = vSaleFk; - IF vRest THEN - UPDATE sale SET quantity = quantity - vRest WHERE id = vSaleFk; + IF vRemainder THEN + UPDATE sale SET quantity = quantity - vRemainder WHERE id = vSaleFk; - INSERT INTO vn.sale(ticketFk, itemFk, quantity, price, discount, concept) + INSERT INTO sale(ticketFk, itemFk, quantity, price, discount, concept) SELECT ticketFk, itemFk, vRest, price, discount, concept - FROM vn.sale + FROM sale WHERE id = vSaleFk; SET vRestSaleFk = LAST_INSERT_ID(); - INSERT INTO vn.saleComponent(saleFk, componentFk, value) + INSERT INTO saleComponent(saleFk, componentFk, value) SELECT vRestSaleFk, componentFk, value - FROM vn.saleComponent + FROM saleComponent WHERE saleFk = vSaleFk; END IF; @@ -65,16 +65,16 @@ w1: WHILE vQuantity >= vPacking DO SELECT sub.id INTO vItemShelvingFk - FROM vn.productionConfig pc + FROM productionConfig pc JOIN ( SELECT ish.id, - ish.visible - ifnull(SUM(iss.quantity),0) available, + ish.visible - IFNULL(SUM(iss.quantity),0) available, p.pickingOrder, ish.created - FROM vn.itemShelving ish - JOIN vn.shelving sh ON sh.code = ish.shelvingFk - JOIN vn.parking p ON p.id = sh.parkingFk - LEFT JOIN vn.itemShelvingSale iss + FROM itemShelving ish + JOIN shelving sh ON sh.code = ish.shelvingFk + JOIN parking p ON p.id = sh.parkingFk + LEFT JOIN itemShelvingSale iss ON iss.itemShelvingFk = ish.id AND iss.created >= CURDATE() AND iss.isPicked = FALSE @@ -86,7 +86,7 @@ w1: WHILE vQuantity >= vPacking DO LIMIT 1; IF vItemShelvingFk THEN - INSERT INTO vn.itemShelvingSale + INSERT INTO itemShelvingSale SET itemShelvingFk = vItemShelvingFk, saleFk = vSaleFk, quantity = vPacking, @@ -95,7 +95,7 @@ w1: WHILE vQuantity >= vPacking DO SET vItemShelvingSaleFk = LAST_INSERT_ID(); - UPDATE vn.sale SET isPicked = FALSE WHERE id = vSaleFk; + UPDATE sale SET isPicked = FALSE WHERE id = vSaleFk; ELSE LEAVE w1; END IF; @@ -103,10 +103,10 @@ w1: WHILE vQuantity >= vPacking DO SET vNewTicketFk = NULL; SELECT MAX(t.id) INTO vNewTicketFk - FROM vn.ticket t - JOIN vn.ticketLastState tls ON tls.ticketFk = t.id + FROM ticket t + JOIN ticketLastState tls ON tls.ticketFk = t.id JOIN (SELECT addressFk, clientFk, date(shipped) shipped, warehouseFk - FROM vn.ticket + FROM ticket WHERE id = vTicketFk) tt ON tt.addressFk = t.addressFk AND tt.clientFk = t.clientFk @@ -115,7 +115,7 @@ w1: WHILE vQuantity >= vPacking DO WHERE tls.name = 'Encajado' ; IF ISNULL(vNewTicketFk) THEN - INSERT INTO vn.ticket( clientFk, + INSERT INTO ticket( clientFk, shipped, addressFk, agencyModeFk, @@ -145,7 +145,7 @@ w1: WHILE vQuantity >= vPacking DO priority, hasPriority, id - FROM vn.ticket + FROM ticket WHERE id = vTicketFk; SET vNewTicketFk = LAST_INSERT_ID(); @@ -175,16 +175,16 @@ w1: WHILE vQuantity >= vPacking DO SET vItemShelvingSaleFk_old = NULL; SELECT MAX(id) INTO vItemShelvingSaleFk_old - FROM vn.itemShelvingSale + FROM itemShelvingSale WHERE itemShelvingFk = vItemShelvingFk AND saleFk = vNewSaleFk; IF vItemShelvingSaleFk_old THEN - UPDATE vn.itemShelvingSale + UPDATE itemShelvingSale SET quantity = quantity + vPacking WHERE id = vItemShelvingSaleFk_old; - DELETE FROM vn.itemShelvingSale + DELETE FROM itemShelvingSale WHERE id = vItemShelvingSaleFk; SET vItemShelvingSaleFk = vItemShelvingSaleFk_old; @@ -194,16 +194,16 @@ w1: WHILE vQuantity >= vPacking DO WHERE id = vItemShelvingSaleFk; END IF; ELSE - INSERT INTO vn.sale(ticketFk, itemFk, concept, quantity, discount, price) + INSERT INTO sale(ticketFk, itemFk, concept, quantity, discount, price) SELECT vNewTicketFk, itemFk, concept, vPacking, discount, price - FROM vn.sale + FROM sale WHERE id = vSaleFk; SET vNewSaleFk = LAST_INSERT_ID(); - INSERT INTO vn.saleComponent(saleFk, componentFk, value, isGreuge) + INSERT INTO saleComponent(saleFk, componentFk, value, isGreuge) SELECT vNewSaleFk, componentFk, value, isGreuge - FROM vn.saleComponent + FROM saleComponent WHERE saleFk = vSaleFk; UPDATE itemShelvingSale @@ -211,16 +211,16 @@ w1: WHILE vQuantity >= vPacking DO WHERE id = vItemShelvingSaleFk; END IF; - INSERT IGNORE INTO vn.saleTracking(saleFk, isChecked, workerFk, stateFk) + INSERT IGNORE INTO saleTracking(saleFk, isChecked, workerFk, stateFk) SELECT vNewSaleFk, TRUE, vUserFk, id - FROM vn.state + FROM state WHERE code = 'PREPARED'; SELECT agencyModeFk INTO vAgencyModeFk FROM ticket WHERE id = vNewTicketFk; - INSERT INTO vn.expedition( + INSERT INTO expedition( agencyModeFk, ticketFk, freightItemFk, @@ -242,8 +242,8 @@ w1: WHILE vQuantity >= vPacking DO h.code, vPackingSiteFk, ps.monitorId, - IFNULL(vLastExpeditionTimeStamp, Now()), - Now() + IFNULL(vLastExpeditionTimeStamp, NOW()), + NOW() FROM packingSite ps JOIN host h ON h.id = ps.hostFk JOIN item i ON i.name = 'Shipping cost' @@ -252,7 +252,7 @@ w1: WHILE vQuantity >= vPacking DO SET vExpeditionFk = LAST_INSERT_ID(); - SET vLastExpeditionTimeStamp = Now(); + SET vLastExpeditionTimeStamp = NOW(); CALL dipole.expedition_Add(vExpeditionFk,vPrinterFk, TRUE); @@ -274,7 +274,7 @@ w1: WHILE vQuantity >= vPacking DO street = RIGHT(street, vMAxStreetLength) WHERE expeditionFk = vExpeditionFk; - DELETE FROM vn.sale + DELETE FROM sale WHERE quantity = 0 AND id = vSaleFk; END WHILE; From 09c9a3d7efd9a5e23c0a33c63bf9658856f9884c Mon Sep 17 00:00:00 2001 From: Pako Date: Wed, 27 Mar 2024 12:25:57 +0100 Subject: [PATCH 4/4] vRest --- db/routines/vn/procedures/boxPicking_print.sql | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/db/routines/vn/procedures/boxPicking_print.sql b/db/routines/vn/procedures/boxPicking_print.sql index 6c890a3fd8..5eea4ee1ed 100644 --- a/db/routines/vn/procedures/boxPicking_print.sql +++ b/db/routines/vn/procedures/boxPicking_print.sql @@ -26,7 +26,7 @@ BEGIN DECLARE vParkingCode VARCHAR(10); DECLARE vQuantity INT; DECLARE vRemainder INT DEFAULT 0; - DECLARE vRestSaleFk INT; + DECLARE vRemainderSaleFk INT; DECLARE vShelving VARCHAR(10); DECLARE vTicketFk INT; @@ -36,7 +36,7 @@ BEGIN s.itemFk, s.concept INTO vQuantity, - vRest, + vRemainder, vTicketFk, vItemFk, vConcept @@ -47,14 +47,14 @@ BEGIN UPDATE sale SET quantity = quantity - vRemainder WHERE id = vSaleFk; INSERT INTO sale(ticketFk, itemFk, quantity, price, discount, concept) - SELECT ticketFk, itemFk, vRest, price, discount, concept + SELECT ticketFk, itemFk, vRemainder, price, discount, concept FROM sale WHERE id = vSaleFk; - SET vRestSaleFk = LAST_INSERT_ID(); + SET vRemainderSaleFk = LAST_INSERT_ID(); INSERT INTO saleComponent(saleFk, componentFk, value) - SELECT vRestSaleFk, componentFk, value + SELECT vRemainderSaleFk, componentFk, value FROM saleComponent WHERE saleFk = vSaleFk; END IF;