return: text lang: plpgsql parameters: p0: type: text name: i_table_code src: | DECLARE result TEXT; BEGIN -- Si Toutes les tables, mettre à jour oid par codes IF (i_table_code = '*ALL' OR i_table_code = 'CPT') THEN PERFORM base.cti_initialize_classes_by_code('compta'); PERFORM base.cti_initialize_listes_by_code('compta'); END IF; -- Tables par tables IF (i_table_code = 'CPT' OR i_table_code = '*ALL') THEN INSERT INTO compta.t_classes(code, texte, table_id, is_cti, sequence) SELECT 'REGCPT', 'Regroupement de comptes', t_listes_tables.oid, '0', 9 FROM compta.t_listes_tables WHERE t_listes_tables.code = 'CPT' AND 9 NOT IN (SELECT sequence FROM compta.t_classes WHERE table_id IN (SELECT oid FROM compta.t_listes_tables WHERE code ='CPT')); INSERT INTO compta.t_classes_sections(code, texte, classe_id) SELECT DISTINCT t_comptes_generaux.numero, t_comptes_generaux.texte, t_classes.oid FROM compta.t_comptes JOIN compta.t_comptes t_comptes_generaux ON (t_comptes.compte_general_id = t_comptes_generaux.oid), compta.t_classes JOIN compta.t_listes_tables ON (t_listes_tables.oid = t_classes.table_id) WHERE t_listes_tables.code = 'CPT' AND t_classes.sequence = 9 AND t_classes.code = 'REGCPT' AND t_comptes_generaux.oid IN (SELECT oid FROM compta.p_oids WHERE code_table IN ('comptes_c', 'comptes_h')) AND t_comptes_generaux.numero NOT IN (SELECT t_classes_sections.code FROM compta.t_classes JOIN compta.t_listes_tables ON (t_listes_tables.oid = t_classes.table_id) JOIN compta.t_classes_sections ON (t_classes_sections.classe_id = t_classes.oid) WHERE t_listes_tables.code = 'CPT' AND t_classes.sequence = 9 AND t_classes_sections.classe_id = t_classes.oid ); INSERT INTO compta.t_classes_sections_elements(section_id, to_id) SELECT t_classes_sections.oid, t_comptes.oid FROM compta.t_comptes JOIN compta.t_comptes t_comptes_generaux ON (t_comptes.compte_general_id = t_comptes_generaux.oid), compta.t_classes JOIN compta.t_listes_tables ON (t_listes_tables.oid = t_classes.table_id) JOIN compta.t_classes_sections ON (t_classes_sections.classe_id = t_classes.oid) WHERE t_listes_tables.code = 'CPT' AND t_classes.sequence = 9 AND t_classes.code = 'REGCPT' AND t_comptes_generaux.numero = t_classes_sections.code AND t_classes_sections.oid::text || '|' || t_comptes.oid::text NOT IN (SELECT section_id::text || '|' || to_id::text FROM compta.t_classes_sections_elements ) AND t_comptes.oid IN (SELECT oid FROM compta.p_oids WHERE code_table IN ('comptes_c', 'comptes_h', 'comptes_extra_c', 'comptes_extra_h')) AND t_comptes.oid NOT IN (SELECT to_id FROM compta.t_classes JOIN compta.t_classes_sections ON (t_classes_sections.classe_id = t_classes.oid) JOIN compta.t_classes_sections_elements ON (t_classes_sections_elements.section_id = t_classes_sections.oid) WHERE t_classes.sequence = 9 ); -- Si compte sans signe et pas compte signé dans classe, compte signé a la section de compte sans signe DROP TABLE IF EXISTS w_comptes_section; CREATE TEMP TABLE w_comptes_section AS SELECT t_classes_sections.oid AS classe_id, t_classes_sections.oid AS section_id, t_comptes.numero AS compte_numero, COALESCE(t_comptes_signes.numero, t_comptes.numero) AS compte_signe_numero, t_comptes.oid AS compte_id, COALESCE(t_comptes_signes.oid,t_comptes.oid) AS compte_signe_id FROM compta.t_classes_sections_elements JOIN compta.t_classes_sections ON section_id = t_classes_sections.oid JOIN compta.t_classes ON classe_id = t_classes.oid JOIN compta.t_listes_tables ON table_id = t_listes_tables.oid AND t_listes_tables.code = 'CPT' JOIN compta.t_comptes ON to_id = t_comptes.oid LEFT JOIN compta.t_comptes t_comptes_signes ON t_comptes_signes.compte_nonsigne_id = t_comptes.oid ; ANALYSE w_comptes_section ; INSERT INTO compta.t_classes_sections_elements (section_id, to_id) SELECT w_comptes_section.section_id, w_comptes_section.compte_signe_id AS to_id FROM w_comptes_section LEFT JOIN w_comptes_section w_comptes_section_signe ON w_comptes_section.classe_id = w_comptes_section_signe.classe_id AND w_comptes_section.compte_signe_id = w_comptes_section_signe.compte_id where w_comptes_section.compte_id <> w_comptes_section.compte_signe_id AND w_comptes_section_signe.section_id IS NULL GROUP BY 1,2 ; EXECUTE 'SELECT base.cti_update_classes(''compta'', ''t_comptes_c'', ''CPT'','''');'; END IF; IF (i_table_code = 'JRN' OR i_table_code = '*ALL') THEN EXECUTE 'SELECT base.cti_update_classes(''compta'', ''t_journaux'', ''JRN'','''');'; END IF; IF (i_table_code = 'SIT' OR i_table_code = '*ALL') THEN EXECUTE 'SELECT base.cti_update_classes(''compta'', ''t_sites'', ''SIT'','''');'; END IF; IF (i_table_code = 'PAR' OR i_table_code = '*ALL') THEN EXECUTE 'SELECT base.cti_update_classes(''compta'', ''t_partenaires'', ''PAR'','''');'; END IF; IF (i_table_code = 'ANA' OR i_table_code = '*ALL') THEN EXECUTE 'SELECT base.cti_update_classes(''compta'', ''t_sections_analytiques'', ''ANA'','''');'; END IF; IF (i_table_code = 'CSF' OR i_table_code = '*ALL') THEN EXECUTE 'SELECT base.cti_update_classes(''compta'', ''t_lieux_cout_patient_shs'', ''CSF'',''service_facturation_section'');'; END IF; IF (i_table_code = 'CSA' OR i_table_code = '*ALL') THEN EXECUTE 'SELECT base.cti_update_classes(''compta'', ''t_lieux_cout_patient_shs'', ''CSA'',''activite_section'');'; END IF; IF (i_table_code = 'CSE' OR i_table_code = '*ALL') THEN EXECUTE 'SELECT base.cti_update_classes(''compta'', ''t_lieux_cout_patient_shs'', ''CSE'',''etage_section'');'; END IF; IF (i_table_code = 'CSM' OR i_table_code = '*ALL') THEN EXECUTE 'SELECT base.cti_update_classes(''compta'', ''t_medecins_cout_patient_shs'', ''CSM'','''');'; END IF; IF (i_table_code = 'CSG' OR i_table_code = '*ALL') THEN EXECUTE 'SELECT base.cti_update_classes(''compta'', ''t_ghm_cout_patient_shs'', ''CSG'','''');'; END IF; IF (i_table_code = 'CSH' OR i_table_code = '*ALL') THEN EXECUTE 'SELECT base.cti_update_classes(''compta'', ''t_ghs_cout_patient_shs'', ''CSH'','''');'; END IF; IF (i_table_code = 'CSC' OR i_table_code = '*ALL') THEN EXECUTE 'SELECT base.cti_update_classes(''compta'', ''t_elements_cout_patient_shs'', ''CSC'','''');'; END IF; IF (i_table_code = 'CSU' OR i_table_code = '*ALL') THEN EXECUTE 'SELECT base.cti_update_classes(''compta'', ''t_unites_oeuvre_shs'', ''CSU'','''');'; END IF; RETURN 'OK'; END;