Rubrique « JOURS DE CP PRIS » (code 9150) (RUB_GAIN=0 : retenue, info ou technique selon usage). Actuellement active, variante en vigueur depuis le 2026-04-01. 7 variantes successives au fil du temps. La formule actuelle (3206 octets) référence 31 variable(s) et 1 fonction(s).
Explication
Cette rubrique calcule le montant à retenir sur la paie lorsqu'un salarié pose des jours de congés payés, et tient à jour les compteurs de jours pris sur les soldes des années précédentes (N-1, N-2).
Le calcul du montant d'absence part du salaire brut auquel on ajoute toutes les absences du mois, puis on retire certains éléments exclus du calcul du 26e (base de référence) et on rajoute d'autres éléments à inclure. Ce montant est ramené à une journée, multiplié par la durée de l'absence, divisé par le nombre moyen de jours du mois, puis passé en négatif pour qu'il apparaisse comme une retenue.
Plusieurs cas particuliers sont gérés :
- Pour les établissements 12, 27, 28, 29, 48, 54, 55, 56 et 63, certains éléments supplémentaires sont réintégrés dans la base de calcul.
- Pour l'établissement 109, une règle d'exclusion spécifique s'applique.
- Pour l'établissement 4, le nombre moyen de jours utilisé est celui propre à cet établissement, sinon c'est la valeur nationale.
- Si la gestion des congés se fait en jours ouvrés travaillés (paramètre « T »), le calcul est ajusté en proportion (5 jours sur le nombre moyen de jours travaillés par semaine).
Le commentaire affiché sur le bulletin reprend les dates de début et de fin d'absence. Pour l'établissement 12, si l'absence couvre la journée de solidarité, le commentaire le précise explicitement.
Enfin, la rubrique met à jour les compteurs : si le solde de jours N-2 a bougé, on enregistre la différence ; idem pour les jours N-1, avec un correctif si le résultat devient négatif (prise en compte des congés acquis en fin de période). Un contrôle final vérifie si la durée d'absence dépasse les soldes N-1 et N-2 disponibles (gestion des dépassements anticipés).
//SVP NE PAS TOUCHER CETTE RUBRIQUE!!!!!!!!!!!!!!!!!!!!!
si code_etablissement = 12 ou code_etablissement = 27 ou code_etablissement = 28 ou code_etablissement = 29 ou code_etablissement = 48
ou code_etablissement = 63 ou code_etablissement = 54 ou code_etablissement = 55 ou code_etablissement = 56
alors
en_plus_dans26eme = a_rajouter_dans26eme
finsi
si code_etablissement = 109 ALORS
en_plus_dans26eme = EXCLU_26
FINSI
si code_etablissement = 4 alors
nombre_jrs_moyens = nombre_jrs_moyens_E04
sinon
nombre_jrs_moyens = nombre_jrs_moyens_national
finsi
montant_absence = (brut+mt_toutes_absences-exclu26eme+en_plus_dans26eme) * 30 / nombre_jours_presence * duree_absence / nombre_jrs_moyens * -1
montant_absence = Arrondi(montant_absence;0,01)
// Si gestion de cp en jours ouvrés travaillés
Si gestion_cp = 'T' ou gestion_cp = 't' alors
montant_absence = (brut+mt_toutes_absences-exclu26eme+en_plus_dans26eme)* 30 / nombre_jours_presence * duree_absence / nombre_jrs_moyens *5/ nb_moyen_jrs_trav_par_sem* -1
montant_absence = Arrondi(montant_absence;0,01)
FINSI
Commentaire = "Absence du " + date_1 + " au " + date_2
si Solde_Jours_Nmoins2_avant <> 0 alors
Jours_Nmoins2 = Solde_Jours_Nmoins2_avant - Solde_jours_Nmoins2_après
Finsi
Si JAn1Apres - JAn1avant <> 0 alors
Jours_Nmoins1 = JAn1Apres - JAn1avant
SI Jours_Nmoins1 <0 ALORS
Jours_Nmoins1 =(solde_Jours_Nmoins1avant - cp_acquiq_finabs_finperiode )
finsi
FinSi
si code_etablissement = 12 alors
si date_1 <= date_solidarité et date_2 >= date_solidarité alors
Commentaire = date_1 + " au " + date_2 + " " + "Jour Solidarité" + " " + date_solidarité
finsi
Finsi
{Si solde_jours_N_avant <> 0 alors
Jours_N = solde_jours_N_avant - solde_conges_Naprès
SI Jours_N<0 ALORS Jours_N=(solde_jours_N_avant-solde_conges_Naprès) + jours_acquis_du_mois
finsi
finsi}
// gestion des dépassement anticipés
Si ( Jours_Nmoins1 + Jours_Nmoins2) < duree_absence alors
S
Narration structurée
Arbre des cas et actions extrait du code par le parseur CEGI.
Résumé : Formule contenant 7 branche(s) conditionnelle(s), 3 affectation(s).
Si (((((((((`code_etablissement` égal à 12) ou (`code_etablissement` égal à 27)) ou (`code_etablissement` égal à 28)) ou (`code_etablissement` égal à 29)) ou (`code_etablissement` égal à 48)) ou (`code_etablissement` égal à 63)) ou (`code_etablissement` égal à 54)) ou (`code_etablissement` égal à 55)) ou (`code_etablissement` égal à 56))
Alors :
Affecter à `en_plus_dans26eme` la valeur de `a_rajouter_dans26eme`
Si (`code_etablissement` égal à 109)
Alors :
Affecter à `en_plus_dans26eme` la valeur de `EXCLU_26`
Si (`code_etablissement` égal à 4)
Alors :
Affecter à `nombre_jrs_moyens` la valeur de `nombre_jrs_moyens_E04`
Sinon :
Affecter à `nombre_jrs_moyens` la valeur de `nombre_jrs_moyens_national`
Affecter à `montant_absence` la valeur de ((((((((`brut` plus `mt_toutes_absences`) moins `exclu26eme`) plus `en_plus_dans26eme`) multiplié par 30) divisé par `nombre_jours_presence`) multiplié par `duree_absence`) divisé par `nombre_jrs_moyens`) multiplié par (opposé de 1))
Affecter à `montant_absence` la valeur de arrondir(`montant_absence`, 0,01)
Si ((`gestion_cp` égal à « T ») ou (`gestion_cp` égal à « t »))
Alors :
Affecter à `montant_absence` la valeur de ((((((((((`brut` plus `mt_toutes_absences`) moins `exclu26eme`) plus `en_plus_dans26eme`) multiplié par 30) divisé par `nombre_jours_presence`) multiplié par `duree_absence`) divisé par `nombre_jrs_moyens`) multiplié par 5) divisé par `nb_moyen_jrs_trav_par_sem`) multiplié par (opposé de 1))
Affecter à `montant_absence` la valeur de arrondir(`montant_absence`, 0,01)
Affecter à `Commentaire` la valeur de (((« Absence du » plus `date_1`) plus « au ») plus `date_2`)
Si (`Solde_Jours_Nmoins2_avant` différent de 0)
Alors :
Affecter à `Jours_Nmoins2` la valeur de (`Solde_Jours_Nmoins2_avant` moins `Solde_jours_Nmoins2_après`)
Si ((`JAn1Apres` moins `JAn1avant`) différent de 0)
Alors :
Affecter à `Jours_Nmoins1` la valeur de (`JAn1Apres` moins `JAn1avant`)
Si (`Jours_Nmoins1` inférieur à 0)
Alors :
Affecter à `Jours_Nmoins1` la valeur de (`solde_Jours_Nmoins1avant` moins `cp_acquiq_finabs_finperiode`)
Si (`code_etablissement` égal à 12)
Alors :
Si ((`date_1` inférieur ou égal à `date_solidarité`) et (`date_2` supérieur ou égal à `date_solidarité`))
Alors :
Affecter à `Commentaire` la valeur de ((((((`date_1` plus « au ») plus `date_2`) plus « ») plus « Jour Solidarité ») plus « ») plus `date_solidarité`)