From 8164c6024dd1f557fdefb192e1c8a5ddd4722ada Mon Sep 17 00:00:00 2001 From: Dany De Bontridder Date: Sat, 17 Jul 2010 20:12:47 +0000 Subject: [PATCH] Patch upgrade 85 --- html/admin/sql/patch/upgrade85.sql | 132 +++++++++++++++++++++++++++++ include/constant.php | 2 +- sql/upgrade.sql | 128 ---------------------------- 3 files changed, 133 insertions(+), 129 deletions(-) create mode 100644 html/admin/sql/patch/upgrade85.sql diff --git a/html/admin/sql/patch/upgrade85.sql b/html/admin/sql/patch/upgrade85.sql new file mode 100644 index 000000000..a00152f65 --- /dev/null +++ b/html/admin/sql/patch/upgrade85.sql @@ -0,0 +1,132 @@ +begin; +alter table jrnx add f_id bigint; +alter table jrnx alter f_id set default null; +update jrnx set f_id=(select f_id from fiche join jnt_fic_att_value using(f_id) join attr_value using(jft_id) where ad_id=23 and av_text=jrnx.j_qcode); +alter table quant_sold alter qs_internal drop not null; +alter table quant_purchase alter qp_internal drop not null; +alter table attr_Def add ad_size text; +update attr_def set ad_size='8' where ad_type='date'; +update attr_def set ad_size='6' where ad_type='numeric'; +update attr_def set ad_size='22' where ad_size is null; +alter table attr_def alter ad_size set not null; + +ALTER TABLE jrnx ADD CONSTRAINT jrnx_f_id_fkey FOREIGN KEY (f_id) REFERENCES fiche (f_id) MATCH SIMPLE ON UPDATE cascade ON DELETE NO ACTION; +CREATE INDEX fki_jrnx_f_id ON jrnx USING btree (f_id); + +CREATE OR REPLACE FUNCTION correct_quant_purchase() returns void +as +$BODY$ +declare + r_invalid quant_purchase; + s_QuickCode text; + b_j_debit bool; + r_new record; + r_jrnx record; +begin + +for r_invalid in select * from quant_purchase where qp_valid='A' +loop + +-- get qcode +select j_qcode into s_QuickCode from vw_poste_qcode where f_id=r_invalid.qp_fiche; +raise notice 'qp_id % Quick code is %',r_invalid.qp_id,s_QuickCode; + +-- get deb or cred +select j_debit,j_grpt,j_jrn_def,j_montant into r_jrnx from jrnx where j_id=r_invalid.j_id; +if NOT FOUND then + raise notice 'error not found jrnx %',r_invalid.j_id; + update quant_purchase set qp_valid='Y' where qp_id=r_invalid.qp_id; + continue; +end if; +raise notice 'j_debit % , j_grpt % ,j_jrn_def % qp_price %',r_jrnx.j_debit,r_jrnx.j_grpt,r_jrnx.j_jrn_def ,r_invalid.qp_price; + +select jr_internal,j_id,j_montant into r_new + from jrnx join jrn on (j_grpt=jr_grpt_id) + where + j_jrn_def=r_jrnx.j_jrn_def + and j_id not in (select j_id from quant_purchase) + and j_qcode=s_QuickCode + and j_montant=r_jrnx.j_montant + and j_debit != r_jrnx.j_debit; + +if NOT FOUND then + raise notice 'error not found %', r_invalid.j_id; + update quant_purchase set qp_valid='Y' where qp_id=r_invalid.qp_id; + continue; +end if; +raise notice 'j_id % found amount %',r_new.j_id,r_new.j_montant; + +-- insert into quant_purchase +insert into quant_purchase (qp_internal,j_id,qp_fiche,qp_quantite,qp_price,qp_vat,qp_nd_amount,qp_nd_tva_recup,qp_valid,qp_dep_priv,qp_supplier,qp_vat_code) +values (r_new.jr_internal,r_invalid.j_id,r_invalid.qp_fiche,(r_invalid.qp_quantite * (-1)),r_invalid.qp_price * (-1),r_invalid.qp_vat*(-1),r_invalid.qp_nd_amount*(-1),r_invalid.qp_nd_tva_recup*(-1) ,'Y',r_invalid.qp_dep_priv*(-1),r_invalid.qp_supplier,r_invalid.qp_vat_code); + +update quant_purchase set qp_valid='Y' where qp_id=r_invalid.qp_id; +end loop; +return; +end; +$BODY$ + LANGUAGE 'plpgsql' VOLATILE; + +select correct_quant_purchase(); + +CREATE OR REPLACE FUNCTION correct_quant_sale() returns void +as +$BODY$ +declare + r_invalid quant_sold; + s_QuickCode text; + b_j_debit bool; + r_new record; + r_jrnx record; +begin + +for r_invalid in select * from quant_sold where qs_valid='A' +loop + +-- get qcode +select j_qcode into s_QuickCode from vw_poste_qcode where f_id=r_invalid.qs_fiche; +raise notice 'qp_id % Quick code is %',r_invalid.qs_id,s_QuickCode; + +-- get deb or cred +select j_debit,j_grpt,j_jrn_def,j_montant into r_jrnx from jrnx where j_id=r_invalid.j_id; +if NOT FOUND then + update quant_sold set qs_valid='Y' where qs_id=r_invalid.qs_id; + raise notice 'error not found jrnx %',r_invalid.j_id; + continue; +end if; +raise notice 'j_debit % , j_grpt % ,j_jrn_def % qs_price %',r_jrnx.j_debit,r_jrnx.j_grpt,r_jrnx.j_jrn_def ,r_invalid.qs_price; + +select jr_internal,j_id,j_montant into r_new + from jrnx join jrn on (j_grpt=jr_grpt_id) + where + j_jrn_def=r_jrnx.j_jrn_def + and j_id not in (select j_id from quant_sold) + and j_qcode=s_QuickCode + and j_montant=r_jrnx.j_montant + and j_debit != r_jrnx.j_debit; + +if NOT FOUND then + update quant_sold set qs_valid='Y' where qs_id=r_invalid.qs_id; + raise notice 'error not found %', r_invalid.j_id; + continue; +end if; +raise notice 'j_id % found amount %',r_new.j_id,r_new.j_montant; + +-- insert into quant_sold + + insert into quant_sold (qs_internal,j_id,qs_fiche,qs_quantite,qs_price,qs_vat,qs_valid,qs_client,qs_vat_code) + values (r_new.jr_internal,r_invalid.j_id,r_invalid.qs_fiche,(r_invalid.qs_quantite * (-1)),r_invalid.qs_price * (-1),r_invalid.qs_vat*(-1),'Y',r_invalid.qs_client,r_invalid.qs_vat_code); + update quant_sold set qs_valid='Y' where qs_id=r_invalid.qs_id; +end loop; +return; +end; +$BODY$ + LANGUAGE 'plpgsql' VOLATILE; + +select correct_quant_sale() ; + +ALTER TABLE jrn_def ADD COLUMN jrn_def_bank bigint; +alter table jrn_def add jrn_def_num_op integer; +update version set val=86; + +commit; \ No newline at end of file diff --git a/include/constant.php b/include/constant.php index 57d2b7275..facf87d75 100644 --- a/include/constant.php +++ b/include/constant.php @@ -29,7 +29,7 @@ require_once('constant.security.php'); global $version_phpcompta; $version_phpcompta=9000; -define ("DBVERSION",85); +define ("DBVERSION",86); define ("DBVERSIONREPO",12); define ('NOTFOUND','--not found--'); diff --git a/sql/upgrade.sql b/sql/upgrade.sql index e78ba6704..e69de29bb 100644 --- a/sql/upgrade.sql +++ b/sql/upgrade.sql @@ -1,128 +0,0 @@ -alter table jrnx add f_id bigint; -alter table jrnx alter f_id set default null; -update jrnx set f_id=(select f_id from fiche join jnt_fic_att_value using(f_id) join attr_value using(jft_id) where ad_id=23 and av_text=jrnx.j_qcode); -alter table quant_sold alter qs_internal drop not null; -alter table quant_purchase alter qp_internal drop not null; -alter table attr_Def add ad_size text; -update attr_def set ad_size='8' where ad_type='date'; -update attr_def set ad_size='6' where ad_type='numeric'; -update attr_def set ad_size='22' where ad_size is null; -alter table attr_def alter ad_size set not null; - -ALTER TABLE jrnx ADD CONSTRAINT jrnx_f_id_fkey FOREIGN KEY (f_id) REFERENCES fiche (f_id) MATCH SIMPLE ON UPDATE cascade ON DELETE NO ACTION; -CREATE INDEX fki_jrnx_f_id ON jrnx USING btree (f_id); - -CREATE OR REPLACE FUNCTION correct_quant_purchase() returns void -as -$BODY$ -declare - r_invalid quant_purchase; - s_QuickCode text; - b_j_debit bool; - r_new record; - r_jrnx record; -begin - -for r_invalid in select * from quant_purchase where qp_valid='A' -loop - --- get qcode -select j_qcode into s_QuickCode from vw_poste_qcode where f_id=r_invalid.qp_fiche; -raise notice 'qp_id % Quick code is %',r_invalid.qp_id,s_QuickCode; - --- get deb or cred -select j_debit,j_grpt,j_jrn_def,j_montant into r_jrnx from jrnx where j_id=r_invalid.j_id; -if NOT FOUND then - raise notice 'error not found jrnx %',r_invalid.j_id; - update quant_purchase set qp_valid='Y' where qp_id=r_invalid.qp_id; - continue; -end if; -raise notice 'j_debit % , j_grpt % ,j_jrn_def % qp_price %',r_jrnx.j_debit,r_jrnx.j_grpt,r_jrnx.j_jrn_def ,r_invalid.qp_price; - -select jr_internal,j_id,j_montant into r_new - from jrnx join jrn on (j_grpt=jr_grpt_id) - where - j_jrn_def=r_jrnx.j_jrn_def - and j_id not in (select j_id from quant_purchase) - and j_qcode=s_QuickCode - and j_montant=r_jrnx.j_montant - and j_debit != r_jrnx.j_debit; - -if NOT FOUND then - raise notice 'error not found %', r_invalid.j_id; - update quant_purchase set qp_valid='Y' where qp_id=r_invalid.qp_id; - continue; -end if; -raise notice 'j_id % found amount %',r_new.j_id,r_new.j_montant; - --- insert into quant_purchase -insert into quant_purchase (qp_internal,j_id,qp_fiche,qp_quantite,qp_price,qp_vat,qp_nd_amount,qp_nd_tva_recup,qp_valid,qp_dep_priv,qp_supplier,qp_vat_code) -values (r_new.jr_internal,r_invalid.j_id,r_invalid.qp_fiche,(r_invalid.qp_quantite * (-1)),r_invalid.qp_price * (-1),r_invalid.qp_vat*(-1),r_invalid.qp_nd_amount*(-1),r_invalid.qp_nd_tva_recup*(-1) ,'Y',r_invalid.qp_dep_priv*(-1),r_invalid.qp_supplier,r_invalid.qp_vat_code); - -update quant_purchase set qp_valid='Y' where qp_id=r_invalid.qp_id; -end loop; -return; -end; -$BODY$ - LANGUAGE 'plpgsql' VOLATILE; - -select correct_quant_purchase(); - -CREATE OR REPLACE FUNCTION correct_quant_sale() returns void -as -$BODY$ -declare - r_invalid quant_sold; - s_QuickCode text; - b_j_debit bool; - r_new record; - r_jrnx record; -begin - -for r_invalid in select * from quant_sold where qs_valid='A' -loop - --- get qcode -select j_qcode into s_QuickCode from vw_poste_qcode where f_id=r_invalid.qs_fiche; -raise notice 'qp_id % Quick code is %',r_invalid.qs_id,s_QuickCode; - --- get deb or cred -select j_debit,j_grpt,j_jrn_def,j_montant into r_jrnx from jrnx where j_id=r_invalid.j_id; -if NOT FOUND then - update quant_sold set qs_valid='Y' where qs_id=r_invalid.qs_id; - raise notice 'error not found jrnx %',r_invalid.j_id; - continue; -end if; -raise notice 'j_debit % , j_grpt % ,j_jrn_def % qs_price %',r_jrnx.j_debit,r_jrnx.j_grpt,r_jrnx.j_jrn_def ,r_invalid.qs_price; - -select jr_internal,j_id,j_montant into r_new - from jrnx join jrn on (j_grpt=jr_grpt_id) - where - j_jrn_def=r_jrnx.j_jrn_def - and j_id not in (select j_id from quant_sold) - and j_qcode=s_QuickCode - and j_montant=r_jrnx.j_montant - and j_debit != r_jrnx.j_debit; - -if NOT FOUND then - update quant_sold set qs_valid='Y' where qs_id=r_invalid.qs_id; - raise notice 'error not found %', r_invalid.j_id; - continue; -end if; -raise notice 'j_id % found amount %',r_new.j_id,r_new.j_montant; - --- insert into quant_sold - - insert into quant_sold (qs_internal,j_id,qs_fiche,qs_quantite,qs_price,qs_vat,qs_valid,qs_client,qs_vat_code) - values (r_new.jr_internal,r_invalid.j_id,r_invalid.qs_fiche,(r_invalid.qs_quantite * (-1)),r_invalid.qs_price * (-1),r_invalid.qs_vat*(-1),'Y',r_invalid.qs_client,r_invalid.qs_vat_code); - update quant_sold set qs_valid='Y' where qs_id=r_invalid.qs_id; -end loop; -return; -end; -$BODY$ - LANGUAGE 'plpgsql' VOLATILE; - -select correct_quant_sale() ; - -ALTER TABLE jrn_def ADD COLUMN jrn_def_bank bigint; -alter table jrn_def add jrn_def_num_op integer; \ No newline at end of file