DELIMITER $$ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`invoiceOut_newFromTicket`(IN vTicketFk int, IN vSerial char(2), IN vTaxArea varchar(25), IN vRef varchar(25), OUT vInvoiceId int) BEGIN /** * Factura un ticket * @param vTicketFk Id del ticket * @param vSerial Serie de factura * @param vTaxArea Area de la factura en caso de querer forzarlo, * en la mayoria de los casos poner NULL * @return vInvoiceId */ DECLARE vIsRefEditable BOOLEAN; CALL invoiceFromTicket(vTicketFk); CALL invoiceOut_new(vSerial, util.VN_CURDATE(), vTaxArea, vInvoiceId); 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; UPDATE invoiceOut SET `ref` = vRef WHERE id = vInvoiceId; END IF; IF vSerial <> 'R' AND NOT ISNULL(vInvoiceId) AND vInvoiceId <> 0 THEN CALL invoiceOutBooking(vInvoiceId); END IF; END$$ DELIMITER ;