Rubrique « SOLDE DE CONGES PAYES » (code 9310) (RUB_GAIN=0 : retenue, info ou technique selon usage). Actuellement active, variante en vigueur depuis le 1980-01-01. Une seule variante de formule définie. La formule actuelle (1340 octets) référence 20 variable(s).
Explication
Cette rubrique calcule le solde de congés payés d'un salarié et l'indemnité correspondante à lui verser, en tenant compte des droits restants sur trois exercices : l'année en cours (N), l'année précédente (N-1) et l'année d'avant (N-2).
Tout d'abord, une exception est prévue pour l'établissement numéro 37 : si un indicateur interne signale que le solde de congés a déjà été traité, le calcul s'arrête immédiatement pour ce cas particulier, afin d'éviter un double traitement.
Ensuite, la règle examine successivement les trois périodes de référence. Pour chaque exercice (N-2, N-1, puis N), si le salarié dispose encore de jours de congés non pris (solde positif ou nul), la rubrique enregistre le montant de l'indemnité correspondante à partir de la base de congés payés déjà calculée pour cette période, et mémorise les compteurs (base et jours) en vue d'une éventuelle remise à zéro de la période.
Après ces trois vérifications, deux totaux sont consolidés : l'indemnité totale à verser au salarié (somme des trois indemnités N, N-1 et N-2) et le solde global de jours de congés (somme des jours restants des trois exercices).
Enfin, si ce solde global de jours n'est pas nul, la règle calcule un taux moyen d'indemnisation par jour de congé, en divisant l'indemnité totale par le nombre total de jours. Ce taux sert généralement de référence pour valoriser un jour de congé.
Point d'ambiguïté : le code comporte des commentaires évoquant un choix entre prorata de la base CP ou prorata du salaire le plus avantageux, mais cette comparaison n'apparaît pas dans la formule réellement exécutée, qui retient systématiquement la base CP déjà calculée en amont.
Si num_etablissement = 37 alors
si test_soldeCP =1 alors
quitter
finsi
finsi
//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
Narration structurée
Arbre des cas et actions extrait du code par le parseur CEGI.
Résumé : Formule contenant 5 branche(s) conditionnelle(s), 2 affectation(s).
Si (`num_etablissement` égal à 37)
Alors :
Si (`test_soldeCP` égal à 1)
Alors :
Sortir de la formule sans calcul
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`)