DELIMITER $$ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ledger_nextTx`( IN vFiscalYear INT, OUT vLastBookEntry INT ) /** * Devuelve un número de asiento válido, según el contador de asientos * tabla vn.ledgerConfig, si no existe lo inicializa a 1 * Lo hace transaccionando el proceso * * @param vFiscalYear Id del año contable * @return vLastBookEntry Id del asiento */ BEGIN DECLARE vIsRequiredTx BOOL DEFAULT NOT @@in_transaction; DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN CALL util.tx_rollback(vIsRequiredTx); RESIGNAL; END; IF vFiscalYear IS NULL THEN CALL util.throw('Fiscal year is required'); END IF; CALL util.tx_start(vIsRequiredTx); CALL ledger_next(vFiscalYear, vLastBookEntry); CALL util.tx_commit(vIsRequiredTx); END$$ DELIMITER ;