46 lines
1.3 KiB
MySQL
46 lines
1.3 KiB
MySQL
|
DELIMITER $$
|
||
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`invoiceInTax_getFromEntries`(IN vId INT)
|
||
|
BEGIN
|
||
|
DECLARE vRate DOUBLE DEFAULT 1;
|
||
|
DECLARE vDated DATE;
|
||
|
DECLARE vExpenseFk VARCHAR(10);
|
||
|
|
||
|
SELECT MAX(rr.dated) INTO vDated
|
||
|
FROM referenceRate rr
|
||
|
JOIN invoiceIn ii ON ii.id = vId
|
||
|
WHERE rr.dated <= ii.issued
|
||
|
AND rr.currencyFk = ii.currencyFk ;
|
||
|
|
||
|
IF vDated THEN
|
||
|
SELECT `value` INTO vRate
|
||
|
FROM referenceRate
|
||
|
WHERE dated = vDated;
|
||
|
END IF;
|
||
|
|
||
|
SELECT id INTO vExpenseFk
|
||
|
FROM vn.expense
|
||
|
WHERE `name` = 'Adquisición mercancia Extracomunitaria'
|
||
|
GROUP BY id
|
||
|
LIMIT 1;
|
||
|
|
||
|
DELETE FROM invoiceInTax
|
||
|
WHERE invoiceInFk = vId;
|
||
|
|
||
|
INSERT INTO invoiceInTax(invoiceInFk, taxableBase, expenseFk, foreignValue, taxTypeSageFk, transactionTypeSageFk)
|
||
|
SELECT ii.id,
|
||
|
SUM(b.buyingValue * b.quantity) / IFNULL(vRate,1) taxableBase,
|
||
|
vExpenseFk,
|
||
|
IF(ii.currencyFk = 1,NULL,SUM(b.buyingValue * b.quantity )) divisa,
|
||
|
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
|
||
|
LEFT JOIN referenceRate rr ON rr.currencyFk = ii.currencyFk
|
||
|
AND rr.dated = ii.issued
|
||
|
WHERE ii.id = vId
|
||
|
HAVING taxableBase IS NOT NULL;
|
||
|
END$$
|
||
|
DELIMITER ;
|