52 lines
1.3 KiB
SQL
52 lines
1.3 KiB
SQL
DELIMITER $$
|
|
CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`invoiceInTax_getFromEntries`(
|
|
IN vInvoiceInFk INT
|
|
)
|
|
BEGIN
|
|
DECLARE vRate DOUBLE DEFAULT 1;
|
|
DECLARE vExpenseFk VARCHAR(10);
|
|
|
|
WITH rate AS(
|
|
SELECT MAX(rr.dated) dated, ii.currencyFk
|
|
FROM vn.invoiceIn ii
|
|
JOIN vn.referenceRate rr ON rr.currencyFk = ii.currencyFk
|
|
WHERE ii.id = vInvoiceInFk
|
|
AND rr.dated <= ii.issued
|
|
) SELECT `value` INTO vRate
|
|
FROM vn.referenceRate rr
|
|
JOIN rate r ON r.dated = rr.dated
|
|
AND r.currencyFk = rr.currencyFk;
|
|
|
|
SELECT id INTO vExpenseFk
|
|
FROM expense
|
|
WHERE `name` = 'Adquisición mercancia Extracomunitaria'
|
|
GROUP BY id
|
|
LIMIT 1;
|
|
|
|
DELETE FROM invoiceInTax
|
|
WHERE invoiceInFk = vInvoiceInFk;
|
|
|
|
INSERT INTO invoiceInTax(
|
|
invoiceInFk,
|
|
taxableBase,
|
|
expenseFk,
|
|
foreignValue,
|
|
taxTypeSageFk,
|
|
transactionTypeSageFk
|
|
)SELECT ii.id,
|
|
SUM(b.buyingValue * b.quantity) / vRate taxableBase,
|
|
vExpenseFk,
|
|
IF(ii.currencyFk = 1,
|
|
NULL,
|
|
SUM(b.buyingValue * b.quantity )),
|
|
taxTypeSageFk,
|
|
transactionTypeSageFk
|
|
FROM invoiceIn ii
|
|
JOIN entry e ON e.invoiceInFk = ii.id
|
|
JOIN supplier s ON s.id = e.supplierFk
|
|
JOIN buy b ON b.entryFk = e.id
|
|
WHERE ii.id = vInvoiceInFk
|
|
HAVING taxableBase IS NOT NULL;
|
|
END$$
|
|
DELIMITER ;
|