drop procedure `vn`.`invoiceOut_newFromClient`; DELIMITER $$ $$ create definer = root@`%` procedure `vn`.`invoiceOut_newFromClient`(IN vClientFk 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 cliente hasta una fecha dada * @param vClientFk Id del cliente a facturar * @param vSerial Serie de factura * @param vMaxShipped Fecha hasta la cual cogera 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 THEN SELECT isRefEditable INTO vIsRefEditable FROM invoiceOutSerial WHERE code = vSerial; IF NOT vIsRefEditable THEN CALL util.throw('serial non editable'); END IF; END IF; CALL invoiceFromClient(vMaxShipped, vClientFk, vCompanyFk); CALL invoiceOut_new(vSerial, 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 ;