Rubrique « INDEMNITE CONGES PAYES » (code 9170) (RUB_GAIN=0 : retenue, info ou technique selon usage). Actuellement active, variante en vigueur depuis le 1980-01-03. 3 variantes successives au fil du temps. La formule actuelle (16516 octets) référence 19 variable(s) et 2 fonction(s).
Explication
Cette rubrique calcule l'indemnité de congés payés à verser au salarié lorsqu'il prend des jours de congé, en valorisant séparément les jours pris au titre de trois exercices : l'année en cours (N), l'année précédente (N-1) et l'avant-dernière (N-2).
Pour chacun de ces trois millésimes, la règle vérifie qu'il reste effectivement des jours à prendre et que des jours ont bien été acquis sur la période. Si oui, elle calcule une indemnité proportionnelle : la base d'indemnité acquise sur la période est répartie au prorata des jours pris par rapport aux jours acquis. Si l'une des deux conditions n'est pas remplie pour N-2 ou N-1, l'indemnité correspondante est mise à zéro. Pour l'année N, en l'absence de jours acquis, l'indemnité n'est simplement pas calculée (point à clarifier : aucune mise à zéro explicite, la valeur précédente pourrait subsister).
Le montant effectivement versé au salarié correspond par défaut au montant de l'absence constatée en paie. Le nombre total de jours indemnisés additionne les jours pris sur les trois exercices ; s'il est inférieur au nombre réel de jours de congés pris, il est réaligné sur ce réel. Une base de déprovisionnement est aussi établie, égale à la somme des trois indemnités théoriques (elle sert à diminuer la provision congés comptable).
Deux régimes particuliers existent selon l'établissement (num_eta) : pour les établissements 0, 1, 9, 10, 11, 16 et 17, ainsi que pour les établissements 3 et 4, le montant versé devient le plus élevé entre le montant d'absence et la somme des trois indemnités calculées, ce qui garantit au salarié la valorisation la plus favorable. Pour les établissements 3 et 4, le total de jours n'agrège que N et N-1 (N-2 exclu). Le commentaire d'en-tête insiste pour ne pas modifier cette rubrique.
//SVP NE PAS TOUCHER CETTE RUBRIQUE!!!!!!!!!!!!!!!!!!!!!
// Si le nombre de jours restant sur N-2 >0 alors on calcule l'indemnité sur N-2
Si nbre_jours_nmoins2 <> 0 et Jours_acquis_Nmoins2 <> 0 alors
Indemnite_N_2 = Base_indemnite_Acquise_N_2 * nbre_jours_nmoins2 / Jours_acquis_Nmoins2
Sinon
Indemnite_N_2 = 0
finsi
// Si le nombre de jours restant sur N-1 >0 alors on calcule l'indemnité sur N-1
si nbre_jours_nmoins1 <> 0 et Jours_acquis_Nmoinsun <> 0 alors
Indemnite_N_1 = Base_indemnite_acquise_N_1 * nbre_jours_nmoins1 / Jours_acquis_Nmoinsun
Sinon
Indemnite_N_1 = 0
finsi
// Si le nombre de jours restant sur N >0 alors on calcule l'indemnité sur N
si nbre_jours_n <> 0 et Jours_acquis_N <> 0 alors
// si Jours_acquis_N - jours_acquis_du_mois > 0 alors
// Indemnite_N = Base_indemnite_acquise_N * nbre_jours_n / (Jours_acquis_N- jours_acquis_du_mois)
// sinon
Indemnite_N = Base_indemnite_acquise_N * nbre_jours_n / Jours_acquis_N
// finsi
finsi
//Montant à verser au salarié
Indemnité_versée = Montant_absence //Indemnite_N + Indemnite_N_1 + Indemnite_N_2)
nbre_total_jours = nbre_jours_n + nbre_jours_nmoins1 + nbre_jours_nmoins2
Indemnité_non_versée = Min(Montant_absence ;Indemnite_N + Indemnite_N_1 + Indemnite_N_2)
si nbre_total_jours <= nombre_jours_CP_Réels alors
nbre_total_jours = nombre_jours_CP_Réels
finsi
Base_déprovision_cp = Indemnite_N + Indemnite_N_1 + Indemnite_N_2
si num_eta = 0 ou num_eta = 01 ou num_eta = 09 ou num_eta = 10 ou num_eta = 11 ou num_eta = 16 ou num_eta = 17 alors
Indemnité_versée = Max(Montant_absence ; Indemnite_N + Indemnite_N_1 + Indemnite_N_2)
nbre_total_jours = nbre_jours_n + nbre_jours_nmoins1 + nbre_jours_nmoins2
Indemnité_non_versée = Min(Montant_absence ;Indemnite_N + Indemnite_N_1 + Indemnite_N_2)
finsi
si num_eta = 4 ou num_eta = 3 alors
Indemnité_versée = Max(Montant_absence ; Indemnite_N + Indemnite_N_1 + Indemnite_N_2)
nbre_total_jours = nbre_jours_n + nbre_jours_nmoins1
Narration structurée
Arbre des cas et actions extrait du code par le parseur CEGI.
Résumé : Formule contenant 6 branche(s) conditionnelle(s), 4 affectation(s).
Si ((`nbre_jours_nmoins2` différent de 0) et (`Jours_acquis_Nmoins2` différent de 0))
Alors :
Affecter à `Indemnite_N_2` la valeur de ((`Base_indemnite_Acquise_N_2` multiplié par `nbre_jours_nmoins2`) divisé par `Jours_acquis_Nmoins2`)
Sinon :
Affecter à `Indemnite_N_2` la valeur de 0
Si ((`nbre_jours_nmoins1` différent de 0) et (`Jours_acquis_Nmoinsun` différent de 0))
Alors :
Affecter à `Indemnite_N_1` la valeur de ((`Base_indemnite_acquise_N_1` multiplié par `nbre_jours_nmoins1`) divisé par `Jours_acquis_Nmoinsun`)
Sinon :
Affecter à `Indemnite_N_1` la valeur de 0
Si ((`nbre_jours_n` différent de 0) et (`Jours_acquis_N` différent de 0))
Alors :
Affecter à `Indemnite_N` la valeur de ((`Base_indemnite_acquise_N` multiplié par `nbre_jours_n`) divisé par `Jours_acquis_N`)
Affecter à `Indemnité_versée` la valeur de `Montant_absence`
Affecter à `nbre_total_jours` la valeur de ((`nbre_jours_n` plus `nbre_jours_nmoins1`) plus `nbre_jours_nmoins2`)
Affecter à `Indemnité_non_versée` la valeur de prendre le minimum(`Montant_absence`, ((`Indemnite_N` plus `Indemnite_N_1`) plus `Indemnite_N_2`))
Si (`nbre_total_jours` inférieur ou égal à `nombre_jours_CP_Réels`)
Alors :
Affecter à `nbre_total_jours` la valeur de `nombre_jours_CP_Réels`
Affecter à `Base_déprovision_cp` la valeur de ((`Indemnite_N` plus `Indemnite_N_1`) plus `Indemnite_N_2`)
Si (((((((`num_eta` égal à 0) ou (`num_eta` égal à 01)) ou (`num_eta` égal à 09)) ou (`num_eta` égal à 10)) ou (`num_eta` égal à 11)) ou (`num_eta` égal à 16)) ou (`num_eta` égal à 17))
Alors :
Affecter à `Indemnité_versée` la valeur de prendre le maximum(`Montant_absence`, ((`Indemnite_N` plus `Indemnite_N_1`) plus `Indemnite_N_2`))
Affecter à `nbre_total_jours` la valeur de ((`nbre_jours_n` plus `nbre_jours_nmoins1`) plus `nbre_jours_nmoins2`)
Affecter à `Indemnité_non_versée` la valeur de prendre le minimum(`Montant_absence`, ((`Indemnite_N` plus `Indemnite_N_1`) plus `Indemnite_N_2`))
Si ((`num_eta` égal à 4) ou (`num_eta` égal à 3))
Alors :
Affecter à `Indemnité_versée` la valeur de prendre le maximum(`Montant_absence`, ((`Indemnite_N` plus `Indemnite_N_1`) plus `Indemnite_N_2`))
Affecter à `nbre_total_jours` la valeur de (`nbre_jours_n` plus `nbre_jours_nmoins1`)