From 535dd406250ddd6b0764142e6a7681b9d51e8b6d Mon Sep 17 00:00:00 2001 From: guillermo Date: Thu, 21 Mar 2024 12:06:59 +0100 Subject: [PATCH 1/2] fix: refs #7018 Fix invoiceInTax_recalc --- db/routines/vn/procedures/invoiceInTax_recalc.sql | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/db/routines/vn/procedures/invoiceInTax_recalc.sql b/db/routines/vn/procedures/invoiceInTax_recalc.sql index 3b5ce5247..40fd98378 100644 --- a/db/routines/vn/procedures/invoiceInTax_recalc.sql +++ b/db/routines/vn/procedures/invoiceInTax_recalc.sql @@ -11,18 +11,20 @@ BEGIN */ DECLARE vRate DOUBLE DEFAULT 1; DECLARE vDated DATE; - DECLARE vExpenseFk INT; + DECLARE vCurrencyFk INT; + DECLARE vExpenseFk VARCHAR(10); - SELECT MAX(rr.dated) INTO vDated + SELECT MAX(rr.dated), ii.currencyFk INTO vDated, vCurrencyFk FROM referenceRate rr JOIN invoiceIn ii ON ii.id = vInvoiceInFk WHERE rr.dated <= ii.issued AND rr.currencyFk = ii.currencyFk; - IF vDated THEN + IF vDated AND vCurrencyFk THEN SELECT `value` INTO vRate FROM referenceRate - WHERE dated = vDated; + WHERE dated = vDated + AND currencyFk = vCurrencyFk; END IF; DELETE FROM invoiceInTax WHERE invoiceInFk = vInvoiceInFk; From ee67820c20b2257c2358b81607b0474470c96168 Mon Sep 17 00:00:00 2001 From: guillermo Date: Thu, 21 Mar 2024 12:14:48 +0100 Subject: [PATCH 2/2] refactor: refs #7018 Fix invoiceInTax_recalc --- db/routines/vn/procedures/invoiceInTax_recalc.sql | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/db/routines/vn/procedures/invoiceInTax_recalc.sql b/db/routines/vn/procedures/invoiceInTax_recalc.sql index 40fd98378..4e20b01d3 100644 --- a/db/routines/vn/procedures/invoiceInTax_recalc.sql +++ b/db/routines/vn/procedures/invoiceInTax_recalc.sql @@ -10,22 +10,15 @@ BEGIN * @param vInvoiceInFk Id de factura recibida */ DECLARE vRate DOUBLE DEFAULT 1; - DECLARE vDated DATE; - DECLARE vCurrencyFk INT; DECLARE vExpenseFk VARCHAR(10); - SELECT MAX(rr.dated), ii.currencyFk INTO vDated, vCurrencyFk + SELECT `value` INTO vRate FROM referenceRate rr JOIN invoiceIn ii ON ii.id = vInvoiceInFk WHERE rr.dated <= ii.issued - AND rr.currencyFk = ii.currencyFk; - - IF vDated AND vCurrencyFk THEN - SELECT `value` INTO vRate - FROM referenceRate - WHERE dated = vDated - AND currencyFk = vCurrencyFk; - END IF; + AND rr.currencyFk = ii.currencyFk + ORDER BY dated DESC + LIMIT 1; DELETE FROM invoiceInTax WHERE invoiceInFk = vInvoiceInFk;