36 lines
1.2 KiB
SQL
36 lines
1.2 KiB
SQL
DELIMITER $$
|
|
CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`invoiceExpenseMake`(IN vInvoice INT)
|
|
BEGIN
|
|
/* Inserta las partidas de gasto correspondientes a la factura
|
|
* REQUIERE tabla tmp.ticketToInvoice
|
|
* @param vInvoice Numero de factura
|
|
*/
|
|
DELETE FROM invoiceOutExpense
|
|
WHERE invoiceOutFk = vInvoice;
|
|
|
|
INSERT INTO invoiceOutExpense(invoiceOutFk, expenseFk, amount, foreignAmount)
|
|
SELECT vInvoice,
|
|
expenseFk,
|
|
SUM(ROUND(quantity * price * (100 - discount) / 100, 2)) amount,
|
|
currency_getRate(t.currencyFk, NULL) *
|
|
SUM(ROUND(quantity * price * (100 - discount) / 100, 2)) foreignAmount
|
|
FROM tmp.ticketToInvoice tti
|
|
JOIN ticket t ON t.id = tti.id
|
|
JOIN sale s ON s.ticketFk = t.id
|
|
JOIN item i ON i.id = s.itemFk
|
|
GROUP BY i.expenseFk
|
|
HAVING amount <> 0
|
|
UNION ALL
|
|
SELECT vInvoice,
|
|
tst.expenseFk,
|
|
SUM(ROUND(ts.quantity * ts.price ,2)) amount,
|
|
currency_getRate(t.currencyFk, NULL),
|
|
SUM(ROUND(ts.quantity * ts.price, 2)) foreignAmount
|
|
FROM tmp.ticketToInvoice tti
|
|
JOIN ticket t ON t.id = tti.id
|
|
JOIN ticketService ts ON ts.ticketFk = t.id
|
|
JOIN ticketServiceType tst ON tst.id = ts.ticketServiceTypeFk
|
|
HAVING amount <> 0;
|
|
END$$
|
|
DELIMITER ;
|