Rubrique « SOLDE DE CONGES PAYES » (code 9300) (RUB_GAIN=0 : retenue, info ou technique selon usage). Actuellement active, variante en vigueur depuis le 2019-07-01. 2 variantes successives au fil du temps. La formule actuelle (1814 octets) référence 25 variable(s) et 1 fonction(s).
Explication
Cette règle calcule l'indemnité de solde de congés payés à verser au salarié lorsqu'il quitte l'entreprise, et elle détermine le nombre de jours de congés restants ainsi que le taux journalier correspondant.
Le calcul ne s'applique pas dans plusieurs situations. D'abord, pour les établissements 37, 34 et 35, si le salarié est repéré comme exclu du test de solde de congés payés, la règle s'arrête sans rien verser. Ensuite, certains motifs de fin de contrat bloquent également le calcul : transfert (TS), code 902, code 10 et code 12. Enfin, pour l'établissement 30, un indicateur spécifique d'exclusion peut aussi interrompre le traitement.
Le calcul n'est déclenché que si la date de fin de contrat tombe dans la période de paie en cours, c'est-à-dire uniquement au moment du solde de tout compte. Dans ce cas, la règle examine successivement trois périodes de référence : l'avant-dernière année (N-2), l'année précédente (N-1) et l'année en cours (N). Pour chaque période où il reste des jours de congés acquis non pris, elle reprend la base de congés correspondante comme indemnité due, puis remet à zéro le compteur de jours et la base de cette période.
L'indemnité totale versée au salarié correspond à la somme des indemnités des trois périodes. Le solde de congés payés affiché est le cumul des jours restants sur N-2, N-1 et N. Si ce solde n'est pas nul, la règle calcule un taux journalier égal à l'indemnité versée divisée par le nombre de jours, ce qui permet de valoriser chaque jour de congé non pris au moment du départ.
Si num_etablissement = 37 ou num_etablissement = 34 ou num_etablissement =35 alors
si test_soldeCP =1 alors
quitter
finsi
finsi
Si (Motif_fin_ct = 'TS' ou Motif_fin_ct = '902' ou Motif_fin_ct = '10' ou Motif_fin_ct = '12' )
alors quitter
finsi
SI num_etablissement =30
ALORS SI TEST_EXCLU_CP = 1
ALORS QUITTER
FINSI
FINSI
// On n'effectue le calcul qu'en cas de fin de contrat
Si Date_fin_contrat >=date_début_paye et Date_fin_contrat <=date_fin_paye alors
//et Motif_fin_contrat <> 'TR'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
Narration structurée
Arbre des cas et actions extrait du code par le parseur CEGI.
Résumé : Formule contenant 4 branche(s) conditionnelle(s).
Si (((`num_etablissement` égal à 37) ou (`num_etablissement` égal à 34)) ou (`num_etablissement` égal à 35))
Alors :
Si (`test_soldeCP` égal à 1)
Alors :
Sortir de la formule sans calcul
Si ((((`Motif_fin_ct` égal à « TS ») ou (`Motif_fin_ct` égal à « 902 »)) ou (`Motif_fin_ct` égal à « 10 »)) ou (`Motif_fin_ct` égal à « 12 »))
Alors :
Sortir de la formule sans calcul
Si (`num_etablissement` égal à 30)
Alors :
Si (`TEST_EXCLU_CP` égal à 1)
Alors :
Sortir de la formule sans calcul
Si ((`Date_fin_contrat` supérieur ou égal à `date_début_paye`) et (`Date_fin_contrat` inférieur ou égal à `date_fin_paye`))
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`)