diff --git a/include/sql/patch/upgrade124.sql b/include/sql/patch/upgrade124.sql new file mode 100644 index 000000000..4d603d16c --- /dev/null +++ b/include/sql/patch/upgrade124.sql @@ -0,0 +1,56 @@ +begin; +CREATE OR REPLACE FUNCTION comptaproc.jrnx_ins() + RETURNS trigger + +AS $function$ +declare +n_fid bigint; +nCount integer; +sQcode text; + +begin +n_fid := NULL; +sQcode := NULL; + +NEW.j_tech_per := comptaproc.find_periode(to_char(NEW.j_date,'DD.MM.YYYY')); +if NEW.j_tech_per = -1 then + raise exception 'Période invalide'; +end if; + +if trim(coalesce(NEW.j_qcode,'')) = '' then + -- how many card has this accounting + select count(*) into nCount from fiche_detail where ad_id=5 and ad_value=NEW.j_poste; + -- only one card is found , then we change the j_qcode by the card + if nCount = 1 then + select f_id into n_fid from fiche_detail where ad_id = 5 and ad_value=NEW.j_poste; + if FOUND then + select ad_value into sQcode from fiche_detail where f_id=n_fid and ad_id = 23; + NEW.f_id := n_fid; + NEW.j_qcode = sQcode; + raise info 'comptaproc.jrnx_ins : found card % qcode %',n_fid,sQcode; + end if; + end if; + +end if; + +NEW.j_qcode=trim(upper(coalesce(NEW.j_qcode,''))); + +if length (coalesce(NEW.j_qcode,'')) = 0 then + NEW.j_qcode=NULL; + else + select f_id into n_fid from fiche_detail where ad_id=23 and ad_value=NEW.j_qcode; + if NOT FOUND then + raise exception 'La fiche dont le quick code est % n''existe pas',NEW.j_qcode; + end if; +end if; + +NEW.f_id:=n_fid; +return NEW; +end; +$function$ +LANGUAGE plpgsql; + + +update version set val=125; + +commit; \ No newline at end of file