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.
 
 
 

771 lines
44 KiB

return: text
lang: plpgsql
src: |
DECLARE
min_month_to_get numeric;
closed_payroll_month numeric;
max_month_to_get numeric;
BEGIN
-- Date la plus ancienne à récupérer de la paie
min_month_to_get = (SELECT MIN(mois_paie) FROM rh.p_historique_paie);
-- Date la plus récente à récupérer de la paie. Dernière paie cloturée
closed_payroll_month = (SELECT MAX(mois_paie) FROM rh.p_historique_paie);
-- Pour l'instant, le calcul ne se fait que jusqu'au dernier mois de paie cloturé
max_month_to_get = closed_payroll_month;
-- Vidage des tables
TRUNCATE rh.p_taux_horaires_mensuels;
TRUNCATE rh.p_croisement_paie_planning;
TRUNCATE rh.p_sommes_mensuelles_ventilees_paie;
TRUNCATE rh.p_sommes_mensuelles_ventilees_planning;
TRUNCATE rh.p_presence_salaries;
TRUNCATE rh.t_periode_paie;
-- Génération des périodes de paie
DROP TABLE IF EXISTS periode_paie
;
CREATE TEMP TABLE periode_paie AS
SELECT
date AS date_debut,
((date + interval '1 MONTH') - interval '1 DAY')::date AS date_fin,
(to_char(((date + interval '1 MONTH') - interval '1 DAY')::date, 'YYYYMM'))::int AS mois_paie
FROM base.p_calendrier
WHERE
date BETWEEN (SELECT MIN(p_historique_paie.date_debut) FROM rh.p_historique_paie) AND (SELECT MAX(p_historique_paie.date_fin) FROM rh.p_historique_paie)
AND date_part('DAY', date) = (SELECT valeur::numeric FROM rh.t_divers WHERE code = 'CPP_JOUR_DEBUT_MOIS_PAIE')
ORDER BY 1
;
INSERT INTO rh.t_periode_paie (
date_debut,
date_fin,
mois_paie
)
SELECT
date_debut,
date_fin,
mois_paie
FROM periode_paie
;
-- Récupération des salariés présents en paie par mois
DROP TABLE IF EXISTS presence_histo_paie
;
CREATE TEMP TABLE presence_histo_paie AS
SELECT
p_historique_paie.salarie_id,
t_periode_paie.mois_paie
FROM rh.p_historique_paie
JOIN rh.t_periode_paie ON t_periode_paie.mois_paie = p_historique_paie.mois_paie
GROUP BY 1,2
;
-- Récupération des salariés présents au planning par mois
DROP TABLE IF EXISTS presence_mouvements_planning
;
CREATE TEMP TABLE presence_mouvements_planning AS
SELECT
p_planning_mouvement.salarie_id,
t_periode_paie.mois_paie
FROM rh.p_planning_mouvement
JOIN rh.t_periode_paie ON true
WHERE p_planning_mouvement.date BETWEEN t_periode_paie.date_debut AND t_periode_paie.date_fin
GROUP BY 1,2
;
-- Génération de la présence des salariés dans la paie et dans le planning par mois
DROP TABLE IF EXISTS presence_salaries
;
CREATE TEMP TABLE presence_salaries AS
SELECT
p_salaries.oid AS salarie_id,
t_periode_paie.mois_paie,
COUNT(presence_histo_paie.salarie_id) > 0 AS present_paie,
COUNT(presence_mouvements_planning.salarie_id) > 0 AS present_planning,
CASE WHEN p_salaries.matricule LIKE 'INTERIM-%' THEN true ELSE false END AS est_interimaire
FROM rh.p_salaries
JOIN rh.t_periode_paie ON true
LEFT JOIN presence_histo_paie ON
presence_histo_paie.salarie_id = p_salaries.oid AND
presence_histo_paie.mois_paie = t_periode_paie.mois_paie
LEFT JOIN presence_mouvements_planning ON
presence_mouvements_planning.salarie_id = p_salaries.oid AND
presence_mouvements_planning.mois_paie = t_periode_paie.mois_paie
GROUP BY 1,2
ORDER BY 1,2
;
INSERT INTO rh.p_presence_salaries(
salarie_id,
mois_paie,
present_paie,
present_planning,
est_interimaire
)
SELECT
salarie_id,
mois_paie,
present_paie,
present_planning,
est_interimaire
FROM presence_salaries
;
ANALYZE rh.p_presence_salaries
;
-- Aggrégation par salarié, mois, établissement, service et qualification des différents indicateurs de paie (montant_brut, montant_masse_salariale, etc)
DROP TABLE IF EXISTS sommes_mensuelles_ventilees_paie
;
CREATE TEMP TABLE sommes_mensuelles_ventilees_paie AS
SELECT
p_historique_paie.salarie_id,
p_historique_paie.mois_paie,
p_historique_paie.etablissement_id,
t_services.oid AS paie_service_id,
t_services.code AS paie_service_code,
t_services.texte AS paie_service_texte,
t_qualifications.oid AS paie_qualification_id,
t_qualifications.code AS paie_qualification_code,
t_qualifications.texte AS paie_qualification_texte,
sum(p_historique_paie.heure_contrat) AS heure_contrat,
sum(p_historique_paie.heure_payee) AS heure_payee,
sum(p_historique_paie.heure_travaillee) AS heure_travaillee,
sum(p_historique_paie.montant_brut) AS montant_brut,
sum(p_historique_paie.montant_masse_salariale) AS montant_masse_salariale,
sum(p_historique_paie.montant_cotisation_patronale) AS montant_cotisation_patronale,
sum(p_historique_paie.montant_provisions) AS montant_provisions,
sum(p_historique_paie.montant_masse_salariale_provisionnee) AS montant_masse_salariale_provisionnee,
sum(base.cti_division(p_historique_paie.heure_contrat * p_profil_contrat_mois.ratio, t_etablissements.base_calcul_etp)) AS equivalent_temps_plein
FROM rh.p_historique_paie
JOIN rh.p_contrats_mois ON p_contrats_mois.oid = p_historique_paie.contrat_mois_id
JOIN rh.p_profils ON p_profils.oid = p_contrats_mois.profil_id
JOIN rh.p_profil_contrat_mois ON p_profil_contrat_mois.contrat_mois_id = p_contrats_mois.oid AND p_profil_contrat_mois.profil_id = p_contrats_mois.profil_id
JOIN rh.t_etablissements ON t_etablissements.oid = p_historique_paie.etablissement_id
JOIN rh.t_qualifications ON t_qualifications.oid = p_profils.qualification_id
JOIN rh.t_services ON t_services.oid = p_profils.service_id
WHERE p_historique_paie.mois_paie BETWEEN min_month_to_get AND closed_payroll_month
GROUP BY p_historique_paie.salarie_id, p_historique_paie.mois_paie, p_historique_paie.etablissement_id, t_services.oid, t_qualifications.oid
;
CREATE INDEX sommes_mensuelles_ventilees_paie_i1 ON sommes_mensuelles_ventilees_paie USING btree(salarie_id)
;
CREATE INDEX sommes_mensuelles_ventilees_paie_i2 ON sommes_mensuelles_ventilees_paie USING btree(mois_paie)
;
CREATE INDEX sommes_mensuelles_ventilees_paie_i3 ON sommes_mensuelles_ventilees_paie USING btree(etablissement_id)
;
ANALYZE sommes_mensuelles_ventilees_paie
;
-- Aggrégation par salarié et mois des différents indicateurs de paie (montant_brut, montant_masse_salariale, etc)
DROP TABLE IF EXISTS sommes_mensuelles_paie
;
CREATE TEMP TABLE sommes_mensuelles_paie AS
SELECT
salarie_id,
mois_paie,
sum(heure_contrat) AS heure_contrat,
sum(heure_payee) AS heure_payee,
sum(heure_travaillee) AS heure_travaillee,
sum(montant_brut) AS montant_brut,
sum(montant_masse_salariale) AS montant_masse_salariale,
sum(montant_cotisation_patronale) AS montant_cotisation_patronale,
sum(montant_provisions) AS montant_provisions,
sum(montant_masse_salariale_provisionnee) AS montant_masse_salariale_provisionnee,
sum(equivalent_temps_plein) AS equivalent_temps_plein
FROM sommes_mensuelles_ventilees_paie
GROUP BY 1,2
;
CREATE INDEX sommes_mensuelles_paie_i1 ON sommes_mensuelles_paie USING btree(salarie_id)
;
CREATE INDEX sommes_mensuelles_paie_i2 ON sommes_mensuelles_paie USING btree(mois_paie)
;
ANALYZE sommes_mensuelles_paie
;
-- Aggrégation par salarié, mois, établissement, service et qualification des différents indicateurs de planning (les 3 principaux indicateurs de temps : temps_du_initial, temps_du, temps_valide)
DROP TABLE IF EXISTS sommes_mensuelles_ventilees_planning
;
CREATE TEMP TABLE sommes_mensuelles_ventilees_planning AS
SELECT
p_planning_mouvement.salarie_id,
t_periode_paie.mois_paie,
p_planning_mouvement.etablissement_id,
t_planning_service.oid AS planning_service_id,
t_planning_service.code AS planning_service_code,
t_planning_service.texte AS planning_service_texte,
t_planning_qualification.oid AS planning_qualification_id,
t_planning_qualification.code AS planning_qualification_code,
t_planning_qualification.texte AS planning_qualification_texte,
sum(p_planning_mouvement.temps_du_initial) AS temps_du_initial,
sum(p_planning_mouvement.temps_du) AS temps_du,
sum(p_planning_mouvement.temps_valide) AS temps_valide
FROM rh.p_planning_mouvement
JOIN rh.t_periode_paie ON base.cti_overlaps(t_periode_paie.date_debut, t_periode_paie.date_fin, p_planning_mouvement.date, p_planning_mouvement.date)
LEFT JOIN rh.t_planning_service ON t_planning_service.oid = p_planning_mouvement.service_id
LEFT JOIN rh.t_planning_qualification ON t_planning_qualification.oid = p_planning_mouvement.qualification_id
WHERE p_planning_mouvement.mois BETWEEN min_month_to_get AND closed_payroll_month
GROUP BY p_planning_mouvement.salarie_id, t_periode_paie.mois_paie, p_planning_mouvement.etablissement_id, t_planning_service.oid, t_planning_service.code, t_planning_service.texte, t_planning_qualification.oid, t_planning_qualification.code, t_planning_qualification.texte
;
CREATE INDEX sommes_mensuelles_ventilees_planning_i1 ON sommes_mensuelles_ventilees_planning USING btree(salarie_id)
;
CREATE INDEX sommes_mensuelles_ventilees_planning_i2 ON sommes_mensuelles_ventilees_planning USING btree(mois_paie)
;
CREATE INDEX sommes_mensuelles_ventilees_planning_i3 ON sommes_mensuelles_ventilees_planning USING btree(etablissement_id)
;
ANALYZE sommes_mensuelles_ventilees_planning
;
-- Aggrégation par salarié, mois et établissement des différents indicateurs de planning (les 3 principaux indicateurs de temps : temps_du_initial, temps_du, temps_valide)
DROP TABLE IF EXISTS sommes_mensuelles_planning
;
CREATE TEMP TABLE sommes_mensuelles_planning AS
SELECT
salarie_id,
mois_paie,
etablissement_id,
sum(temps_du_initial) AS temps_du_initial,
sum(temps_du) AS temps_du,
sum(temps_valide) AS temps_valide
FROM sommes_mensuelles_ventilees_planning
GROUP BY 1,2,3
;
CREATE INDEX sommes_mensuelles_planning_i1 ON sommes_mensuelles_planning USING btree(salarie_id)
;
CREATE INDEX sommes_mensuelles_planning_i2 ON sommes_mensuelles_planning USING btree(mois_paie)
;
CREATE INDEX sommes_mensuelles_planning_i3 ON sommes_mensuelles_planning USING btree(etablissement_id)
;
ANALYZE sommes_mensuelles_planning
;
INSERT INTO rh.p_sommes_mensuelles_ventilees_paie (
salarie_id,
mois_paie,
etablissement_id,
paie_service_id,
paie_service_code,
paie_service_texte,
paie_qualification_id,
paie_qualification_code,
paie_qualification_texte,
heure_contrat,
heure_payee,
heure_travaillee,
montant_brut,
montant_masse_salariale,
montant_cotisation_patronale,
montant_provisions,
montant_masse_salariale_provisionnee,
equivalent_temps_plein
)
SELECT
salarie_id,
mois_paie,
etablissement_id,
paie_service_id,
paie_service_code,
paie_service_texte,
paie_qualification_id,
paie_qualification_code,
paie_qualification_texte,
heure_contrat,
heure_payee,
heure_travaillee,
montant_brut,
montant_masse_salariale,
montant_cotisation_patronale,
montant_provisions,
montant_masse_salariale_provisionnee,
equivalent_temps_plein
FROM sommes_mensuelles_ventilees_paie
;
INSERT INTO rh.p_sommes_mensuelles_ventilees_planning (
salarie_id,
mois_paie,
etablissement_id,
planning_service_id,
planning_service_code,
planning_service_texte,
planning_qualification_id,
planning_qualification_code,
planning_qualification_texte,
temps_du_initial,
temps_du,
temps_valide
)
SELECT
salarie_id,
mois_paie,
etablissement_id,
planning_service_id,
planning_service_code,
planning_service_texte,
planning_qualification_id,
planning_qualification_code,
planning_qualification_texte,
temps_du_initial,
temps_du,
temps_valide
FROM sommes_mensuelles_ventilees_planning
;
-- Calcul du taux horaire mensuel pour chaque salarié
-- En rapport les différents indicateurs de paie (montant_brut, montant_masse_salariale, etc) au différents indicateur de planning (les 3 principaux indicateurs de temps : temps_du_initial, temps_du, temps_valide)
DROP TABLE IF EXISTS taux_horaires_mensuels
;
CREATE TEMP TABLE taux_horaires_mensuels AS
SELECT sommes_mensuelles_planning.salarie_id,
sommes_mensuelles_planning.mois_paie,
sommes_mensuelles_planning.temps_du_initial,
sommes_mensuelles_planning.temps_du,
sommes_mensuelles_planning.temps_valide,
sommes_mensuelles_paie.heure_contrat,
base.cti_division(sommes_mensuelles_paie.heure_contrat, sommes_mensuelles_planning.temps_du_initial) AS taux_horaire_heure_contrat_temps_du_initial,
base.cti_division(sommes_mensuelles_paie.heure_contrat, sommes_mensuelles_planning.temps_du) AS taux_horaire_heure_contrat_temps_du,
base.cti_division(sommes_mensuelles_paie.heure_contrat, sommes_mensuelles_planning.temps_valide) AS taux_horaire_heure_contrat_temps_valide,
sommes_mensuelles_paie.heure_payee,
base.cti_division(sommes_mensuelles_paie.heure_payee, sommes_mensuelles_planning.temps_du_initial) AS taux_horaire_heure_payee_temps_du_initial,
base.cti_division(sommes_mensuelles_paie.heure_payee, sommes_mensuelles_planning.temps_du) AS taux_horaire_heure_payee_temps_du,
base.cti_division(sommes_mensuelles_paie.heure_payee, sommes_mensuelles_planning.temps_valide) AS taux_horaire_heure_payee_temps_valide,
sommes_mensuelles_paie.heure_travaillee,
base.cti_division(sommes_mensuelles_paie.heure_travaillee, sommes_mensuelles_planning.temps_du_initial) AS taux_horaire_heure_travaillee_temps_du_initial,
base.cti_division(sommes_mensuelles_paie.heure_travaillee, sommes_mensuelles_planning.temps_du) AS taux_horaire_heure_travaillee_temps_du,
base.cti_division(sommes_mensuelles_paie.heure_travaillee, sommes_mensuelles_planning.temps_valide) AS taux_horaire_heure_travaillee_temps_valide,
sommes_mensuelles_paie.montant_brut,
base.cti_division(sommes_mensuelles_paie.montant_brut, sommes_mensuelles_planning.temps_du_initial) AS taux_horaire_montant_brut_temps_du_initial,
base.cti_division(sommes_mensuelles_paie.montant_brut, sommes_mensuelles_planning.temps_du) AS taux_horaire_montant_brut_temps_du,
base.cti_division(sommes_mensuelles_paie.montant_brut, sommes_mensuelles_planning.temps_valide) AS taux_horaire_montant_brut_temps_valide,
sommes_mensuelles_paie.montant_masse_salariale,
base.cti_division(sommes_mensuelles_paie.montant_masse_salariale, sommes_mensuelles_planning.temps_du_initial) AS taux_horaire_montant_masse_salariale_temps_du_initial,
base.cti_division(sommes_mensuelles_paie.montant_masse_salariale, sommes_mensuelles_planning.temps_du) AS taux_horaire_montant_masse_salariale_temps_du,
base.cti_division(sommes_mensuelles_paie.montant_masse_salariale, sommes_mensuelles_planning.temps_valide) AS taux_horaire_montant_masse_salariale_temps_valide,
sommes_mensuelles_paie.montant_cotisation_patronale,
base.cti_division(sommes_mensuelles_paie.montant_cotisation_patronale, sommes_mensuelles_planning.temps_du_initial) AS taux_horaire_montant_cotisation_patronale_temps_du_initial,
base.cti_division(sommes_mensuelles_paie.montant_cotisation_patronale, sommes_mensuelles_planning.temps_du) AS taux_horaire_montant_cotisation_patronale_temps_du,
base.cti_division(sommes_mensuelles_paie.montant_cotisation_patronale, sommes_mensuelles_planning.temps_valide) AS taux_horaire_montant_cotisation_patronale_temps_valide,
sommes_mensuelles_paie.montant_provisions,
base.cti_division(sommes_mensuelles_paie.montant_provisions, sommes_mensuelles_planning.temps_du_initial) AS taux_horaire_montant_provisions_temps_du_initial,
base.cti_division(sommes_mensuelles_paie.montant_provisions, sommes_mensuelles_planning.temps_du) AS taux_horaire_montant_provisions_temps_du,
base.cti_division(sommes_mensuelles_paie.montant_provisions, sommes_mensuelles_planning.temps_valide) AS taux_horaire_montant_provisions_temps_valide,
sommes_mensuelles_paie.montant_masse_salariale_provisionnee,
base.cti_division(sommes_mensuelles_paie.montant_masse_salariale_provisionnee, sommes_mensuelles_planning.temps_du_initial) AS taux_horaire_montant_masse_salariale_provisionnee_temps_du_init,
base.cti_division(sommes_mensuelles_paie.montant_masse_salariale_provisionnee, sommes_mensuelles_planning.temps_du) AS taux_horaire_montant_masse_salariale_provisionnee_temps_du,
base.cti_division(sommes_mensuelles_paie.montant_masse_salariale_provisionnee, sommes_mensuelles_planning.temps_valide) AS taux_horaire_montant_masse_salariale_provisionnee_temps_valide,
sommes_mensuelles_paie.equivalent_temps_plein,
base.cti_division(sommes_mensuelles_paie.equivalent_temps_plein, sommes_mensuelles_planning.temps_du_initial) AS taux_horaire_equivalent_temps_plein_temps_du_initial,
base.cti_division(sommes_mensuelles_paie.equivalent_temps_plein, sommes_mensuelles_planning.temps_du) AS taux_horaire_equivalent_temps_plein_temps_du,
base.cti_division(sommes_mensuelles_paie.equivalent_temps_plein, sommes_mensuelles_planning.temps_valide) AS taux_horaire_equivalent_temps_plein_temps_valide
FROM rh.p_presence_salaries
JOIN sommes_mensuelles_planning ON
sommes_mensuelles_planning.salarie_id = p_presence_salaries.salarie_id AND
sommes_mensuelles_planning.mois_paie = p_presence_salaries.mois_paie
JOIN sommes_mensuelles_paie ON
sommes_mensuelles_paie.salarie_id = p_presence_salaries.salarie_id AND
sommes_mensuelles_paie.mois_paie = p_presence_salaries.mois_paie
WHERE p_presence_salaries.present_paie = true AND p_presence_salaries.present_planning = true AND p_presence_salaries.est_interimaire = false
;
CREATE INDEX taux_horaires_mensuels_i1 ON taux_horaires_mensuels USING btree(salarie_id)
;
CREATE INDEX taux_horaires_mensuels_i2 ON taux_horaires_mensuels USING btree(mois_paie)
;
ANALYZE taux_horaires_mensuels
;
INSERT INTO rh.p_taux_horaires_mensuels (
salarie_id,
mois_paie,
temps_du_initial,
temps_du,
temps_valide,
heure_contrat,
taux_horaire_heure_contrat_temps_du_initial,
taux_horaire_heure_contrat_temps_du,
taux_horaire_heure_contrat_temps_valide,
heure_payee,
taux_horaire_heure_payee_temps_du_initial,
taux_horaire_heure_payee_temps_du,
taux_horaire_heure_payee_temps_valide,
heure_travaillee,
taux_horaire_heure_travaillee_temps_du_initial,
taux_horaire_heure_travaillee_temps_du,
taux_horaire_heure_travaillee_temps_valide,
montant_brut,
taux_horaire_montant_brut_temps_du_initial,
taux_horaire_montant_brut_temps_du,
taux_horaire_montant_brut_temps_valide,
montant_masse_salariale,
taux_horaire_montant_masse_salariale_temps_du_initial,
taux_horaire_montant_masse_salariale_temps_du,
taux_horaire_montant_masse_salariale_temps_valide,
montant_cotisation_patronale,
taux_horaire_montant_cotisation_patronale_temps_du_initial,
taux_horaire_montant_cotisation_patronale_temps_du,
taux_horaire_montant_cotisation_patronale_temps_valide,
montant_provisions,
taux_horaire_montant_provisions_temps_du_initial,
taux_horaire_montant_provisions_temps_du,
taux_horaire_montant_provisions_temps_valide,
montant_masse_salariale_provisionnee,
taux_horaire_montant_masse_salariale_provisionnee_temps_du_init,
taux_horaire_montant_masse_salariale_provisionnee_temps_du,
taux_horaire_montant_masse_salariale_provisionnee_temps_valide,
equivalent_temps_plein,
taux_horaire_equivalent_temps_plein_temps_du_initial,
taux_horaire_equivalent_temps_plein_temps_du,
taux_horaire_equivalent_temps_plein_temps_valide
)
SELECT
salarie_id,
mois_paie,
temps_du_initial,
temps_du,
temps_valide,
heure_contrat,
taux_horaire_heure_contrat_temps_du_initial,
taux_horaire_heure_contrat_temps_du,
taux_horaire_heure_contrat_temps_valide,
heure_payee,
taux_horaire_heure_payee_temps_du_initial,
taux_horaire_heure_payee_temps_du,
taux_horaire_heure_payee_temps_valide,
heure_travaillee,
taux_horaire_heure_travaillee_temps_du_initial,
taux_horaire_heure_travaillee_temps_du,
taux_horaire_heure_travaillee_temps_valide,
montant_brut,
taux_horaire_montant_brut_temps_du_initial,
taux_horaire_montant_brut_temps_du,
taux_horaire_montant_brut_temps_valide,
montant_masse_salariale,
taux_horaire_montant_masse_salariale_temps_du_initial,
taux_horaire_montant_masse_salariale_temps_du,
taux_horaire_montant_masse_salariale_temps_valide,
montant_cotisation_patronale,
taux_horaire_montant_cotisation_patronale_temps_du_initial,
taux_horaire_montant_cotisation_patronale_temps_du,
taux_horaire_montant_cotisation_patronale_temps_valide,
montant_provisions,
taux_horaire_montant_provisions_temps_du_initial,
taux_horaire_montant_provisions_temps_du,
taux_horaire_montant_provisions_temps_valide,
montant_masse_salariale_provisionnee,
taux_horaire_montant_masse_salariale_provisionnee_temps_du_init,
taux_horaire_montant_masse_salariale_provisionnee_temps_du,
taux_horaire_montant_masse_salariale_provisionnee_temps_valide,
equivalent_temps_plein,
taux_horaire_equivalent_temps_plein_temps_du_initial,
taux_horaire_equivalent_temps_plein_temps_du,
taux_horaire_equivalent_temps_plein_temps_valide
FROM taux_horaires_mensuels
;
-- Calcul du taux horaire mensuel moyen par service et qualification pour chaque salarié
DROP TABLE IF EXISTS taux_horaires_mensuels_ventiles
;
CREATE TEMP TABLE taux_horaires_mensuels_ventiles AS
SELECT
p_taux_horaires_mensuels.mois_paie,
p_sommes_mensuelles_ventilees_planning.planning_service_id,
p_sommes_mensuelles_ventilees_planning.planning_qualification_id,
AVG(p_taux_horaires_mensuels.temps_du_initial) AS temps_du_initial,
AVG(p_taux_horaires_mensuels.temps_du) AS temps_du,
AVG(p_taux_horaires_mensuels.temps_valide) AS temps_valide,
AVG(p_taux_horaires_mensuels.heure_contrat) AS heure_contrat,
AVG(p_taux_horaires_mensuels.taux_horaire_heure_contrat_temps_du_initial) AS taux_horaire_heure_contrat_temps_du_initial,
AVG(p_taux_horaires_mensuels.taux_horaire_heure_contrat_temps_du) AS taux_horaire_heure_contrat_temps_du,
AVG(p_taux_horaires_mensuels.taux_horaire_heure_contrat_temps_valide) AS taux_horaire_heure_contrat_temps_valide,
AVG(p_taux_horaires_mensuels.heure_payee) AS heure_payee,
AVG(p_taux_horaires_mensuels.taux_horaire_heure_payee_temps_du_initial) AS taux_horaire_heure_payee_temps_du_initial,
AVG(p_taux_horaires_mensuels.taux_horaire_heure_payee_temps_du) AS taux_horaire_heure_payee_temps_du,
AVG(p_taux_horaires_mensuels.taux_horaire_heure_payee_temps_valide) AS taux_horaire_heure_payee_temps_valide,
AVG(p_taux_horaires_mensuels.heure_travaillee) AS heure_travaillee,
AVG(p_taux_horaires_mensuels.taux_horaire_heure_travaillee_temps_du_initial) AS taux_horaire_heure_travaillee_temps_du_initial,
AVG(p_taux_horaires_mensuels.taux_horaire_heure_travaillee_temps_du) AS taux_horaire_heure_travaillee_temps_du,
AVG(p_taux_horaires_mensuels.taux_horaire_heure_travaillee_temps_valide) AS taux_horaire_heure_travaillee_temps_valide,
AVG(p_taux_horaires_mensuels.montant_brut) AS montant_brut,
AVG(p_taux_horaires_mensuels.taux_horaire_montant_brut_temps_du_initial) AS taux_horaire_montant_brut_temps_du_initial,
AVG(p_taux_horaires_mensuels.taux_horaire_montant_brut_temps_du) AS taux_horaire_montant_brut_temps_du,
AVG(p_taux_horaires_mensuels.taux_horaire_montant_brut_temps_valide) AS taux_horaire_montant_brut_temps_valide,
AVG(p_taux_horaires_mensuels.montant_masse_salariale) AS montant_masse_salariale,
AVG(p_taux_horaires_mensuels.taux_horaire_montant_masse_salariale_temps_du_initial) AS taux_horaire_montant_masse_salariale_temps_du_initial,
AVG(p_taux_horaires_mensuels.taux_horaire_montant_masse_salariale_temps_du) AS taux_horaire_montant_masse_salariale_temps_du,
AVG(p_taux_horaires_mensuels.taux_horaire_montant_masse_salariale_temps_valide) AS taux_horaire_montant_masse_salariale_temps_valide,
AVG(p_taux_horaires_mensuels.montant_cotisation_patronale) AS montant_cotisation_patronale,
AVG(p_taux_horaires_mensuels.taux_horaire_montant_cotisation_patronale_temps_du_initial) AS taux_horaire_montant_cotisation_patronale_temps_du_initial,
AVG(p_taux_horaires_mensuels.taux_horaire_montant_cotisation_patronale_temps_du) AS taux_horaire_montant_cotisation_patronale_temps_du,
AVG(p_taux_horaires_mensuels.taux_horaire_montant_cotisation_patronale_temps_valide) AS taux_horaire_montant_cotisation_patronale_temps_valide,
AVG(p_taux_horaires_mensuels.montant_provisions) AS montant_provisions,
AVG(p_taux_horaires_mensuels.taux_horaire_montant_provisions_temps_du_initial) AS taux_horaire_montant_provisions_temps_du_initial,
AVG(p_taux_horaires_mensuels.taux_horaire_montant_provisions_temps_du) AS taux_horaire_montant_provisions_temps_du,
AVG(p_taux_horaires_mensuels.taux_horaire_montant_provisions_temps_valide) AS taux_horaire_montant_provisions_temps_valide,
AVG(p_taux_horaires_mensuels.montant_masse_salariale_provisionnee) AS montant_masse_salariale_provisionnee,
AVG(p_taux_horaires_mensuels.taux_horaire_montant_masse_salariale_provisionnee_temps_du_init) AS taux_horaire_montant_masse_salariale_provisionnee_temps_du_init,
AVG(p_taux_horaires_mensuels.taux_horaire_montant_masse_salariale_provisionnee_temps_du) AS taux_horaire_montant_masse_salariale_provisionnee_temps_du,
AVG(p_taux_horaires_mensuels.taux_horaire_montant_masse_salariale_provisionnee_temps_valide) AS taux_horaire_montant_masse_salariale_provisionnee_temps_valide,
AVG(p_taux_horaires_mensuels.equivalent_temps_plein) AS equivalent_temps_plein,
AVG(p_taux_horaires_mensuels.taux_horaire_equivalent_temps_plein_temps_du_initial) AS taux_horaire_equivalent_temps_plein_temps_du_initial,
AVG(p_taux_horaires_mensuels.taux_horaire_equivalent_temps_plein_temps_du) AS taux_horaire_equivalent_temps_plein_temps_du,
AVG(p_taux_horaires_mensuels.taux_horaire_equivalent_temps_plein_temps_valide) AS taux_horaire_equivalent_temps_plein_temps_valide
FROM rh.p_sommes_mensuelles_ventilees_planning
JOIN rh.p_taux_horaires_mensuels ON
p_taux_horaires_mensuels.salarie_id = p_sommes_mensuelles_ventilees_planning.salarie_id AND
p_taux_horaires_mensuels.mois_paie = p_sommes_mensuelles_ventilees_planning.mois_paie
GROUP BY 1,2,3
;
-- Génération du croisement
-- Récupération du planning quotidien de chaque salarié auquel on multiplie les différents temps par le taux horaire (précédemment calculé) du salarié
DROP TABLE IF EXISTS croisement_paie_planning
;
CREATE TEMP TABLE croisement_paie_planning AS
-- Cas des salariés (présents dans la paie et dans le planning)
SELECT
p_planning_mouvement.oid AS planning_id,
p_presence_salaries.salarie_id,
p_planning_mouvement.date,
t_periode_paie.mois_paie,
p_planning_mouvement.etablissement_id,
p_planning_mouvement.contrat_mois_id,
'Salariés'::text AS presence_detail,
p_planning_mouvement.temps_du_initial,
p_planning_mouvement.temps_du,
p_planning_mouvement.temps_valide,
round(p_planning_mouvement.temps_du_initial * p_taux_horaires_mensuels.taux_horaire_heure_contrat_temps_du_initial, 2) AS HEUR_CONT_PROR_TEMP_DU_INIT,
round(p_planning_mouvement.temps_du * p_taux_horaires_mensuels.taux_horaire_heure_contrat_temps_du, 2) AS HEUR_CONT_PROR_TEMP_DU,
round(p_planning_mouvement.temps_valide * p_taux_horaires_mensuels.taux_horaire_heure_contrat_temps_valide, 2) AS HEUR_CONT_PROR_TEMP_VALI,
round(p_planning_mouvement.temps_du_initial * p_taux_horaires_mensuels.taux_horaire_heure_payee_temps_du_initial, 2) AS HEUR_PAYE_PROR_TEMP_DU_INIT,
round(p_planning_mouvement.temps_du * p_taux_horaires_mensuels.taux_horaire_heure_payee_temps_du, 2) AS HEUR_PAYE_PROR_TEMP_DU,
round(p_planning_mouvement.temps_valide * p_taux_horaires_mensuels.taux_horaire_heure_payee_temps_valide, 2) AS HEUR_PAYE_PROR_TEMP_VALI,
round(p_planning_mouvement.temps_du_initial * p_taux_horaires_mensuels.taux_horaire_heure_travaillee_temps_du_initial, 2) AS HEUR_TRAV_PROR_TEMP_DU_INIT,
round(p_planning_mouvement.temps_du * p_taux_horaires_mensuels.taux_horaire_heure_travaillee_temps_du, 2) AS HEUR_TRAV_PROR_TEMP_DU,
round(p_planning_mouvement.temps_valide * p_taux_horaires_mensuels.taux_horaire_heure_travaillee_temps_valide, 2) AS HEUR_TRAV_PROR_TEMP_VALI,
round(p_planning_mouvement.temps_du_initial * p_taux_horaires_mensuels.taux_horaire_montant_brut_temps_du_initial, 2) AS MONT_BRUT_PROR_TEMP_DU_INIT,
round(p_planning_mouvement.temps_du * p_taux_horaires_mensuels.taux_horaire_montant_brut_temps_du, 2) AS MONT_BRUT_PROR_TEMP_DU,
round(p_planning_mouvement.temps_valide * p_taux_horaires_mensuels.taux_horaire_montant_brut_temps_valide, 2) AS MONT_BRUT_PROR_TEMP_VALI,
round(p_planning_mouvement.temps_du_initial * p_taux_horaires_mensuels.taux_horaire_montant_masse_salariale_temps_du_initial, 2) AS MONT_MASS_SALA_PROR_TEMP_DU_INIT,
round(p_planning_mouvement.temps_du * p_taux_horaires_mensuels.taux_horaire_montant_masse_salariale_temps_du, 2) AS MONT_MASS_SALA_PROR_TEMP_DU,
round(p_planning_mouvement.temps_valide * p_taux_horaires_mensuels.taux_horaire_montant_masse_salariale_temps_valide, 2) AS MONT_MASS_SALA_PROR_TEMP_VALI,
round(p_planning_mouvement.temps_du_initial * p_taux_horaires_mensuels.taux_horaire_montant_cotisation_patronale_temps_du_initial, 2) AS MONT_COTI_PATR_PROR_TEMP_DU_INIT,
round(p_planning_mouvement.temps_du * p_taux_horaires_mensuels.taux_horaire_montant_cotisation_patronale_temps_du, 2) AS MONT_COTI_PATR_PROR_TEMP_DU,
round(p_planning_mouvement.temps_valide * p_taux_horaires_mensuels.taux_horaire_montant_cotisation_patronale_temps_valide, 2) AS MONT_COTI_PATR_PROR_TEMP_VALI,
round(p_planning_mouvement.temps_du_initial * p_taux_horaires_mensuels.taux_horaire_montant_provisions_temps_du_initial, 2) AS MONT_PROV_PROR_TEMP_DU_INIT,
round(p_planning_mouvement.temps_du * p_taux_horaires_mensuels.taux_horaire_montant_provisions_temps_du, 2) AS MONT_PROV_PROR_TEMP_DU,
round(p_planning_mouvement.temps_valide * p_taux_horaires_mensuels.taux_horaire_montant_provisions_temps_valide, 2) AS MONT_PROV_PROR_TEMP_VALI,
round(p_planning_mouvement.temps_du_initial * p_taux_horaires_mensuels.taux_horaire_montant_masse_salariale_provisionnee_temps_du_init, 2) AS MONT_MASS_SALA_PROV_PROR_TEMP_DU_INIT,
round(p_planning_mouvement.temps_du * p_taux_horaires_mensuels.taux_horaire_montant_masse_salariale_provisionnee_temps_du, 2) AS MONT_MASS_SALA_PROV_PROR_TEMP_DU,
round(p_planning_mouvement.temps_valide * p_taux_horaires_mensuels.taux_horaire_montant_masse_salariale_provisionnee_temps_valide, 2) AS MONT_MASS_SALA_PROV_PROR_TEMP_VALI,
0::numeric AS MONT_INTE_PROR_TEMP_DU_INIT,
0::numeric AS MONT_INTE_PROR_TEMP_DU,
0::numeric AS MONT_INTE_PROR_TEMP_VALI,
round(p_planning_mouvement.temps_du_initial * p_taux_horaires_mensuels.taux_horaire_montant_masse_salariale_temps_du_initial, 2) AS MONT_MASS_SALA_INTE_PROR_TEMP_DU_INIT,
round(p_planning_mouvement.temps_du * p_taux_horaires_mensuels.taux_horaire_montant_masse_salariale_temps_du, 2) AS MONT_MASS_SALA_INTE_PROR_TEMP_DU,
round(p_planning_mouvement.temps_valide * p_taux_horaires_mensuels.taux_horaire_montant_masse_salariale_temps_valide, 2) AS MONT_MASS_SALA_INTE_PROR_TEMP_VALI,
round(p_planning_mouvement.temps_du_initial * p_taux_horaires_mensuels.taux_horaire_montant_masse_salariale_provisionnee_temps_du_init, 2) AS MONT_MASS_SALA_PROV_INTE_PROR_TEMP_DU_INIT,
round(p_planning_mouvement.temps_du * p_taux_horaires_mensuels.taux_horaire_montant_masse_salariale_provisionnee_temps_du, 2) AS MONT_MASS_SALA_PROV_INTE_PROR_TEMP_DU,
round(p_planning_mouvement.temps_valide * p_taux_horaires_mensuels.taux_horaire_montant_masse_salariale_provisionnee_temps_valide, 2) AS MONT_MASS_SALA_PROV_INTE_PROR_TEMP_VALI
FROM rh.p_presence_salaries
JOIN rh.t_periode_paie ON
t_periode_paie.mois_paie = p_presence_salaries.mois_paie AND
t_periode_paie.mois_paie BETWEEN min_month_to_get AND closed_payroll_month
JOIN rh.p_planning_mouvement ON
p_planning_mouvement.salarie_id = p_presence_salaries.salarie_id AND
p_planning_mouvement.date >= t_periode_paie.date_debut AND
p_planning_mouvement.date <= t_periode_paie.date_fin
JOIN rh.p_taux_horaires_mensuels ON
p_taux_horaires_mensuels.salarie_id = p_presence_salaries.salarie_id AND
p_taux_horaires_mensuels.mois_paie = p_presence_salaries.mois_paie
WHERE p_presence_salaries.present_paie = true AND p_presence_salaries.present_planning = true AND p_presence_salaries.est_interimaire = false
;
INSERT INTO croisement_paie_planning
-- Cas des intérimaires (présents au planning et ayant été détecté précédemment commes des intérimaires). Application du coefficient multiplicateur CPP_COEF_VALORISATION_INTERIM pour valoriser le coût de l'intérim
SELECT
p_planning_mouvement.oid AS planning_id,
p_presence_salaries.salarie_id,
p_planning_mouvement.date,
t_periode_paie.mois_paie,
p_planning_mouvement.etablissement_id,
p_planning_mouvement.contrat_mois_id AS contrat_mois_id,
'Intérimaires'::text AS presence_detail,
p_planning_mouvement.temps_du_initial,
p_planning_mouvement.temps_du,
p_planning_mouvement.temps_valide,
round(p_planning_mouvement.temps_du_initial * taux_horaires_mensuels_ventiles.taux_horaire_heure_contrat_temps_du_initial, 2) * t_divers.valeur::numeric AS HEUR_CONT_PROR_TEMP_DU_INIT,
round(p_planning_mouvement.temps_du * taux_horaires_mensuels_ventiles.taux_horaire_heure_contrat_temps_du, 2) * t_divers.valeur::numeric AS HEUR_CONT_PROR_TEMP_DU,
round(p_planning_mouvement.temps_valide * taux_horaires_mensuels_ventiles.taux_horaire_heure_contrat_temps_valide, 2) * t_divers.valeur::numeric AS HEUR_CONT_PROR_TEMP_VAL,
round(p_planning_mouvement.temps_du_initial * taux_horaires_mensuels_ventiles.taux_horaire_heure_payee_temps_du_initial, 2) * t_divers.valeur::numeric AS HEUR_PAYE_PROR_TEMP_DU_INIT,
round(p_planning_mouvement.temps_du * taux_horaires_mensuels_ventiles.taux_horaire_heure_payee_temps_du, 2) * t_divers.valeur::numeric AS HEUR_PAYE_PROR_TEMP_DU,
round(p_planning_mouvement.temps_valide * taux_horaires_mensuels_ventiles.taux_horaire_heure_payee_temps_valide, 2) * t_divers.valeur::numeric AS HEUR_PAYE_PROR_TEMP_VALI,
round(p_planning_mouvement.temps_du_initial * taux_horaires_mensuels_ventiles.taux_horaire_heure_travaillee_temps_du_initial, 2) * t_divers.valeur::numeric AS HEUR_TRAV_PROR_TEMP_DU_INIT,
round(p_planning_mouvement.temps_du * taux_horaires_mensuels_ventiles.taux_horaire_heure_travaillee_temps_du, 2) * t_divers.valeur::numeric AS HEUR_TRAV_PROR_TEMP_DU,
round(p_planning_mouvement.temps_valide * taux_horaires_mensuels_ventiles.taux_horaire_heure_travaillee_temps_valide, 2) * t_divers.valeur::numeric AS HEUR_TRAV_PROR_TEMP_VALI,
0::numeric AS MONT_BRUT_PROR_TEMP_DU_INIT,
0::numeric AS MONT_BRUT_PROR_TEMP_DU,
0::numeric AS MONT_BRUT_PROR_TEMP_VALI,
0::numeric AS MONT_MASS_SALA_PROR_TEMP_DU_INIT,
0::numeric AS MONT_MASS_SALA_PROR_TEMP_DU,
0::numeric AS MONT_MASS_SALA_PROR_TEMP_VALI,
0::numeric AS MONT_COTI_PATR_PROR_TEMP_DU_INIT,
0::numeric AS MONT_COTI_PATR_PROR_TEMP_DU,
0::numeric AS MONT_COTI_PATR_PROR_TEMP_VALI,
0::numeric AS MONT_PROV_PROR_TEMP_DU_INIT,
0::numeric AS MONT_PROV_PROR_TEMP_DU,
0::numeric AS MONT_PROV_PROR_TEMP_VALI,
0::numeric AS MONT_MASS_SALA_PROV_PROR_TEMP_DU_INIT,
0::numeric AS MONT_MASS_SALA_PROV_PROR_TEMP_DU,
0::numeric AS MONT_MASS_SALA_PROV_PROR_TEMP_VALI,
round(p_planning_mouvement.temps_du_initial * taux_horaires_mensuels_ventiles.taux_horaire_montant_brut_temps_du_initial, 2) * t_divers.valeur::numeric AS MONT_INTE_PROR_TEMP_DU_INIT,
round(p_planning_mouvement.temps_du * taux_horaires_mensuels_ventiles.taux_horaire_montant_brut_temps_du, 2) * t_divers.valeur::numeric AS MONT_INTE_PROR_TEMP_DU,
round(p_planning_mouvement.temps_valide * taux_horaires_mensuels_ventiles.taux_horaire_montant_brut_temps_valide, 2) * t_divers.valeur::numeric AS MONT_INTE_PROR_TEMP_VALI,
round(p_planning_mouvement.temps_du_initial * taux_horaires_mensuels_ventiles.taux_horaire_montant_brut_temps_du_initial, 2) * t_divers.valeur::numeric AS MONT_MASS_SALA_INTE_PROR_TEMP_DU_INIT,
round(p_planning_mouvement.temps_du * taux_horaires_mensuels_ventiles.taux_horaire_montant_brut_temps_du, 2) * t_divers.valeur::numeric AS MONT_MASS_SALA_INTE_PROR_TEMP_DU,
round(p_planning_mouvement.temps_valide * taux_horaires_mensuels_ventiles.taux_horaire_montant_brut_temps_valide, 2) * t_divers.valeur::numeric AS MONT_MASS_SALA_INTE_PROR_TEMP_VALI,
round(p_planning_mouvement.temps_du_initial * taux_horaires_mensuels_ventiles.taux_horaire_montant_masse_salariale_provisionnee_temps_du_init, 2) * t_divers.valeur::numeric AS MONT_MASS_SALA_PROV_INTE_PROR_TEMP_DU_INIT,
round(p_planning_mouvement.temps_du * taux_horaires_mensuels_ventiles.taux_horaire_montant_masse_salariale_provisionnee_temps_du, 2) * t_divers.valeur::numeric AS MONT_MASS_SALA_PROV_INTE_PROR_TEMP_DU,
round(p_planning_mouvement.temps_valide * taux_horaires_mensuels_ventiles.taux_horaire_montant_masse_salariale_provisionnee_temps_valide, 2) * t_divers.valeur::numeric AS MONT_MASS_SALA_PROV_INTE_PROR_TEMP_VALI
FROM rh.p_presence_salaries
JOIN rh.t_periode_paie ON
t_periode_paie.mois_paie = p_presence_salaries.mois_paie
JOIN rh.p_planning_mouvement ON
p_planning_mouvement.salarie_id = p_presence_salaries.salarie_id AND
p_planning_mouvement.date >= t_periode_paie.date_debut AND
p_planning_mouvement.date <= t_periode_paie.date_fin
LEFT JOIN taux_horaires_mensuels_ventiles ON
taux_horaires_mensuels_ventiles.mois_paie = p_presence_salaries.mois_paie AND
taux_horaires_mensuels_ventiles.planning_service_id = p_planning_mouvement.service_id AND
taux_horaires_mensuels_ventiles.planning_qualification_id = p_planning_mouvement.qualification_id
JOIN rh.t_divers ON t_divers.code = 'CPP_COEF_VALORISATION_INTERIM'
WHERE p_presence_salaries.present_planning = true AND p_presence_salaries.est_interimaire = true
;
INSERT INTO rh.p_croisement_paie_planning (
planning_id,
salarie_id,
date,
mois_paie,
etablissement_id,
contrat_mois_id,
presence_detail,
temps_du_initial,
temps_du,
temps_valide,
HEUR_CONT_PROR_TEMP_DU_INIT,
HEUR_CONT_PROR_TEMP_DU,
HEUR_CONT_PROR_TEMP_VALI,
HEUR_PAYE_PROR_TEMP_DU_INIT,
HEUR_PAYE_PROR_TEMP_DU,
HEUR_PAYE_PROR_TEMP_VALI,
HEUR_TRAV_PROR_TEMP_DU_INIT,
HEUR_TRAV_PROR_TEMP_DU,
HEUR_TRAV_PROR_TEMP_VALI,
MONT_BRUT_PROR_TEMP_DU_INIT,
MONT_BRUT_PROR_TEMP_DU,
MONT_BRUT_PROR_TEMP_VALI,
MONT_MASS_SALA_PROR_TEMP_DU_INIT,
MONT_MASS_SALA_PROR_TEMP_DU,
MONT_MASS_SALA_PROR_TEMP_VALI,
MONT_COTI_PATR_PROR_TEMP_DU_INIT,
MONT_COTI_PATR_PROR_TEMP_DU,
MONT_COTI_PATR_PROR_TEMP_VALI,
MONT_PROV_PROR_TEMP_DU_INIT,
MONT_PROV_PROR_TEMP_DU,
MONT_PROV_PROR_TEMP_VALI,
MONT_MASS_SALA_PROV_PROR_TEMP_DU_INIT,
MONT_MASS_SALA_PROV_PROR_TEMP_DU,
MONT_MASS_SALA_PROV_PROR_TEMP_VALI,
MONT_INTE_PROR_TEMP_DU_INIT,
MONT_INTE_PROR_TEMP_DU,
MONT_INTE_PROR_TEMP_VALI,
MONT_MASS_SALA_INTE_PROR_TEMP_DU_INIT,
MONT_MASS_SALA_INTE_PROR_TEMP_DU,
MONT_MASS_SALA_INTE_PROR_TEMP_VALI,
MONT_MASS_SALA_PROV_INTE_PROR_TEMP_DU_INIT,
MONT_MASS_SALA_PROV_INTE_PROR_TEMP_DU,
MONT_MASS_SALA_PROV_INTE_PROR_TEMP_VALI
)
SELECT
planning_id,
salarie_id,
date,
mois_paie,
etablissement_id,
contrat_mois_id,
presence_detail,
temps_du_initial,
temps_du,
temps_valide,
HEUR_CONT_PROR_TEMP_DU_INIT,
HEUR_CONT_PROR_TEMP_DU,
HEUR_CONT_PROR_TEMP_VALI,
HEUR_PAYE_PROR_TEMP_DU_INIT,
HEUR_PAYE_PROR_TEMP_DU,
HEUR_PAYE_PROR_TEMP_VALI,
HEUR_TRAV_PROR_TEMP_DU_INIT,
HEUR_TRAV_PROR_TEMP_DU,
HEUR_TRAV_PROR_TEMP_VALI,
MONT_BRUT_PROR_TEMP_DU_INIT,
MONT_BRUT_PROR_TEMP_DU,
MONT_BRUT_PROR_TEMP_VALI,
MONT_MASS_SALA_PROR_TEMP_DU_INIT,
MONT_MASS_SALA_PROR_TEMP_DU,
MONT_MASS_SALA_PROR_TEMP_VALI,
MONT_COTI_PATR_PROR_TEMP_DU_INIT,
MONT_COTI_PATR_PROR_TEMP_DU,
MONT_COTI_PATR_PROR_TEMP_VALI,
MONT_PROV_PROR_TEMP_DU_INIT,
MONT_PROV_PROR_TEMP_DU,
MONT_PROV_PROR_TEMP_VALI,
MONT_MASS_SALA_PROV_PROR_TEMP_DU_INIT,
MONT_MASS_SALA_PROV_PROR_TEMP_DU,
MONT_MASS_SALA_PROV_PROR_TEMP_VALI,
MONT_INTE_PROR_TEMP_DU_INIT,
MONT_INTE_PROR_TEMP_DU,
MONT_INTE_PROR_TEMP_VALI,
MONT_MASS_SALA_INTE_PROR_TEMP_DU_INIT,
MONT_MASS_SALA_INTE_PROR_TEMP_DU,
MONT_MASS_SALA_INTE_PROR_TEMP_VALI,
MONT_MASS_SALA_PROV_INTE_PROR_TEMP_DU_INIT,
MONT_MASS_SALA_PROV_INTE_PROR_TEMP_DU,
MONT_MASS_SALA_PROV_INTE_PROR_TEMP_VALI
FROM croisement_paie_planning
;
ANALYZE rh.p_croisement_paie_planning
;
RETURN 'OK';
END