Rubrique « C.P. Montant acquis » (code 9295) (RUB_GAIN=0 : retenue, info ou technique selon usage). Actuellement active, variante en vigueur depuis le 2024-11-01. 3 variantes successives au fil du temps. La formule actuelle (1257 octets) référence 13 variable(s) et 1 fonction(s).
Explication
Cette règle calcule le montant des congés payés acquis par le salarié sur la période de paie, en partant d'une assiette (un brut retraité) sur laquelle on applique 10 %. Elle décide aussi dans quels cas il ne faut rien calculer du tout.
Premier filtre : si le salarié est exclu du dispositif, la règle s'arrête immédiatement et ne produit aucun droit à congés.
Ensuite, les absences maladie sont prises en compte de façon plafonnée : on ne retient jamais plus de 30 jours de maladie longue durée, même si le salarié en a eu davantage. L'assiette de base est construite à partir du brut, duquel on retire certains éléments non éligibles, auxquels on rajoute d'autres éléments à réintégrer, plus la part de maladie non maintenue par l'employeur. Cette assiette est ensuite réduite proportionnellement aux jours de maladie, selon deux calculs en parallèle : l'un dit « conventionnel » (plus favorable, l'impact maladie est plus léger), l'autre dit « légal/national » (l'impact maladie est encore plus atténué, divisé par 5). La règle retient toujours le résultat le plus avantageux pour le salarié entre les deux.
Une variante existe selon que le droit aux congés est suspendu ou non : dans le cas suspendu, la pondération conventionnelle est plus dure (jours maladie comptés en entier) ; sinon, ils ne comptent que pour moitié.
Le montant des congés acquis correspond ensuite à 10 % de cette assiette finale.
Cas particulier : pour l'établissement n° 12, si le salarié est en statut « vacataire », l'assiette et le droit à congés sont remis à zéro.
Point d'attention : un test de suspension du droit aux congés apparaît deux fois (une fois mis en commentaire, une fois actif), ce qui peut prêter à confusion sur la branche réellement appliquée.
si test_exclusion <> 0 alors
quitter
finsi
//si test_rubrique_9040_suspension_droit_cp <> 0 alors
//quitter
//finsi
///// Cp sur maladie 09 2024
si nb_jrs_mal_sup30jrs > 30 alors nb_jrs_mal_sup30jrs = 30 finsi
si test_rubrique_9040_suspension_droit_cp <> 0 alors
Base_brut_pour_cp_CONV = ((brut- éléments_a_enlever + éléments_a_remettre)+montant_maladie_non_maintenue)* ((30-(nb_jrs_mal_sup30jrs/1)) / 30)
Base_brut_pour_cp_NAT = ((brut- éléments_a_enlever + éléments_a_remettre)+montant_maladie_non_maintenue)* ((30-(nb_jrs_mal_sup30jrs/5)) / 30)
Base_brut_pour_cp = Max(Base_brut_pour_cp_CONV;Base_brut_pour_cp_NAT)
base_cumul = Base_brut_pour_cp * 10 / 100
quitter
finsi
Base_brut_pour_cp_CONV = ((brut- éléments_a_enlever + éléments_a_remettre)+montant_maladie_non_maintenue)* ((30-(nb_jrs_mal_sup30jrs/2)) / 30)
Base_brut_pour_cp_NAT = ((brut- éléments_a_enlever + éléments_a_remettre)+montant_maladie_non_maintenue)* ((30-(nb_jrs_mal_sup30jrs/5)) / 30)
Base_brut_pour_cp = Max(Base_brut_pour_cp_CONV;Base_brut_pour_cp_NAT)
base_cumul = Base_brut_pour_cp * 10 / 100
///// Cp sur maladie fin
si test_etablissement = 12 alors
si test_vac <> 0 alors
base_cumul = 0
Base_brut_pour_cp = 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), 4 affectation(s).
Si (`test_exclusion` différent de 0)
Alors :
Sortir de la formule sans calcul
Si (`nb_jrs_mal_sup30jrs` supérieur à 30)
Alors :
Affecter à `nb_jrs_mal_sup30jrs` la valeur de 30
Si (`test_rubrique_9040_suspension_droit_cp` différent de 0)
Alors :
Affecter à `Base_brut_pour_cp_CONV` la valeur de ((((`brut` moins `éléments_a_enlever`) plus `éléments_a_remettre`) plus `montant_maladie_non_maintenue`) multiplié par ((30 moins (`nb_jrs_mal_sup30jrs` divisé par 1)) divisé par 30))
Affecter à `Base_brut_pour_cp_NAT` la valeur de ((((`brut` moins `éléments_a_enlever`) plus `éléments_a_remettre`) plus `montant_maladie_non_maintenue`) multiplié par ((30 moins (`nb_jrs_mal_sup30jrs` divisé par 5)) divisé par 30))
Affecter à `Base_brut_pour_cp` la valeur de prendre le maximum(`Base_brut_pour_cp_CONV`, `Base_brut_pour_cp_NAT`)
Affecter à `base_cumul` la valeur de ((`Base_brut_pour_cp` multiplié par 10) divisé par 100)
Sortir de la formule sans calcul
Affecter à `Base_brut_pour_cp_CONV` la valeur de ((((`brut` moins `éléments_a_enlever`) plus `éléments_a_remettre`) plus `montant_maladie_non_maintenue`) multiplié par ((30 moins (`nb_jrs_mal_sup30jrs` divisé par 2)) divisé par 30))
Affecter à `Base_brut_pour_cp_NAT` la valeur de ((((`brut` moins `éléments_a_enlever`) plus `éléments_a_remettre`) plus `montant_maladie_non_maintenue`) multiplié par ((30 moins (`nb_jrs_mal_sup30jrs` divisé par 5)) divisé par 30))
Affecter à `Base_brut_pour_cp` la valeur de prendre le maximum(`Base_brut_pour_cp_CONV`, `Base_brut_pour_cp_NAT`)
Affecter à `base_cumul` la valeur de ((`Base_brut_pour_cp` multiplié par 10) divisé par 100)