diff --git a/html/admin/sql/patch/upgrade89.sql b/html/admin/sql/patch/upgrade89.sql
new file mode 100644
index 000000000..6e0587e07
--- /dev/null
+++ b/html/admin/sql/patch/upgrade89.sql
@@ -0,0 +1,105 @@
+begin;
+
+update jrnx set f_id = (select f_id from vw_poste_qcode where vw_poste_qcode.j_qcode=jrnx.j_qcode) where j_qcode is not null;
+CREATE OR REPLACE FUNCTION comptaproc.jrnx_ins()
+ RETURNS trigger AS
+$BODY$
+declare
+n_fid bigint;
+begin
+
+if NEW.j_qcode is NULL then
+ return NEW;
+end if;
+
+NEW.j_qcode=trim(upper(NEW.j_qcode));
+
+if length (NEW.j_qcode) = 0 then
+ NEW.j_qcode=NULL;
+ else
+ select f_id into n_fid from fiche join jnt_fic_att_value using (f_id) join attr_value using(jft_id) where ad_id=23 and av_text=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;
+$BODY$
+LANGUAGE plpgsql;
+
+insert into attr_Def values (32,'Prénom','text',22);
+update attr_def set ad_text='Dépense charge du grant (partie privé) ' where ad_id=31;
+
+
+-- add the first name
+
+DROP VIEW vw_fiche_attr;
+
+CREATE OR REPLACE VIEW vw_fiche_attr AS
+ SELECT a.f_id, a.fd_id, a.av_text AS vw_name, b.av_text AS vw_sell, c.av_text AS vw_buy, d.av_text AS tva_code, tva_rate.tva_id, tva_rate.tva_rate, tva_rate.tva_label, e.av_text AS vw_addr, f.av_text AS vw_cp, j.av_text AS quick_code, h.av_text AS vw_description, i.av_text AS tva_num, k.av_text AS vw_first_name, fiche_def.frd_id
+ FROM ( SELECT fiche.f_id, fiche.fd_id, attr_value.av_text
+ FROM fiche
+ JOIN jnt_fic_att_value USING (f_id)
+ JOIN attr_value USING (jft_id)
+ JOIN attr_def USING (ad_id)
+ WHERE jnt_fic_att_value.ad_id = 1) a
+ LEFT JOIN ( SELECT fiche.f_id, attr_value.av_text
+ FROM fiche
+ JOIN jnt_fic_att_value USING (f_id)
+ JOIN attr_value USING (jft_id)
+ JOIN attr_def USING (ad_id)
+ WHERE jnt_fic_att_value.ad_id = 6) b ON a.f_id = b.f_id
+ LEFT JOIN ( SELECT fiche.f_id, attr_value.av_text
+ FROM fiche
+ JOIN jnt_fic_att_value USING (f_id)
+ JOIN attr_value USING (jft_id)
+ JOIN attr_def USING (ad_id)
+ WHERE jnt_fic_att_value.ad_id = 7) c ON a.f_id = c.f_id
+ LEFT JOIN ( SELECT fiche.f_id, attr_value.av_text
+ FROM fiche
+ JOIN jnt_fic_att_value USING (f_id)
+ JOIN attr_value USING (jft_id)
+ JOIN attr_def USING (ad_id)
+ WHERE jnt_fic_att_value.ad_id = 2) d ON a.f_id = d.f_id
+ LEFT JOIN ( SELECT fiche.f_id, attr_value.av_text
+ FROM fiche
+ JOIN jnt_fic_att_value USING (f_id)
+ JOIN attr_value USING (jft_id)
+ JOIN attr_def USING (ad_id)
+ WHERE jnt_fic_att_value.ad_id = 14) e ON a.f_id = e.f_id
+ LEFT JOIN ( SELECT fiche.f_id, attr_value.av_text
+ FROM fiche
+ JOIN jnt_fic_att_value USING (f_id)
+ JOIN attr_value USING (jft_id)
+ JOIN attr_def USING (ad_id)
+ WHERE jnt_fic_att_value.ad_id = 15) f ON a.f_id = f.f_id
+ LEFT JOIN ( SELECT fiche.f_id, attr_value.av_text
+ FROM fiche
+ JOIN jnt_fic_att_value USING (f_id)
+ JOIN attr_value USING (jft_id)
+ JOIN attr_def USING (ad_id)
+ WHERE jnt_fic_att_value.ad_id = 23) j ON a.f_id = j.f_id
+ LEFT JOIN ( SELECT fiche.f_id, attr_value.av_text
+ FROM fiche
+ JOIN jnt_fic_att_value USING (f_id)
+ JOIN attr_value USING (jft_id)
+ JOIN attr_def USING (ad_id)
+ WHERE jnt_fic_att_value.ad_id = 9) h ON a.f_id = h.f_id
+ LEFT JOIN ( SELECT fiche.f_id, attr_value.av_text
+ FROM fiche
+ JOIN jnt_fic_att_value USING (f_id)
+ JOIN attr_value USING (jft_id)
+ JOIN attr_def USING (ad_id)
+ WHERE jnt_fic_att_value.ad_id = 13) i ON a.f_id = i.f_id
+ LEFT JOIN ( SELECT fiche.f_id, attr_value.av_text
+ FROM fiche
+ JOIN jnt_fic_att_value USING (f_id)
+ JOIN attr_value USING (jft_id)
+ JOIN attr_def USING (ad_id)
+ WHERE jnt_fic_att_value.ad_id = 32) k ON a.f_id = k.f_id
+ LEFT JOIN tva_rate ON d.av_text = tva_rate.tva_id::text
+ JOIN fiche_def USING (fd_id);
+update version set val=90;
+
+commit;