Rubrique « REGUL DE CONGES PAYES » (code 9415) (RUB_GAIN=0 : retenue, info ou technique selon usage). Actuellement active, variante en vigueur depuis le 2021-03-01. 2 variantes successives au fil du temps. La formule actuelle (1315 octets) référence 20 variable(s).
Explication
Cette règle calcule la régularisation des congés payés au moment où un salarié solde ses droits à congés, et elle ne s'applique qu'à un établissement bien précis (le numéro 12) et uniquement lorsqu'un indicateur de prise de congés est activé. Hors de ce cadre, la règle ne fait rien (elle « quitte » sans rien produire).
Concrètement, elle examine trois millésimes de congés : l'année en cours (N), l'année précédente (N-1) et l'année d'avant (N-2). Pour chacune de ces trois périodes, si le solde de jours restants est positif ou nul, la règle reprend la base de congés correspondante comme indemnité à verser, puis prépare la remise à zéro de la période (à la fois en base monétaire et en jours), ce qui matérialise le fait que ces droits sont soldés.
Ensuite, elle additionne les trois indemnités (N, N-1, N-2) pour obtenir l'indemnité totale versée au salarié, et elle additionne les trois soldes de jours pour obtenir le total de jours de congés régularisés. Enfin, si ce total de jours n'est pas nul, elle calcule un taux moyen par jour de congé, en divisant l'indemnité totale par le nombre total de jours soldés.
Quelques points à confirmer côté métier : les commentaires du code évoquent un choix entre « prorata de la base CP » et « prorata du salaire le plus avantageux », mais la règle telle qu'écrite reprend uniquement la base CP existante, sans arbitrage visible entre les deux options. De plus, la condition « solde de jours >= 0 » inclut le cas où le solde vaut zéro, ce qui peut générer une remise à zéro sans effet pratique mais reste cohérent.
si code_etablissement = 12 alors
si test_vac <> 0 alors
//si le solde de jours N-2>0, calculer une indemnité : soit prorata de la base CP
// soit prorata du salaire le plus avantageux)
Si Solde_jours_Nmoins2 >= 0 alors
Indemnite_Nmoins2 = Solde_base_Nmoins2 //- indcpn2
raz_periode_nmoins2_base = (Solde_base_Nmoins2)
raz_periode_nmoins2_jours = (Solde_jours_Nmoins2)
finsi
//Si le solde de jours N-1>0, calculer une indemnité : soit prorata de la base CP
// soit prorata du salaire le plus avantageux)
Si Solde_jours_Nmoins1 >= 0 alors
Indemnite_Nmoins1 = Solde_base_moins1 //- indcpn1
raz_periode_nmoins1_base = (Solde_base_moins1)
raz_periode_nmoins1_jours = (Solde_jours_Nmoins1)
finsi
// si le solde de jours N>0, calculer une indemnité : soit prorata de la base CP
// soit prorata du salaire le plus avantageux)
Si Solde_jours_N >= 0 alors
Indemnite_Nmoins = solde_base_N //- indcpn
raz_periode_nmoinsN_base = Solde_base_N
raz_periode_nmoinsN_jours = Solde_jours_N
finsi
Indemnite_versée = Indemnite_Nmoins + Indemnite_Nmoins1 + Indemnite_Nmoins2
SoldeCP = Solde_jours_N + Solde_jours_Nmoins1 + Solde_jours_Nmoins2
si SoldeCP <> 0
alors taux_soldeCP = Indemnite_versée / SoldeCP
finsi
sinon quitter
finsi
finsi
Narration structurée
Arbre des cas et actions extrait du code par le parseur CEGI.
Résumé : Formule contenant 1 branche(s) conditionnelle(s).
Si (`code_etablissement` égal à 12)
Alors :
Si (`test_vac` différent de 0)
Alors :
Si (`Solde_jours_Nmoins2` supérieur ou égal à 0)
Alors :
Affecter à `Indemnite_Nmoins2` la valeur de `Solde_base_Nmoins2`
Affecter à `raz_periode_nmoins2_base` la valeur de `Solde_base_Nmoins2`
Affecter à `raz_periode_nmoins2_jours` la valeur de `Solde_jours_Nmoins2`
Si (`Solde_jours_Nmoins1` supérieur ou égal à 0)
Alors :
Affecter à `Indemnite_Nmoins1` la valeur de `Solde_base_moins1`
Affecter à `raz_periode_nmoins1_base` la valeur de `Solde_base_moins1`
Affecter à `raz_periode_nmoins1_jours` la valeur de `Solde_jours_Nmoins1`
Si (`Solde_jours_N` supérieur ou égal à 0)
Alors :
Affecter à `Indemnite_Nmoins` la valeur de `solde_base_N`
Affecter à `raz_periode_nmoinsN_base` la valeur de `Solde_base_N`
Affecter à `raz_periode_nmoinsN_jours` la valeur de `Solde_jours_N`
Affecter à `Indemnite_versée` la valeur de ((`Indemnite_Nmoins` plus `Indemnite_Nmoins1`) plus `Indemnite_Nmoins2`)
Affecter à `SoldeCP` la valeur de ((`Solde_jours_N` plus `Solde_jours_Nmoins1`) plus `Solde_jours_Nmoins2`)
Si (`SoldeCP` différent de 0)
Alors :
Affecter à `taux_soldeCP` la valeur de (`Indemnite_versée` divisé par `SoldeCP`)