diff --git a/html/.htaccess b/html/.htaccess index c9ea12a91..52d2827da 100644 --- a/html/.htaccess +++ b/html/.htaccess @@ -3,7 +3,8 @@ php_value include_path .:../../include:../include:addon php_flag magic_quotes_gpc off php_flag session.auto_start on php_value session.save_path /tmp -php_value max_execution_time 120 +php_value max_execution_time 240 +php_value memory_limit 12M # for php 5 php_value upload_tmp_dir /tmp AddDefaultCharset latin1 diff --git a/html/admin/.htaccess b/html/admin/.htaccess index 0b69ced8d..1b2d9a01e 100644 --- a/html/admin/.htaccess +++ b/html/admin/.htaccess @@ -2,6 +2,6 @@ php_value include_path .:../../include:../include:addon php_flag magic_quotes_gpc off php_flag session.auto_start on php_value session.save_path /tmp -php_value max_execution_time 120 - +php_value max_execution_time 240 +php_value memory_limit 24M diff --git a/html/admin/setup.php b/html/admin/setup.php index dd8a1e9f3..dde79c71f 100644 --- a/html/admin/setup.php +++ b/html/admin/setup.php @@ -166,7 +166,7 @@ echo_debug('setup.php',__LINE__,"Execute sql $sql"); */ function apply_patch($p_cn,$p_name) { - $MaxVersion=35; + $MaxVersion=36; for ( $i = 4;$i <= $MaxVersion;$i++) { $to=$i+1; @@ -230,7 +230,13 @@ function apply_patch($p_cn,$p_name) } } - + if ( $i == 36 ) { + /* check the country and apply the path */ + $res=ExecSql($p_cn,"select pr_value from parameter where pr_id='MY_COUNTRY'"); + $country=pg_fetch_result($res,0,0); + ExecuteScript($p_cn,"sql/patch/upgrade36.".$country.".sql"); + ExecSql($p_cn,'update tmp_pcmn set pcm_type=find_pcm_type(pcm_val)'); + } if ( DEBUG == 'false') ob_clean(); } } @@ -253,6 +259,8 @@ Vous utilisez le domaine '; diff --git a/html/admin/sql/patch/upgrade36.BE.sql b/html/admin/sql/patch/upgrade36.BE.sql new file mode 100644 index 000000000..db492d826 --- /dev/null +++ b/html/admin/sql/patch/upgrade36.BE.sql @@ -0,0 +1,43 @@ +INSERT INTO parm_poste (p_value, p_type) VALUES (1, 'PAS'); +INSERT INTO parm_poste (p_value, p_type) VALUES (101, 'PASINV'); +INSERT INTO parm_poste (p_value, p_type) VALUES (141, 'PASINV'); +INSERT INTO parm_poste (p_value, p_type) VALUES (42, 'PAS'); +INSERT INTO parm_poste (p_value, p_type) VALUES (43, 'PAS'); +INSERT INTO parm_poste (p_value, p_type) VALUES (44, 'PAS'); +INSERT INTO parm_poste (p_value, p_type) VALUES (45, 'PAS'); +INSERT INTO parm_poste (p_value, p_type) VALUES (46, 'PAS'); +INSERT INTO parm_poste (p_value, p_type) VALUES (47, 'PAS'); +INSERT INTO parm_poste (p_value, p_type) VALUES (48, 'PAS'); +INSERT INTO parm_poste (p_value, p_type) VALUES (492, 'PAS'); +INSERT INTO parm_poste (p_value, p_type) VALUES (493, 'PAS'); +INSERT INTO parm_poste (p_value, p_type) VALUES (2, 'ACT'); +INSERT INTO parm_poste (p_value, p_type) VALUES (3, 'ACT'); +INSERT INTO parm_poste (p_value, p_type) VALUES (5, 'ACT'); +INSERT INTO parm_poste (p_value, p_type) VALUES (491, 'ACT'); +INSERT INTO parm_poste (p_value, p_type) VALUES (490, 'ACT'); +INSERT INTO parm_poste (p_value, p_type) VALUES (6, 'CHA'); +INSERT INTO parm_poste (p_value, p_type) VALUES (7, 'PRO'); +INSERT INTO parm_poste (p_value, p_type) VALUES (4, 'ACT'); +INSERT INTO parm_poste (p_value, p_type) VALUES (40, 'ACT'); +INSERT INTO parm_poste (p_value, p_type) VALUES (5501, 'ACTINV'); +INSERT INTO parm_poste (p_value, p_type) VALUES (5511, 'ACTINV'); +INSERT INTO parm_poste (p_value, p_type) VALUES (5521, 'ACTINV'); +INSERT INTO parm_poste (p_value, p_type) VALUES (5531, 'ACTINV'); +INSERT INTO parm_poste (p_value, p_type) VALUES (5541, 'ACTINV'); +INSERT INTO parm_poste (p_value, p_type) VALUES (5551, 'ACTINV'); +INSERT INTO parm_poste (p_value, p_type) VALUES (5561, 'ACTINV'); +INSERT INTO parm_poste (p_value, p_type) VALUES (5571, 'ACTINV'); +INSERT INTO parm_poste (p_value, p_type) VALUES (5581, 'ACTINV'); +INSERT INTO parm_poste (p_value, p_type) VALUES (5591, 'ACTINV'); +INSERT INTO parm_poste (p_value, p_type) VALUES (6311, 'CHAINV'); +INSERT INTO parm_poste (p_value, p_type) VALUES (6321, 'CHAINV'); +INSERT INTO parm_poste (p_value, p_type) VALUES (6331, 'CHAINV'); +INSERT INTO parm_poste (p_value, p_type) VALUES (6341, 'CHAINV'); +INSERT INTO parm_poste (p_value, p_type) VALUES (6351, 'CHAINV'); +INSERT INTO parm_poste (p_value, p_type) VALUES (6361, 'CHAINV'); +INSERT INTO parm_poste (p_value, p_type) VALUES (6371, 'CHAINV'); +INSERT INTO parm_poste (p_value, p_type) VALUES (649, 'CHAINV'); +INSERT INTO parm_poste (p_value, p_type) VALUES (6511, 'CHAINV'); +INSERT INTO parm_poste (p_value, p_type) VALUES (6701, 'CHAINV'); +INSERT INTO parm_poste (p_value, p_type) VALUES (608, 'CHAINV'); +INSERT INTO parm_poste (p_value, p_type) VALUES (709, 'PROINV'); diff --git a/html/admin/sql/patch/upgrade36.FR.sql b/html/admin/sql/patch/upgrade36.FR.sql new file mode 100644 index 000000000..0201dfd50 --- /dev/null +++ b/html/admin/sql/patch/upgrade36.FR.sql @@ -0,0 +1,45 @@ +-- +-- PostgreSQL database dump +-- + +SET client_encoding = 'LATIN1'; +SET standard_conforming_strings = off; +SET check_function_bodies = false; +SET client_min_messages = warning; +SET escape_string_warning = off; + +SET search_path = public, pg_catalog; + +-- +-- Data for Name: parm_poste; Type: TABLE DATA; Schema: public; Owner: phpcompta +-- + +INSERT INTO parm_poste (p_value, p_type) VALUES (1, 'PAS'); +INSERT INTO parm_poste (p_value, p_type) VALUES (12, 'CON'); +INSERT INTO parm_poste (p_value, p_type) VALUES (2, 'ACT'); +INSERT INTO parm_poste (p_value, p_type) VALUES (3, 'ACT'); +INSERT INTO parm_poste (p_value, p_type) VALUES (41, 'ACT'); +INSERT INTO parm_poste (p_value, p_type) VALUES (42, 'PAS'); +INSERT INTO parm_poste (p_value, p_type) VALUES (43, 'PAS'); +INSERT INTO parm_poste (p_value, p_type) VALUES (44, 'PAS'); +INSERT INTO parm_poste (p_value, p_type) VALUES (45, 'PAS'); +INSERT INTO parm_poste (p_value, p_type) VALUES (46, 'CON'); +INSERT INTO parm_poste (p_value, p_type) VALUES (47, 'CON'); +INSERT INTO parm_poste (p_value, p_type) VALUES (481, 'PAS'); +INSERT INTO parm_poste (p_value, p_type) VALUES (482, 'PAS'); +INSERT INTO parm_poste (p_value, p_type) VALUES (483, 'PAS'); +INSERT INTO parm_poste (p_value, p_type) VALUES (484, 'PAS'); +INSERT INTO parm_poste (p_value, p_type) VALUES (485, 'PAS'); +INSERT INTO parm_poste (p_value, p_type) VALUES (486, 'PAS'); +INSERT INTO parm_poste (p_value, p_type) VALUES (487, 'ACT'); +INSERT INTO parm_poste (p_value, p_type) VALUES (49, 'PAS'); +INSERT INTO parm_poste (p_value, p_type) VALUES (5, 'ACT'); +INSERT INTO parm_poste (p_value, p_type) VALUES (6, 'CHA'); +INSERT INTO parm_poste (p_value, p_type) VALUES (7, 'PAS'); +INSERT INTO parm_poste (p_value, p_type) VALUES (40, 'ACT'); + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/html/admin/sql/patch/upgrade36.sql b/html/admin/sql/patch/upgrade36.sql new file mode 100644 index 000000000..218298598 --- /dev/null +++ b/html/admin/sql/patch/upgrade36.sql @@ -0,0 +1,721 @@ +begin; +alter table import_tmp add n_montant numeric(20,4); +update import_tmp set n_montant=to_number(montant,'999999999.99'); +alter table import_tmp drop montant; +alter table import_tmp rename n_montant to montant; +-- alter table import_tmp alter montant type numeric(20,4); +alter table import_tmp alter montant set default 0; +alter table import_tmp alter montant set not null; +alter table import_tmp alter code set not null; +alter table import_tmp alter date_exec set not null; +alter table import_tmp alter date_valeur set not null; + +COMMENT ON TABLE import_tmp IS 'Table temporaire pour l''importation des banques en format CSV'; +COMMENT ON COLUMN import_tmp.status IS 'Status w waiting, d delete t transfert'; + + +alter table poste_analytique add ga_id varchar (10); + + +CREATE or replace FUNCTION t_document_validate() RETURNS "trigger" + AS $$ +declare + lText text; + modified document%ROWTYPE; +begin + modified:=NEW; + modified.d_filename:=replace(NEW.d_filename,' ','_'); + return modified; +end; +$$ + LANGUAGE plpgsql; + + +CREATE or replace FUNCTION t_document_type_insert() RETURNS "trigger" + AS $$ +declare +nCounter integer; + BEGIN +select count(*) into nCounter from pg_class where relname='seq_doc_type_'||NEW.dt_id; +if nCounter = 0 then + execute 'create sequence seq_doc_type_'||NEW.dt_id; +end if; + RETURN NEW; + END; +$$ + LANGUAGE plpgsql; + +CREATE or replace FUNCTION t_document_modele_validate() RETURNS "trigger" + AS $$ +declare + lText text; + modified document_modele%ROWTYPE; +begin + modified:=NEW; + + modified.md_filename:=replace(NEW.md_filename,' ','_'); + return modified; +end; +$$ + LANGUAGE plpgsql; + + +CREATE TABLE groupe_analytique +( + ga_id varchar(10) NOT NULL, + pa_id int, + ga_description text, + CONSTRAINT pk_ga_id PRIMARY KEY (ga_id) +) ; + + +CREATE OR REPLACE FUNCTION group_analytic_ins_upd() + RETURNS "trigger" AS +$BODY$ +declare +name text; +begin +name:=upper(NEW.ga_id); +name:=trim(name); +name:=replace(name,' ',''); +NEW.ga_id:=name; +return NEW; +end;$BODY$ + LANGUAGE 'plpgsql' VOLATILE; + +CREATE OR REPLACE FUNCTION group_analytique_del() + RETURNS "trigger" AS +$BODY$ +begin +update poste_analytique set ga_id=null +where ga_id=OLD.ga_id; +return OLD; +end;$BODY$ + LANGUAGE 'plpgsql' VOLATILE; + +CREATE OR REPLACE FUNCTION poste_analytique_ins_upd() + RETURNS "trigger" AS +$BODY$declare +name text; +rCount record; + +begin +name:=upper(NEW.po_name); +name:=trim(name); +name:=replace(name,' ',''); +NEW.po_name:=name; + +if NEW.ga_id is NULL then +return NEW; +end if; + +if length(trim(NEW.ga_id)) = 0 then + NEW.ga_id:=NULL; + return NEW; +end if; +perform 'select ga_id from groupe_analytique where ga_id='||NEW.ga_id; +if NOT FOUND then + raise exception' Inexistent Group Analytic %',NEW.ga_id; +end if; +return NEW; +end;$BODY$ + LANGUAGE 'plpgsql' VOLATILE; + +CREATE OR REPLACE FUNCTION plan_analytic_ins_upd() + RETURNS "trigger" AS +$BODY$ +declare + name text; +begin + name:=upper(NEW.pa_name); + name:=trim(name); + name:=replace(name,' ',''); + NEW.pa_name:=name; +return NEW; +end; +$BODY$ + LANGUAGE 'plpgsql' VOLATILE; + +CREATE TRIGGER t_poste_analytique_ins_upd + BEFORE INSERT OR UPDATE + ON poste_analytique + FOR EACH ROW + EXECUTE PROCEDURE poste_analytique_ins_upd(); + +CREATE TRIGGER t_plan_analytique_ins_upd + BEFORE INSERT OR UPDATE + ON plan_analytique + FOR EACH ROW + EXECUTE PROCEDURE plan_analytic_ins_upd(); + +CREATE TRIGGER t_group_analytic_del + before DELETE + ON groupe_analytique + FOR EACH ROW + EXECUTE PROCEDURE group_analytique_del(); + +CREATE TRIGGER t_group_analytic_ins_upd + BEFORE INSERT OR UPDATE + ON groupe_analytique + FOR EACH ROW + EXECUTE PROCEDURE group_analytic_ins_upd(); + + +drop TRIGGER t_upper_pa_name on plan_analytique; +drop TRIGGER t_upper_po_name on poste_analytique; +drop function upper_pa_name(); +drop function upper_po_name(); + +CREATE TABLE bud_hypothese +( + bh_id int4 NOT NULL, + bh_name text NOT NULL, + bh_saldo numeric(20,4) DEFAULT 0, + bh_description text, + pa_id int4, + CONSTRAINT pk_bud_hypo PRIMARY KEY (bh_id), + CONSTRAINT fk_bud_hypo_pa_id FOREIGN KEY (pa_id) + REFERENCES plan_analytique (pa_id) MATCH SIMPLE + ON UPDATE CASCADE ON DELETE CASCADE +) +WITHOUT OIDS; + +create sequence seq_bud_hypothese_bh_id; + +alter table bud_hypothese alter bh_id set default nextval('seq_bud_hypothese_bh_id'); + +-- +-- Name: bud_card; Type: TABLE; Schema: public; Owner: phpcompta; Tablespace: +-- + +CREATE TABLE bud_card ( + bc_id integer NOT NULL, + bc_code character varying(10) NOT NULL, + bc_description text, + bc_price_unit numeric(20,4) DEFAULT 0.0 NOT NULL, + bc_unit character varying(20), + bh_id integer +); +-- +-- Name: TABLE bud_card; Type: COMMENT; Schema: public; Owner: phpcompta +-- + +COMMENT ON TABLE bud_card IS 'card for budget module'; + + +-- +-- Name: COLUMN bud_card.bh_id; Type: COMMENT; Schema: public; Owner: phpcompta +-- + +COMMENT ON COLUMN bud_card.bh_id IS 'fk to bud_hypothese'; + + +-- +-- Name: bud_card_bc_id_seq; Type: SEQUENCE; Schema: public; Owner: phpcompta +-- + +CREATE SEQUENCE bud_card_bc_id_seq + INCREMENT BY 1 + NO MAXVALUE + NO MINVALUE + CACHE 1; + + +ALTER TABLE public.bud_card_bc_id_seq OWNER TO phpcompta; + +-- +-- Name: bud_card_bc_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: phpcompta +-- + +ALTER SEQUENCE bud_card_bc_id_seq OWNED BY bud_card.bc_id; + + +-- +-- Name: bc_id; Type: DEFAULT; Schema: public; Owner: phpcompta +-- + +ALTER TABLE bud_card ALTER COLUMN bc_id SET DEFAULT nextval('bud_card_bc_id_seq'::regclass); + + +-- +-- Name: pk_bud_card_bc_id; Type: CONSTRAINT; Schema: public; Owner: phpcompta; Tablespace: +-- + +ALTER TABLE ONLY bud_card + ADD CONSTRAINT pk_bud_card_bc_id PRIMARY KEY (bc_id); + + +-- +-- Name: uq_bud_card_bc_code; Type: CONSTRAINT; Schema: public; Owner: phpcompta; Tablespace: +-- + +ALTER TABLE ONLY bud_card + ADD CONSTRAINT uq_bud_card_bc_code_bh_id UNIQUE (bc_code,bh_id); + +ALTER TABLE bud_card ADD CONSTRAINT fk_bud_hypo_bh_id FOREIGN KEY (bh_id) REFERENCES bud_hypothese (bh_id) + ON UPDATE CASCADE ON DELETE CASCADE; +CREATE INDEX fki_bud_hypo_bh_id ON bud_card(bh_id); +ALTER TABLE bud_card ALTER COLUMN bh_id SET NOT NULL; + + + +-- +-- Name: bud_detail; Type: TABLE; Schema: public; Owner: phpcompta; Tablespace: +-- + +CREATE TABLE bud_detail ( + bd_id integer NOT NULL, + po_id integer, + bc_id integer, + bh_id integer, + pcm_val poste_comptable +); + + +ALTER TABLE public.bud_detail OWNER TO phpcompta; + +-- +-- Name: TABLE bud_detail; Type: COMMENT; Schema: public; Owner: phpcompta +-- + +COMMENT ON TABLE bud_detail IS 'Detail for card '; + + +-- +-- Name: COLUMN bud_detail.bd_id; Type: COMMENT; Schema: public; Owner: phpcompta +-- + +COMMENT ON COLUMN bud_detail.bd_id IS 'primary key'; + + +-- +-- Name: COLUMN bud_detail.po_id; Type: COMMENT; Schema: public; Owner: phpcompta +-- + +COMMENT ON COLUMN bud_detail.po_id IS 'FK to poste_analytique'; + + +-- +-- Name: COLUMN bud_detail.bc_id; Type: COMMENT; Schema: public; Owner: phpcompta +-- + +COMMENT ON COLUMN bud_detail.bc_id IS 'fk to bud_card'; + + +-- +-- Name: COLUMN bud_detail.pcm_val; Type: COMMENT; Schema: public; Owner: phpcompta +-- + +COMMENT ON COLUMN bud_detail.pcm_val IS 'fk to tmp_pcmn'; + + +-- +-- Name: bud_detail_bd_id_seq; Type: SEQUENCE; Schema: public; Owner: phpcompta +-- + +CREATE SEQUENCE bud_detail_bd_id_seq + INCREMENT BY 1 + NO MAXVALUE + NO MINVALUE + CACHE 1; + + +ALTER TABLE public.bud_detail_bd_id_seq OWNER TO phpcompta; + +-- +-- Name: bud_detail_bd_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: phpcompta +-- + +ALTER SEQUENCE bud_detail_bd_id_seq OWNED BY bud_detail.bd_id; + + +-- +-- Name: bd_id; Type: DEFAULT; Schema: public; Owner: phpcompta +-- + +ALTER TABLE bud_detail ALTER COLUMN bd_id SET DEFAULT nextval('bud_detail_bd_id_seq'::regclass); + + +-- +-- Name: pk_bud_detail; Type: CONSTRAINT; Schema: public; Owner: phpcompta; Tablespace: +-- + +ALTER TABLE ONLY bud_detail + ADD CONSTRAINT pk_bud_detail PRIMARY KEY (bd_id); + + +-- +-- Name: fki_bud_card; Type: INDEX; Schema: public; Owner: phpcompta; Tablespace: +-- + +CREATE INDEX fki_bud_card ON bud_detail USING btree (bc_id); + + +-- +-- Name: fki_tmp_pcmn; Type: INDEX; Schema: public; Owner: phpcompta; Tablespace: +-- + +CREATE INDEX fki_tmp_pcmn ON bud_detail USING btree (pcm_val); + + +-- +-- Name: fk_bud_card; Type: FK CONSTRAINT; Schema: public; Owner: phpcompta +-- + +ALTER TABLE ONLY bud_detail + ADD CONSTRAINT fk_bud_card FOREIGN KEY (bc_id) REFERENCES bud_card(bc_id) ON UPDATE CASCADE ON DELETE CASCADE;; + +ALTER TABLE ONLY bud_detail + add constraint fk_bud_hypothese_not_null FOREIGN KEY (bh_id) REFERENCES bud_hypothese(bh_id) ON UPDATE CASCADE ON DELETE CASCADE;; + + +-- +-- Name: fk_tmp_pcmn; Type: FK CONSTRAINT; Schema: public; Owner: phpcompta +-- + +ALTER TABLE ONLY bud_detail + ADD CONSTRAINT fk_tmp_pcmn FOREIGN KEY (pcm_val) REFERENCES tmp_pcmn(pcm_val) ON UPDATE CASCADE ON DELETE CASCADE; +-- +-- Name: bud_detail_periode; Type: TABLE; Schema: public; Owner: phpcompta; Tablespace: +-- + +CREATE TABLE bud_detail_periode ( + bdp_id integer NOT NULL, + bdp_amount numeric(20,4) DEFAULT 0.0, + p_id integer NOT NULL, + bd_id integer +); + + +ALTER TABLE public.bud_detail_periode OWNER TO phpcompta; + +-- +-- Name: TABLE bud_detail_periode; Type: COMMENT; Schema: public; Owner: phpcompta +-- + +COMMENT ON TABLE bud_detail_periode IS 'Module budget detail by periode'; + + +-- +-- Name: COLUMN bud_detail_periode.p_id; Type: COMMENT; Schema: public; Owner: phpcompta +-- + +COMMENT ON COLUMN bud_detail_periode.p_id IS 'fk to parm_periode'; + + +-- +-- Name: COLUMN bud_detail_periode.bd_id; Type: COMMENT; Schema: public; Owner: phpcompta +-- + +COMMENT ON COLUMN bud_detail_periode.bd_id IS 'fk to bud_detail'; + + +-- +-- Name: bud_detail_periode_bdp_id_seq; Type: SEQUENCE; Schema: public; Owner: phpcompta +-- + +CREATE SEQUENCE bud_detail_periode_bdp_id_seq + START WITH 1 + INCREMENT BY 1 + NO MAXVALUE + NO MINVALUE + CACHE 1; + + +ALTER TABLE public.bud_detail_periode_bdp_id_seq OWNER TO phpcompta; + +-- +-- Name: bud_detail_periode_bdp_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: phpcompta +-- + +ALTER SEQUENCE bud_detail_periode_bdp_id_seq OWNED BY bud_detail_periode.bdp_id; + + +-- +-- Name: bdp_id; Type: DEFAULT; Schema: public; Owner: phpcompta +-- + +ALTER TABLE bud_detail_periode ALTER COLUMN bdp_id SET DEFAULT nextval('bud_detail_periode_bdp_id_seq'::regclass); + + +-- +-- Name: pk_budget_detail_period; Type: CONSTRAINT; Schema: public; Owner: phpcompta; Tablespace: +-- + +ALTER TABLE ONLY bud_detail_periode + ADD CONSTRAINT pk_budget_detail_period PRIMARY KEY (bdp_id); + + +-- +-- Name: fk_bud_detail_bd_id; Type: FK CONSTRAINT; Schema: public; Owner: phpcompta +-- + +ALTER TABLE ONLY bud_detail_periode + ADD CONSTRAINT fk_bud_detail_bd_id FOREIGN KEY (bd_id) REFERENCES bud_detail(bd_id) ON UPDATE CASCADE ON DELETE CASCADE; + + +-- +-- Name: fk_parm_periode; Type: FK CONSTRAINT; Schema: public; Owner: phpcompta +-- + +ALTER TABLE ONLY bud_detail_periode + ADD CONSTRAINT fk_parm_periode FOREIGN KEY (p_id) REFERENCES parm_periode(p_id) ON UPDATE CASCADE ON DELETE CASCADE; + + + +CREATE OR REPLACE FUNCTION bud_detail_ins_upd() + RETURNS "trigger" AS +$BODY$declare +mline bud_detail%ROWTYPE; +begin +mline:=NEW; +if mline.po_id = -1 then + mline.po_id:=NULL; +end if; +return mline; +end;$BODY$ + LANGUAGE 'plpgsql' VOLATILE; + + +CREATE OR REPLACE FUNCTION bud_card_ins_upd() + RETURNS "trigger" AS +$BODY$declare + sCode text; +begin + +sCode:=trim(upper(NEW.bc_code)); +sCode:=replace(sCode,' ','_'); +sCode:=substr(sCode,1,10); +NEW.bc_code:=sCode; +return NEW; +end;$BODY$ + LANGUAGE 'plpgsql' VOLATILE; +ALTER FUNCTION bud_card_ins_upd() OWNER TO phpcompta; + +-- +-- Name: t_bud_card_ins_up; Type: TRIGGER; Schema: public; Owner: phpcompta +-- + +CREATE TRIGGER t_bud_card_ins_up + BEFORE INSERT OR UPDATE ON bud_card + FOR EACH ROW + EXECUTE PROCEDURE bud_card_ins_upd(); + + +-- +-- Name: bud_hypothese_bh_id; Type: FK CONSTRAINT; Schema: public; Owner: phpcompta +-- + +ALTER TABLE ONLY bud_card + ADD CONSTRAINT bud_hypothese_bh_id FOREIGN KEY (bh_id) REFERENCES bud_hypothese(bh_id) ON UPDATE CASCADE ON DELETE CASCADE; + + +CREATE TRIGGER t_bud_detail_ins_upd + BEFORE INSERT OR UPDATE + ON bud_detail + FOR EACH ROW + EXECUTE PROCEDURE bud_detail_ins_upd(); + + + +CREATE TABLE jrn_periode +( + jrn_def_id int4 NOT NULL, + p_id int4 NOT NULL, + status text, + CONSTRAINT jrn_periode_pk PRIMARY KEY (jrn_def_id, p_id), + CONSTRAINT jrn_per_jrn_def_id FOREIGN KEY (jrn_def_id) + REFERENCES jrn_def (jrn_def_id) MATCH SIMPLE + ON UPDATE CASCADE ON DELETE CASCADE, + CONSTRAINT jrn_periode_p_id FOREIGN KEY (p_id) + REFERENCES parm_periode (p_id) MATCH SIMPLE + ON UPDATE CASCADE ON DELETE CASCADE +); + +insert into jrn_periode(p_id,jrn_def_id,status) select p_id,jrn_def_id, + case when p_central='t' then 'CE' + when p_closed='t' then 'CL' + else 'OP' + end +from +parm_periode cross join jrn_def; + +CREATE OR REPLACE FUNCTION jrn_def_add() + RETURNS "trigger" AS +$BODY$begin +execute 'insert into jrn_periode(p_id,jrn_def_id,status) select p_id,'||NEW.jrn_def_id||', + case when p_central=true then ''CE'' + when p_closed=true then ''CL'' + else ''OP'' + end +from +parm_periode '; +return NEW; +end;$BODY$ + LANGUAGE 'plpgsql' VOLATILE; + +CREATE TRIGGER t_jrn_def_add_periode + AFTER INSERT + ON jrn_def + FOR EACH ROW + EXECUTE PROCEDURE jrn_def_add(); + +CREATE OR REPLACE FUNCTION jrn_check_periode() + RETURNS "trigger" AS +$BODY$ +declare +bClosed bool; +str_status text; +begin + +select p_closed into bClosed from parm_periode + where p_id=NEW.jr_tech_per; + +if bClosed = true then + raise exception 'Periode fermee'; +end if; + +select status into str_status from jrn_periode + where p_id =NEW.jr_tech_per and jrn_def_id=NEW.jr_def_id; + +if str_status <> 'OP' then + raise exception 'Periode fermee'; +end if; + +return NEW; +end;$BODY$ + LANGUAGE 'plpgsql' VOLATILE; + + +CREATE TRIGGER t_check_jrn + BEFORE INSERT OR DELETE + ON jrn + FOR EACH ROW + EXECUTE PROCEDURE jrn_check_periode(); + +drop TRIGGER tr_jrn_check_balance on jrn; + +CREATE OR REPLACE FUNCTION jrn_def_delete() + RETURNS "trigger" AS +$BODY$ +declare +nb numeric; +begin +select count(*) into nb from jrn where jr_def_id=OLD.jrn_def_id; + +if nb <> 0 then + raise exception 'EFFACEMENT INTERDIT: JOURNAL UTILISE'; +end if; +return OLD; +end;$BODY$ + LANGUAGE 'plpgsql' VOLATILE; + + +CREATE TRIGGER t_jrn_def_delete + BEFORE DELETE + ON jrn_def + FOR EACH ROW + EXECUTE PROCEDURE jrn_def_delete(); + +CREATE OR REPLACE FUNCTION proc_check_balance() + RETURNS "trigger" AS +$BODY$ +declare + diff numeric; + tt integer; +begin + if TG_OP = 'INSERT' or TG_OP='UPDATE' 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; + +CREATE TRIGGER t_check_balance + AFTER INSERT OR UPDATE + ON jrn + FOR EACH ROW + EXECUTE PROCEDURE proc_check_balance(); + +INSERT INTO "action" (ac_id, ac_description) VALUES (60, 'Module Budget'); +alter table tmp_pcmn add column pcm_type text; +ALTER TABLE tmp_pcmn ALTER COLUMN pcm_type set default NULL; + + +CREATE TABLE parm_poste ( + p_value poste_comptable NOT NULL, + p_type text NOT NULL +); + + +-- +-- Name: TABLE parm_poste; Type: COMMENT; Schema: public; Owner: postgres +-- + +COMMENT ON TABLE parm_poste IS 'Contains data for finding is the type of the account (asset)'; + + +-- +-- Name: parm_poste_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres; Tablespace: +-- + +ALTER TABLE ONLY parm_poste + ADD CONSTRAINT parm_poste_pkey PRIMARY KEY (p_value); + + + +CREATE OR REPLACE FUNCTION find_pcm_type(pp_value "numeric") + RETURNS text AS +$BODY$ +declare + str_type text; + str_value text; + n_value numeric; + nLength integer; +begin + str_value:=trim(to_char(pp_value,'99999999999999999999999999999')); + nLength:=length(str_value); + while nLength > 0 loop + n_value:=to_number(str_value,'99999999999999999999999999999'); + select into str_type p_type from parm_poste where p_value=n_value; + if FOUND then + return str_type; + end if; + nLength:=nLength-1; + str_value:=substring(str_value from 1 for nLength); + end loop; +return 'CON'; +end; +$BODY$ + LANGUAGE 'plpgsql' VOLATILE; + +CREATE OR REPLACE FUNCTION tmp_pcmn_ins() + RETURNS "trigger" AS +$BODY$ +declare + r_record tmp_pcmn%ROWTYPE; +begin +r_record=NEW; +if length(trim(r_record.pcm_type))=0 or r_record.pcm_type is NULL then + r_record.pcm_type:=find_pcm_type(NEW.pcm_val); + return r_record; +end if; +return NEW; +end; +$BODY$ + LANGUAGE 'plpgsql' VOLATILE; + +CREATE TRIGGER t_tmp_pcmn_ins + BEFORE INSERT + ON tmp_pcmn + FOR EACH ROW + EXECUTE PROCEDURE tmp_pcmn_ins(); + +update tmp_pcmn set pcm_type=find_pcm_type(pcm_val); +update version set val=37; +commit; diff --git a/html/bilan.php b/html/bilan.php index 8489c250b..6a1bee0d9 100644 --- a/html/bilan.php +++ b/html/bilan.php @@ -31,6 +31,7 @@ require_once ('class_user.php'); require_once('class_dossier.php'); $gDossier=dossier::id(); + /* Admin. Dossier */ $cn=DbConnect($gDossier); diff --git a/include/constant.php b/include/constant.php index 9aac33569..602c1a1b1 100644 --- a/include/constant.php +++ b/include/constant.php @@ -32,11 +32,11 @@ define ("phpcompta_psql_port","5432"); define ("phpcompta_user","phpcompta"); // // the domain can't start by a number !!! -define ("domaine",""); +define ("domaine","beta_"); define ("MAX_COMPTE",4); define ('MAX_BUD_DETAIL',20); -define ("DEBUG","true"); +define ("DEBUG","false"); // securite correspond a la table // action diff --git a/include/impress_bilan.inc.php b/include/impress_bilan.inc.php index af6d1730b..c787fd44b 100644 --- a/include/impress_bilan.inc.php +++ b/include/impress_bilan.inc.php @@ -18,6 +18,7 @@ */ /* $Revision$ */ require_once ('class_acc_bilan.php'); +ini_set("memory_limit","50M"); /*! \file * \brief form who call the printing of the bilan in RTF * file included by user_impress diff --git a/scripts/cleanup.sh b/scripts/cleanup.sh index e71af1e86..e31397a22 100755 --- a/scripts/cleanup.sh +++ b/scripts/cleanup.sh @@ -1,6 +1,6 @@ #!/bin/bash # clean all phpcompta related DB. -DOMAIN="testing" +DOMAIN="beta_" export PGPASSWORD="dany" export PGUSER="phpcompta" export PGHOST=localhost diff --git a/sql/upgrade.sql b/sql/upgrade.sql index 6fe90b644..e2e6d36c9 100644 --- a/sql/upgrade.sql +++ b/sql/upgrade.sql @@ -39,7 +39,6 @@ nCounter integer; select count(*) into nCounter from pg_class where relname='seq_doc_type_'||NEW.dt_id; if nCounter = 0 then execute 'create sequence seq_doc_type_'||NEW.dt_id; -raise notice 'Creating sequence seq_doc_type_%',NEW.dt_id; end if; RETURN NEW; END; @@ -76,7 +75,6 @@ $BODY$ declare name text; begin -raise notice 'poste_analytique_write'; name:=upper(NEW.ga_id); name:=trim(name); name:=replace(name,' ',''); @@ -488,7 +486,6 @@ begin sCode:=trim(upper(NEW.bc_code)); sCode:=replace(sCode,' ','_'); sCode:=substr(sCode,1,10); -raise notice 'sCode is %',sCode; NEW.bc_code:=sCode; return NEW; end;$BODY$ @@ -646,5 +643,78 @@ CREATE TRIGGER t_check_balance EXECUTE PROCEDURE proc_check_balance(); INSERT INTO "action" (ac_id, ac_description) VALUES (60, 'Module Budget'); +alter table tmp_pcmn add column pcm_type text; +ALTER TABLE tmp_pcmn ALTER COLUMN pcm_type set default NULL; + +CREATE TABLE parm_poste ( + p_value poste_comptable NOT NULL, + p_type text NOT NULL +); + + +-- +-- Name: TABLE parm_poste; Type: COMMENT; Schema: public; Owner: postgres +-- + +COMMENT ON TABLE parm_poste IS 'Contains data for finding is the type of the account (asset)'; + + +-- +-- Name: parm_poste_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres; Tablespace: +-- + +ALTER TABLE ONLY parm_poste + ADD CONSTRAINT parm_poste_pkey PRIMARY KEY (p_value); + + + +CREATE OR REPLACE FUNCTION find_pcm_type(pp_value "numeric") + RETURNS text AS +$BODY$ +declare + str_type text; + str_value text; + n_value numeric; + nLength integer; +begin + str_value:=trim(to_char(pp_value,'99999999999999999999999999999')); + nLength:=length(str_value); + while nLength > 0 loop + n_value:=to_number(str_value,'99999999999999999999999999999'); + select into str_type p_type from parm_poste where p_value=n_value; + if FOUND then + return str_type; + end if; + nLength:=nLength-1; + str_value:=substring(str_value from 1 for nLength); + end loop; +return 'CON'; +end; +$BODY$ + LANGUAGE 'plpgsql' VOLATILE; + +CREATE OR REPLACE FUNCTION tmp_pcmn_ins() + RETURNS "trigger" AS +$BODY$ +declare + r_record tmp_pcmn%ROWTYPE; +begin +r_record=NEW; +if length(trim(r_record.pcm_type))=0 or r_record.pcm_type is NULL then + r_record.pcm_type:=find_pcm_type(NEW.pcm_val); + return r_record; +end if; +return NEW; +end; +$BODY$ + LANGUAGE 'plpgsql' VOLATILE; + +CREATE TRIGGER t_tmp_pcmn_ins + BEFORE INSERT + ON tmp_pcmn + FOR EACH ROW + EXECUTE PROCEDURE tmp_pcmn_ins(); + +update tmp_pcmn set pcm_type=find_pcm_type(pcm_val); commit;