30 lines
800 B
SQL
30 lines
800 B
SQL
DELIMITER $$
|
|
CREATE OR REPLACE DEFINER=`vn-admin`@`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 ; |