altocompta/html/admin/sql/patch/upgrade10.sql

72 lines
No EOL
1.2 KiB
PL/PgSQL

begin;
-- Function: proc_check_balance()
-- DROP FUNCTION proc_check_balance();
CREATE OR REPLACE FUNCTION proc_check_balance()
RETURNS "trigger" AS
$BODY$
declare
diff numeric;
tt integer;
begin
if TG_OP = 'INSERT' then
tt=NEW.jr_grpt_id;
diff:=check_balance(tt);
if diff != 0 then
raise exception 'Rounded error %',diff ;
end if;
return NEW;
end if;
end;
$BODY$
LANGUAGE plpgsql VOLATILE;
-- Function: check_balance(p_grpt text)
DROP FUNCTION check_balance(text);
CREATE OR REPLACE FUNCTION check_balance(p_grpt integer)
RETURNS "numeric" AS
$BODY$
declare
amount_jrnx_debit numeric;
amount_jrnx_credit numeric;
amount_jrn numeric;
begin
select sum (j_montant) into amount_jrnx_credit
from jrnx
where
j_grpt=p_grpt
and j_debit=false;
select sum (j_montant) into amount_jrnx_debit
from jrnx
where
j_grpt=p_grpt
and j_debit=true;
select jr_montant into amount_jrn
from jrn
where
jr_grpt_id=p_grpt;
if ( amount_jrnx_debit != amount_jrnx_credit )
then
return abs(amount_jrnx_debit-amount_jrnx_credit);
end if;
if ( amount_jrn != amount_jrnx_credit)
then
return -1*abs(amount_jrn - amount_jrnx_credit);
end if;
return 0;
end;
$BODY$
LANGUAGE plpgsql VOLATILE;
update version set val=11;
commit;