From 20570c87ffcdc4920be5e2e1798eb4d65c4a94aa Mon Sep 17 00:00:00 2001 From: sparkyx Date: Thu, 2 Dec 2021 17:58:18 +0100 Subject: [PATCH] fix bug in upgrade171.sql --- include/sql/patch/ac-upgrade14.sql | 1 + include/sql/patch/upgrade171.sql | 49 ++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 include/sql/patch/upgrade171.sql diff --git a/include/sql/patch/ac-upgrade14.sql b/include/sql/patch/ac-upgrade14.sql index 2c39589a1..cd5fa1408 100644 --- a/include/sql/patch/ac-upgrade14.sql +++ b/include/sql/patch/ac-upgrade14.sql @@ -20,6 +20,7 @@ begin end; $function$ language plpgsql; + select upgrade_repo(15); commit; diff --git a/include/sql/patch/upgrade171.sql b/include/sql/patch/upgrade171.sql new file mode 100644 index 000000000..d3f3f69bf --- /dev/null +++ b/include/sql/patch/upgrade171.sql @@ -0,0 +1,49 @@ +begin; +ALTER TABLE public.parm_periode ADD p_exercice_label text NULL; +COMMENT ON COLUMN public.parm_periode.p_exercice_label IS 'label of the exercice'; +update parm_periode set p_exercice_label =p_exercice ; +ALTER TABLE public.parm_periode ALTER COLUMN p_exercice_label SET NOT NULL; + +COMMENT ON COLUMN public.parm_periode.p_start IS 'Start date of periode'; +COMMENT ON COLUMN public.parm_periode.p_end IS 'End date of periode'; +COMMENT ON COLUMN public.parm_periode.p_exercice IS 'Exercice'; +COMMENT ON COLUMN public.parm_periode.p_closed IS 'is closed'; +COMMENT ON COLUMN public.parm_periode.p_central IS 'is centralized (obsolete)'; + + +CREATE OR REPLACE FUNCTION comptaproc.check_periode() + RETURNS trigger + AS $function$ +declare + nPeriode int; + nExerciceLabel int; +begin + nPeriode:=periode_exist(to_char(NEW.p_start,'DD.MM.YYYY'),NEW.p_id); +-- check that the new - updated period doesn't overlap anything + if nPeriode <> -1 then + raise info 'Overlap periode start % periode %',NEW.p_start,nPeriode; + return null; + end if; + if new.p_exercice_label is null or trim (new.p_exercice_label ) = '' then + new.p_exercice_label := new.p_exercice; + end if; + select count(*) into nExerciceLabel + from parm_periode + where + (p_exercice =new.p_exercice and p_exercice_label <> new.p_exercice_label) + or + (p_exercice <> new.p_exercice and p_exercice_label = new.p_exercice_label); + + if nExerciceLabel > 0 then + raise exception 'a label cannot be on two exercices'; + return null; + end if; + +return NEW; +end; +$function$ +LANGUAGE plpgsql; + + +insert into version (val,v_description) values (172,'Add free label for exercice'); +commit; \ No newline at end of file