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