You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

1496 lines
53 KiB

<?xml version="1.0" encoding="ISO-8859-1"?>
<DBSETUPDATA softCode="iCTI_rh" schema="rh">
<!-- SCHEMA "BASE" -->
<TABLE name="p_calendrier" label="Calendrier" schema="base" />
<TABLE name="p_calendrier_mois" label="Calendrier (mois)" schema="base" />
<TABLE name="t_departements" label="Départements" schema="base" />
<TABLE name="t_territoires_sante" label="Territoires de santé" schema="base" />
<TABLE name="t_codes_geographiques_pmsi" label="Codes géographiques PMSI" schema="base" />
<TABLE name="t_codes_postaux" label="Codes postaux" schema="base" />
<!-- SCHEMA "RH" -->
<TABLE name="t_ages" label="Ages">
<selectCmd><![CDATA[
SELECT
oid AS keepoid,
code,
texte
FROM rh.t_ages
ORDER BY code
;
]]></selectCmd>
<updateCmd><![CDATA[
UPDATE rh.t_ages SET
code = w_dbsetup.code,
texte = w_dbsetup.texte
FROM w_dbsetup
WHERE t_ages.oid = w_dbsetup.keepoid
;
INSERT INTO rh.t_ages(oid, code, texte)
SELECT keepoid, code, texte FROM w_dbsetup WHERE keepoid NOT IN (SELECT oid FROM rh.t_ages)
;
SELECT * FROM rh.cti_update_schema_classes('AGE')
;
]]></updateCmd></TABLE>
<TABLE name="t_anciennetes_annee" label="Ages">
<selectCmd><![CDATA[
SELECT
oid AS keepoid,
code,
texte
FROM rh.t_anciennetes_annee
ORDER BY code
;
]]></selectCmd>
<updateCmd><![CDATA[
UPDATE rh.t_anciennetes_annee SET
code = w_dbsetup.code,
texte = w_dbsetup.texte
FROM w_dbsetup
WHERE t_anciennetes_annee.oid = w_dbsetup.keepoid
;
INSERT INTO rh.t_anciennetes_annee(oid, code, texte)
SELECT keepoid, code, texte FROM w_dbsetup WHERE keepoid NOT IN (SELECT oid FROM rh.t_anciennetes_annee)
;
SELECT * FROM rh.cti_update_schema_classes('AGE')
;
]]></updateCmd>
</TABLE>
<TABLE name="t_categories_socio_professionnelle" label="Catégories socio-professionelle">
<selectCmd><![CDATA[
SELECT
max(oid) AS oid,
code,
texte,
texte_court
FROM rh.t_categories_socio_professionnelle
WHERE 1=1
AND code != texte
AND substr(code, 4, 1) !~ '[0-9]'
AND code NOT IN ('642k', '643d')
GROUP BY 2,3,4
ORDER BY code
;
]]></selectCmd>
<updateCmd><![CDATA[
UPDATE rh.t_categories_socio_professionnelle
SET code = w_dbsetup.code
FROM w_dbsetup
WHERE 1=1
AND t_categories_socio_professionnelle.oid = w_dbsetup.oid
AND w_dbsetup.oid = 0
;
UPDATE rh.t_categories_socio_professionnelle
SET
texte = w_dbsetup.texte,
texte_court = w_dbsetup.texte_court
FROM w_dbsetup
WHERE t_categories_socio_professionnelle.code = w_dbsetup.code
;
INSERT INTO rh.t_categories_socio_professionnelle(oid, code, texte, texte_court, code_original)
SELECT oid, code, texte, texte_court, code
FROM w_dbsetup
WHERE 1=1
AND oid = 0
AND oid NOT IN (SELECT oid FROM rh.t_categories_socio_professionnelle)
;
INSERT INTO rh.t_categories_socio_professionnelle(code, texte, texte_court, code_original)
SELECT code, texte, texte_court, code
FROM w_dbsetup
WHERE 1=1
AND oid != 0
AND code NOT IN (SELECT code FROM rh.t_categories_socio_professionnelle)
;
SELECT rh.cti_update_schema_classes('CSC')
;
]]></updateCmd>
</TABLE>
<TABLE name="t_listes_tables" label="Tables pour les listes">
<selectCmd><![CDATA[
SELECT
oid,
name,
texte,
select_cmd,
code
FROM rh.t_listes_tables
ORDER BY code
;
]]></selectCmd>
<updateCmd><![CDATA[
UPDATE rh.t_listes_tables SET
code = w_dbsetup.code,
texte = w_dbsetup.texte,
select_cmd = w_dbsetup.select_cmd
FROM w_dbsetup
WHERE t_listes_tables.name = w_dbsetup.name
;
INSERT INTO rh.t_listes_tables(oid, code, name, texte, select_cmd)
SELECT oid, code, name, texte, select_cmd FROM w_dbsetup WHERE oid = 0 AND oid NOT IN (SELECT oid FROM rh.t_listes_tables)
;
INSERT INTO rh.t_listes_tables(code, name, texte, select_cmd)
SELECT code, name, texte, select_cmd FROM w_dbsetup WHERE oid <> 0 AND name NOT IN (SELECT name FROM rh.t_listes_tables)
;
]]></updateCmd>
</TABLE>
<TABLE name="t_listes" label="Listes de codes">
<selectCmd><![CDATA[
SELECT
t_listes.oid,
t_listes.texte,
t_listes.chapitre,
t_listes.code,
t_listes.is_cti,
t_listes.show_omit,
t_listes.utilisateur_createur,
t_listes.est_partagee_modification,
t_listes_tables.name as table_name
FROM
rh.t_listes,
rh.t_listes_tables
WHERE 1=1
AND is_cti = '1'
AND t_listes.code != ''
AND table_id = t_listes_tables.oid
ORDER BY t_listes.code
;
]]></selectCmd>
<updateCmd><![CDATA[
UPDATE rh.t_listes SET
texte = w_dbsetup.texte,
chapitre = w_dbsetup.chapitre,
table_id = t_listes_tables.oid,
is_cti = w_dbsetup.is_cti,
show_omit = w_dbsetup.show_omit,
utilisateur_createur = w_dbsetup.utilisateur_createur,
est_partagee_modification = w_dbsetup.est_partagee_modification
FROM w_dbsetup, rh.t_listes_tables
WHERE w_dbsetup.table_name = t_listes_tables.name and t_listes.code = w_dbsetup.code
;
INSERT INTO rh.t_listes(code, texte, chapitre, table_id, is_cti, show_omit, utilisateur_createur, est_partagee_modification)
SELECT w_dbsetup.code, w_dbsetup.texte, w_dbsetup.chapitre, t_listes_tables.oid, w_dbsetup.is_cti, w_dbsetup.show_omit, w_dbsetup.utilisateur_createur, w_dbsetup.est_partagee_modification
FROM w_dbsetup, rh.t_listes_tables
WHERE 1=1
AND w_dbsetup.table_name = t_listes_tables.name
AND w_dbsetup.code NOT IN (SELECT code FROM rh.t_listes)
AND w_dbsetup.texte NOT LIKE '*SUPPRIME%'
;
DELETE FROM rh.t_listes WHERE texte like '*SUPPRIME%' AND is_cti = '1'
;
]]></updateCmd>
</TABLE>
<TABLE name="t_indicateurs" label="Indicateurs de rapports">
<selectCmd><![CDATA[
SELECT
t_indicateurs.oid,
t_indicateurs.code,
t_indicateurs.texte,
t_indicateurs.table_name,
t_indicateurs.column_name,
t_indicateurs.is_cti,
t_indicateurs.entete,
t_indicateurs.total_function,
t_indicateurs.output_format,
t_indicateurs.width,
t_indicateurs.entete_etendue,
t_indicateurs.dimension_date_1,
t_indicateurs.dimension_date_2,
t_indicateurs.dimension_date_3,
t_indicateurs.dimension_date_4,
t_indicateurs.dimension_date_5,
t_indicateurs.dimension_date,
t_indicateurs_1.code as indicateur_associe_1_code,
t_indicateurs_2.code as indicateur_associe_2_code,
t_indicateurs_3.code as indicateur_associe_3_code,
t_indicateurs_4.code as indicateur_associe_4_code,
t_indicateurs_5.code as indicateur_associe_5_code,
t_indicateurs_6.code as indicateur_associe_6_code,
t_indicateurs_7.code as indicateur_associe_7_code,
t_indicateurs_8.code as indicateur_associe_8_code,
t_indicateurs_9.code as indicateur_associe_9_code,
t_indicateurs_10.code as indicateur_associe_10_code,
t_indicateurs_11.code as indicateur_associe_11_code,
t_indicateurs_12.code as indicateur_associe_12_code,
t_indicateurs_13.code as indicateur_associe_13_code,
t_indicateurs_14.code as indicateur_associe_14_code,
t_indicateurs_15.code as indicateur_associe_15_code,
t_indicateurs_16.code as indicateur_associe_16_code,
t_indicateurs_17.code as indicateur_associe_17_code,
t_indicateurs_18.code as indicateur_associe_18_code,
t_indicateurs_19.code as indicateur_associe_19_code,
t_indicateurs_20.code as indicateur_associe_20_code,
t_indicateurs_reference.code as indicateur_reference_code
FROM rh.t_indicateurs
LEFT JOIN rh.t_indicateurs t_indicateurs_1 ON (t_indicateurs.indicateur_associe_1_id = t_indicateurs_1.oid)
LEFT JOIN rh.t_indicateurs t_indicateurs_2 ON (t_indicateurs.indicateur_associe_2_id = t_indicateurs_2.oid)
LEFT JOIN rh.t_indicateurs t_indicateurs_3 ON (t_indicateurs.indicateur_associe_3_id = t_indicateurs_3.oid)
LEFT JOIN rh.t_indicateurs t_indicateurs_4 ON (t_indicateurs.indicateur_associe_4_id = t_indicateurs_4.oid)
LEFT JOIN rh.t_indicateurs t_indicateurs_5 ON (t_indicateurs.indicateur_associe_5_id = t_indicateurs_5.oid)
LEFT JOIN rh.t_indicateurs t_indicateurs_6 ON (t_indicateurs.indicateur_associe_6_id = t_indicateurs_6.oid)
LEFT JOIN rh.t_indicateurs t_indicateurs_7 ON (t_indicateurs.indicateur_associe_7_id = t_indicateurs_7.oid)
LEFT JOIN rh.t_indicateurs t_indicateurs_8 ON (t_indicateurs.indicateur_associe_8_id = t_indicateurs_8.oid)
LEFT JOIN rh.t_indicateurs t_indicateurs_9 ON (t_indicateurs.indicateur_associe_9_id = t_indicateurs_9.oid)
LEFT JOIN rh.t_indicateurs t_indicateurs_10 ON (t_indicateurs.indicateur_associe_10_id = t_indicateurs_10.oid)
LEFT JOIN rh.t_indicateurs t_indicateurs_11 ON (t_indicateurs.indicateur_associe_11_id = t_indicateurs_11.oid)
LEFT JOIN rh.t_indicateurs t_indicateurs_12 ON (t_indicateurs.indicateur_associe_12_id = t_indicateurs_12.oid)
LEFT JOIN rh.t_indicateurs t_indicateurs_13 ON (t_indicateurs.indicateur_associe_13_id = t_indicateurs_13.oid)
LEFT JOIN rh.t_indicateurs t_indicateurs_14 ON (t_indicateurs.indicateur_associe_14_id = t_indicateurs_14.oid)
LEFT JOIN rh.t_indicateurs t_indicateurs_15 ON (t_indicateurs.indicateur_associe_15_id = t_indicateurs_15.oid)
LEFT JOIN rh.t_indicateurs t_indicateurs_16 ON (t_indicateurs.indicateur_associe_16_id = t_indicateurs_16.oid)
LEFT JOIN rh.t_indicateurs t_indicateurs_17 ON (t_indicateurs.indicateur_associe_17_id = t_indicateurs_17.oid)
LEFT JOIN rh.t_indicateurs t_indicateurs_18 ON (t_indicateurs.indicateur_associe_18_id = t_indicateurs_18.oid)
LEFT JOIN rh.t_indicateurs t_indicateurs_19 ON (t_indicateurs.indicateur_associe_19_id = t_indicateurs_19.oid)
LEFT JOIN rh.t_indicateurs t_indicateurs_20 ON (t_indicateurs.indicateur_associe_20_id = t_indicateurs_20.oid)
LEFT JOIN rh.t_indicateurs t_indicateurs_reference ON (t_indicateurs.indicateur_reference_id = t_indicateurs_reference.oid)
WHERE t_indicateurs.is_cti = '1'
ORDER BY t_indicateurs.code
;
]]></selectCmd>
<updateCmd><![CDATA[
DELETE FROM rh.t_indicateurs
USING
(
SELECT code, MIN(oid) AS minoid FROM rh.t_indicateurs WHERE code <> '' GROUP BY 1 HAVING count(*) > 1
) subview
WHERE t_indicateurs.code = subview.code AND t_indicateurs.oid <> subview.minoid
;
UPDATE rh.t_indicateurs SET
texte = w_dbsetup.texte,
table_name = w_dbsetup.table_name,
column_name = w_dbsetup.column_name,
is_cti = w_dbsetup.is_cti,
entete = w_dbsetup.entete,
entete_etendue = w_dbsetup.entete_etendue,
total_function = w_dbsetup.total_function,
output_format = w_dbsetup.output_format,
width = w_dbsetup.width,
dimension_date_1 = w_dbsetup.dimension_date_1,
dimension_date_2 = w_dbsetup.dimension_date_2,
dimension_date_3 = w_dbsetup.dimension_date_3,
dimension_date_4 = w_dbsetup.dimension_date_4,
dimension_date_5 = w_dbsetup.dimension_date_5,
dimension_date = w_dbsetup.dimension_date
FROM w_dbsetup
WHERE t_indicateurs.code = w_dbsetup.code
;
INSERT INTO rh.t_indicateurs(texte, table_name, column_name, is_cti, entete, entete_etendue, code, total_function, output_format, width,
dimension_date_1, dimension_date_2, dimension_date_3, dimension_date_4, dimension_date_5, dimension_date)
SELECT texte, table_name, column_name, is_cti, entete, entete_etendue, code, total_function, output_format, width,
dimension_date_1, dimension_date_2, dimension_date_3, dimension_date_4, dimension_date_5, dimension_date
FROM w_dbsetup WHERE oid <> 0 AND code NOT IN (SELECT code FROM rh.t_indicateurs WHERE code IS NOT NULL)
;
UPDATE rh.t_indicateurs SET
indicateur_associe_1_id = COALESCE(t_indicateurs_1.oid,0),
indicateur_associe_2_id = COALESCE(t_indicateurs_2.oid,0),
indicateur_associe_3_id = COALESCE(t_indicateurs_3.oid,0),
indicateur_associe_4_id = COALESCE(t_indicateurs_4.oid,0),
indicateur_associe_5_id = COALESCE(t_indicateurs_5.oid,0),
indicateur_associe_6_id = COALESCE(t_indicateurs_6.oid,0),
indicateur_associe_7_id = COALESCE(t_indicateurs_7.oid,0),
indicateur_associe_8_id = COALESCE(t_indicateurs_8.oid,0),
indicateur_associe_9_id = COALESCE(t_indicateurs_9.oid,0),
indicateur_associe_10_id = COALESCE(t_indicateurs_10.oid,0),
indicateur_associe_11_id = COALESCE(t_indicateurs_11.oid,0),
indicateur_associe_12_id = COALESCE(t_indicateurs_12.oid,0),
indicateur_associe_13_id = COALESCE(t_indicateurs_13.oid,0),
indicateur_associe_14_id = COALESCE(t_indicateurs_14.oid,0),
indicateur_associe_15_id = COALESCE(t_indicateurs_15.oid,0),
indicateur_associe_16_id = COALESCE(t_indicateurs_16.oid,0),
indicateur_associe_17_id = COALESCE(t_indicateurs_17.oid,0),
indicateur_associe_18_id = COALESCE(t_indicateurs_18.oid,0),
indicateur_associe_19_id = COALESCE(t_indicateurs_19.oid,0),
indicateur_associe_20_id = COALESCE(t_indicateurs_20.oid,0),
indicateur_reference_id = COALESCE(t_indicateurs_reference.oid,0)
FROM w_dbsetup
LEFT JOIN rh.t_indicateurs t_indicateurs_1 ON (w_dbsetup.indicateur_associe_1_code = t_indicateurs_1.code AND w_dbsetup.indicateur_associe_1_code <> '')
LEFT JOIN rh.t_indicateurs t_indicateurs_2 ON (w_dbsetup.indicateur_associe_2_code = t_indicateurs_2.code AND w_dbsetup.indicateur_associe_2_code <> '')
LEFT JOIN rh.t_indicateurs t_indicateurs_3 ON (w_dbsetup.indicateur_associe_3_code = t_indicateurs_3.code AND w_dbsetup.indicateur_associe_3_code <> '')
LEFT JOIN rh.t_indicateurs t_indicateurs_4 ON (w_dbsetup.indicateur_associe_4_code = t_indicateurs_4.code AND w_dbsetup.indicateur_associe_4_code <> '')
LEFT JOIN rh.t_indicateurs t_indicateurs_5 ON (w_dbsetup.indicateur_associe_5_code = t_indicateurs_5.code AND w_dbsetup.indicateur_associe_5_code <> '')
LEFT JOIN rh.t_indicateurs t_indicateurs_6 ON (w_dbsetup.indicateur_associe_6_code = t_indicateurs_6.code AND w_dbsetup.indicateur_associe_6_code <> '')
LEFT JOIN rh.t_indicateurs t_indicateurs_7 ON (w_dbsetup.indicateur_associe_7_code = t_indicateurs_7.code AND w_dbsetup.indicateur_associe_7_code <> '')
LEFT JOIN rh.t_indicateurs t_indicateurs_8 ON (w_dbsetup.indicateur_associe_8_code = t_indicateurs_8.code AND w_dbsetup.indicateur_associe_8_code <> '')
LEFT JOIN rh.t_indicateurs t_indicateurs_9 ON (w_dbsetup.indicateur_associe_9_code = t_indicateurs_9.code AND w_dbsetup.indicateur_associe_9_code <> '')
LEFT JOIN rh.t_indicateurs t_indicateurs_10 ON (w_dbsetup.indicateur_associe_10_code = t_indicateurs_10.code AND w_dbsetup.indicateur_associe_10_code <> '')
LEFT JOIN rh.t_indicateurs t_indicateurs_11 ON (w_dbsetup.indicateur_associe_11_code = t_indicateurs_11.code AND w_dbsetup.indicateur_associe_11_code <> '')
LEFT JOIN rh.t_indicateurs t_indicateurs_12 ON (w_dbsetup.indicateur_associe_12_code = t_indicateurs_12.code AND w_dbsetup.indicateur_associe_12_code <> '')
LEFT JOIN rh.t_indicateurs t_indicateurs_13 ON (w_dbsetup.indicateur_associe_13_code = t_indicateurs_13.code AND w_dbsetup.indicateur_associe_13_code <> '')
LEFT JOIN rh.t_indicateurs t_indicateurs_14 ON (w_dbsetup.indicateur_associe_14_code = t_indicateurs_14.code AND w_dbsetup.indicateur_associe_14_code <> '')
LEFT JOIN rh.t_indicateurs t_indicateurs_15 ON (w_dbsetup.indicateur_associe_15_code = t_indicateurs_15.code AND w_dbsetup.indicateur_associe_15_code <> '')
LEFT JOIN rh.t_indicateurs t_indicateurs_16 ON (w_dbsetup.indicateur_associe_16_code = t_indicateurs_16.code AND w_dbsetup.indicateur_associe_16_code <> '')
LEFT JOIN rh.t_indicateurs t_indicateurs_17 ON (w_dbsetup.indicateur_associe_17_code = t_indicateurs_17.code AND w_dbsetup.indicateur_associe_17_code <> '')
LEFT JOIN rh.t_indicateurs t_indicateurs_18 ON (w_dbsetup.indicateur_associe_18_code = t_indicateurs_18.code AND w_dbsetup.indicateur_associe_18_code <> '')
LEFT JOIN rh.t_indicateurs t_indicateurs_19 ON (w_dbsetup.indicateur_associe_19_code = t_indicateurs_19.code AND w_dbsetup.indicateur_associe_19_code <> '')
LEFT JOIN rh.t_indicateurs t_indicateurs_20 ON (w_dbsetup.indicateur_associe_20_code = t_indicateurs_20.code AND w_dbsetup.indicateur_associe_20_code <> '')
LEFT JOIN rh.t_indicateurs t_indicateurs_reference ON (w_dbsetup.indicateur_reference_code = t_indicateurs_reference.code AND w_dbsetup.indicateur_reference_code <> '')
WHERE t_indicateurs.code = w_dbsetup.code
AND (indicateur_associe_1_code <> '' OR
indicateur_associe_2_code <> '' OR
indicateur_associe_3_code <> '' OR
indicateur_reference_code <> '')
;
SELECT base.cti_reorganize_indicateurs('rh')
;
]]></updateCmd>
</TABLE>
<TABLE name="t_rapports" label="Rapports">
<selectCmd><![CDATA[
SELECT
oid,
code,
texte,
is_cti,
is_essentiel
FROM rh.t_rapports
WHERE is_cti = '1'
ORDER BY code
;
]]></selectCmd>
<updateCmd><![CDATA[
UPDATE rh.t_rapports SET
texte = w_dbsetup.texte,
is_cti = w_dbsetup.is_cti,
is_essentiel = w_dbsetup.is_essentiel
FROM w_dbsetup
WHERE t_rapports.code = w_dbsetup.code
;
INSERT INTO rh.t_rapports(oid, code, texte, is_cti, is_essentiel)
SELECT oid, code, texte, is_cti, is_essentiel FROM w_dbsetup WHERE oid = 0 AND oid NOT IN (SELECT oid FROM rh.t_rapports)
;
INSERT INTO rh.t_rapports(code, texte, is_cti, is_essentiel)
SELECT code, texte, is_cti, is_essentiel FROM w_dbsetup WHERE oid <> 0 AND code NOT IN (SELECT code FROM rh.t_rapports)
;
]]></updateCmd>
</TABLE>
<TABLE name="t_rapports_rubriques" label="Rubriques des rapports">
<selectCmd><![CDATA[
SELECT
t_rapports.code AS rapport_code,
ind1.code AS indicateur_code,
t_rapports_rubriques.numero_rubrique,
t_rapports_rubriques.rapport_id,
t_rapports_rubriques.indicateur_id,
t_rapports_rubriques.entete,
t_rapports_rubriques.output_format,
t_rapports_rubriques.width,
t_rapports_rubriques.entete_etendue,
t_rapports_rubriques.periode_reference,
t_rapports_rubriques.row_height,
t_rapports_rubriques.padding,
t_rapports_rubriques.font_size,
t_rapports_rubriques.font_weight,
t_rapports_rubriques.border_thickness,
t_rapports_rubriques.color,
t_rapports_rubriques.background_color,
t_rapports_rubriques.base_nationale,
t_rapports_rubriques.base_nationale_qualifiee,
t_rapports_rubriques.viewlink,
t_rapports_rubriques.viewlink_label,
t_rapports_rubriques.viewlink_param,
t_rapports_rubriques.picto_enabled,
t_rapports_rubriques.positif_is_good,
t_rapports_rubriques.indicateur_associe_id,
ind2.code AS indicateur_associe_code
FROM rh.t_rapports_rubriques
JOIN rh.t_rapports ON t_rapports_rubriques.rapport_id = t_rapports.oid
JOIN rh.t_indicateurs ind1 ON t_rapports_rubriques.indicateur_id = ind1.oid
LEFT JOIN rh.t_indicateurs ind2 ON t_rapports_rubriques.indicateur_associe_id = ind2.oid
WHERE 1=1
AND ind1.is_cti = '1'
AND ind1.code <> ''
AND t_rapports.is_cti = '1'
ORDER BY t_rapports.code, ind1.code, t_rapports_rubriques.numero_rubrique
;
]]></selectCmd>
<updateCmd><![CDATA[
-- Sauvegarder les donnees sources pour rejouer le specifique
SELECT base.cti_verify_table_encoding('rh','t_rapports_rubriques')
;
DROP TABLE IF EXISTS w_specific_rapports_rubriques ;
CREATE TEMP TABLE w_specific_rapports_rubriques AS
SELECT t_rapports_rubriques.*
FROM rh.t_rapports_rubriques
JOIN rh.t_rapports ON t_rapports_rubriques.rapport_id = t_rapports.oid
WHERE t_rapports.is_essentiel = '1'
;
-- Installer les donnees CTI
DELETE FROM rh.t_rapports_rubriques
WHERE 1=1
AND rapport_id IN (SELECT oid FROM rh.t_rapports WHERE is_cti = '1')
;
INSERT INTO rh.t_rapports_rubriques(
rapport_id,
numero_rubrique,
indicateur_id,
entete,
entete_etendue,
output_format,
width,
periode_reference,
row_height,
padding,
font_size,
font_weight,
border_thickness,
color,
base_nationale,
base_nationale_qualifiee,
background_color,
viewlink,
viewlink_label,
viewlink_param,
picto_enabled,
positif_is_good,
indicateur_associe_id
)
SELECT
t_rapports.oid,
numero_rubrique,
ind1.oid,
w_dbsetup.entete,
w_dbsetup.entete_etendue,
w_dbsetup.output_format,
w_dbsetup.width,
w_dbsetup.periode_reference,
w_dbsetup.row_height,
w_dbsetup.padding,
w_dbsetup.font_size,
w_dbsetup.font_weight,
w_dbsetup.border_thickness,
w_dbsetup.color,
w_dbsetup.base_nationale,
w_dbsetup.base_nationale_qualifiee,
w_dbsetup.background_color,
w_dbsetup.viewlink,
w_dbsetup.viewlink_label,
w_dbsetup.viewlink_param,
w_dbsetup.picto_enabled,
w_dbsetup.positif_is_good,
COALESCE(ind2.oid, 0)
FROM w_dbsetup
JOIN rh.t_rapports ON w_dbsetup.rapport_code = t_rapports.code
JOIN rh.t_indicateurs ind1 ON w_dbsetup.indicateur_code = ind1.code
LEFT JOIN rh.t_indicateurs ind2 ON w_dbsetup.indicateur_associe_code = ind2.code
;
-- Rejouer le specifique
UPDATE rh.t_rapports_rubriques SET
is_hide = w_specific_rapports_rubriques.is_hide,
specific_viewlink = w_specific_rapports_rubriques.specific_viewlink,
specific_viewlink_label = w_specific_rapports_rubriques.specific_viewlink_label,
specific_viewlink_param = w_specific_rapports_rubriques.specific_viewlink_param
FROM w_specific_rapports_rubriques
WHERE w_specific_rapports_rubriques.rapport_id = t_rapports_rubriques.rapport_id AND
w_specific_rapports_rubriques.indicateur_id = t_rapports_rubriques.indicateur_id AND
w_specific_rapports_rubriques.entete_etendue = t_rapports_rubriques.entete_etendue AND
(
w_specific_rapports_rubriques.is_hide = '1' OR
w_specific_rapports_rubriques.specific_viewlink <> '' OR
w_specific_rapports_rubriques.specific_viewlink_label <> '' OR
w_specific_rapports_rubriques.specific_viewlink_param <> ''
)
;
]]></updateCmd>
</TABLE>
<TABLE name="t_classes" label="Classes RH">
<selectCmd><![CDATA[
SELECT
t_listes_tables.code AS table_code,
t_classes.code AS classe_code,
t_classes.texte,
t_classes.is_cti,
t_classes.contenu_by_code,
t_classes.contenu_non_replicable_ailleurs
FROM rh.t_classes
JOIN rh.t_listes_tables ON table_id = t_listes_tables.oid
WHERE t_classes.code <> '' AND
(is_cti = '1' OR t_classes.code ilike 'CTI_%') AND is_cti = '1'
ORDER BY 1,2;
]]></selectCmd>
<updateCmd><![CDATA[
ALTER TABLE w_dbsetup ADD COLUMN IF NOT EXISTS table_id bigint DEFAULT 0
;
UPDATE w_dbsetup
SET table_id = t_listes_tables.oid
FROM rh.t_listes_tables
WHERE t_listes_tables.code = table_code
;
ALTER TABLE w_dbsetup ADD COLUMN IF NOT EXISTS sequence integer DEFAULT 0
;
UPDATE w_dbsetup
SET sequence = t_classes.sequence
FROM rh.t_classes
WHERE t_classes.code = w_dbsetup.classe_code AND
t_classes.table_id = w_dbsetup.table_id
;
UPDATE w_dbsetup
SET sequence = subview.sequence
FROM
(
SELECT
w_dbsetup.classe_code,
w_dbsetup.table_id,
subview.max_sequence_by_table + row_number() OVER (PARTITION BY w_dbsetup.table_id ORDER BY classe_code) AS sequence
FROM w_dbsetup
JOIN (
SELECT
t_listes_tables.oid AS table_id,
MAX(COALESCE(t_classes.sequence, 0)) AS max_sequence_by_table
FROM rh.t_listes_tables
LEFT JOIN rh.t_classes ON t_classes.table_id = t_listes_tables.oid
GROUP BY 1
) AS subview ON w_dbsetup.table_id = subview.table_id
WHERE w_dbsetup.sequence = 0
) AS subview
WHERE w_dbsetup.table_id = subview.table_id AND
w_dbsetup.classe_code = subview.classe_code AND
w_dbsetup.sequence = 0
;
UPDATE rh.t_classes SET
texte = w_dbsetup.texte,
table_id = w_dbsetup.table_id,
is_cti = w_dbsetup.is_cti,
contenu_by_code = w_dbsetup.contenu_by_code,
contenu_non_replicable_ailleurs = w_dbsetup.contenu_non_replicable_ailleurs
FROM w_dbsetup
WHERE 1=1
AND t_classes.code = w_dbsetup.classe_code
AND t_classes.table_id = w_dbsetup.table_id
AND (1!=1
OR t_classes.texte IS DISTINCT FROM w_dbsetup.texte
OR t_classes.is_cti IS DISTINCT FROM w_dbsetup.is_cti
OR t_classes.contenu_by_code IS DISTINCT FROM w_dbsetup.contenu_by_code
OR t_classes.contenu_non_replicable_ailleurs IS DISTINCT FROM w_dbsetup.contenu_non_replicable_ailleurs)
;
INSERT INTO rh.t_classes(
code,
texte,
table_id,
is_cti,
sequence,
contenu_by_code,
contenu_non_replicable_ailleurs
)
SELECT
w_dbsetup.classe_code,
w_dbsetup.texte,
w_dbsetup.table_id,
w_dbsetup.is_cti,
w_dbsetup.sequence,
w_dbsetup.contenu_by_code,
w_dbsetup.contenu_non_replicable_ailleurs
FROM w_dbsetup
WHERE 1=1
AND w_dbsetup.table_id::text || '-' || w_dbsetup.sequence::text NOT IN (SELECT table_id::text || '-' || sequence::text FROM rh.t_classes)
AND w_dbsetup.texte NOT LIKE '*SUPPRIME%'
;
]]></updateCmd>
</TABLE>
<TABLE name="t_classes_sections" label="Classes RH (sections)">
<selectCmd>
<![CDATA[
SELECT
t_classes_sections.code,
t_classes_sections.texte,
t_classes_sections.condition,
t_classes_sections.exclude_code,
t_classes_sections.include_code,
t_listes_tables.code as table_code,
t_classes.code as classe_code
FROM rh.t_classes_sections
JOIN rh.t_classes ON t_classes.oid = t_classes_sections.classe_id
JOIN rh.t_listes_tables ON t_listes_tables.oid = t_classes.table_id
WHERE t_classes.is_cti = 1
ORDER BY
t_listes_tables.code,
t_classes.code,
t_classes_sections.code
;
]]>
</selectCmd>
<updateCmd>
<![CDATA[
-- Màj des sections de classe.
UPDATE rh.t_classes_sections
SET
texte = w_dbsetup.texte,
condition = w_dbsetup.condition,
exclude_code = w_dbsetup.exclude_code,
include_code = w_dbsetup.include_code
FROM
w_dbsetup,
rh.t_classes,
rh.t_listes_tables
WHERE 1=1
AND t_classes.oid = t_classes_sections.classe_id
AND t_listes_tables.oid = t_classes.table_id
AND w_dbsetup.code = t_classes_sections.code
AND w_dbsetup.classe_code = t_classes.code
AND w_dbsetup.table_code = t_listes_tables.code AND
(
t_classes_sections.texte IS DISTINCT FROM w_dbsetup.texte OR
t_classes_sections.condition IS DISTINCT FROM w_dbsetup.condition OR
t_classes_sections.exclude_code IS DISTINCT FROM w_dbsetup.exclude_code OR
t_classes_sections.include_code IS DISTINCT FROM w_dbsetup.include_code
)
;
-- Alimentation des sections de classe.
INSERT INTO rh.t_classes_sections(code, texte, condition, exclude_code, include_code, classe_id)
SELECT
w_dbsetup.code,
w_dbsetup.texte,
w_dbsetup.condition,
w_dbsetup.exclude_code,
w_dbsetup.include_code,
t_classes.oid
FROM w_dbsetup
JOIN rh.t_listes_tables ON t_listes_tables.code = w_dbsetup.table_code
JOIN rh.t_classes ON 1=1
AND t_classes.table_id = t_listes_tables.oid
AND t_classes.code = w_dbsetup.classe_code
WHERE 1=1
AND w_dbsetup.code||'@'||w_dbsetup.classe_code||'@'||w_dbsetup.table_code
NOT IN (
SELECT t_classes_sections.code||'@'||t_classes.code||'@'||t_listes_tables.code
FROM rh.t_classes_sections
JOIN rh.t_classes ON t_classes.oid = t_classes_sections.classe_id
JOIN rh.t_listes_tables ON t_listes_tables.oid = t_classes.table_id
)
;
]]>
</updateCmd>
</TABLE>
<TABLE name="t_classes_sections_elements_ages" label="Classes RH (ages)">
<selectCmd>
<![CDATA[
SELECT
t_classes_sections.code AS section_code,
t_ages.code as to_code,
t_listes_tables.code as table_code,
t_classes.code as classe_code
FROM
rh.t_classes_sections_elements,
rh.t_classes_sections,
rh.t_classes,
rh.t_listes_tables,
rh.t_ages
WHERE
t_classes_sections_elements.section_id = t_classes_sections.oid
AND t_classes_sections.classe_id = t_classes.oid
AND t_classes.is_cti = 1
AND table_id = t_listes_tables.oid
AND t_listes_tables.code = 'AGE'
AND t_classes_sections_elements.to_id = t_ages.oid
ORDER BY
t_classes.code,
t_classes_sections.code,
t_ages.code
;
]]>
</selectCmd>
<updateCmd>
<![CDATA[
INSERT INTO rh.t_classes_sections_elements(section_id, to_id)
SELECT
t_classes_sections.oid,
t_ages.oid
FROM w_dbsetup
JOIN rh.t_listes_tables ON t_listes_tables.code = w_dbsetup.table_code
JOIN rh.t_classes ON 1=1
AND t_classes.table_id = t_listes_tables.oid
AND t_classes.code = w_dbsetup.classe_code
JOIN rh.t_classes_sections ON 1=1
AND t_classes_sections.classe_id = t_classes.oid
AND t_classes_sections.code = w_dbsetup.section_code
JOIN rh.t_ages ON t_ages.code = w_dbsetup.to_code
WHERE t_classes_sections.oid::text || '-' || t_ages.oid::text NOT IN
(
SELECT section_id::text || '-' || to_id::text
FROM rh.t_classes_sections_elements
)
;
]]>
</updateCmd>
</TABLE>
<TABLE name="t_classes_sections_elements_anciennetes_annee" label="Classes RH (anciennetés années)">
<selectCmd>
<![CDATA[
SELECT
t_classes_sections.code AS section_code,
t_anciennetes_annee.code as to_code,
t_listes_tables.code as table_code,
t_classes.code as classe_code
FROM
rh.t_classes_sections_elements,
rh.t_classes_sections,
rh.t_classes,
rh.t_listes_tables,
rh.t_anciennetes_annee
WHERE
t_classes_sections_elements.section_id = t_classes_sections.oid
AND t_classes_sections.classe_id = t_classes.oid
AND t_classes.is_cti = 1
AND table_id = t_listes_tables.oid
AND t_listes_tables.code = 'ANC'
AND t_classes_sections_elements.to_id = t_anciennetes_annee.oid
ORDER BY
t_classes.code,
t_classes_sections.code,
t_anciennetes_annee.code
;
]]>
</selectCmd>
<updateCmd>
<![CDATA[
INSERT INTO rh.t_classes_sections_elements(section_id, to_id)
SELECT
t_classes_sections.oid,
t_anciennetes_annee.oid
FROM w_dbsetup
JOIN rh.t_listes_tables ON t_listes_tables.code = w_dbsetup.table_code
JOIN rh.t_classes ON 1=1
AND t_classes.table_id = t_listes_tables.oid
AND t_classes.code = w_dbsetup.classe_code
JOIN rh.t_classes_sections ON 1=1
AND t_classes_sections.classe_id = t_classes.oid
AND t_classes_sections.code = w_dbsetup.section_code
JOIN rh.t_anciennetes_annee ON t_anciennetes_annee.code = w_dbsetup.to_code
WHERE t_classes_sections.oid::text || '-' || t_anciennetes_annee.oid::text NOT IN
(
SELECT section_id::text || '-' || to_id::text
FROM rh.t_classes_sections_elements
)
;
]]>
</updateCmd>
</TABLE>
<TABLE name="t_vue_parametre" label="Listes des données prédéfinis">
<selectCmd><![CDATA[
SELECT oid,
code,
texte,
array_to_string(data_code, '@') as data_code,
array_to_string(data_entete, '@') as data_entete,
array_to_string(data_format, '@') as data_format,
array_to_string(data_description, '@') as data_description,
position_ratio,
rang
FROM rh.t_vue_parametre
ORDER BY 2;
]]></selectCmd>
<updateCmd><![CDATA[
INSERT INTO rh.t_vue_parametre(code, texte, data_code, data_entete, data_format, data_description,position_ratio,rang)
SELECT code,
texte,
string_to_array(data_code, '@') as data_code,
string_to_array(data_entete, '@') as data_entete,
string_to_array(data_format, '@') as data_format,
string_to_array(data_description, '@') as data_description,
position_ratio,
rang
FROM w_dbsetup
WHERE 1=1
AND code NOT IN (SELECT code FROM rh.t_vue_parametre)
;
]]></updateCmd>
</TABLE>
<TABLE name="t_indicateur_serie" label="Liste serie disponibles pour les graphiques">
<selectCmd><![CDATA[
WITH flatSeries as (
SELECT
oid,
cast(jsonb_array_elements(replace('[' || serie_id || ']', '|', ',')::jsonb)->>'pos' as bigint) as position,
cast(jsonb_array_elements(replace('[' || serie_id || ']', '|', ',')::jsonb)->>'id' as bigint) as id
FROM rh.t_indicateur_serie
ORDER BY oid, position
),
flatCodes as (SELECT
flatSeries.oid,
array_agg(position::text || ':' || t_indicateur_serie.code::text) as codes
FROM flatSeries
LEFT JOIN rh.t_indicateur_serie on t_indicateur_serie.oid = id
GROUP BY 1)
SELECT
t_indicateur_serie.code,
coalesce(t_indicateurs.code, '') as indicateur_code,
t_indicateur_serie.name,
t_indicateur_serie.color,
t_indicateur_serie.formula,
t_indicateur_serie.calc,
t_indicateur_serie.total,
t_indicateur_serie.format,
case when array_agg(DISTINCT t_indicateur_condition.external_code2) = ARRAY[null] then ARRAY[]::text[] else array_agg(DISTINCT t_indicateur_condition.external_code2) end as external_code2,
CASE WHEN flatCodes.codes = ARRAY[null] THEN '{}'::text[] ELSE flatCodes.codes::text[] END as serie_code
FROM rh.t_indicateur_serie
LEFT JOIN rh.t_indicateurs ON t_indicateurs.oid = indicateur_id
LEFT JOIN rh.t_indicateur_condition ON ARRAY[t_indicateur_condition.oid] <@ t_indicateur_serie.condition_id
LEFT JOIN flatCodes on flatCodes.oid = t_indicateur_serie.oid
GROUP BY 1,2,3,4,5,6,7,8, flatCodes.codes
ORDER BY 2,1;
]]></selectCmd>
<updateCmd><![CDATA[
SELECT rh.cti_reorganize_indicateur_condition();
TRUNCATE rh.t_indicateur_serie;
INSERT INTO rh.t_indicateur_serie(indicateur_id, condition_id, name, color, formula, calc, serie_id, total, format, code)
SELECT
coalesce(t_indicateurs.oid, 0),
case when array_agg(DISTINCT t_indicateur_condition.oid) = ARRAY[NULL]::bigint[] then ARRAY[]::bigint[] else array_agg(DISTINCT t_indicateur_condition.oid) end,
w_dbsetup.name,
w_dbsetup.color,
w_dbsetup.formula,
w_dbsetup.calc,
case when array_agg(DISTINCT rec.oid) = ARRAY[NULL]::bigint[] then ARRAY[]::bigint[] else array_agg(DISTINCT rec.oid) end,
w_dbsetup.total,
w_dbsetup.format,
w_dbsetup.code
FROM w_dbsetup
LEFT JOIN rh.t_indicateurs ON t_indicateurs.code = w_dbsetup.indicateur_code
LEFT JOIN rh.t_indicateur_condition ON ARRAY[t_indicateur_condition.external_code2] <@ w_dbsetup.external_code2
LEFT JOIN rh.t_indicateur_serie as rec ON ARRAY[rec.code] <@ w_dbsetup.serie_code
GROUP BY 1,3,4,5,6,8,9,10
;
WITH series_id as (
SELECT
w_dbsetup.code,
split_part(unnest(w_dbsetup.serie_code), ':', 1) as pos,
split_part(unnest(w_dbsetup.serie_code), ':', 2) as serie_code
FROM w_dbsetup
),
full_series as (
SELECT
series_id.code,
coalesce(string_agg('{"pos": ' || pos || ', "id": ' || t_indicateur_serie.oid || '}', '|'), '') as serie_id
FROM series_id
LEFT JOIN rh.t_indicateur_serie ON t_indicateur_serie.code = serie_code
GROUP BY 1
)
UPDATE rh.t_indicateur_serie SET
serie_id = CASE WHEN full_series.serie_id IS NULL THEN '' ELSE full_series.serie_id END
FROM w_dbsetup
LEFT JOIN full_series ON full_series.code = w_dbsetup.code
WHERE t_indicateur_serie.code = w_dbsetup.code
;
]]></updateCmd>
</TABLE>
<TABLE name="t_chart" label="Liste des graphiques">
<selectCmd><![CDATA[
SELECT
t_chart.type,
t_chart.category,
t_chart.name,
t_chart.default_time_calc,
t_chart.label_view_code,
t_chart.code,
array_agg(DISTINCT t_indicateur_serie.code) as serie_code
FROM rh.t_chart
LEFT JOIN rh.t_indicateur_serie ON ARRAY[t_indicateur_serie.oid] <@ t_chart.serie_id
GROUP BY 1,2,3,4,5,6
ORDER BY 1;
]]></selectCmd>
<updateCmd><![CDATA[
TRUNCATE rh.t_chart;
INSERT INTO rh.t_chart(type, serie_id, category, name, default_time_calc, label_view_code, code)
SELECT
type,
array_agg(DISTINCT t_indicateur_serie.oid),
w_dbsetup.category,
w_dbsetup.name,
w_dbsetup.default_time_calc,
w_dbsetup.label_view_code,
w_dbsetup.code
FROM w_dbsetup
LEFT JOIN rh.t_indicateur_serie ON ARRAY[t_indicateur_serie.code] <@ w_dbsetup.serie_code
GROUP BY 1,3,4,5,6,7
;
]]></updateCmd>
</TABLE>
<TABLE name="t_dashboard" label="Liste des dashboards">
<selectCmd><![CDATA[
SELECT
code, label
FROM rh.t_dashboard
ORDER BY code;
]]></selectCmd>
<updateCmd><![CDATA[
TRUNCATE rh.t_dashboard;
INSERT INTO rh.t_dashboard(code, label)
SELECT
w_dbsetup.code,
w_dbsetup.label
FROM w_dbsetup
;
]]></updateCmd>
</TABLE>
<TABLE name="t_dashboard_widget" label="Association des graphiques avec les dashboard">
<selectCmd><![CDATA[
SELECT
t_dashboard_widget.oid,
t_chart.code as chart_code,
t_dashboard.code as dashboard_code,
t_dashboard_widget.deprecated
FROM rh.t_dashboard_widget
LEFT JOIN rh.t_chart ON t_chart.oid = chart_id
LEFT JOIN rh.t_dashboard ON t_dashboard.oid = dashboard_id
ORDER BY 1;
]]></selectCmd>
<updateCmd><![CDATA[
TRUNCATE rh.t_dashboard_widget;
INSERT INTO rh.t_dashboard_widget(dashboard_id, chart_id, deprecated)
SELECT
t_dashboard.oid,
t_chart.oid,
w_dbsetup.deprecated
FROM w_dbsetup
LEFT JOIN rh.t_chart ON t_chart.code = chart_code
LEFT JOIN rh.t_dashboard ON t_dashboard.code = dashboard_code
;
]]></updateCmd>
</TABLE>
<TABLE name="t_dashboard_filter" label="Liste des filtres disponibles pour un dashboard">
<selectCmd><![CDATA[
SELECT
t_dashboard_filter.oid,
t_dashboard.code as dashboard_code,
t_indicateur_condition.external_code2
FROM rh.t_dashboard_filter
LEFT JOIN rh.t_dashboard ON t_dashboard.oid = dashboard_id
LEFT JOIN rh.t_indicateur_condition ON t_indicateur_condition.oid = condition_id
ORDER BY 2, 3;
]]></selectCmd>
<updateCmd><![CDATA[
TRUNCATE rh.t_dashboard_filter;
INSERT INTO rh.t_dashboard_filter(dashboard_id,condition_id)
SELECT
t_dashboard.oid,
t_indicateur_condition.oid
FROM w_dbsetup
LEFT JOIN rh.t_dashboard ON t_dashboard.code = w_dbsetup.dashboard_code
LEFT JOIN rh.t_indicateur_condition ON t_indicateur_condition.external_code2 = w_dbsetup.external_code2
;
]]></updateCmd>
</TABLE>
<TABLE name="t_dashboard_onglet" label="Onglets pour un meme dashboard">
<selectCmd><![CDATA[
SELECT
t_dashboard_onglet.oid,
t_dashboard.code as dashboard_code,
name,
index
FROM rh.t_dashboard_onglet
LEFT JOIN rh.t_dashboard ON t_dashboard.oid = dashboard_id
ORDER BY 2, 4;
]]></selectCmd>
<updateCmd><![CDATA[
TRUNCATE rh.t_dashboard_onglet;
INSERT INTO rh.t_dashboard_onglet(dashboard_id, name, index)
SELECT
t_dashboard.oid,
w_dbsetup.name,
w_dbsetup.index
FROM w_dbsetup
LEFT JOIN rh.t_dashboard ON t_dashboard.code = dashboard_code
;
]]></updateCmd>
</TABLE>
<TABLE name="t_widget_user_parameter" label="Configs utilisateur des dashboard">
<selectCmd><![CDATA[
SELECT
t_widget_user_parameter.oid as uuid,
t_dashboard.code || '|' || t_chart.code as dashboard_widget_code,
username,
title,
x,
y,
w,
h,
time_calc,
visible,
t_dashboard.code || '|' || t_dashboard_onglet.index as tab_code,
max_cat,
array_agg(DISTINCT t_indicateur_serie.code) as include_series_code
FROM rh.t_widget_user_parameter
JOIN rh.t_dashboard_widget ON t_dashboard_widget.oid = dashboard_widget_id
JOIN rh.t_dashboard ON t_dashboard.oid= t_dashboard_widget.dashboard_id
JOIN rh.t_chart on t_chart.oid = t_dashboard_widget.chart_id
JOIN rh.t_dashboard_onglet on t_dashboard_onglet.oid = tab_id
LEFT JOIN rh.t_indicateur_serie ON ARRAY[t_indicateur_serie.oid] <@ include_series_id
WHERE username = 'cti'
GROUP BY 1,2,3,4,5,6,7,8,9,10,11, t_dashboard_onglet.index
ORDER BY 2, 6, 7;
]]></selectCmd>
<updateCmd><![CDATA[
DELETE FROM rh.t_widget_user_parameter WHERE username = 'cti';
INSERT INTO rh.t_widget_user_parameter(
oid,
dashboard_widget_id,
username,
title,
x,
y,
w,
h,
time_calc,
visible,
tab_id,
max_cat,
include_series_id
)
SELECT
w_dbsetup.uuid,
t_dashboard_widget.oid,
w_dbsetup.username,
w_dbsetup.title,
w_dbsetup.x,
w_dbsetup.y,
w_dbsetup.w,
w_dbsetup.h,
w_dbsetup.time_calc,
w_dbsetup.visible,
rh.t_dashboard_onglet.oid,
w_dbsetup.max_cat,
case when array_agg(DISTINCT t_indicateur_serie.oid) = ARRAY[NULL]::bigint[] then ARRAY[]::bigint[] else array_agg(DISTINCT t_indicateur_serie.oid) end
FROM w_dbsetup
JOIN rh.t_dashboard ON t_dashboard.code = SPLIT_PART(dashboard_widget_code, '|', 1)
JOIN rh.t_chart on t_chart.code = SPLIT_PART(dashboard_widget_code, '|', 2)
JOIN rh.t_dashboard_widget ON t_dashboard_widget.dashboard_id = t_dashboard.oid and t_dashboard_widget.chart_id = t_chart.oid
JOIN rh.t_dashboard_onglet ON t_dashboard_onglet.dashboard_id = t_dashboard.oid and t_dashboard_onglet.index = SPLIT_PART(tab_code, '|', 2)
LEFT JOIN rh.t_indicateur_serie ON ARRAY[t_indicateur_serie.code] <@ include_series_code
GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12
ORDER BY 1
;
]]></updateCmd>
</TABLE>
<TABLE name="t_expert_controle" label="Contrôles expert">
<selectCmd><![CDATA[
SELECT
oid,
code,
texte,
description,
is_cti,
gravite_id,
start_periode
FROM rh.t_expert_controle
WHERE is_cti = '1'
ORDER BY code;
]]> </selectCmd>
<updateCmd><![CDATA[
UPDATE rh.t_expert_controle SET
code = w_dbsetup.code,
texte = w_dbsetup.texte,
description = w_dbsetup.description,
is_cti = w_dbsetup.is_cti,
gravite_id = w_dbsetup.gravite_id,
start_periode = w_dbsetup.start_periode
FROM w_dbsetup
WHERE 1=1
AND w_dbsetup.oid = 0
AND rh.t_expert_controle.oid = w_dbsetup.oid
AND
(
t_expert_controle.code IS DISTINCT FROM w_dbsetup.code OR
t_expert_controle.texte IS DISTINCT FROM w_dbsetup.texte OR
t_expert_controle.description IS DISTINCT FROM w_dbsetup.description OR
t_expert_controle.is_cti IS DISTINCT FROM w_dbsetup.is_cti OR
t_expert_controle.gravite_id IS DISTINCT FROM w_dbsetup.gravite_id OR
t_expert_controle.start_periode IS DISTINCT FROM w_dbsetup.start_periode
)
;
UPDATE rh.t_expert_controle SET
code = w_dbsetup.code,
texte = w_dbsetup.texte,
description = w_dbsetup.description,
is_cti = w_dbsetup.is_cti,
gravite_id = w_dbsetup.gravite_id,
start_periode = w_dbsetup.start_periode
FROM w_dbsetup
WHERE 1=1
AND w_dbsetup.oid <> 0
AND rh.t_expert_controle.code = w_dbsetup.code
AND
(
t_expert_controle.texte IS DISTINCT FROM w_dbsetup.texte OR
t_expert_controle.description IS DISTINCT FROM w_dbsetup.description OR
t_expert_controle.is_cti IS DISTINCT FROM w_dbsetup.is_cti OR
t_expert_controle.gravite_id IS DISTINCT FROM w_dbsetup.gravite_id OR
t_expert_controle.start_periode IS DISTINCT FROM w_dbsetup.start_periode
)
;
INSERT INTO rh.t_expert_controle(
oid,
code,
texte,
description,
is_active,
is_hide,
alerte_id,
is_cti,
gravite_id,
start_periode
)
SELECT
oid,
code,
texte,
description,
'1' AS is_active,
'0' AS is_hide,
0::bigint AS alerte_id,
is_cti,
gravite_id,
start_periode
FROM w_dbsetup
WHERE 1=1
AND w_dbsetup.oid = 0
AND w_dbsetup.oid NOT IN (SELECT oid FROM rh.t_expert_controle)
;
INSERT INTO rh.t_expert_controle(
code,
texte,
description,
is_active,
is_hide,
alerte_id,
is_cti,
gravite_id,
start_periode
)
SELECT
code,
texte,
description,
'1' AS is_active,
'0' AS is_hide,
0::bigint AS alerte_id,
is_cti,
gravite_id,
start_periode
FROM w_dbsetup
WHERE 1=1
AND w_dbsetup.oid <> 0
AND w_dbsetup.code NOT IN (SELECT code FROM rh.t_expert_controle)
;
]]></updateCmd>
</TABLE>
<TABLE name="t_expert_controle_rule" label="règles expert_controles">
<selectCmd><![CDATA[
SELECT
t_expert_controle_rule.oid,
t_expert_controle.code AS expert_controle_code,
t_expert_controle_rule.data_type,
t_indicateurs.code AS indicateur_code,
COALESCE(t_indicateur_condition_1.external_code2,'') AS indicateur_condition_external_code_1,
COALESCE(t_indicateur_condition_2.external_code2,'') AS indicateur_condition_external_code_2,
COALESCE(t_indicateur_condition_3.external_code2,'') AS indicateur_condition_external_code_3,
t_expert_controle_rule.formula,
t_indicateurs_2.code AS indicateur_code_2,
COALESCE(t_indicateur_condition_21.external_code2,'') AS indicateur_condition_external_code_21,
COALESCE(t_indicateur_condition_22.external_code2,'') AS indicateur_condition_external_code_22,
COALESCE(t_indicateur_condition_23.external_code2,'') AS indicateur_condition_external_code_23,
t_expert_controle_rule.formula_2,
t_indicateurs_3.code AS indicateur_code_3,
COALESCE(t_indicateur_condition_31.external_code2,'') AS indicateur_condition_external_code_31,
COALESCE(t_indicateur_condition_32.external_code2,'') AS indicateur_condition_external_code_32,
COALESCE(t_indicateur_condition_33.external_code2,'') AS indicateur_condition_external_code_33,
t_expert_controle_rule.formula_3,
0::bigint AS expert_controle_id,
0::bigint AS expert_controle_rule_id,
0::bigint AS indicateur_id,
0::bigint AS indicateur_condition_id_1,
0::bigint AS indicateur_condition_id_2,
0::bigint AS indicateur_condition_id_3,
0::bigint AS indicateur_2_id,
0::bigint AS indicateur_condition_id_21,
0::bigint AS indicateur_condition_id_22,
0::bigint AS indicateur_condition_id_23,
0::bigint AS indicateur_3_id,
0::bigint AS indicateur_condition_id_31,
0::bigint AS indicateur_condition_id_32,
0::bigint AS indicateur_condition_id_33
FROM rh.t_expert_controle_rule
JOIN rh.t_expert_controle ON expert_controle_id = t_expert_controle.oid
JOIN rh.t_indicateurs t_indicateurs ON indicateur_id = t_indicateurs.oid
LEFT JOIN rh.t_indicateur_condition t_indicateur_condition_1 ON indicateur_condition_id[1] = t_indicateur_condition_1.oid
LEFT JOIN rh.t_indicateur_condition t_indicateur_condition_2 ON indicateur_condition_id[2] = t_indicateur_condition_2.oid
LEFT JOIN rh.t_indicateur_condition t_indicateur_condition_3 ON indicateur_condition_id[3] = t_indicateur_condition_3.oid
LEFT JOIN rh.t_indicateurs t_indicateurs_2 ON indicateur_2_id = t_indicateurs_2.oid
LEFT JOIN rh.t_indicateur_condition t_indicateur_condition_21 ON indicateur_condition_2_id[1] = t_indicateur_condition_21.oid
LEFT JOIN rh.t_indicateur_condition t_indicateur_condition_22 ON indicateur_condition_2_id[2] = t_indicateur_condition_22.oid
LEFT JOIN rh.t_indicateur_condition t_indicateur_condition_23 ON indicateur_condition_2_id[3] = t_indicateur_condition_23.oid
LEFT JOIN rh.t_indicateurs t_indicateurs_3 ON indicateur_3_id = t_indicateurs_3.oid
LEFT JOIN rh.t_indicateur_condition t_indicateur_condition_31 ON indicateur_condition_3_id[1] = t_indicateur_condition_31.oid
LEFT JOIN rh.t_indicateur_condition t_indicateur_condition_32 ON indicateur_condition_3_id[2] = t_indicateur_condition_32.oid
LEFT JOIN rh.t_indicateur_condition t_indicateur_condition_33 ON indicateur_condition_3_id[3] = t_indicateur_condition_33.oid
WHERE t_expert_controle_rule.is_cti = '1' AND
t_expert_controle_rule.indicateur_id > 0 AND
t_expert_controle.is_cti = '1'
ORDER BY t_expert_controle.code,
t_indicateurs.code,
t_indicateur_condition_1.code,
t_indicateur_condition_2.code,
t_indicateur_condition_3.code
;
]]> </selectCmd>
<updateCmd><![CDATA[
SELECT rh.cti_reorganize_indicateur_condition()
;
UPDATE w_dbsetup
SET expert_controle_id = t_expert_controle.oid
FROM rh.t_expert_controle
WHERE expert_controle_code = t_expert_controle.code
;
UPDATE w_dbsetup
SET indicateur_id = t_indicateurs.oid
FROM rh.t_indicateurs
WHERE indicateur_code = t_indicateurs.code
;
UPDATE w_dbsetup
SET indicateur_2_id = t_indicateurs.oid
FROM rh.t_indicateurs
WHERE indicateur_code_2 = t_indicateurs.code
;
UPDATE w_dbsetup
SET indicateur_3_id = t_indicateurs.oid
FROM rh.t_indicateurs
WHERE indicateur_code_3 = t_indicateurs.code
;
UPDATE w_dbsetup
SET indicateur_condition_id_1 = t_indicateur_condition.oid
FROM rh.t_indicateur_condition
WHERE indicateur_condition_external_code_1 = t_indicateur_condition.external_code2
;
UPDATE w_dbsetup
SET indicateur_condition_id_2 = t_indicateur_condition.oid
FROM rh.t_indicateur_condition
WHERE indicateur_condition_external_code_2 = t_indicateur_condition.external_code2
;
UPDATE w_dbsetup
SET indicateur_condition_id_3 = t_indicateur_condition.oid
FROM rh.t_indicateur_condition
WHERE indicateur_condition_external_code_3 = t_indicateur_condition.external_code2
;
UPDATE w_dbsetup
SET indicateur_condition_id_21 = t_indicateur_condition.oid
FROM rh.t_indicateur_condition
WHERE indicateur_condition_external_code_21 = t_indicateur_condition.external_code2
;
UPDATE w_dbsetup
SET indicateur_condition_id_22 = t_indicateur_condition.oid
FROM rh.t_indicateur_condition
WHERE indicateur_condition_external_code_22 = t_indicateur_condition.external_code2
;
UPDATE w_dbsetup
SET indicateur_condition_id_23 = t_indicateur_condition.oid
FROM rh.t_indicateur_condition
WHERE indicateur_condition_external_code_23 = t_indicateur_condition.external_code2
;
UPDATE w_dbsetup
SET indicateur_condition_id_31 = t_indicateur_condition.oid
FROM rh.t_indicateur_condition
WHERE indicateur_condition_external_code_31 = t_indicateur_condition.external_code2
;
UPDATE w_dbsetup
SET indicateur_condition_id_32 = t_indicateur_condition.oid
FROM rh.t_indicateur_condition
WHERE indicateur_condition_external_code_32 = t_indicateur_condition.external_code2
;
UPDATE w_dbsetup
SET indicateur_condition_id_33 = t_indicateur_condition.oid
FROM rh.t_indicateur_condition
WHERE indicateur_condition_external_code_33 = t_indicateur_condition.external_code2
;
UPDATE w_dbsetup
SET expert_controle_rule_id = t_expert_controle_rule.oid
FROM rh. t_expert_controle_rule
WHERE w_dbsetup.expert_controle_id = t_expert_controle_rule.expert_controle_id AND
w_dbsetup.indicateur_id = t_expert_controle_rule.indicateur_id AND
w_dbsetup.indicateur_condition_id_1 = COALESCE(t_expert_controle_rule.indicateur_condition_id[1],0) AND
w_dbsetup.indicateur_condition_id_2 = COALESCE(t_expert_controle_rule.indicateur_condition_id[2],0) AND
w_dbsetup.indicateur_condition_id_3 = COALESCE(t_expert_controle_rule.indicateur_condition_id[3],0) AND
w_dbsetup.indicateur_2_id = t_expert_controle_rule.indicateur_2_id AND
w_dbsetup.indicateur_condition_id_21 = COALESCE(t_expert_controle_rule.indicateur_condition_2_id[1],0) AND
w_dbsetup.indicateur_condition_id_22 = COALESCE(t_expert_controle_rule.indicateur_condition_2_id[2],0) AND
w_dbsetup.indicateur_condition_id_23 = COALESCE(t_expert_controle_rule.indicateur_condition_2_id[3],0) AND
w_dbsetup.indicateur_3_id = t_expert_controle_rule.indicateur_3_id AND
w_dbsetup.indicateur_condition_id_31 = COALESCE(t_expert_controle_rule.indicateur_condition_3_id[1],0) AND
w_dbsetup.indicateur_condition_id_32 = COALESCE(t_expert_controle_rule.indicateur_condition_3_id[2],0) AND
w_dbsetup.indicateur_condition_id_33 = COALESCE(t_expert_controle_rule.indicateur_condition_3_id[3],0) AND
w_dbsetup.data_type = t_expert_controle_rule.data_type AND
w_dbsetup.formula = t_expert_controle_rule.formula
;
DELETE
FROM rh.t_expert_controle_rule
WHERE expert_controle_id IN
(SELECT oid
FROM rh.t_expert_controle
WHERE code IN (SELECT expert_controle_code FROM w_dbsetup)) AND
is_cti = '1' AND
oid NOT IN (SELECT expert_controle_rule_id FROM w_dbsetup)
;
INSERT INTO rh.t_expert_controle_rule(
expert_controle_id,
data_type,
indicateur_id,
indicateur_condition_id,
formula,
indicateur_2_id,
indicateur_condition_2_id,
formula_2,
indicateur_3_id,
indicateur_condition_3_id,
formula_3,
is_cti)
SELECT
expert_controle_id,
data_type,
indicateur_id,
ARRAY[w_dbsetup.indicateur_condition_id_1,w_dbsetup.indicateur_condition_id_2,w_dbsetup.indicateur_condition_id_3],
formula,
indicateur_2_id,
ARRAY[w_dbsetup.indicateur_condition_id_21,w_dbsetup.indicateur_condition_id_22,w_dbsetup.indicateur_condition_id_23],
formula_2,
indicateur_3_id,
ARRAY[w_dbsetup.indicateur_condition_id_31,w_dbsetup.indicateur_condition_id_32,w_dbsetup.indicateur_condition_id_33],
formula_3,
'1'::text AS is_cti
FROM w_dbsetup
WHERE expert_controle_rule_id = 0 AND
indicateur_id > 0
;
]]></updateCmd>
</TABLE>
</DBSETUPDATA>