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 ;