begin; -- 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 'balance 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; -- add quick_code to the vw_client view drop view vw_client; create view vw_client as SELECT a.f_id, a.av_text AS name, a1.av_text as quick_code,b.av_text AS tva_num, c.av_text AS poste_comptable, d.av_text AS rue, e.av_text AS code_postal, f.av_text AS pays, g.av_text AS telephone, h.av_text AS email FROM ( SELECT jnt_fic_att_value.jft_id, fiche.f_id, fiche_def.frd_id, fiche.fd_id, fiche_def.fd_class_base, fiche_def.fd_label, fiche_def.fd_create_account, fiche_def_ref.frd_text, fiche_def_ref.frd_class_base, jnt_fic_att_value.ad_id, attr_value.av_text FROM fiche JOIN fiche_def USING (fd_id) JOIN fiche_def_ref USING (frd_id) JOIN jnt_fic_att_value USING (f_id) JOIN attr_value USING (jft_id) WHERE jnt_fic_att_value.ad_id = 1) a inner JOIN ( SELECT jnt_fic_att_value.jft_id, fiche.f_id, fiche_def.frd_id, fiche.fd_id, fiche_def.fd_class_base, fiche_def.fd_label, fiche_def.fd_create_account, fiche_def_ref.frd_text, fiche_def_ref.frd_class_base, jnt_fic_att_value.ad_id, attr_value.av_text FROM fiche JOIN fiche_def USING (fd_id) JOIN fiche_def_ref USING (frd_id) JOIN jnt_fic_att_value USING (f_id) JOIN attr_value USING (jft_id) WHERE jnt_fic_att_value.ad_id = 13) b USING (f_id) inner JOIN ( SELECT jnt_fic_att_value.jft_id, fiche.f_id, fiche_def.frd_id, fiche.fd_id, fiche_def.fd_class_base, fiche_def.fd_label, fiche_def.fd_create_account, fiche_def_ref.frd_text, fiche_def_ref.frd_class_base, jnt_fic_att_value.ad_id, attr_value.av_text FROM fiche JOIN fiche_def USING (fd_id) JOIN fiche_def_ref USING (frd_id) JOIN jnt_fic_att_value USING (f_id) JOIN attr_value USING (jft_id) WHERE jnt_fic_att_value.ad_id = 23) a1 USING (f_id) inner JOIN ( SELECT jnt_fic_att_value.jft_id, fiche.f_id, fiche_def.frd_id, fiche.fd_id, fiche_def.fd_class_base, fiche_def.fd_label, fiche_def.fd_create_account, fiche_def_ref.frd_text, fiche_def_ref.frd_class_base, jnt_fic_att_value.ad_id, attr_value.av_text FROM fiche JOIN fiche_def USING (fd_id) JOIN fiche_def_ref USING (frd_id) JOIN jnt_fic_att_value USING (f_id) JOIN attr_value USING (jft_id) WHERE jnt_fic_att_value.ad_id = 5) c USING (f_id) inner JOIN ( SELECT jnt_fic_att_value.jft_id, fiche.f_id, fiche_def.frd_id, fiche.fd_id, fiche_def.fd_class_base, fiche_def.fd_label, fiche_def.fd_create_account, fiche_def_ref.frd_text, fiche_def_ref.frd_class_base, jnt_fic_att_value.ad_id, attr_value.av_text FROM fiche JOIN fiche_def USING (fd_id) JOIN fiche_def_ref USING (frd_id) JOIN jnt_fic_att_value USING (f_id) JOIN attr_value USING (jft_id) WHERE jnt_fic_att_value.ad_id = 14) d USING (f_id) inner JOIN ( SELECT jnt_fic_att_value.jft_id, fiche.f_id, fiche_def.frd_id, fiche.fd_id, fiche_def.fd_class_base, fiche_def.fd_label, fiche_def.fd_create_account, fiche_def_ref.frd_text, fiche_def_ref.frd_class_base, jnt_fic_att_value.ad_id, attr_value.av_text FROM fiche JOIN fiche_def USING (fd_id) JOIN fiche_def_ref USING (frd_id) JOIN jnt_fic_att_value USING (f_id) JOIN attr_value USING (jft_id) WHERE jnt_fic_att_value.ad_id = 15) e USING (f_id) inner JOIN ( SELECT jnt_fic_att_value.jft_id, fiche.f_id, fiche_def.frd_id, fiche.fd_id, fiche_def.fd_class_base, fiche_def.fd_label, fiche_def.fd_create_account, fiche_def_ref.frd_text, fiche_def_ref.frd_class_base, jnt_fic_att_value.ad_id, attr_value.av_text FROM fiche JOIN fiche_def USING (fd_id) JOIN fiche_def_ref USING (frd_id) JOIN jnt_fic_att_value USING (f_id) JOIN attr_value USING (jft_id) WHERE jnt_fic_att_value.ad_id = 16) f USING (f_id) inner JOIN ( SELECT jnt_fic_att_value.jft_id, fiche.f_id, fiche_def.frd_id, fiche.fd_id, fiche_def.fd_class_base, fiche_def.fd_label, fiche_def.fd_create_account, fiche_def_ref.frd_text, fiche_def_ref.frd_class_base, jnt_fic_att_value.ad_id, attr_value.av_text FROM fiche JOIN fiche_def USING (fd_id) JOIN fiche_def_ref USING (frd_id) JOIN jnt_fic_att_value USING (f_id) JOIN attr_value USING (jft_id) WHERE jnt_fic_att_value.ad_id = 17) g USING (f_id) LEFT JOIN ( SELECT jnt_fic_att_value.jft_id, fiche.f_id, fiche_def.frd_id, fiche.fd_id, fiche_def.fd_class_base, fiche_def.fd_label, fiche_def.fd_create_account, fiche_def_ref.frd_text, fiche_def_ref.frd_class_base, jnt_fic_att_value.ad_id, attr_value.av_text FROM fiche JOIN fiche_def USING (fd_id) JOIN fiche_def_ref USING (frd_id) JOIN jnt_fic_att_value USING (f_id) JOIN attr_value USING (jft_id) WHERE jnt_fic_att_value.ad_id = 18) h USING (f_id) WHERE a.frd_id = 9; update version set val=11; commit;