return: text lang: plpgsql src: | DECLARE result TEXT; BEGIN UPDATE compta.t_comptes SET classe_1_id = t_classes_comptes.oid FROM compta.t_classes_comptes, compta.t_comptes t_comptes_generaux WHERE t_comptes.compte_general_id = t_comptes_generaux.oid AND substr(t_comptes_generaux.numero, 1 , 1) = t_classes_comptes.code AND t_comptes.classe_1_id IS DISTINCT FROM t_classes_comptes.oid; UPDATE compta.t_comptes SET classe_2_id = t_classes_comptes.oid FROM compta.t_classes_comptes, compta.t_comptes t_comptes_generaux WHERE t_comptes.compte_general_id = t_comptes_generaux.oid AND substr(t_comptes_generaux.numero, 1 , 2) = t_classes_comptes.code AND t_comptes.classe_2_id IS DISTINCT FROM t_classes_comptes.oid; UPDATE compta.t_comptes SET classe_3_id = t_classes_comptes.oid FROM compta.t_classes_comptes, compta.t_comptes t_comptes_generaux WHERE t_comptes.compte_general_id = t_comptes_generaux.oid AND substr(t_comptes_generaux.numero, 1 , 3) = t_classes_comptes.code AND t_comptes.classe_3_id IS DISTINCT FROM t_classes_comptes.oid; UPDATE compta.t_comptes SET classe_4_id = t_classes_comptes.oid FROM compta.t_classes_comptes, compta.t_comptes t_comptes_generaux WHERE t_comptes.compte_general_id = t_comptes_generaux.oid AND substr(t_comptes_generaux.numero, 1 , 4) = t_classes_comptes.code AND t_comptes.classe_4_id IS DISTINCT FROM t_classes_comptes.oid; UPDATE compta.t_comptes SET classe_5_id = t_classes_comptes.oid FROM compta.t_classes_comptes, compta.t_comptes t_comptes_generaux WHERE t_comptes.compte_general_id = t_comptes_generaux.oid AND substr(t_comptes_generaux.numero, 1 , 5) = t_classes_comptes.code AND t_comptes.classe_5_id IS DISTINCT FROM t_classes_comptes.oid; UPDATE compta.t_comptes SET classe_6_id = t_classes_comptes.oid FROM compta.t_classes_comptes, compta.t_comptes t_comptes_generaux WHERE t_comptes.compte_general_id = t_comptes_generaux.oid AND substr(t_comptes_generaux.numero, 1 , 6) = t_classes_comptes.code AND t_comptes.classe_6_id IS DISTINCT FROM t_classes_comptes.oid; -- Comptes signes (classes 4 et 5 pour bilan) -- Nouveaux champs UPDATE compta.t_comptes SET sens = '' WHERE sens IS NULL; UPDATE compta.t_comptes SET sens = 'C' WHERE t_comptes.numero like '%(C)' AND sens = '' ; UPDATE compta.t_comptes SET sens = 'D' WHERE t_comptes.numero like '%(D)' AND sens = '' ; UPDATE compta.t_comptes SET compte_nonsigne_id = t_comptes_nonsigne.oid, compte_nonsigne_numero = t_comptes_nonsigne.numero FROM compta.t_comptes t_comptes_nonsigne WHERE t_comptes_nonsigne.type_compta_id = t_comptes.type_compta_id AND split_part(t_comptes.numero,'(C)',1) = t_comptes_nonsigne.numero AND t_comptes.numero like '%(C)' AND t_comptes.oid = t_comptes.compte_nonsigne_id ; UPDATE compta.t_comptes SET compte_nonsigne_id = t_comptes_nonsigne.oid, compte_nonsigne_numero = t_comptes_nonsigne.numero FROM compta.t_comptes t_comptes_nonsigne WHERE t_comptes_nonsigne.type_compta_id = t_comptes.type_compta_id AND split_part(t_comptes.numero,'(D)',1) = t_comptes_nonsigne.numero AND t_comptes.numero like '%(D)' AND t_comptes.oid = t_comptes.compte_nonsigne_id ; UPDATE compta.t_comptes SET compte_nonsigne_id = oid WHERE sens = '' AND compte_nonsigne_id IS DISTINCT FROM oid; UPDATE compta.t_comptes SET compte_nonsigne_numero = numero WHERE sens = '' AND compte_nonsigne_numero IS DISTINCT FROm numero ; -- Sens des comptes selon exercice DROP TABLE IF EXISTS cti_reorganize_comptes_compte_sens; CREATE TEMP TABLE cti_reorganize_comptes_compte_sens AS SELECT p_historique_ecritures_total.site_id, t_comptes.compte_nonsigne_id AS oid, t_comptes.compte_nonsigne_numero AS numero, exercice_comptable, CASE WHEN SUM(montant_debit)-SUM(montant_credit) > 0 THEN 'D' WHEN SUM(montant_debit)-SUM(montant_credit) < 0 THEN 'C' ELSE '' END AS sens FROM compta.p_historique_ecritures_total JOIN compta.t_comptes ON t_comptes.oid = p_historique_ecritures_total.compte_id WHERE t_comptes.numero LIKE '4%' OR t_comptes.numero LIKE '5%' OR t_comptes.numero LIKE '603%' OR t_comptes.numero LIKE '1813%' OR t_comptes.numero LIKE '1814%' GROUP BY 1,2,3,4 ORDER BY 1,2; UPDATE cti_reorganize_comptes_compte_sens SET sens = CASE WHEN nb_c > nb_d THEN 'C' WHEN nb_d > nb_c THEN 'D' ELSE '' END FROM ( SELECT oid, SUM(CASE WHEN sens = 'C' THEN 1 ELSE 0 END) AS nb_c, SUM(CASE WHEN sens = 'D' THEN 1 ELSE 0 END) AS nb_d FROM cti_reorganize_comptes_compte_sens GROUP BY 1 ) subview WHERE cti_reorganize_comptes_compte_sens.oid = subview.oid AND cti_reorganize_comptes_compte_sens.sens = '' ; UPDATE cti_reorganize_comptes_compte_sens SET sens = CASE WHEN nb_c > nb_d THEN 'C' WHEN nb_d > nb_c THEN 'D' ELSE '' END FROM ( SELECT substr(numero,1,3) AS sous_classe, SUM(CASE WHEN sens = 'C' THEN 1 ELSE 0 END) AS nb_c, SUM(CASE WHEN sens = 'D' THEN 1 ELSE 0 END) AS nb_d FROM cti_reorganize_comptes_compte_sens GROUP BY 1 ORDER BY 1 ) subview WHERE substr(cti_reorganize_comptes_compte_sens.numero,1,3) = subview.sous_classe AND cti_reorganize_comptes_compte_sens.sens = '' ; UPDATE cti_reorganize_comptes_compte_sens SET sens = CASE WHEN nb_c > nb_d THEN 'C' WHEN nb_d > nb_c THEN 'D' ELSE '' END FROM ( SELECT substr(numero,1,2) AS sous_classe, SUM(CASE WHEN sens = 'C' THEN 1 ELSE 0 END) AS nb_c, SUM(CASE WHEN sens = 'D' THEN 1 ELSE 0 END) AS nb_d FROM cti_reorganize_comptes_compte_sens GROUP BY 1 ORDER BY 1 ) subview WHERE substr(cti_reorganize_comptes_compte_sens.numero,1,2) = subview.sous_classe AND cti_reorganize_comptes_compte_sens.sens = '' ; UPDATE cti_reorganize_comptes_compte_sens SET sens = 'C' WHERE sens = '' AND substr(numero,1,1) = '4'; UPDATE cti_reorganize_comptes_compte_sens SET sens = 'D' WHERE sens = '' AND substr(numero,1,1) = '5'; UPDATE cti_reorganize_comptes_compte_sens SET sens = 'D' WHERE sens = '' AND substr(numero,1,3) = '603'; -- Ajout des comptes signes (debit et credit) INSERT INTO compta.t_comptes( type_compta_id, numero, texte, compte_general_id, clinique_honoraire, banque, etat, classe_1_id, classe_2_id, classe_3_id, classe_4_id, classe_5_id, classe_6_id, solde_initial, collectif, type_compta_extra_id, numero_extra, texte_extra, partenaire_id, inter_site, sens, compte_nonsigne_id, compte_nonsigne_numero) SELECT t_comptes.type_compta_id, t_comptes.numero|| '(C)', t_comptes.texte, t_comptes.compte_general_id, t_comptes.clinique_honoraire, t_comptes.banque, t_comptes.etat, t_comptes.classe_1_id, t_comptes.classe_2_id, t_comptes.classe_3_id, t_comptes.classe_4_id, t_comptes.classe_5_id, t_comptes.classe_6_id, t_comptes.solde_initial, t_comptes.collectif, t_comptes.type_compta_extra_id, t_comptes.numero_extra, t_comptes.texte_extra, t_comptes.partenaire_id, t_comptes.inter_site, 'C' AS sens, t_comptes.oid AS compte_nonsigne_id, t_comptes.numero AS compte_nonsigne_numero FROM compta.t_comptes JOIN ( SELECT oid FROM cti_reorganize_comptes_compte_sens WHERE sens <> '' GROUP BY 1 ) subview ON t_comptes.oid = subview.oid WHERE (t_comptes.numero|| '(C)') NOT IN (SELECT numero FROM compta.t_comptes) ; INSERT INTO compta.t_comptes( type_compta_id, numero, texte, compte_general_id, clinique_honoraire, banque, etat, classe_1_id, classe_2_id, classe_3_id, classe_4_id, classe_5_id, classe_6_id, solde_initial, collectif, type_compta_extra_id, numero_extra, texte_extra, partenaire_id, inter_site, sens, compte_nonsigne_id, compte_nonsigne_numero) SELECT t_comptes.type_compta_id, t_comptes.numero|| '(D)', t_comptes.texte, t_comptes.compte_general_id, t_comptes.clinique_honoraire, t_comptes.banque, t_comptes.etat, t_comptes.classe_1_id, t_comptes.classe_2_id, t_comptes.classe_3_id, t_comptes.classe_4_id, t_comptes.classe_5_id, t_comptes.classe_6_id, t_comptes.solde_initial, t_comptes.collectif, t_comptes.type_compta_extra_id, t_comptes.numero_extra, t_comptes.texte_extra, t_comptes.partenaire_id, t_comptes.inter_site, 'D' AS sens, t_comptes.oid AS compte_nonsigne_id, t_comptes.numero AS compte_nonsigne_numero FROM compta.t_comptes JOIN ( SELECT oid FROM cti_reorganize_comptes_compte_sens WHERE sens <> '' GROUP BY 1 ) subview ON t_comptes.oid = subview.oid WHERE (t_comptes.numero|| '(D)') NOT IN (SELECT numero FROM compta.t_comptes) ; UPDATE compta.t_comptes_c SET banque = t_comptes.banque FROM compta.t_comptes WHERE t_comptes.oid = t_comptes_c.compte_nonsigne_id AND t_comptes_c.banque <> t_comptes.banque ; -- Mise a jour des ecritures UPDATE compta.p_historique_ecritures SET compte_id = t_comptes_signe.oid FROM compta.t_comptes JOIN cti_reorganize_comptes_compte_sens ON t_comptes.compte_nonsigne_id = cti_reorganize_comptes_compte_sens.oid JOIN compta.t_comptes t_comptes_signe ON cti_reorganize_comptes_compte_sens.oid = t_comptes_signe.compte_nonsigne_id AND cti_reorganize_comptes_compte_sens.sens = t_comptes_signe.sens WHERE p_historique_ecritures.compte_id = t_comptes.oid AND p_historique_ecritures.site_id = cti_reorganize_comptes_compte_sens.site_id AND p_historique_ecritures.exercice_comptable = cti_reorganize_comptes_compte_sens.exercice_comptable AND p_historique_ecritures.compte_id IS DISTINCT FROM t_comptes_signe.oid ; UPDATE compta.p_historique_ecritures_total p_historique_ecritures SET compte_id = t_comptes_signe.oid FROM compta.t_comptes JOIN cti_reorganize_comptes_compte_sens ON t_comptes.compte_nonsigne_id = cti_reorganize_comptes_compte_sens.oid JOIN compta.t_comptes t_comptes_signe ON cti_reorganize_comptes_compte_sens.oid = t_comptes_signe.compte_nonsigne_id AND cti_reorganize_comptes_compte_sens.sens = t_comptes_signe.sens WHERE p_historique_ecritures.compte_id = t_comptes.oid AND p_historique_ecritures.site_id = cti_reorganize_comptes_compte_sens.site_id AND p_historique_ecritures.exercice_comptable = cti_reorganize_comptes_compte_sens.exercice_comptable AND p_historique_ecritures.compte_id IS DISTINCT FROM t_comptes_signe.oid ; -- Code banque UPDATE compta.t_comptes SET banque = t_comptes_nonsignes.banque FROM compta.t_comptes t_comptes_nonsignes WHERE t_comptes.compte_nonsigne_id = t_comptes_nonsignes.oid AND t_comptes.compte_nonsigne_id <> t_comptes.oid AND t_comptes.banque <> t_comptes_nonsignes.banque ; -- Mise a jour table repliquee UPDATE compta.t_comptes_c SET compte_general_id = t_comptes.compte_general_id, compte_general_numero = t_comptes_generaux.numero, compte_general_texte = t_comptes_generaux.texte, numero = t_comptes.numero, texte = t_comptes.texte, clinique_honoraire = t_comptes.clinique_honoraire, type_compta_id = t_comptes.type_compta_id, type_compta_code = t_types_compta.code, type_compta_texte = t_types_compta.texte, banque = t_comptes.banque, classe_1_id = t_comptes.classe_1_id, classe_1_code = t_classe_1.code, classe_1_texte = t_classe_1.texte, classe_2_id = t_comptes.classe_2_id, classe_2_code = t_classe_2.code, classe_2_texte = t_classe_2.texte, classe_3_id = t_comptes.classe_3_id, classe_3_code = t_classe_3.code, classe_3_texte = t_classe_3.texte, classe_4_id = t_comptes.classe_4_id, classe_4_code = t_classe_4.code, classe_4_texte = t_classe_4.texte, classe_5_id = t_comptes.classe_5_id, classe_5_code = t_classe_5.code, classe_5_texte = t_classe_5.texte, classe_6_id = t_comptes.classe_6_id, classe_6_code = t_classe_6.code, classe_6_texte = t_classe_6.texte, compte_nonsigne_id = t_comptes.compte_nonsigne_id, compte_nonsigne_numero = t_comptes.compte_nonsigne_numero FROM compta.t_comptes JOIN compta.t_types_compta ON (t_comptes.type_compta_id = t_types_compta.oid ) JOIN compta.t_comptes t_comptes_generaux ON (t_comptes_generaux.oid = t_comptes.compte_general_id) JOIN compta.t_classes_comptes t_classe_1 ON (t_comptes.classe_1_id = t_classe_1.oid) JOIN compta.t_classes_comptes t_classe_2 ON (t_comptes.classe_2_id = t_classe_2.oid) JOIN compta.t_classes_comptes t_classe_3 ON (t_comptes.classe_3_id = t_classe_3.oid) JOIN compta.t_classes_comptes t_classe_4 ON (t_comptes.classe_4_id = t_classe_4.oid) JOIN compta.t_classes_comptes t_classe_5 ON (t_comptes.classe_5_id = t_classe_5.oid) JOIN compta.t_classes_comptes t_classe_6 ON (t_comptes.classe_6_id = t_classe_6.oid) WHERE t_comptes.oid = t_comptes_c.oid AND ( t_comptes_c.compte_general_id IS DISTINCT FROM t_comptes.compte_general_id OR t_comptes_c.compte_general_numero IS DISTINCT FROM t_comptes_generaux.numero OR t_comptes_c.compte_general_texte IS DISTINCT FROM t_comptes_generaux.texte OR t_comptes_c.numero IS DISTINCT FROM t_comptes.numero OR t_comptes_c.texte IS DISTINCT FROM t_comptes.texte OR t_comptes_c.clinique_honoraire IS DISTINCT FROM t_comptes.clinique_honoraire OR t_comptes_c.type_compta_id IS DISTINCT FROM t_comptes.type_compta_id OR t_comptes_c.type_compta_code IS DISTINCT FROM t_types_compta.code OR t_comptes_c.type_compta_texte IS DISTINCT FROM t_types_compta.texte OR t_comptes_c.banque IS DISTINCT FROM t_comptes.banque OR t_comptes_c.classe_1_id IS DISTINCT FROM t_comptes.classe_1_id OR t_comptes_c.classe_1_code IS DISTINCT FROM t_classe_1.code OR t_comptes_c.classe_1_texte IS DISTINCT FROM t_classe_1.texte OR t_comptes_c.classe_2_id IS DISTINCT FROM t_comptes.classe_2_id OR t_comptes_c.classe_2_code IS DISTINCT FROM t_classe_2.code OR t_comptes_c.classe_2_texte IS DISTINCT FROM t_classe_2.texte OR t_comptes_c.classe_3_id IS DISTINCT FROM t_comptes.classe_3_id OR t_comptes_c.classe_3_code IS DISTINCT FROM t_classe_3.code OR t_comptes_c.classe_3_texte IS DISTINCT FROM t_classe_3.texte OR t_comptes_c.classe_4_id IS DISTINCT FROM t_comptes.classe_4_id OR t_comptes_c.classe_4_code IS DISTINCT FROM t_classe_4.code OR t_comptes_c.classe_4_texte IS DISTINCT FROM t_classe_4.texte OR t_comptes_c.classe_5_id IS DISTINCT FROM t_comptes.classe_5_id OR t_comptes_c.classe_5_code IS DISTINCT FROM t_classe_5.code OR t_comptes_c.classe_5_texte IS DISTINCT FROM t_classe_5.texte OR t_comptes_c.classe_6_id IS DISTINCT FROM t_comptes.classe_6_id OR t_comptes_c.classe_6_code IS DISTINCT FROM t_classe_6.code OR t_comptes_c.classe_6_texte IS DISTINCT FROM t_classe_6.texte OR t_comptes_c.compte_nonsigne_id IS DISTINCT FROM t_comptes.compte_nonsigne_id OR t_comptes_c.compte_nonsigne_numero IS DISTINCT FROM t_comptes.compte_nonsigne_numero ); INSERT INTO compta.t_comptes_c( compte_general_id, compte_general_numero, compte_general_texte, oid, numero, texte, clinique_honoraire, type_compta_id, type_compta_code, type_compta_texte, banque, classe_1_id, classe_1_code, classe_1_texte, classe_2_id, classe_2_code, classe_2_texte, classe_3_id, classe_3_code, classe_3_texte, classe_4_id, classe_4_code, classe_4_texte, classe_5_id, classe_5_code, classe_5_texte, classe_6_id, classe_6_code, classe_6_texte, compte_nonsigne_id, compte_nonsigne_numero ) SELECT t_comptes.compte_general_id, t_comptes_generaux.numero, t_comptes_generaux.texte, t_comptes.oid, t_comptes.numero, t_comptes.texte, t_comptes.clinique_honoraire, t_comptes.type_compta_id, t_types_compta.code, t_types_compta.texte, t_comptes.banque, t_comptes.classe_1_id, t_classe_1.code, t_classe_1.texte, t_comptes.classe_2_id, t_classe_2.code, t_classe_2.texte, t_comptes.classe_3_id, t_classe_3.code, t_classe_3.texte, t_comptes.classe_4_id, t_classe_4.code, t_classe_4.texte, t_comptes.classe_5_id, t_classe_5.code, t_classe_5.texte, t_comptes.classe_6_id, t_classe_6.code, t_classe_6.texte, t_comptes.compte_nonsigne_id, t_comptes.compte_nonsigne_numero FROM compta.t_comptes JOIN compta.t_types_compta ON (t_comptes.type_compta_id = t_types_compta.oid ) JOIN compta.t_comptes t_comptes_generaux ON (t_comptes_generaux.oid = t_comptes.compte_general_id) JOIN compta.t_classes_comptes t_classe_1 ON (t_comptes.classe_1_id = t_classe_1.oid) JOIN compta.t_classes_comptes t_classe_2 ON (t_comptes.classe_2_id = t_classe_2.oid) JOIN compta.t_classes_comptes t_classe_3 ON (t_comptes.classe_3_id = t_classe_3.oid) JOIN compta.t_classes_comptes t_classe_4 ON (t_comptes.classe_4_id = t_classe_4.oid) JOIN compta.t_classes_comptes t_classe_5 ON (t_comptes.classe_5_id = t_classe_5.oid) JOIN compta.t_classes_comptes t_classe_6 ON (t_comptes.classe_6_id = t_classe_6.oid) WHERE t_comptes.oid NOT IN (SELECt oid FROM compta.t_comptes_c) ORDER BY t_comptes.numero; -- Texte des comptes signes UPDATE compta.t_comptes_c SET compte_nonsigne_numero = t_comptes_nonsigne.numero, texte = t_comptes_nonsigne.texte FROM compta.t_comptes t_comptes_nonsigne WHERE t_comptes_nonsigne.oid = t_comptes_c.compte_nonsigne_id AND t_comptes_c.compte_nonsigne_id <> t_comptes_c.oid AND ( t_comptes_c.compte_nonsigne_numero IS DISTINCT FROM t_comptes_nonsigne.numero OR t_comptes_c.texte IS DISTINCT FROM t_comptes_nonsigne.texte ) ; -- Classes UPDATE compta.t_comptes_c SET arbre_classe_1_id = 0, arbre_classe_1_code = '', arbre_classe_1_texte = '', arbre_classe_2_id = 0, arbre_classe_2_code = '', arbre_classe_2_texte = '', arbre_classe_3_id = 0, arbre_classe_3_code = '', arbre_classe_3_texte = '', arbre_classe_4_id = 0, arbre_classe_4_code = '', arbre_classe_4_texte = '', arbre_classe_5_id = 0, arbre_classe_5_code = '', arbre_classe_5_texte = '', arbre_classe_6_id = 0, arbre_classe_6_code = '', arbre_classe_6_texte = '', arbre_classe_7_id = 0, arbre_classe_7_code = '', arbre_classe_7_texte = ''; UPDATE compta.t_comptes_c SET arbre_classe_1_id = CASE WHEN classe_1_texte <> '' THEN classe_1_id WHEN classe_2_texte <> '' THEN classe_2_id WHEN classe_3_texte <> '' THEN classe_3_id WHEN classe_4_texte <> '' THEN classe_4_id WHEN classe_5_texte <> '' THEN classe_5_id WHEN classe_6_texte <> '' THEN classe_6_id ELSE compte_general_id END, arbre_classe_1_code = CASE WHEN classe_1_texte <> '' THEN classe_1_code WHEN classe_2_texte <> '' THEN classe_2_code WHEN classe_3_texte <> '' THEN classe_3_code WHEN classe_4_texte <> '' THEN classe_4_code WHEN classe_5_texte <> '' THEN classe_5_code WHEN classe_6_texte <> '' THEN classe_6_code ELSE compte_general_numero END, arbre_classe_1_texte = CASE WHEN classe_1_texte <> '' THEN classe_1_texte WHEN classe_2_texte <> '' THEN classe_2_texte WHEN classe_3_texte <> '' THEN classe_3_texte WHEN classe_4_texte <> '' THEN classe_4_texte WHEN classe_5_texte <> '' THEN classe_5_texte WHEN classe_6_texte <> '' THEN classe_6_texte ELSE compte_general_texte END WHERE arbre_classe_1_id IS DISTINCT FROM CASE WHEN classe_1_texte <> '' THEN classe_1_id WHEN classe_2_texte <> '' THEN classe_2_id WHEN classe_3_texte <> '' THEN classe_3_id WHEN classe_4_texte <> '' THEN classe_4_id WHEN classe_5_texte <> '' THEN classe_5_id WHEN classe_6_texte <> '' THEN classe_6_id ELSE compte_general_id END OR arbre_classe_1_code IS DISTINCT FROM CASE WHEN classe_1_texte <> '' THEN classe_1_code WHEN classe_2_texte <> '' THEN classe_2_code WHEN classe_3_texte <> '' THEN classe_3_code WHEN classe_4_texte <> '' THEN classe_4_code WHEN classe_5_texte <> '' THEN classe_5_code WHEN classe_6_texte <> '' THEN classe_6_code ELSE compte_general_numero END OR arbre_classe_1_texte IS DISTINCT FROM CASE WHEN classe_1_texte <> '' THEN classe_1_texte WHEN classe_2_texte <> '' THEN classe_2_texte WHEN classe_3_texte <> '' THEN classe_3_texte WHEN classe_4_texte <> '' THEN classe_4_texte WHEN classe_5_texte <> '' THEN classe_5_texte WHEN classe_6_texte <> '' THEN classe_6_texte ELSE compte_general_texte END; UPDATE compta.t_comptes_c SET arbre_classe_2_id = CASE WHEN classe_2_texte <> '' AND arbre_classe_1_code <> classe_2_code THEN classe_2_id WHEN classe_3_texte <> '' AND arbre_classe_1_code <> classe_3_code THEN classe_3_id WHEN classe_4_texte <> '' AND arbre_classe_1_code <> classe_4_code THEN classe_4_id WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code THEN classe_5_id WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code THEN classe_6_id ELSE compte_general_id END, arbre_classe_2_code = CASE WHEN classe_2_texte <> '' AND arbre_classe_1_code <> classe_2_code THEN classe_2_code WHEN classe_3_texte <> '' AND arbre_classe_1_code <> classe_3_code THEN classe_3_code WHEN classe_4_texte <> '' AND arbre_classe_1_code <> classe_4_code THEN classe_4_code WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code THEN classe_5_code WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code THEN classe_6_code ELSE compte_general_numero END, arbre_classe_2_texte = CASE WHEN classe_2_texte <> '' AND arbre_classe_1_code <> classe_2_code THEN classe_2_texte WHEN classe_3_texte <> '' AND arbre_classe_1_code <> classe_3_code THEN classe_3_texte WHEN classe_4_texte <> '' AND arbre_classe_1_code <> classe_4_code THEN classe_4_texte WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code THEN classe_5_texte WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code THEN classe_6_texte ELSE compte_general_texte END WHERE arbre_classe_1_code <> compte_general_numero AND ( arbre_classe_2_id IS DISTINCT FROM CASE WHEN classe_2_texte <> '' AND arbre_classe_1_code <> classe_2_code THEN classe_2_id WHEN classe_3_texte <> '' AND arbre_classe_1_code <> classe_3_code THEN classe_3_id WHEN classe_4_texte <> '' AND arbre_classe_1_code <> classe_4_code THEN classe_4_id WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code THEN classe_5_id WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code THEN classe_6_id ELSE compte_general_id END OR arbre_classe_2_code IS DISTINCT FROM CASE WHEN classe_2_texte <> '' AND arbre_classe_1_code <> classe_2_code THEN classe_2_code WHEN classe_3_texte <> '' AND arbre_classe_1_code <> classe_3_code THEN classe_3_code WHEN classe_4_texte <> '' AND arbre_classe_1_code <> classe_4_code THEN classe_4_code WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code THEN classe_5_code WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code THEN classe_6_code ELSE compte_general_numero END OR arbre_classe_2_texte IS DISTINCT FROM CASE WHEN classe_2_texte <> '' AND arbre_classe_1_code <> classe_2_code THEN classe_2_texte WHEN classe_3_texte <> '' AND arbre_classe_1_code <> classe_3_code THEN classe_3_texte WHEN classe_4_texte <> '' AND arbre_classe_1_code <> classe_4_code THEN classe_4_texte WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code THEN classe_5_texte WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code THEN classe_6_texte ELSE compte_general_texte END ); UPDATE compta.t_comptes_c SET arbre_classe_3_id = CASE WHEN classe_3_texte <> '' AND arbre_classe_1_code <> classe_3_code AND arbre_classe_2_code <> classe_3_code THEN classe_3_id WHEN classe_4_texte <> '' AND arbre_classe_1_code <> classe_4_code AND arbre_classe_2_code <> classe_4_code THEN classe_4_id WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code AND arbre_classe_2_code <> classe_5_code THEN classe_5_id WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code THEN classe_6_id ELSE compte_general_id END, arbre_classe_3_code = CASE WHEN classe_3_texte <> '' AND arbre_classe_1_code <> classe_3_code AND arbre_classe_2_code <> classe_3_code THEN classe_3_code WHEN classe_4_texte <> '' AND arbre_classe_1_code <> classe_4_code AND arbre_classe_2_code <> classe_4_code THEN classe_4_code WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code AND arbre_classe_2_code <> classe_5_code THEN classe_5_code WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code THEN classe_6_code ELSE compte_general_numero END, arbre_classe_3_texte = CASE WHEN classe_3_texte <> '' AND arbre_classe_1_code <> classe_3_code AND arbre_classe_2_code <> classe_3_code THEN classe_3_texte WHEN classe_4_texte <> '' AND arbre_classe_1_code <> classe_4_code AND arbre_classe_2_code <> classe_4_code THEN classe_4_texte WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code AND arbre_classe_2_code <> classe_5_code THEN classe_5_texte WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code THEN classe_6_texte ELSE compte_general_texte END WHERE arbre_classe_1_code <> compte_general_numero AND arbre_classe_2_code <> compte_general_numero AND ( arbre_classe_3_id IS DISTINCT FROM CASE WHEN classe_3_texte <> '' AND arbre_classe_1_code <> classe_3_code AND arbre_classe_2_code <> classe_3_code THEN classe_3_id WHEN classe_4_texte <> '' AND arbre_classe_1_code <> classe_4_code AND arbre_classe_2_code <> classe_4_code THEN classe_4_id WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code AND arbre_classe_2_code <> classe_5_code THEN classe_5_id WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code THEN classe_6_id ELSE compte_general_id END OR arbre_classe_3_code IS DISTINCT FROM CASE WHEN classe_3_texte <> '' AND arbre_classe_1_code <> classe_3_code AND arbre_classe_2_code <> classe_3_code THEN classe_3_code WHEN classe_4_texte <> '' AND arbre_classe_1_code <> classe_4_code AND arbre_classe_2_code <> classe_4_code THEN classe_4_code WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code AND arbre_classe_2_code <> classe_5_code THEN classe_5_code WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code THEN classe_6_code ELSE compte_general_numero END OR arbre_classe_3_texte IS DISTINCT FROM CASE WHEN classe_3_texte <> '' AND arbre_classe_1_code <> classe_3_code AND arbre_classe_2_code <> classe_3_code THEN classe_3_texte WHEN classe_4_texte <> '' AND arbre_classe_1_code <> classe_4_code AND arbre_classe_2_code <> classe_4_code THEN classe_4_texte WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code AND arbre_classe_2_code <> classe_5_code THEN classe_5_texte WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code THEN classe_6_texte ELSE compte_general_texte END ); UPDATE compta.t_comptes_c SET arbre_classe_4_id = CASE WHEN classe_4_texte <> '' AND arbre_classe_1_code <> classe_4_code AND arbre_classe_2_code <> classe_4_code AND arbre_classe_3_code <> classe_4_code THEN classe_4_id WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code AND arbre_classe_2_code <> classe_5_code AND arbre_classe_3_code <> classe_5_code THEN classe_5_id WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code AND arbre_classe_3_code <> classe_6_code THEN classe_6_id ELSE compte_general_id END, arbre_classe_4_code = CASE WHEN classe_4_texte <> '' AND arbre_classe_1_code <> classe_4_code AND arbre_classe_2_code <> classe_4_code AND arbre_classe_3_code <> classe_4_code THEN classe_4_code WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code AND arbre_classe_2_code <> classe_5_code AND arbre_classe_3_code <> classe_5_code THEN classe_5_code WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code AND arbre_classe_3_code <> classe_6_code THEN classe_6_code ELSE compte_general_numero END, arbre_classe_4_texte = CASE WHEN classe_4_texte <> '' AND arbre_classe_1_code <> classe_4_code AND arbre_classe_2_code <> classe_4_code AND arbre_classe_3_code <> classe_4_code THEN classe_4_texte WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code AND arbre_classe_2_code <> classe_5_code AND arbre_classe_3_code <> classe_5_code THEN classe_5_texte WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code AND arbre_classe_3_code <> classe_6_code THEN classe_6_texte ELSE compte_general_texte END WHERE arbre_classe_1_code <> compte_general_numero AND arbre_classe_2_code <> compte_general_numero AND arbre_classe_3_code <> compte_general_numero AND ( arbre_classe_4_id IS DISTINCT FROM CASE WHEN classe_4_texte <> '' AND arbre_classe_1_code <> classe_4_code AND arbre_classe_2_code <> classe_4_code AND arbre_classe_3_code <> classe_4_code THEN classe_4_id WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code AND arbre_classe_2_code <> classe_5_code AND arbre_classe_3_code <> classe_5_code THEN classe_5_id WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code AND arbre_classe_3_code <> classe_6_code THEN classe_6_id ELSE compte_general_id END OR arbre_classe_4_code IS DISTINCT FROM CASE WHEN classe_4_texte <> '' AND arbre_classe_1_code <> classe_4_code AND arbre_classe_2_code <> classe_4_code AND arbre_classe_3_code <> classe_4_code THEN classe_4_code WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code AND arbre_classe_2_code <> classe_5_code AND arbre_classe_3_code <> classe_5_code THEN classe_5_code WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code AND arbre_classe_3_code <> classe_6_code THEN classe_6_code ELSE compte_general_numero END OR arbre_classe_4_texte IS DISTINCT FROM CASE WHEN classe_4_texte <> '' AND arbre_classe_1_code <> classe_4_code AND arbre_classe_2_code <> classe_4_code AND arbre_classe_3_code <> classe_4_code THEN classe_4_texte WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code AND arbre_classe_2_code <> classe_5_code AND arbre_classe_3_code <> classe_5_code THEN classe_5_texte WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code AND arbre_classe_3_code <> classe_6_code THEN classe_6_texte ELSE compte_general_texte END ); UPDATE compta.t_comptes_c SET arbre_classe_5_id = CASE WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code AND arbre_classe_2_code <> classe_5_code AND arbre_classe_3_code <> classe_5_code AND arbre_classe_4_code <> classe_5_code THEN classe_5_id WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code AND arbre_classe_3_code <> classe_6_code AND arbre_classe_4_code <> classe_6_code THEN classe_6_id ELSE compte_general_id END, arbre_classe_5_code = CASE WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code AND arbre_classe_2_code <> classe_5_code AND arbre_classe_3_code <> classe_5_code AND arbre_classe_4_code <> classe_5_code THEN classe_5_code WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code AND arbre_classe_3_code <> classe_6_code AND arbre_classe_4_code <> classe_6_code THEN classe_6_code ELSE compte_general_numero END, arbre_classe_5_texte = CASE WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code AND arbre_classe_2_code <> classe_5_code AND arbre_classe_3_code <> classe_5_code AND arbre_classe_4_code <> classe_5_code THEN classe_5_texte WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code AND arbre_classe_3_code <> classe_6_code AND arbre_classe_4_code <> classe_6_code THEN classe_6_texte ELSE compte_general_texte END WHERE arbre_classe_1_code <> compte_general_numero AND arbre_classe_2_code <> compte_general_numero AND arbre_classe_3_code <> compte_general_numero AND arbre_classe_4_code <> compte_general_numero AND ( arbre_classe_5_id IS DISTINCT FROM CASE WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code AND arbre_classe_2_code <> classe_5_code AND arbre_classe_3_code <> classe_5_code AND arbre_classe_4_code <> classe_5_code THEN classe_5_id WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code AND arbre_classe_3_code <> classe_6_code AND arbre_classe_4_code <> classe_6_code THEN classe_6_id ELSE compte_general_id END OR arbre_classe_5_code IS DISTINCT FROM CASE WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code AND arbre_classe_2_code <> classe_5_code AND arbre_classe_3_code <> classe_5_code AND arbre_classe_4_code <> classe_5_code THEN classe_5_code WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code AND arbre_classe_3_code <> classe_6_code AND arbre_classe_4_code <> classe_6_code THEN classe_6_code ELSE compte_general_numero END OR arbre_classe_5_texte IS DISTINCT FROM CASE WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code AND arbre_classe_2_code <> classe_5_code AND arbre_classe_3_code <> classe_5_code AND arbre_classe_4_code <> classe_5_code THEN classe_5_texte WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code AND arbre_classe_3_code <> classe_6_code AND arbre_classe_4_code <> classe_6_code THEN classe_6_texte ELSE compte_general_texte END ); UPDATE compta.t_comptes_c SET arbre_classe_6_id = CASE WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code AND arbre_classe_3_code <> classe_6_code AND arbre_classe_4_code <> classe_6_code AND arbre_classe_4_code <> classe_6_code THEN classe_6_id ELSE compte_general_id END, arbre_classe_6_code = CASE WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code AND arbre_classe_3_code <> classe_6_code AND arbre_classe_4_code <> classe_6_code AND arbre_classe_4_code <> classe_6_code THEN classe_6_code ELSE compte_general_numero END, arbre_classe_6_texte = CASE WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code AND arbre_classe_3_code <> classe_6_code AND arbre_classe_4_code <> classe_6_code AND arbre_classe_4_code <> classe_6_code THEN classe_6_texte ELSE compte_general_texte END WHERE arbre_classe_1_code <> compte_general_numero AND arbre_classe_2_code <> compte_general_numero AND arbre_classe_3_code <> compte_general_numero AND arbre_classe_4_code <> compte_general_numero AND arbre_classe_5_code <> compte_general_numero AND ( arbre_classe_6_id IS DISTINCT FROM CASE WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code AND arbre_classe_3_code <> classe_6_code AND arbre_classe_4_code <> classe_6_code AND arbre_classe_4_code <> classe_6_code THEN classe_6_id ELSE compte_general_id END OR arbre_classe_6_code IS DISTINCT FROM CASE WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code AND arbre_classe_3_code <> classe_6_code AND arbre_classe_4_code <> classe_6_code AND arbre_classe_4_code <> classe_6_code THEN classe_6_code ELSE compte_general_numero END OR arbre_classe_6_texte IS DISTINCT FROM CASE WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code AND arbre_classe_3_code <> classe_6_code AND arbre_classe_4_code <> classe_6_code AND arbre_classe_4_code <> classe_6_code THEN classe_6_texte ELSE compte_general_texte END ); UPDATE compta.t_comptes_c SET arbre_classe_7_id = compte_general_id, arbre_classe_7_code = compte_general_numero, arbre_classe_7_texte = compte_general_texte WHERE arbre_classe_1_code <> numero AND arbre_classe_2_code <> compte_general_numero AND arbre_classe_3_code <> compte_general_numero AND arbre_classe_4_code <> compte_general_numero AND arbre_classe_5_code <> compte_general_numero AND arbre_classe_6_code <> compte_general_numero AND ( arbre_classe_7_id IS DISTINCT FROM compte_general_id OR arbre_classe_7_code IS DISTINCT FROM compte_general_numero OR arbre_classe_7_texte IS DISTINCT FROM compte_general_texte ); -- Synchronisation entre les tables t_comptes_c et t_comptes cf. intégrité des tables DELETE FROM compta.t_comptes_c WHERE oid NOT IN ( SELECT oid FROM compta.t_comptes ); RETURN 'OK'; END;