0 GROUP BY 1,2,3 ; INSERT INTO rh.t_classes_sections(code, texte, classe_id) SELECT code, texte, classe_id from w_clasec_1 where 1=1 and classe_id = (select oid from rh.t_classes where code = 'PLANIV1') and code not in (select code from rh.t_classes_sections where t_classes_sections.classe_id = w_clasec_1.classe_id and code is not null) group by 1,2,3 ; update rh.t_classes_sections set texte = w_clasec_1.texte FROM w_clasec_1 WHERE true and w_clasec_1.classe_id = t_classes_sections.classe_id and w_clasec_1.code = t_classes_sections.code and w_clasec_1.texte is distinct from t_classes_sections.texte ; -- Mise à jour du contenu des sections Niveau 1. INSERT INTO rh.t_classes_sections_elements (section_id, to_id) SELECT t_classes_sections.oid AS section_id, t_planning_niveau.oid AS to_id FROM rh.t_classes join rh.t_classes_sections on t_classes_sections.classe_id = t_classes.oid join rh.t_planning_niveau on split_part(t_planning_niveau.code, '|', 1) = t_classes_sections.code WHERE t_classes.code = 'PLANIV1' group by 1,2 ; -- Mise à jour des sections Niveau 2. DROP TABLE IF EXISTS w_clasec_2 ; CREATE TEMP TABLE w_clasec_2 AS with nb_niv as ( select split_part(code, '|', 2) as niv_cod2, count(DISTINCT trim(split_part(texte, '-|-', 2))) as niv_count from rh.t_planning_niveau group by 1 ) SELECT case when niv_count = 1 then split_part(code, '|', 2) else split_part(code, '|', 1) || '|' || split_part(code, '|', 2) end as code, split_part(code, '|', 1) || '|' || split_part(code, '|', 2) as code_original, trim(split_part(texte, '-|-', 2)) as texte, (select oid from rh.t_classes where code = 'PLANIV2') as classe_id from rh.t_planning_niveau as niveau2 JOIN nb_niv ON nb_niv.niv_cod2 = split_part(code, '|', 2) WHERE oid > 0 group by 1,2,3 ; INSERT INTO rh.t_classes_sections(code, texte, classe_id) SELECT code, texte, classe_id from w_clasec_2 where 1=1 and classe_id = (select oid from rh.t_classes where code = 'PLANIV2') and code not in (select code from rh.t_classes_sections where t_classes_sections.classe_id = w_clasec_2.classe_id and code is not null) group by 1,2,3 ; update rh.t_classes_sections set texte = w_clasec_2.texte FROM w_clasec_2 WHERE true and w_clasec_2.classe_id = t_classes_sections.classe_id and w_clasec_2.code = t_classes_sections.code and w_clasec_2.texte is distinct from t_classes_sections.texte ; -- Mise à jour du contenu des sections Niveau 2. INSERT INTO rh.t_classes_sections_elements (section_id, to_id) SELECT t_classes_sections.oid AS section_id, t_planning_niveau.oid AS to_id FROM rh.t_classes join rh.t_classes_sections on t_classes_sections.classe_id = t_classes.oid join w_clasec_2 on true and w_clasec_2.classe_id = t_classes.oid and w_clasec_2.code = t_classes_sections.code join rh.t_planning_niveau on split_part(t_planning_niveau.code, '|', 1)||'|'||split_part(t_planning_niveau.code, '|', 2) = w_clasec_2.code_original WHERE t_classes.code = 'PLANIV2' group by 1,2 ; -- Mise à jour des sections Niveau 3. DROP TABLE IF EXISTS w_clasec_3 ; CREATE TEMP TABLE w_clasec_3 AS with nb_niv as ( select split_part(code, '|', 3) as niv_cod3, count(DISTINCT trim(split_part(texte, '-|-', 3))) as niv_count from rh.t_planning_niveau group by 1 ) SELECT case when niv_count = 1 then split_part(code, '|', 3) else split_part(code, '|', 1) || '|' || split_part(code, '|', 2) || '|' || split_part(code, '|', 3) end as code, split_part(code, '|', 1) || '|' || split_part(code, '|', 2) || '|' || split_part(code, '|', 3) as code_original, trim(split_part(texte, '-|-', 3)) as texte, (select oid from rh.t_classes where code = 'PLANIV3') as classe_id from rh.t_planning_niveau as niveau3 JOIN nb_niv ON nb_niv.niv_cod3 = split_part(code, '|', 3) WHERE oid > 0 group by 1,2,3 ; INSERT INTO rh.t_classes_sections(code, texte, classe_id) SELECT code, texte, classe_id from w_clasec_3 where 1=1 and classe_id = (select oid from rh.t_classes where code = 'PLANIV3') and code not in (select code from rh.t_classes_sections where t_classes_sections.classe_id = w_clasec_3.classe_id and code is not null) group by 1,2,3 ; update rh.t_classes_sections set texte = w_clasec_3.texte FROM w_clasec_3 WHERE true and w_clasec_3.classe_id = t_classes_sections.classe_id and w_clasec_3.code = t_classes_sections.code and w_clasec_3.texte is distinct from t_classes_sections.texte ; -- Mise à jour du contenu des sections Niveau 3. INSERT INTO rh.t_classes_sections_elements (section_id, to_id) SELECT t_classes_sections.oid AS section_id, t_planning_niveau.oid AS to_id FROM rh.t_classes join rh.t_classes_sections on t_classes_sections.classe_id = t_classes.oid join w_clasec_3 on true and w_clasec_3.classe_id = t_classes.oid and w_clasec_3.code = t_classes_sections.code join rh.t_planning_niveau on t_planning_niveau.code = w_clasec_3.code_original WHERE t_classes.code = 'PLANIV3' group by 1,2 ; SELECT rh.cti_update_schema_classes('*ALL') ; -- Recensement des oid utilisés. INSERT INTO rh.p_oids (code_table, oid) SELECT 'planning_service', service_id FROM rh.p_planning_mouvement WHERE service_id NOT IN (SELECT oid FROM rh.p_oids WHERE code_table = 'planning_service') GROUP BY 1,2 ; INSERT INTO rh.p_oids (code_table, oid) SELECT 'planning_qualification', qualification_id FROM rh.p_planning_mouvement WHERE qualification_id NOT IN (SELECT oid FROM rh.p_oids WHERE code_table = 'planning_qualification') GROUP BY 1,2 ; INSERT INTO rh.p_oids (code_table, oid) SELECT 'planning_niveau', niveau_id FROM rh.p_planning_mouvement WHERE niveau_id NOT IN (SELECT oid FROM rh.p_oids WHERE code_table = 'planning_niveau') GROUP BY 1,2 ; INSERT INTO rh.p_oids (code_table, oid) SELECT 'planning_type_absence', type_absence_id FROM rh.p_planning_mouvement WHERE type_absence_id NOT IN (SELECT oid FROM rh.p_oids WHERE code_table = 'planning_type_absence') GROUP BY 1,2 ; INSERT INTO rh.p_oids (code_table, oid) SELECT 'planning_code_horaire', code_horaire_id FROM rh.p_planning_mouvement WHERE code_horaire_id NOT IN (SELECT oid FROM rh.p_oids WHERE code_table = 'planning_code_horaire') GROUP BY 1,2 ; -- Pour remonter le type de contrat intérim. INSERT INTO rh.p_oids (code_table, oid) SELECT 'types_contrat', type_contrat_id FROM rh.p_profils WHERE type_contrat_id NOT IN (SELECT oid FROM rh.p_oids WHERE code_table = 'types_contrat') GROUP BY 1,2 ; -- Populations : pas encore de règle de population basée sur le Planning. -- SELECT rh.cti_reorganize_population() -- ; -- Poles SELECT rh.cti_reorganize_pole() ; -- Options Divers INSERT INTO rh.t_divers( code, texte, valeur, valeur_date, description) SELECT 'PLANNING_BASE_ETP'::text, 'Base pour calcul ETP Planning'::text, '0'::text, NULL, '0 : La base des ETP est 151,67h / mois, 1 : La base des ETP est nb jours ouvrés période * 7h13, 2 : La base des ETP est nb jours semaine période * 7'::text WHERE 'PLANNING_BASE_ETP' NOT IN (SELECT code FROM rh.t_divers) ; ]]>