|
|
return: text
|
|
|
lang: plpgsql
|
|
|
src: |
|
|
|
DECLARE --select * from eco.p_stock order by date_fin desc
|
|
|
result TEXT;
|
|
|
BEGIN
|
|
|
IF ((SELECT valeur FROM eco.t_divers WHERE code = 'CLE_REPARTITION') !=
|
|
|
(
|
|
|
SELECT
|
|
|
t_listes_tables.code
|
|
|
FROM
|
|
|
eco.t_classes
|
|
|
JOIN eco.t_listes_tables ON table_id = t_listes_tables.oid
|
|
|
WHERE t_classes.code = 'CTI_CLE_REP'))
|
|
|
THEN
|
|
|
RAISE NOTICE '%','Valeur changé - Mise à jour';
|
|
|
-- enregistrement des sections CTI
|
|
|
DROP TABLE IF EXISTS w_sections;
|
|
|
CREATE TEMP TABLE w_sections AS
|
|
|
SELECT t_classes_sections.code, t_classes_sections.texte
|
|
|
FROM eco.t_classes
|
|
|
JOIN eco.t_classes_sections ON classe_id = t_classes.oid
|
|
|
WHERE t_classes.code = 'CTI_CLE_REP'
|
|
|
;
|
|
|
|
|
|
-- enregistrement des conditions de rapport CTI liées à la clef de répartition
|
|
|
DROP TABLE IF EXISTS w_conditions;
|
|
|
CREATE TEMP TABLE w_conditions AS
|
|
|
SELECT t_rapports.oid, ARRAY[
|
|
|
section_0.code,
|
|
|
section_1.code,
|
|
|
section_2.code,
|
|
|
section_3.code,
|
|
|
section_4.code] AS code_section FROM eco.t_rapports
|
|
|
LEFT JOIN eco.t_indicateur_condition condition_0 ON t_rapports.rapport_indicateur_condition_id[1] = condition_0.oid
|
|
|
LEFT JOIN eco.t_classes_sections section_0 ON section_0.oid = right(split_part(condition_0.code,'#',2),-4) AND left(split_part(condition_0.code,'#',2),4) = 'LS30'
|
|
|
LEFT JOIN eco.t_indicateur_condition condition_1 ON t_rapports.rapport_indicateur_condition_id[2] = condition_1.oid
|
|
|
LEFT JOIN eco.t_classes_sections section_1 ON section_1.oid = right(split_part(condition_1.code,'#',2),-4) AND left(split_part(condition_1.code,'#',2),4) = 'LS30'
|
|
|
LEFT JOIN eco.t_indicateur_condition condition_2 ON t_rapports.rapport_indicateur_condition_id[3] = condition_2.oid
|
|
|
LEFT JOIN eco.t_classes_sections section_2 ON section_2.oid = right(split_part(condition_2.code,'#',2),-4) AND left(split_part(condition_2.code,'#',2),4) = 'LS30'
|
|
|
LEFT JOIN eco.t_indicateur_condition condition_3 ON t_rapports.rapport_indicateur_condition_id[4] = condition_3.oid
|
|
|
LEFT JOIN eco.t_classes_sections section_3 ON section_3.oid = right(split_part(condition_3.code,'#',2),-4) AND left(split_part(condition_3.code,'#',2),4) = 'LS30'
|
|
|
LEFT JOIN eco.t_indicateur_condition condition_4 ON t_rapports.rapport_indicateur_condition_id[5] = condition_4.oid
|
|
|
LEFT JOIN eco.t_classes_sections section_4 ON section_4.oid = right(split_part(condition_4.code,'#',2),-4) AND left(split_part(condition_4.code,'#',2),4) = 'LS30'
|
|
|
WHERE t_rapports.code LIKE 'CTI_ESS%'
|
|
|
;
|
|
|
|
|
|
-- effacement de la classe CTI_CLE_REP
|
|
|
DELETE FROM eco.t_classes_sections_elements
|
|
|
WHERE section_id IN (
|
|
|
SELECT t_classes_sections.oid
|
|
|
FROM eco.t_classes
|
|
|
JOIN eco.t_classes_sections ON classe_id = t_classes.oid
|
|
|
WHERE t_classes.code = 'CTI_CLE_REP'
|
|
|
)
|
|
|
;
|
|
|
DELETE FROM eco.t_classes_sections
|
|
|
WHERE oid IN (
|
|
|
SELECT t_classes_sections.oid
|
|
|
FROM eco.t_classes
|
|
|
JOIN eco.t_classes_sections ON classe_id = t_classes.oid
|
|
|
WHERE t_classes.code = 'CTI_CLE_REP'
|
|
|
)
|
|
|
;
|
|
|
DELETE FROM eco.t_classes
|
|
|
WHERE code = 'CTI_CLE_REP'
|
|
|
;
|
|
|
|
|
|
-- création de la classe CTI_CLE_REP
|
|
|
INSERT INTO eco.t_classes(code, texte, table_id, is_cti, sequence)
|
|
|
SELECT
|
|
|
'CTI_CLE_REP',
|
|
|
'Clef de répartition CTI',
|
|
|
oid,
|
|
|
0,
|
|
|
30
|
|
|
FROM
|
|
|
eco.t_listes_tables
|
|
|
WHERE
|
|
|
code = (SELECT valeur FROM eco.t_divers WHERE code = 'CLE_REPARTITION')
|
|
|
;
|
|
|
|
|
|
INSERT INTO eco.t_classes_sections (code, texte, classe_id)
|
|
|
SELECT w_sections.code, w_sections.texte, oid
|
|
|
FROM w_sections LEFT JOIN eco.t_classes ON t_classes.code = 'CTI_CLE_REP'
|
|
|
;
|
|
|
|
|
|
PERFORM eco.cti_reorganize_indicateur_condition();
|
|
|
|
|
|
-- ajustement des condition de rapports essentiels CTI
|
|
|
UPDATE eco.t_rapports
|
|
|
SET
|
|
|
rapport_indicateur_condition_id = ARRAY[condition_0.oid,condition_1.oid,condition_2.oid,condition_3.oid,condition_4.oid]
|
|
|
FROM
|
|
|
w_conditions
|
|
|
JOIN eco.t_listes_tables ON t_listes_tables.code = (SELECT valeur FROM eco.t_divers WHERE code = 'CLE_REPARTITION')
|
|
|
JOIN eco.t_classes ON table_id = t_listes_tables.oid AND sequence = 30
|
|
|
LEFT JOIN eco.t_classes_sections section_0 ON t_classes.oid = section_0.classe_id AND section_0.code = code_section[1]
|
|
|
LEFT JOIN eco.t_indicateur_condition condition_0 ON regexp_replace(regexp_replace(regexp_replace(regexp_replace(t_listes_tables.name,'^t_',''),'x',''),'s_','','g'),'s$','') || 'id' = regexp_replace(condition_0.column_name,'_','','g')
|
|
|
AND t_classes.sequence = substring(split_part(condition_0.code,'#',2),3,2) AND left(split_part(condition_0.code,'#',2),2) = 'LS'
|
|
|
AND section_0.oid = right(split_part(condition_0.code,'#',2),-4)
|
|
|
LEFT JOIN eco.t_classes_sections section_1 ON t_classes.oid = section_1.classe_id AND section_1.code = code_section[2]
|
|
|
LEFT JOIN eco.t_indicateur_condition condition_1 ON regexp_replace(regexp_replace(regexp_replace(regexp_replace(t_listes_tables.name,'^t_',''),'x',''),'s_','','g'),'s$','') || 'id' = regexp_replace(condition_1.column_name,'_','','g')
|
|
|
AND t_classes.sequence = substring(split_part(condition_1.code,'#',2),3,2) AND left(split_part(condition_1.code,'#',2),2) = 'LS'
|
|
|
AND section_1.oid = right(split_part(condition_1.code,'#',2),-4)
|
|
|
LEFT JOIN eco.t_classes_sections section_2 ON t_classes.oid = section_2.classe_id AND section_2.code = code_section[3]
|
|
|
LEFT JOIN eco.t_indicateur_condition condition_2 ON regexp_replace(regexp_replace(regexp_replace(regexp_replace(t_listes_tables.name,'^t_',''),'x',''),'s_','','g'),'s$','') || 'id' = regexp_replace(condition_2.column_name,'_','','g')
|
|
|
AND t_classes.sequence = substring(split_part(condition_2.code,'#',2),3,2) AND left(split_part(condition_2.code,'#',2),2) = 'LS'
|
|
|
AND section_2.oid = right(split_part(condition_2.code,'#',2),-4)
|
|
|
LEFT JOIN eco.t_classes_sections section_3 ON t_classes.oid = section_3.classe_id AND section_3.code = code_section[4]
|
|
|
LEFT JOIN eco.t_indicateur_condition condition_3 ON regexp_replace(regexp_replace(regexp_replace(regexp_replace(t_listes_tables.name,'^t_',''),'x',''),'s_','','g'),'s$','') || 'id' = regexp_replace(condition_3.column_name,'_','','g')
|
|
|
AND t_classes.sequence = substring(split_part(condition_3.code,'#',2),3,2) AND left(split_part(condition_3.code,'#',2),2) = 'LS'
|
|
|
AND section_3.oid = right(split_part(condition_3.code,'#',2),-4)
|
|
|
LEFT JOIN eco.t_classes_sections section_4 ON t_classes.oid = section_4.classe_id AND section_4.code = code_section[5]
|
|
|
LEFT JOIN eco.t_indicateur_condition condition_4 ON regexp_replace(regexp_replace(regexp_replace(regexp_replace(t_listes_tables.name,'^t_',''),'x',''),'s_','','g'),'s$','') || 'id' = regexp_replace(condition_4.column_name,'_','','g')
|
|
|
AND t_classes.sequence = substring(split_part(condition_4.code,'#',2),3,2) AND left(split_part(condition_4.code,'#',2),2) = 'LS'
|
|
|
AND section_4.oid = right(split_part(condition_4.code,'#',2),-4)
|
|
|
WHERE t_rapports.oid = w_conditions.oid
|
|
|
;
|
|
|
|
|
|
END IF;
|
|
|
RETURN 'OK';
|
|
|
END;
|