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 ;