|
|
return: text
|
|
|
lang: plpgsql
|
|
|
src: |
|
|
|
DECLARE
|
|
|
|
|
|
sqlcmd text;
|
|
|
def_cursor refcursor;
|
|
|
_schemaname text;
|
|
|
result TEXT;
|
|
|
BEGIN
|
|
|
|
|
|
-- Formes d'activité
|
|
|
DROP TABLE IF EXISTS w_indicateur_condition;
|
|
|
CREATE TEMP TABLE w_indicateur_condition AS
|
|
|
SELECT
|
|
|
'CTI_COMPTE#' || v_source.oid::text AS code,
|
|
|
COALESCE(t_classes.texte || '. ' || t_classes_sections.texte,'Compte. ' || v_source.texte::text) AS texte,
|
|
|
v_source.texte AS texte_court,
|
|
|
'compte_id'::text AS column_name,
|
|
|
''::text AS rule,
|
|
|
v_source.oid::text AS value,
|
|
|
'COMPTE_C='||v_source.oid AS view_select_rule,
|
|
|
ARRAY[
|
|
|
CASE
|
|
|
WHEN v_source.oid LIKE 'LS%' THEN '1-Classe' || substr(v_source.oid,3,2)
|
|
|
WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '2-Liste CTI'
|
|
|
WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '3-Liste CTI'
|
|
|
ELSE '9' END,
|
|
|
CASE
|
|
|
WHEN v_source.oid LIKE 'LS%' THEN 'LS#'||t_listes_tables_classes.code||':'||CASE WHEN t_classes.code <> '' THEN t_classes.code ELSE '*CLS'||to_char(t_classes.sequence,'FM00') END||':'||t_classes_sections.code
|
|
|
WHEN v_source.oid LIKE 'LI%' THEN COALESCE('LI#'||t_listes.code,v_source.oid)
|
|
|
WHEN v_source.oid LIKE 'SL%' THEN COALESCE('SL#'||t_listes.code,v_source.oid)
|
|
|
ELSE v_source.oid END
|
|
|
|
|
|
] AS arbre_code,
|
|
|
ARRAY[
|
|
|
CASE
|
|
|
WHEN v_source.oid LIKE 'LS%' THEN t_classes.texte
|
|
|
WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes CTI'
|
|
|
WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes Etablissement'
|
|
|
ELSE 'Valeurs' END,
|
|
|
CASE
|
|
|
WHEN v_source.oid LIKE 'LS%' THEN t_classes_sections.texte
|
|
|
ELSE v_source.texte END
|
|
|
|
|
|
] AS arbre_texte
|
|
|
FROM compta.v_comptes_c_1 v_source
|
|
|
LEFT JOIN compta.t_classes_sections ON v_source.oid LIKE 'LS%' AND
|
|
|
t_classes_sections.oid::text = substr(v_source.oid,5)
|
|
|
LEFT JOIN compta.t_classes ON t_classes.oid = t_classes_sections.classe_id
|
|
|
LEFT JOIN compta.t_listes_tables t_listes_tables_classes ON t_classes.table_id = t_listes_tables_classes.oid
|
|
|
LEFT JOIN compta.t_listes ON (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') AND
|
|
|
t_listes.oid::text = substr(v_source.oid,3) AND
|
|
|
t_listes.code <> ''
|
|
|
WHERE v_source.oid NOT LIKE 'LC%' AND
|
|
|
(v_source.oid NOT LIKE 'LS%' OR substr(v_source.oid,5) <> '0') AND
|
|
|
v_source.oid NOT LIKE 'CP%' AND
|
|
|
v_source.oid NOT LIKE 'CL%' AND
|
|
|
v_source.oid NOT LIKE 'LS09%' AND
|
|
|
v_source.oid <> '-1'
|
|
|
;
|
|
|
|
|
|
-- Journaux
|
|
|
INSERT INTO w_indicateur_condition
|
|
|
SELECT
|
|
|
'CTI_JOURNAL#' || v_source.oid::text AS code,
|
|
|
COALESCE(t_classes.texte || '. ' || t_classes_sections.texte,'Journal. ' || v_source.texte::text) AS texte,
|
|
|
v_source.texte AS texte_court,
|
|
|
'journal_id'::text AS column_name,
|
|
|
''::text AS rule,
|
|
|
v_source.oid::text AS value,
|
|
|
'JOURNAL_C='||v_source.oid AS view_select_rule,
|
|
|
ARRAY[
|
|
|
CASE
|
|
|
WHEN v_source.oid LIKE 'LS%' THEN '1-Classe' || substr(v_source.oid,3,2)
|
|
|
WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '2-Liste CTI'
|
|
|
WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '3-Liste CTI'
|
|
|
ELSE '9' END,
|
|
|
CASE
|
|
|
WHEN v_source.oid LIKE 'LS%' THEN 'LS#'||t_listes_tables_classes.code||':'||CASE WHEN t_classes.code <> '' THEN t_classes.code ELSE '*CLS'||to_char(t_classes.sequence,'FM00') END||':'||t_classes_sections.code
|
|
|
WHEN v_source.oid LIKE 'LI%' THEN COALESCE('LI#'||t_listes.code,v_source.oid)
|
|
|
WHEN v_source.oid LIKE 'SL%' THEN COALESCE('SL#'||t_listes.code,v_source.oid)
|
|
|
WHEN v_source.oid LIKE 'JR%' THEN COALESCE('JR#'||t_source.code,v_source.oid)
|
|
|
ELSE v_source.oid END
|
|
|
|
|
|
] AS arbre_code,
|
|
|
ARRAY[
|
|
|
CASE
|
|
|
WHEN v_source.oid LIKE 'LS%' THEN t_classes.texte
|
|
|
WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes CTI'
|
|
|
WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes Etablissement'
|
|
|
ELSE 'Valeurs' END,
|
|
|
CASE
|
|
|
WHEN v_source.oid LIKE 'LS%' THEN t_classes_sections.texte
|
|
|
ELSE v_source.texte END
|
|
|
] AS arbre_texte
|
|
|
FROM compta.v_journaux_c_1 v_source
|
|
|
LEFT JOIN compta.t_classes_sections ON v_source.oid LIKE 'LS%' AND
|
|
|
t_classes_sections.oid::text = substr(v_source.oid,5)
|
|
|
LEFT JOIN compta.t_classes ON t_classes.oid = t_classes_sections.classe_id
|
|
|
LEFT JOIN compta.t_listes_tables t_listes_tables_classes ON t_classes.table_id = t_listes_tables_classes.oid
|
|
|
LEFT JOIN compta.t_listes ON (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') AND
|
|
|
t_listes.oid::text = substr(v_source.oid,3) AND
|
|
|
t_listes.code <> ''
|
|
|
LEFT JOIN compta.t_journaux t_source ON v_source.oid LIKE 'JR%' AND t_source.oid = substr(v_source.oid,3)
|
|
|
WHERE v_source.oid NOT LIKE 'LC%' AND
|
|
|
(v_source.oid NOT LIKE 'LS%' OR substr(v_source.oid,5) <> '0') AND
|
|
|
v_source.oid <> '-1'
|
|
|
;
|
|
|
|
|
|
-- POLES
|
|
|
INSERT INTO w_indicateur_condition
|
|
|
SELECT
|
|
|
'CTI_POLE#' || v_source.oid::text AS code,
|
|
|
COALESCE(t_classes.texte || '. ' || t_classes_sections.texte,'Pole. ' || v_source.texte::text) AS texte,
|
|
|
v_source.texte AS texte_court,
|
|
|
'pole_id'::text AS column_name,
|
|
|
''::text AS rule,
|
|
|
v_source.oid::text AS value,
|
|
|
'POLE='||v_source.oid AS view_select_rule,
|
|
|
ARRAY[
|
|
|
CASE
|
|
|
WHEN v_source.oid LIKE 'LS%' THEN '1-Classe' || substr(v_source.oid,3,2)
|
|
|
WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '2-Liste CTI'
|
|
|
WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '3-Liste CTI'
|
|
|
ELSE '9' END,
|
|
|
CASE
|
|
|
WHEN v_source.oid LIKE 'LS%' THEN 'LS#'||t_listes_tables_classes.code||':'||CASE WHEN t_classes.code <> '' THEN t_classes.code ELSE '*CLS'||to_char(t_classes.sequence,'FM00') END||':'||t_classes_sections.code
|
|
|
WHEN v_source.oid LIKE 'LI%' THEN COALESCE('LI#'||t_listes.code,v_source.oid)
|
|
|
WHEN v_source.oid LIKE 'SL%' THEN COALESCE('SL#'||t_listes.code,v_source.oid)
|
|
|
WHEN v_source.oid LIKE 'JR%' THEN COALESCE('JR#'||t_source.code,v_source.oid)
|
|
|
ELSE v_source.oid END
|
|
|
|
|
|
] AS arbre_code,
|
|
|
ARRAY[
|
|
|
CASE
|
|
|
WHEN v_source.oid LIKE 'LS%' THEN t_classes.texte
|
|
|
WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes CTI'
|
|
|
WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes Etablissement'
|
|
|
ELSE 'Valeurs' END,
|
|
|
CASE
|
|
|
WHEN v_source.oid LIKE 'LS%' THEN t_classes_sections.texte
|
|
|
ELSE v_source.texte END
|
|
|
] AS arbre_texte
|
|
|
FROM compta.v_pole_1 v_source
|
|
|
LEFT JOIN compta.t_classes_sections ON v_source.oid LIKE 'LS%' AND
|
|
|
t_classes_sections.oid::text = substr(v_source.oid,5)
|
|
|
LEFT JOIN compta.t_classes ON t_classes.oid = t_classes_sections.classe_id
|
|
|
LEFT JOIN compta.t_listes_tables t_listes_tables_classes ON t_classes.table_id = t_listes_tables_classes.oid
|
|
|
LEFT JOIN compta.t_listes ON (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') AND
|
|
|
t_listes.oid::text = substr(v_source.oid,3) AND
|
|
|
t_listes.code <> ''
|
|
|
LEFT JOIN compta.t_journaux t_source ON v_source.oid LIKE 'JR%' AND t_source.oid = substr(v_source.oid,3)
|
|
|
WHERE v_source.oid NOT LIKE 'LC%' AND
|
|
|
(v_source.oid NOT LIKE 'LS%' OR substr(v_source.oid,5) <> '0') AND
|
|
|
v_source.oid <> '-1'
|
|
|
;
|
|
|
|
|
|
-- Sites
|
|
|
INSERT INTO w_indicateur_condition
|
|
|
SELECT
|
|
|
'CTI_SITE#' || v_source.oid::text AS code,
|
|
|
COALESCE(t_classes.texte || '. ' || t_classes_sections.texte,'Site. ' || v_source.texte::text) AS texte,
|
|
|
v_source.texte AS texte_court,
|
|
|
'site_id'::text AS column_name,
|
|
|
''::text AS rule,
|
|
|
v_source.oid::text AS value,
|
|
|
'SITE_C='||v_source.oid AS view_select_rule,
|
|
|
ARRAY[
|
|
|
CASE
|
|
|
WHEN v_source.oid LIKE 'LS%' THEN '1-Classe' || substr(v_source.oid,3,2)
|
|
|
WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '2-Liste CTI'
|
|
|
WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '3-Liste CTI'
|
|
|
ELSE '9' END,
|
|
|
CASE
|
|
|
WHEN v_source.oid LIKE 'LS%' THEN 'LS#'||t_listes_tables_classes.code||':'||CASE WHEN t_classes.code <> '' THEN t_classes.code ELSE '*CLS'||to_char(t_classes.sequence,'FM00') END||':'||t_classes_sections.code
|
|
|
WHEN v_source.oid LIKE 'LI%' THEN COALESCE('LI#'||t_listes.code,v_source.oid)
|
|
|
WHEN v_source.oid LIKE 'SL%' THEN COALESCE('SL#'||t_listes.code,v_source.oid)
|
|
|
WHEN v_source.oid LIKE 'SI%' THEN COALESCE('SI#'||t_source.code,v_source.oid)
|
|
|
ELSE v_source.oid END
|
|
|
|
|
|
] AS arbre_code,
|
|
|
ARRAY[
|
|
|
CASE
|
|
|
WHEN v_source.oid LIKE 'LS%' THEN t_classes.texte
|
|
|
WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes CTI'
|
|
|
WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes Etablissement'
|
|
|
ELSE 'Valeurs' END,
|
|
|
v_source.texte
|
|
|
] AS arbre_texte
|
|
|
FROM compta.v_sites_c_1 v_source
|
|
|
LEFT JOIN compta.t_classes_sections ON v_source.oid LIKE 'LS%' AND
|
|
|
t_classes_sections.oid::text = substr(v_source.oid,5)
|
|
|
LEFT JOIN compta.t_classes ON t_classes.oid = t_classes_sections.classe_id
|
|
|
LEFT JOIN compta.t_listes_tables t_listes_tables_classes ON t_classes.table_id = t_listes_tables_classes.oid
|
|
|
LEFT JOIN compta.t_listes ON (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') AND
|
|
|
t_listes.oid::text = substr(v_source.oid,3) AND
|
|
|
t_listes.code <> ''
|
|
|
LEFT JOIN compta.t_sites t_source ON v_source.oid LIKE 'SI%' AND t_source.oid = substr(v_source.oid,3)
|
|
|
WHERE v_source.oid NOT LIKE 'LC%' AND
|
|
|
(v_source.oid NOT LIKE 'LS%' OR substr(v_source.oid,5) <> '0') AND
|
|
|
v_source.oid <> '-1' AND
|
|
|
v_source.oid <> 'SI0'
|
|
|
;
|
|
|
|
|
|
|
|
|
-- Sections analytiques
|
|
|
INSERT INTO w_indicateur_condition
|
|
|
SELECT
|
|
|
'CTI_SECANA#' || v_source.oid::text AS code,
|
|
|
COALESCE(t_classes.texte || '. ' || t_classes_sections.texte,'Section. ' || v_source.texte::text) AS texte,
|
|
|
v_source.texte AS texte_court,
|
|
|
'section_analytique_id'::text AS column_name,
|
|
|
''::text AS rule,
|
|
|
v_source.oid::text AS value,
|
|
|
'SECTION_ANALYTIQUE_C='||v_source.oid AS view_select_rule,
|
|
|
ARRAY[
|
|
|
CASE
|
|
|
WHEN v_source.oid LIKE 'LS%' THEN '1-Classe' || substr(v_source.oid,3,2)
|
|
|
WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '2-Liste CTI'
|
|
|
WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '3-Liste CTI'
|
|
|
ELSE '9' END,
|
|
|
CASE
|
|
|
WHEN v_source.oid LIKE 'LS%' THEN 'LS#'||t_listes_tables_classes.code||':'||CASE WHEN t_classes.code <> '' THEN t_classes.code ELSE '*CLS'||to_char(t_classes.sequence,'FM00') END||':'||t_classes_sections.code
|
|
|
WHEN v_source.oid LIKE 'LI%' THEN COALESCE('LI#'||t_listes.code,v_source.oid)
|
|
|
WHEN v_source.oid LIKE 'SL%' THEN COALESCE('SL#'||t_listes.code,v_source.oid)
|
|
|
WHEN v_source.oid LIKE 'SA%' THEN COALESCE('SA#'||t_source.code,v_source.oid)
|
|
|
ELSE v_source.oid END
|
|
|
|
|
|
] AS arbre_code,
|
|
|
ARRAY[
|
|
|
CASE
|
|
|
WHEN v_source.oid LIKE 'LS%' THEN t_classes.texte
|
|
|
WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes CTI'
|
|
|
WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes Etablissement'
|
|
|
ELSE 'Valeurs' END,
|
|
|
CASE
|
|
|
WHEN v_source.oid LIKE 'LS%' THEN t_classes_sections.texte
|
|
|
ELSE v_source.texte END
|
|
|
] AS arbre_texte
|
|
|
FROM compta.v_sections_analytiques_c_1 v_source
|
|
|
LEFT JOIN compta.t_classes_sections ON v_source.oid LIKE 'LS%' AND
|
|
|
t_classes_sections.oid::text = substr(v_source.oid,5)
|
|
|
LEFT JOIN compta.t_classes ON t_classes.oid = t_classes_sections.classe_id
|
|
|
LEFT JOIN compta.t_listes_tables t_listes_tables_classes ON t_classes.table_id = t_listes_tables_classes.oid
|
|
|
LEFT JOIN compta.t_listes ON (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') AND
|
|
|
t_listes.oid::text = substr(v_source.oid,3) AND
|
|
|
t_listes.code <> ''
|
|
|
LEFT JOIN compta.t_sections_analytiques t_source ON v_source.oid LIKE 'SA%' AND t_source.oid = substr(v_source.oid,3)
|
|
|
WHERE v_source.oid NOT LIKE 'LC%' AND
|
|
|
(v_source.oid NOT LIKE 'LS%' OR substr(v_source.oid,5) <> '0') AND
|
|
|
v_source.oid <> '-1'
|
|
|
;
|
|
|
|
|
|
-- Sections analytiques
|
|
|
INSERT INTO w_indicateur_condition
|
|
|
SELECT
|
|
|
'CTI_SECANA2#' || v_source.oid::text AS code,
|
|
|
COALESCE(t_classes.texte || '. ' || t_classes_sections.texte,'Section (2). ' || v_source.texte::text) AS texte,
|
|
|
v_source.texte AS texte_court,
|
|
|
'section_analytique_2_id'::text AS column_name,
|
|
|
''::text AS rule,
|
|
|
v_source.oid::text AS value,
|
|
|
'SECTION_ANALYTIQUE_2_C='||v_source.oid AS view_select_rule,
|
|
|
ARRAY[
|
|
|
CASE
|
|
|
WHEN v_source.oid LIKE 'LS%' THEN '1-Classe' || substr(v_source.oid,3,2)
|
|
|
WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '2-Liste CTI'
|
|
|
WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '3-Liste CTI'
|
|
|
ELSE '9' END,
|
|
|
CASE
|
|
|
WHEN v_source.oid LIKE 'LS%' THEN 'LS#'||t_listes_tables_classes.code||':'||CASE WHEN t_classes.code <> '' THEN t_classes.code ELSE '*CLS'||to_char(t_classes.sequence,'FM00') END||':'||t_classes_sections.code
|
|
|
WHEN v_source.oid LIKE 'LI%' THEN COALESCE('LI#'||t_listes.code,v_source.oid)
|
|
|
WHEN v_source.oid LIKE 'SL%' THEN COALESCE('SL#'||t_listes.code,v_source.oid)
|
|
|
WHEN v_source.oid LIKE 'SA%' THEN COALESCE('SA#'||t_source.code,v_source.oid)
|
|
|
ELSE v_source.oid END
|
|
|
|
|
|
] AS arbre_code,
|
|
|
ARRAY[
|
|
|
CASE
|
|
|
WHEN v_source.oid LIKE 'LS%' THEN t_classes.texte
|
|
|
WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes CTI'
|
|
|
WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes Etablissement'
|
|
|
ELSE 'Valeurs' END,
|
|
|
CASE
|
|
|
WHEN v_source.oid LIKE 'LS%' THEN t_classes_sections.texte
|
|
|
ELSE v_source.texte END
|
|
|
] AS arbre_texte
|
|
|
FROM compta.v_sections_analytiques_2_c_1 v_source
|
|
|
LEFT JOIN compta.t_classes_sections ON v_source.oid LIKE 'LS%' AND
|
|
|
t_classes_sections.oid::text = substr(v_source.oid,5)
|
|
|
LEFT JOIN compta.t_classes ON t_classes.oid = t_classes_sections.classe_id
|
|
|
LEFT JOIN compta.t_listes_tables t_listes_tables_classes ON t_classes.table_id = t_listes_tables_classes.oid
|
|
|
LEFT JOIN compta.t_listes ON (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') AND
|
|
|
t_listes.oid::text = substr(v_source.oid,3) AND
|
|
|
t_listes.code <> ''
|
|
|
LEFT JOIN compta.t_sections_analytiques t_source ON v_source.oid LIKE 'SA%' AND t_source.oid = substr(v_source.oid,3)
|
|
|
WHERE v_source.oid NOT LIKE 'LC%' AND
|
|
|
(v_source.oid NOT LIKE 'LS%' OR substr(v_source.oid,5) <> '0') AND
|
|
|
v_source.oid <> '-1'
|
|
|
;
|
|
|
|
|
|
-- Sections analytiques
|
|
|
INSERT INTO w_indicateur_condition
|
|
|
SELECT
|
|
|
'CTI_SECANA3#' || v_source.oid::text AS code,
|
|
|
COALESCE(t_classes.texte || '. ' || t_classes_sections.texte,'Section (3). ' || v_source.texte::text) AS texte,
|
|
|
v_source.texte AS texte_court,
|
|
|
'section_analytique_3_id'::text AS column_name,
|
|
|
''::text AS rule,
|
|
|
v_source.oid::text AS value,
|
|
|
'SECTION_ANALYTIQUE_3_C='||v_source.oid AS view_select_rule,
|
|
|
ARRAY[
|
|
|
CASE
|
|
|
WHEN v_source.oid LIKE 'LS%' THEN '1-Classe' || substr(v_source.oid,3,2)
|
|
|
WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '2-Liste CTI'
|
|
|
WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '3-Liste CTI'
|
|
|
ELSE '9' END,
|
|
|
CASE
|
|
|
WHEN v_source.oid LIKE 'LS%' THEN 'LS#'||t_listes_tables_classes.code||':'||CASE WHEN t_classes.code <> '' THEN t_classes.code ELSE '*CLS'||to_char(t_classes.sequence,'FM00') END||':'||t_classes_sections.code
|
|
|
WHEN v_source.oid LIKE 'LI%' THEN COALESCE('LI#'||t_listes.code,v_source.oid)
|
|
|
WHEN v_source.oid LIKE 'SL%' THEN COALESCE('SL#'||t_listes.code,v_source.oid)
|
|
|
WHEN v_source.oid LIKE 'SA%' THEN COALESCE('SA#'||t_source.code,v_source.oid)
|
|
|
ELSE v_source.oid END
|
|
|
|
|
|
] AS arbre_code,
|
|
|
ARRAY[
|
|
|
CASE
|
|
|
WHEN v_source.oid LIKE 'LS%' THEN t_classes.texte
|
|
|
WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes CTI'
|
|
|
WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes Etablissement'
|
|
|
ELSE 'Valeurs' END,
|
|
|
CASE
|
|
|
WHEN v_source.oid LIKE 'LS%' THEN t_classes_sections.texte
|
|
|
ELSE v_source.texte END
|
|
|
] AS arbre_texte
|
|
|
FROM compta.v_sections_analytiques_3_c_1 v_source
|
|
|
LEFT JOIN compta.t_classes_sections ON v_source.oid LIKE 'LS%' AND
|
|
|
t_classes_sections.oid::text = substr(v_source.oid,5)
|
|
|
LEFT JOIN compta.t_classes ON t_classes.oid = t_classes_sections.classe_id
|
|
|
LEFT JOIN compta.t_listes_tables t_listes_tables_classes ON t_classes.table_id = t_listes_tables_classes.oid
|
|
|
LEFT JOIN compta.t_listes ON (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') AND
|
|
|
t_listes.oid::text = substr(v_source.oid,3) AND
|
|
|
t_listes.code <> ''
|
|
|
LEFT JOIN compta.t_sections_analytiques t_source ON v_source.oid LIKE 'SA%' AND t_source.oid = substr(v_source.oid,3)
|
|
|
WHERE v_source.oid NOT LIKE 'LC%' AND
|
|
|
(v_source.oid NOT LIKE 'SA%' OR (SELECT count(*) FROM compta.v_sections_analytiques_3_c_1) < 1000) AND
|
|
|
(v_source.oid NOT LIKE 'LS%' OR substr(v_source.oid,5) <> '0') AND
|
|
|
v_source.oid <> '-1'
|
|
|
;
|
|
|
|
|
|
-- Sections analytiques
|
|
|
INSERT INTO w_indicateur_condition
|
|
|
SELECT
|
|
|
'CTI_SECANA4#' || v_source.oid::text AS code,
|
|
|
COALESCE(t_classes.texte || '. ' || t_classes_sections.texte,'Section (4). ' || v_source.texte::text) AS texte,
|
|
|
v_source.texte AS texte_court,
|
|
|
'section_analytique_4_id'::text AS column_name,
|
|
|
''::text AS rule,
|
|
|
v_source.oid::text AS value,
|
|
|
'SECTION_ANALYTIQUE_4_C='||v_source.oid AS view_select_rule,
|
|
|
ARRAY[
|
|
|
CASE
|
|
|
WHEN v_source.oid LIKE 'LS%' THEN '1-Classe' || substr(v_source.oid,3,2)
|
|
|
WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '2-Liste CTI'
|
|
|
WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '3-Liste CTI'
|
|
|
ELSE '9' END,
|
|
|
CASE
|
|
|
WHEN v_source.oid LIKE 'LS%' THEN 'LS#'||t_listes_tables_classes.code||':'||CASE WHEN t_classes.code <> '' THEN t_classes.code ELSE '*CLS'||to_char(t_classes.sequence,'FM00') END||':'||t_classes_sections.code
|
|
|
WHEN v_source.oid LIKE 'LI%' THEN COALESCE('LI#'||t_listes.code,v_source.oid)
|
|
|
WHEN v_source.oid LIKE 'SL%' THEN COALESCE('SL#'||t_listes.code,v_source.oid)
|
|
|
WHEN v_source.oid LIKE 'SA%' THEN COALESCE('SA#'||t_source.code,v_source.oid)
|
|
|
ELSE v_source.oid END
|
|
|
|
|
|
] AS arbre_code,
|
|
|
ARRAY[
|
|
|
CASE
|
|
|
WHEN v_source.oid LIKE 'LS%' THEN t_classes.texte
|
|
|
WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes CTI'
|
|
|
WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes Etablissement'
|
|
|
ELSE 'Valeurs' END,
|
|
|
CASE
|
|
|
WHEN v_source.oid LIKE 'LS%' THEN t_classes_sections.texte
|
|
|
ELSE v_source.texte END
|
|
|
] AS arbre_texte
|
|
|
FROM compta.v_sections_analytiques_4_c_1 v_source
|
|
|
LEFT JOIN compta.t_classes_sections ON v_source.oid LIKE 'LS%' AND
|
|
|
t_classes_sections.oid::text = substr(v_source.oid,5)
|
|
|
LEFT JOIN compta.t_classes ON t_classes.oid = t_classes_sections.classe_id
|
|
|
LEFT JOIN compta.t_listes_tables t_listes_tables_classes ON t_classes.table_id = t_listes_tables_classes.oid
|
|
|
LEFT JOIN compta.t_listes ON (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') AND
|
|
|
t_listes.oid::text = substr(v_source.oid,3) AND
|
|
|
t_listes.code <> ''
|
|
|
LEFT JOIN compta.t_sections_analytiques t_source ON v_source.oid LIKE 'SA%' AND t_source.oid = substr(v_source.oid,3)
|
|
|
WHERE v_source.oid NOT LIKE 'LC%' AND
|
|
|
(v_source.oid NOT LIKE 'LS%' OR substr(v_source.oid,5) <> '0') AND
|
|
|
v_source.oid <> '-1'
|
|
|
;
|
|
|
|
|
|
-- Sections analytiques
|
|
|
INSERT INTO w_indicateur_condition
|
|
|
SELECT
|
|
|
'CTI_SECANA5#' || v_source.oid::text AS code,
|
|
|
COALESCE(t_classes.texte || '. ' || t_classes_sections.texte,'Section (5). ' || v_source.texte::text) AS texte,
|
|
|
v_source.texte AS texte_court,
|
|
|
'section_analytique_5_id'::text AS column_name,
|
|
|
''::text AS rule,
|
|
|
v_source.oid::text AS value,
|
|
|
'SECTION_ANALYTIQUE_5_C='||v_source.oid AS view_select_rule,
|
|
|
ARRAY[
|
|
|
CASE
|
|
|
WHEN v_source.oid LIKE 'LS%' THEN '1-Classe' || substr(v_source.oid,3,2)
|
|
|
WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '2-Liste CTI'
|
|
|
WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '3-Liste CTI'
|
|
|
ELSE '9' END,
|
|
|
CASE
|
|
|
WHEN v_source.oid LIKE 'LS%' THEN 'LS#'||t_listes_tables_classes.code||':'||CASE WHEN t_classes.code <> '' THEN t_classes.code ELSE '*CLS'||to_char(t_classes.sequence,'FM00') END||':'||t_classes_sections.code
|
|
|
WHEN v_source.oid LIKE 'LI%' THEN COALESCE('LI#'||t_listes.code,v_source.oid)
|
|
|
WHEN v_source.oid LIKE 'SL%' THEN COALESCE('SL#'||t_listes.code,v_source.oid)
|
|
|
WHEN v_source.oid LIKE 'SA%' THEN COALESCE('SA#'||t_source.code,v_source.oid)
|
|
|
ELSE v_source.oid END
|
|
|
|
|
|
] AS arbre_code,
|
|
|
ARRAY[
|
|
|
CASE
|
|
|
WHEN v_source.oid LIKE 'LS%' THEN t_classes.texte
|
|
|
WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes CTI'
|
|
|
WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes Etablissement'
|
|
|
ELSE 'Valeurs' END,
|
|
|
CASE
|
|
|
WHEN v_source.oid LIKE 'LS%' THEN t_classes_sections.texte
|
|
|
ELSE v_source.texte END
|
|
|
] AS arbre_texte
|
|
|
FROM compta.v_sections_analytiques_5_c_1 v_source
|
|
|
LEFT JOIN compta.t_classes_sections ON v_source.oid LIKE 'LS%' AND
|
|
|
t_classes_sections.oid::text = substr(v_source.oid,5)
|
|
|
LEFT JOIN compta.t_classes ON t_classes.oid = t_classes_sections.classe_id
|
|
|
LEFT JOIN compta.t_listes_tables t_listes_tables_classes ON t_classes.table_id = t_listes_tables_classes.oid
|
|
|
LEFT JOIN compta.t_listes ON (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') AND
|
|
|
t_listes.oid::text = substr(v_source.oid,3) AND
|
|
|
t_listes.code <> ''
|
|
|
LEFT JOIN compta.t_sections_analytiques t_source ON v_source.oid LIKE 'SA%' AND t_source.oid = substr(v_source.oid,3)
|
|
|
WHERE v_source.oid NOT LIKE 'LC%' AND
|
|
|
(v_source.oid NOT LIKE 'LS%' OR substr(v_source.oid,5) <> '0') AND
|
|
|
v_source.oid <> '-1'
|
|
|
;
|
|
|
|
|
|
|
|
|
-- Ne pas garder les listes vides
|
|
|
-- DELETE FROM w_indicateur_condition
|
|
|
-- WHERE value LIKE 'LI%' AND
|
|
|
-- substr(value,3) NOT IN (SELECT liste_id::text FROM compta.t_listes_contenu)
|
|
|
-- ;
|
|
|
|
|
|
INSERT INTO compta.t_indicateur_condition(code, texte,texte_court,column_name,rule,value,view_select_rule, arbre_code, arbre_texte)
|
|
|
SELECT code, texte,texte_court,column_name,rule,value,view_select_rule, arbre_code, arbre_texte
|
|
|
FROM w_indicateur_condition
|
|
|
WHERE code NOT IN (SELECT code FROM compta.t_indicateur_condition WHERE code IS NOT NULL)
|
|
|
;
|
|
|
|
|
|
UPDATE compta.t_indicateur_condition SET
|
|
|
texte = w_indicateur_condition.texte,
|
|
|
texte_court = w_indicateur_condition.texte_court,
|
|
|
column_name = w_indicateur_condition.column_name,
|
|
|
rule = w_indicateur_condition.rule,
|
|
|
value = w_indicateur_condition.value,
|
|
|
view_select_rule = w_indicateur_condition.view_select_rule,
|
|
|
arbre_code = w_indicateur_condition.arbre_code,
|
|
|
arbre_texte = w_indicateur_condition.arbre_texte
|
|
|
FROM w_indicateur_condition
|
|
|
WHERE w_indicateur_condition.code = t_indicateur_condition.code AND
|
|
|
(
|
|
|
t_indicateur_condition.texte IS DISTINCT FROM w_indicateur_condition.texte OR
|
|
|
t_indicateur_condition.texte_court IS DISTINCT FROM w_indicateur_condition.texte_court OR
|
|
|
t_indicateur_condition.column_name IS DISTINCT FROM w_indicateur_condition.column_name OR
|
|
|
t_indicateur_condition.rule IS DISTINCT FROM w_indicateur_condition.rule OR
|
|
|
t_indicateur_condition.value IS DISTINCT FROM w_indicateur_condition.value OR
|
|
|
t_indicateur_condition.view_select_rule IS DISTINCT FROM w_indicateur_condition.view_select_rule OR
|
|
|
t_indicateur_condition.arbre_code IS DISTINCT FROM w_indicateur_condition.arbre_code OR
|
|
|
t_indicateur_condition.arbre_texte IS DISTINCT FROM w_indicateur_condition.arbre_texte
|
|
|
)
|
|
|
;
|
|
|
|
|
|
DELETE FROM compta.t_indicateur_condition
|
|
|
WHERE code LIKE 'CTI%' AND
|
|
|
code NOT IN (SELECT code FROM w_indicateur_condition)
|
|
|
;
|
|
|
|
|
|
UPDATE compta.t_indicateur_condition SET
|
|
|
column_texte = CASE column_name
|
|
|
WHEN 'x' THEN 'x'
|
|
|
ELSE replace(Upper(substr(split_part(column_name,'_id',1),1,1)) || substr(split_part(column_name,'_id',1),2),'_',' ') END
|
|
|
WHERE
|
|
|
column_texte IS DISTINCT FROM
|
|
|
CASE column_name
|
|
|
WHEN 'x' THEN 'x'
|
|
|
ELSE replace(Upper(substr(split_part(column_name,'_id',1),1,1)) || substr(split_part(column_name,'_id',1),2),'_',' ') END
|
|
|
;
|
|
|
|
|
|
UPDATE compta.t_indicateur_condition
|
|
|
SET external_code = split_part(code,'#',1)||'#'||arbre_code[2]
|
|
|
WHERE external_code IS DISTINCT FROM (split_part(code,'#',1)||'#'||arbre_code[2])
|
|
|
;
|
|
|
|
|
|
DROP TABLE IF EXISTS w_indicateur_condition_table;
|
|
|
CREATE TEMP TABLE w_indicateur_condition_table AS
|
|
|
SELECT t_indicateur_condition.oid AS indicateur_condition_id,
|
|
|
''::text As table_name,
|
|
|
t_indicateur_condition.column_name || ' ' ||
|
|
|
CASE
|
|
|
WHEN t_indicateur_condition.value LIKE 'LS%' THEN '= ANY(ARRAY'
|
|
|
WHEN t_indicateur_condition.value LIKE 'LI%' THEN '= ANY(ARRAY'
|
|
|
WHEN t_indicateur_condition.value LIKE 'SL%' THEN '<> ALL(ARRAY'
|
|
|
WHEN t_indicateur_condition.value LIKE 'DT%' THEN '='
|
|
|
ELSE '='
|
|
|
END || ' ' ||
|
|
|
CASE
|
|
|
WHEN t_indicateur_condition.value LIKE 'LS%' THEN
|
|
|
'(SELECT to_id FROM compta.t_classes_sections_elements WHERE section_id = ' || substr(value,5) || ')'
|
|
|
WHEN t_indicateur_condition.value LIKE 'LI%' THEN
|
|
|
'(SELECT to_id FROM compta.t_listes_contenu WHERE liste_id = ' || substr(value,3) || ')'
|
|
|
WHEN t_indicateur_condition.value LIKE 'SL%' THEN
|
|
|
'(SELECT to_id FROM compta.t_listes_contenu WHERE liste_id = ' || substr(value,3) || ')'
|
|
|
WHEN t_indicateur_condition.value LIKE 'DT%' THEN
|
|
|
substr(value,3)
|
|
|
ELSE substr(value,3)
|
|
|
END || ' ' ||
|
|
|
CASE
|
|
|
WHEN t_indicateur_condition.value LIKE 'LS%' THEN ')'
|
|
|
WHEN t_indicateur_condition.value LIKE 'LI%' THEN ')'
|
|
|
WHEN t_indicateur_condition.value LIKE 'SL%' THEN ')'
|
|
|
ELSE ''
|
|
|
END AS check_where
|
|
|
FROM compta.t_indicateur_condition
|
|
|
WHERE t_indicateur_condition.code LIKE 'CTI%'
|
|
|
;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
INSERT INTO compta.t_indicateur_condition_table(indicateur_condition_id, table_name, check_where)
|
|
|
SELECT indicateur_condition_id, table_name, check_where
|
|
|
FROM w_indicateur_condition_table
|
|
|
WHERE (indicateur_condition_id || '-' || table_name) NOT IN
|
|
|
(SELECT indicateur_condition_id || '-' || table_name FROM compta.t_indicateur_condition_table WHERE table_name IS NOT NULL)
|
|
|
;
|
|
|
|
|
|
UPDATE compta.t_indicateur_condition_table SET
|
|
|
check_where = w_indicateur_condition_table.check_where
|
|
|
FROM w_indicateur_condition_table
|
|
|
WHERE t_indicateur_condition_table.indicateur_condition_id = w_indicateur_condition_table.indicateur_condition_id AND
|
|
|
t_indicateur_condition_table.table_name = w_indicateur_condition_table.table_name AND
|
|
|
(
|
|
|
t_indicateur_condition_table.check_where IS DISTINCT FROM w_indicateur_condition_table.check_where
|
|
|
)
|
|
|
;
|
|
|
|
|
|
DELETE FROM compta.t_indicateur_condition_table
|
|
|
USING compta.t_indicateur_condition
|
|
|
WHERE t_indicateur_condition.oid = t_indicateur_condition_table.indicateur_condition_id AND
|
|
|
t_indicateur_condition.code LIKE 'CTI%' AND
|
|
|
(indicateur_condition_id || '-' || table_name) NOT IN
|
|
|
(SELECT indicateur_condition_id || '-' || table_name FROM w_indicateur_condition_table WHERE table_name IS NOT NULL)
|
|
|
;
|
|
|
|
|
|
|
|
|
RETURN 'OK';
|
|
|
|
|
|
END;
|