77 lines
1.6 KiB
SQL
77 lines
1.6 KiB
SQL
DELIMITER $$
|
|
CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`invoiceOutTaxAndExpense`()
|
|
BEGIN
|
|
|
|
/* Para tickets ya facturados, vuelve a repetir el proceso de facturación.
|
|
*
|
|
* @param vInvoice Numero de factura
|
|
*/
|
|
|
|
DECLARE vInvoice INT;
|
|
DECLARE vInvoiceRef VARCHAR(15);
|
|
DECLARE vCountry INT;
|
|
DECLARE vTaxArea VARCHAR(15);
|
|
DECLARE vContador INT DEFAULT 0;
|
|
|
|
DECLARE done BOOL DEFAULT FALSE;
|
|
|
|
DECLARE rs CURSOR FOR
|
|
SELECT id,ref
|
|
FROM invoiceOut io
|
|
|
|
WHERE issued >= '2017-07-01'
|
|
AND companyFk = 1381
|
|
AND io.amount IS NULL
|
|
;
|
|
|
|
|
|
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
|
|
|
|
OPEN rs;
|
|
|
|
FETCH rs INTO vInvoice ,vInvoiceRef;
|
|
|
|
WHILE NOT done DO
|
|
|
|
SELECT s.countryFk
|
|
INTO vCountry
|
|
FROM supplier s
|
|
JOIN invoiceOut io ON io.companyFk = s.id
|
|
WHERE io.id = vInvoice;
|
|
|
|
SELECT IF(c.isEqualizated AND i.taxAreaFk = 'NATIONAL','EQU',i.taxAreaFk)
|
|
INTO vTaxArea
|
|
FROM invoiceOutSerial i
|
|
JOIN invoiceOut io ON io.serial = i.code
|
|
JOIN client c ON c.id = io.clientFk
|
|
WHERE io.id = vInvoice;
|
|
|
|
DROP TEMPORARY TABLE IF EXISTS tmp.ticketToInvoice;
|
|
|
|
CREATE TEMPORARY TABLE tmp.ticketToInvoice
|
|
SELECT id
|
|
FROM ticket
|
|
WHERE refFk = vInvoiceRef;
|
|
|
|
CALL invoiceExpenseMake(vInvoice);
|
|
CALL invoiceTaxMake(vInvoice,vCountry,vTaxArea);
|
|
|
|
FETCH rs INTO vInvoice ,vInvoiceRef;
|
|
|
|
SET vContador = vContador + 1;
|
|
|
|
IF vContador MOD 50 = 0 THEN
|
|
|
|
SELECT CONCAT(vContador, ' de momento') AS FACTURAS_ASENTADAS;
|
|
|
|
END IF;
|
|
|
|
END WHILE;
|
|
|
|
CLOSE rs;
|
|
|
|
SELECT CONCAT(vContador, ' total') AS FACTURAS_ASENTADAS;
|
|
|
|
END$$
|
|
DELIMITER ;
|