Rubrique « nbre de jours maladie du mois > 30 jours » (code 9040) (RUB_GAIN=0 : retenue, info ou technique selon usage). Actuellement active, variante en vigueur depuis le 2025-07-01. 9 variantes successives au fil du temps. La formule actuelle (1080 octets) référence 14 variable(s) et 1 fonction(s).
Explication
Cette règle calcule le nombre de jours de maladie du mois qui dépassent le seuil de 30 jours cumulés, afin de déterminer la part de l'absence maladie qui doit être traitée différemment (au-delà du mois de carence habituel). Elle décide également si l'acquisition des congés payés doit être suspendue pour le salarié.
D'abord, la règle se cale sur la période de référence des congés payés, qui commence le 1er juin : si on est entre janvier et mai, on se réfère au 1er juin de l'année précédente, sinon au 1er juin de l'année en cours. À partir de cette date de départ, elle compare les jours d'absence du salarié au nombre de jours calendaires écoulés depuis le début de la période.
Ensuite, pour les bulletins qui ne sont pas des vacations : si le salarié a été absent et que son absence couvre la totalité de la période depuis le 1er juin (autrement dit, il n'a pas repris le travail), l'acquisition des congés payés est suspendue et l'intégralité des jours de maladie du mois est considérée comme au-delà des 30 jours.
Enfin, la règle examine le cumul de maladie. Si le salarié avait déjà 30 jours ou plus de maladie à la fin du mois précédent, alors tous les jours de maladie du mois courant comptent comme dépassant le seuil. Si le cumul antérieur est inférieur à 30 jours mais non nul, on additionne avec le mois courant : ce qui dépasse 30 est isolé comme jours « au-delà de 30 », et si le total reste sous 30, rien n'est isolé.
si mois >=1 et mois < 6 alors
deb_per_cp_1 = coderdate(1;6;année_paye - 1)
nb_jours_Abs_depuis_Deb_periode = nb_jours_Abs_depuis_Deb_periode_1
nb_jrs_cal_depuis_deb_periode_cp = nb_jrs_cal_depuis_deb_periode_cp_1
sinon
deb_per_cp_2 = coderdate(1;6;année_paye)
nb_jours_Abs_depuis_Deb_periode = nb_jours_Abs_depuis_Deb_periode_2
nb_jrs_cal_depuis_deb_periode_cp = nb_jrs_cal_depuis_deb_periode_cp_2
finsi
//pas d'acquisition si le salarié n'a pas repris depuis le 01/06
si lot_paye <> 'VAC' alors
si nb_jours_Abs_depuis_Deb_periode <> 0 alors
Si nb_jours_Abs_depuis_Deb_periode >= nb_jrs_cal_depuis_deb_periode_cp alors
Suspension_CP = 1
nbre_jrs_mal_sup_30jrs_du_mois = nbre_jrs_mal_du_mois
sinon
Suspension_CP = 0
finsi
//Quitter
FinSi
finsi
si nbre_jrs_mal_fin_mois_dernier >= 30 alors
nbre_jrs_mal_sup_30jrs_du_mois = nbre_jrs_mal_du_mois
Quitter
finsi
si nbre_jrs_mal_fin_mois_dernier < 30 et nbre_jrs_mal_fin_mois_dernier > 0 alors
si (nbre_jrs_mal_fin_mois_dernier+nbre_jrs_mal_du_mois) > 30 alors
nbre_jrs_mal_sup_30jrs_du_mois = (nbre_jrs_mal_fin_mois_dernier+nbre_jrs_mal_du_mois)-30
finsi
si (nbre_jrs_mal_fin_mois_dernier+nbre_jrs_mal_du_mois) <= 30 alors
nbre_jrs_mal_sup_30jrs_du_mois = 0
finsi
finsi
Narration structurée
Arbre des cas et actions extrait du code par le parseur CEGI.
Résumé : Formule contenant 4 branche(s) conditionnelle(s).
Si ((`mois` supérieur ou égal à 1) et (`mois` inférieur à 6))
Alors :
Affecter à `deb_per_cp_1` la valeur de construire une date(1, 6, (`année_paye` moins 1))
Affecter à `nb_jours_Abs_depuis_Deb_periode` la valeur de `nb_jours_Abs_depuis_Deb_periode_1`
Affecter à `nb_jrs_cal_depuis_deb_periode_cp` la valeur de `nb_jrs_cal_depuis_deb_periode_cp_1`
Sinon :
Affecter à `deb_per_cp_2` la valeur de construire une date(1, 6, `année_paye`)
Affecter à `nb_jours_Abs_depuis_Deb_periode` la valeur de `nb_jours_Abs_depuis_Deb_periode_2`
Affecter à `nb_jrs_cal_depuis_deb_periode_cp` la valeur de `nb_jrs_cal_depuis_deb_periode_cp_2`
Si (`lot_paye` différent de « VAC »)
Alors :
Si (`nb_jours_Abs_depuis_Deb_periode` différent de 0)
Alors :
Si (`nb_jours_Abs_depuis_Deb_periode` supérieur ou égal à `nb_jrs_cal_depuis_deb_periode_cp`)
Alors :
Affecter à `Suspension_CP` la valeur de 1
Affecter à `nbre_jrs_mal_sup_30jrs_du_mois` la valeur de `nbre_jrs_mal_du_mois`
Sinon :
Affecter à `Suspension_CP` la valeur de 0
Si (`nbre_jrs_mal_fin_mois_dernier` supérieur ou égal à 30)
Alors :
Affecter à `nbre_jrs_mal_sup_30jrs_du_mois` la valeur de `nbre_jrs_mal_du_mois`
Sortir de la formule sans calcul
Si ((`nbre_jrs_mal_fin_mois_dernier` inférieur à 30) et (`nbre_jrs_mal_fin_mois_dernier` supérieur à 0))
Alors :
Si ((`nbre_jrs_mal_fin_mois_dernier` plus `nbre_jrs_mal_du_mois`) supérieur à 30)
Alors :
Affecter à `nbre_jrs_mal_sup_30jrs_du_mois` la valeur de ((`nbre_jrs_mal_fin_mois_dernier` plus `nbre_jrs_mal_du_mois`) moins 30)
Si ((`nbre_jrs_mal_fin_mois_dernier` plus `nbre_jrs_mal_du_mois`) inférieur ou égal à 30)
Alors :
Affecter à `nbre_jrs_mal_sup_30jrs_du_mois` la valeur de 0