35 lines
787 B
MySQL
35 lines
787 B
MySQL
|
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 EXIT HANDLER FOR SQLEXCEPTION
|
||
|
BEGIN
|
||
|
ROLLBACK;
|
||
|
RESIGNAL;
|
||
|
END;
|
||
|
|
||
|
IF vFiscalYear IS NULL THEN
|
||
|
CALL util.throw('Fiscal year is required');
|
||
|
END IF;
|
||
|
|
||
|
IF @@in_transaction THEN
|
||
|
CALL util.throw('This procedure should not be executed within a transaction');
|
||
|
END IF;
|
||
|
|
||
|
START TRANSACTION;
|
||
|
|
||
|
CALL ledger_next(vFiscalYear, vLastBookEntry);
|
||
|
|
||
|
COMMIT;
|
||
|
END$$
|
||
|
DELIMITER ;
|