Rubrique « ABSENCE HEURES 3° MOIS GROSSESSE » (code 6470) (RUB_GAIN=0 : retenue, info ou technique selon usage). Actuellement active, variante en vigueur depuis le 2025-04-01. 3 variantes successives au fil du temps. La formule actuelle (3859 octets) référence 27 variable(s) et 1 fonction(s).
Explication
Cette rubrique calcule la retenue de salaire correspondant aux heures d'absence d'une salariee pendant son 3e mois de grossesse, en se basant sur les heures reellement manquees et le taux horaire de l'interessee.
Le principe est simple : on determine d'abord un taux horaire en divisant les elements fixes de la paie par le nombre d'heures de base du mois. Ensuite, on applique ce taux aux heures d'absence pour obtenir le montant a retenir (toujours en negatif, puisqu'il s'agit d'une deduction).
Plusieurs situations sont prevues. Si l'absence couvre la totalite du mois (les heures d'absence egalent les heures de base), la retenue correspond a l'integralite des elements fixes. Sinon, on retient uniquement le prorata des heures effectivement absentes. Le meme traitement s'applique lorsqu'il s'agit d'une absence partielle planifiee : la regle bascule alors sur les heures d'absence partielle et utilise les dates de la periode planifiee. Un cas particulier existe pour l'etablissement numero 38, ou le commentaire affiche est volontairement laisse vide.
Le bulletin recoit en plus un commentaire automatique du type "Absence du [date debut] au [date fin]", ainsi que le nombre d'heures concernees pour traçabilite.
Enfin, depuis juillet 2018, la rubrique gere aussi un calcul en calendaire : elle identifie le mois de debut et le mois de fin de l'absence, puis determine le nombre de jours calendaires de chaque mois (31, 30 ou 28 selon qu'il s'agit d'un mois long, court ou de fevrier). Cela permet de repartir correctement l'absence lorsqu'elle chevauche deux mois civils, ce qui est frequent pour un conge maternite.
si heures_absences = hrs_base
alors
montant = elts_fixes * -1
taux_horaire = elts_fixes / hrs_base
sinon
taux_horaire = elts_fixes / hrs_base
montant = heures_absences * taux_horaire * -1
finsi
nb_heures = heures_absences
Commentaire = "Absence du " + Date_Debut + " au " + Date_Fin
si heures_abs_partiel <> 0 alors
si heures_abs_partiel = hrs_base
alors
montant = elts_fixes * -1
taux_horaire = elts_fixes / hrs_base
heures_absences = heures_abs_partiel
nb_heures = heures_abs_partiel
sinon
taux_horaire = elts_fixes / hrs_base
montant = heures_abs_partiel * taux_horaire * -1
heures_absences = heures_abs_partiel
nb_heures = heures_abs_partiel
Commentaire = "Absence du " + Date_Debut_pla + " au " + Date_Fin_pla
finsi
finsi
Si heures_abs_partiel <> 0 ET NUM_ETA = 38 alors
si heures_abs_partiel = hrs_base
alors
montant = elts_fixes * -1
taux_horaire = elts_fixes / hrs_base
heures_absences = heures_abs_partiel
nb_heures = heures_abs_partiel
sinon
taux_horaire = elts_fixes / hrs_base
montant = heures_abs_partiel * taux_horaire * -1
heures_absences = heures_abs_partiel
nb_heures = heures_abs_partiel
Commentaire =" "
finsi
finsi
//*****juillet 2018 Gestion en calendaire
XDate_Debut = Date_Debut
mois_deb_abs = MoisDate(XDate_Debut)
mois_fin_abs = MoisDate(Date_Fin)
Commentaire = "Absence du " + XDate_Debut + " au " + Date_Fin
si mois_deb_abs = 1 ou mois_deb_abs = 3 ou mois_deb_abs = 5 ou mois_deb_abs = 7 ou mois_deb_abs = 8 ou mois_deb_abs = 10 ou mois_deb_abs = 12 alors
Nb_jrs_cal_mois_Per_1 = 31
sinonsi mois_deb_abs = 4 ou mois_deb_abs = 6 ou mois_deb_abs = 9 ou mois_deb_abs = 11 alors
Nb_jrs_cal_mois_Per_1 = 30
sinonsi mois_deb_abs = 2 alors
Nb_jrs_cal_mois_Per_1 = 28
finsi
si mois_fin_abs = 1 ou mois_fin_abs = 3 ou mois_fin_abs = 5 ou mois_fin_abs = 7 ou mois_fin_abs = 8 ou mois_fin_abs = 10 ou mois_fin_abs = 12 alors
Nb_jrs_cal_mois_Per_2 = 31
sinonsi mois_fin_abs = 4 ou mois_fin_abs = 6 ou mo
Narration structurée
Arbre des cas et actions extrait du code par le parseur CEGI.
Résumé : Formule contenant 4 branche(s) conditionnelle(s), 6 affectation(s).
Si (`heures_absences` égal à `hrs_base`)
Alors :
Affecter à `montant` la valeur de (`elts_fixes` multiplié par (opposé de 1))
Affecter à `taux_horaire` la valeur de (`elts_fixes` divisé par `hrs_base`)
Sinon :
Affecter à `taux_horaire` la valeur de (`elts_fixes` divisé par `hrs_base`)
Affecter à `montant` la valeur de ((`heures_absences` multiplié par `taux_horaire`) multiplié par (opposé de 1))
Affecter à `nb_heures` la valeur de `heures_absences`
Affecter à `Commentaire` la valeur de (((« Absence du » plus `Date_Debut`) plus « au ») plus `Date_Fin`)
Si (`heures_abs_partiel` différent de 0)
Alors :
Si (`heures_abs_partiel` égal à `hrs_base`)
Alors :
Affecter à `montant` la valeur de (`elts_fixes` multiplié par (opposé de 1))
Affecter à `taux_horaire` la valeur de (`elts_fixes` divisé par `hrs_base`)
Affecter à `heures_absences` la valeur de `heures_abs_partiel`
Affecter à `nb_heures` la valeur de `heures_abs_partiel`
Sinon :
Affecter à `taux_horaire` la valeur de (`elts_fixes` divisé par `hrs_base`)
Affecter à `montant` la valeur de ((`heures_abs_partiel` multiplié par `taux_horaire`) multiplié par (opposé de 1))
Affecter à `heures_absences` la valeur de `heures_abs_partiel`
Affecter à `nb_heures` la valeur de `heures_abs_partiel`
Affecter à `Commentaire` la valeur de (((« Absence du » plus `Date_Debut_pla`) plus « au ») plus `Date_Fin_pla`)
Si ((`heures_abs_partiel` différent de 0) et (`NUM_ETA` égal à 38))
Alors :
Si (`heures_abs_partiel` égal à `hrs_base`)
Alors :
Affecter à `montant` la valeur de (`elts_fixes` multiplié par (opposé de 1))
Affecter à `taux_horaire` la valeur de (`elts_fixes` divisé par `hrs_base`)
Affecter à `heures_absences` la valeur de `heures_abs_partiel`
Affecter à `nb_heures` la valeur de `heures_abs_partiel`
Sinon :
Affecter à `taux_horaire` la valeur de (`elts_fixes` divisé par `hrs_base`)
Affecter à `montant` la valeur de ((`heures_abs_partiel` multiplié par `taux_horaire`) multiplié par (opposé de 1))
Affecter à `heures_absences` la valeur de `heures_abs_partiel`
Affecter à `nb_heures` la valeur de `heures_abs_partiel`
Affecter à `Commentaire` la valeur de « »
Affecter à `XDate_Debut` la valeur de `Date_Debut`
Affecter à `mois_deb_abs` la valeur de extraire le mois d'une date(`XDate_Debut`)
Affecter à `mois_fin_abs` la valeur de extraire le mois d'une date(`Date_Fin`)
Affecter à `Commentaire` la valeur de (((« Absence du » plus `XDate_Debut`) plus « au ») plus `Date_Fin`)
Si (((((((`mois_deb_abs` égal à 1) ou (`mois_deb_abs` égal à 3)) ou (`mois_deb_abs` égal à 5)) ou (`mois_deb_abs` égal à 7)) ou (`mois_deb_abs` égal à 8)) ou (`mois_deb_abs` égal à 10)) ou (`mois_deb_abs` égal à 12))
Alors :
Affecter à `Nb_jrs_cal_mois_Per_1` la valeur de 31
Sinon, si ((((`mois_deb_abs` égal à 4) ou (`mois_deb_abs` égal à 6)) ou (`mois_deb_abs` égal à 9)) ou (`mois_deb_abs` égal à 11)) :
Affecter à `Nb_jrs_cal_mois_Per_1` la valeur de 30
Sinon, si (`mois_deb_abs` égal à 2) :
Affecter à `Nb_jrs_cal_mois_Per_1` la valeur de 28