|
|
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
|