57 lines
1.7 KiB
SQL
57 lines
1.7 KiB
SQL
DELIMITER $$
|
|
CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`invoiceOut_newFromAddress`(
|
|
IN vAddressFk INT,
|
|
IN vSerial CHAR(2),
|
|
IN vMaxShipped DATE,
|
|
IN vCompanyFk INT,
|
|
IN vTaxArea VARCHAR(25),
|
|
IN vRef VARCHAR(25),
|
|
OUT vInvoiceId INT)
|
|
BEGIN
|
|
/**
|
|
* Factura los tickets de un consignatario hasta una fecha dada
|
|
* @param vAddressFk Id del consignatario a facturar
|
|
* @param vSerial Serie de factura
|
|
* @param vMaxShipped Fecha hasta la cual cogerá tickets para facturar
|
|
* @param vCompanyFk Id de la empresa desde la que se factura
|
|
* @param vTaxArea Tipo de iva en relacion a la empresa y al cliente, NULL por defecto
|
|
* @param vRef Referencia de la factura en caso que se quiera forzar, NULL por defecto
|
|
* @return vInvoiceId factura
|
|
*/
|
|
DECLARE vIsRefEditable BOOLEAN;
|
|
|
|
IF vRef IS NOT NULL AND vSerial IS NOT NULL THEN
|
|
SELECT isRefEditable INTO vIsRefEditable
|
|
FROM invoiceOutSerial
|
|
WHERE code = vSerial;
|
|
|
|
IF NOT vIsRefEditable THEN
|
|
CALL util.throw('serial non editable');
|
|
END IF;
|
|
END IF;
|
|
|
|
DROP TEMPORARY TABLE IF EXISTS `tmp`.`ticketToInvoice`;
|
|
CREATE TEMPORARY TABLE `tmp`.`ticketToInvoice`
|
|
(PRIMARY KEY (`id`))
|
|
ENGINE = MEMORY
|
|
SELECT id FROM ticket t
|
|
WHERE t.addressFk = vAddressFk
|
|
AND t.refFk IS NULL
|
|
AND t.companyFk = vCompanyFk
|
|
AND t.shipped BETWEEN
|
|
util.firstDayOfYear(vMaxShipped - INTERVAL 1 YEAR)
|
|
AND util.dayend(vMaxShipped);
|
|
|
|
CALL invoiceOut_new(vSerial, util.VN_CURDATE(), vTaxArea, vInvoiceId);
|
|
|
|
UPDATE invoiceOut
|
|
SET `ref` = vRef
|
|
WHERE id = vInvoiceId
|
|
AND vRef IS NOT NULL;
|
|
|
|
IF vSerial <> 'R' AND NOT ISNULL(vInvoiceId) AND vInvoiceId <> 0 THEN
|
|
CALL invoiceOutBooking(vInvoiceId);
|
|
END IF;
|
|
END$$
|
|
DELIMITER ;
|