les heures effectuées en fin de mois sont à associer avec le mois suivant.
with w_asso as (
select
cptres1_id,
(max(array[extract(epoch from p_contrats_mois.date_debut), p_contrats_mois.contrat_id]))[2] as contrat_id,
(max(array[extract(epoch from p_contrats_mois.date_debut), p_contrats_mois.oid]))[2] as contrat_mois_id
from w_planning
join rh.p_contrats_mois on 1=1
and p_contrats_mois.salarie_id = w_planning.salarie_id
and w_planning.date between p_contrats_mois.date_debut and p_contrats_mois.date_fin -- Sélection des contrats pendant heures planning.
where 1!=1
OR w_planning.contrat_id is null
OR w_planning.contrat_mois_id is null
group by 1)
UPDATE w_planning SET
contrat_id = w_asso.contrat_id,
contrat_mois_id = w_asso.contrat_mois_id
FROM w_asso
WHERE w_planning.cptres1_id = w_asso.cptres1_id
;
with w_asso as (
select
cptres1_id,
(min(array[extract(epoch from p_contrats_mois.date_debut), p_contrats_mois.contrat_id]))[2] as contrat_id,
(min(array[extract(epoch from p_contrats_mois.date_debut), p_contrats_mois.oid]))[2] as contrat_mois_id
from w_planning
join rh.p_contrats_mois on 1=1
and p_contrats_mois.salarie_id = w_planning.salarie_id
and p_contrats_mois.date_debut > w_planning.date -- Sélection des contrats APRES heures planning.
where 1!=1
OR w_planning.contrat_id is null
OR w_planning.contrat_mois_id is null
group by 1)
UPDATE w_planning SET
contrat_id = w_asso.contrat_id,
contrat_mois_id = w_asso.contrat_mois_id
FROM w_asso
WHERE w_planning.cptres1_id = w_asso.cptres1_id
;
with w_asso as (
select
cptres1_id,
(max(array[extract(epoch from p_contrats_mois.date_debut), p_contrats_mois.contrat_id]))[2] as contrat_id,
(max(array[extract(epoch from p_contrats_mois.date_debut), p_contrats_mois.oid]))[2] as contrat_mois_id
from w_planning
join rh.p_contrats_mois on 1=1
and p_contrats_mois.salarie_id = w_planning.salarie_id
and p_contrats_mois.date_debut < w_planning.date -- Sélection des contrats AVANT heures planning.
where 1!=1
OR w_planning.contrat_id is null
OR w_planning.contrat_mois_id is null
group by 1)
UPDATE w_planning SET
contrat_id = w_asso.contrat_id,
contrat_mois_id = w_asso.contrat_mois_id
FROM w_asso
WHERE w_planning.cptres1_id = w_asso.cptres1_id
;
]]>