Rubrique « PRIME DE FIN D'ANNEE » (code 6935) (RUB_GAIN=0 : retenue, info ou technique selon usage). Actuellement active, variante en vigueur depuis le 2024-11-01. 7 variantes successives au fil du temps. La formule actuelle (3017 octets) référence 29 variable(s) et 2 fonction(s).
Explication
Cette règle calcule la prime de fin d'année versée aux salariés, en fonction de leur ancienneté, de leurs absences et de leur situation contractuelle.
D'abord, certaines personnes sont exclues d'office : les vacataires, les bénéficiaires d'une allocation d'étude, et les anciens HPJC. Pour eux, aucune prime n'est calculée.
Pour les autres, la règle examine la période de référence qui va du 1er décembre de l'année précédente au 30 novembre de l'année en cours. Elle additionne les absences déductibles (en jours et en heures converties), compte les absences injustifiées, et détermine l'ancienneté du salarié à partir de sa date d'entrée. Elle calcule également un salaire de base moyen sur la période.
Le montant de la prime dépend ensuite d'un pourcentage appliqué au salaire de base, qui augmente avec l'ancienneté :
- moins d'un an : pas de prime,
- de 1 à 5 ans : 59 %,
- de 5 à 10 ans : 64 %,
- de 10 à 15 ans : 73 %,
- de 15 à 20 ans : 80 %,
- de 20 à 25 ans : 85 %,
- 25 ans et plus : 100 %.
La prime n'est versée qu'au mois de novembre, ou bien lors d'un solde de tout compte si le départ correspond à une retraite ou une mise à la retraite (les autres motifs de fin de contrat ne donnent pas droit au prorata).
Enfin, les absences pèsent sur le montant : avec une absence injustifiée, la prime est divisée par deux et réduite au prorata des jours d'absence déductibles ; à partir de deux absences injustifiées, la prime est totalement supprimée.
// Exclusion vacataire, allocation étude et ex HPJC
Si lot_paye = 'VAC' ou code_type_particulier = 'AE' ou exclusion_prime = 1
alors quitter
finsi
// Absences : periode du 01/12/N-1 au 30/11/N
// Absences deductibles
Absence_deductible_jours = Abs_deductible_jour
Absence_deductible_heures = Abs_deducitble_heures / (5.05* (hrs_contrat / hrs_etab))
Tot_absences_deductible = Absence_deductible_jours + Absence_deductible_heures
//Absences injustifiées
nb_Absence_injustifiee = cumul_Abs_injustif
//Ancienneté
si date_debut_contrat <> 0 alors
ancienneté = periode(date_debut_contrat;date_paye)/365
sinon ancienneté = periode(date_entree_entreprise;date_paye)/365
finsi
//Salaire base annuel : faire une moyenne
date_deb_periode = CoderDate(1;12;Année_paye-1)
nb_mois_moyenne = periode(date_paye;date_deb_periode)/365*12
salaire_base = salaire_base_annuel / nb_mois_moyenne
// Calcul prime
si ancienneté >= 12 et ancienneté <60 alors
Pourcentage_prime = 59
finsi
si ancienneté >= 60 et ancienneté <120 alors
Pourcentage_prime= 64
finsi
si ancienneté >= 120 et ancienneté <180 alors
Pourcentage_prime = 73
finsi
si ancienneté >= 180 et ancienneté <240 alors
Pourcentage_prime = 80
finsi
si ancienneté >= 240 et ancienneté <300 alors
Pourcentage_prime = 85
finsi
si ancienneté >= 300 et ancienneté <360 alors
Pourcentage_prime = 100
finsi
si ancienneté >= 360 alors
Pourcentage_prime = 100
finsi
//condition en cas de STC ; proratisation uniquement si départ à la retraite ou mise en retraite
si motif_fin_ct = 3 ou motif_fin_ct = 6
alors Fin_Avenant = 0
finsi
si mois_paye = 11 ou (Date_fin_contrat >=date_début_paye et Date_fin_contrat <=date_fin_paye et Fin_Avenant =0 ) alors
Si nb_Absence_injustifiee >= 1 alors
prime = Salaire_base * (Pourcentage_prime/100) / 365 * (365-Tot_absences_deductible) / 2
finsi
si nb_Absence_injustifiee >= 2 alors
prime = 0
finsi
si montan
Narration structurée
Arbre des cas et actions extrait du code par le parseur CEGI.
Résumé : Formule contenant 10 branche(s) conditionnelle(s), 7 affectation(s).
Si (((`lot_paye` égal à « VAC ») ou (`code_type_particulier` égal à « AE »)) ou (`exclusion_prime` égal à 1))
Alors :
Sortir de la formule sans calcul
Affecter à `Absence_deductible_jours` la valeur de `Abs_deductible_jour`
Affecter à `Absence_deductible_heures` la valeur de (`Abs_deducitble_heures` divisé par (5.05 multiplié par (`hrs_contrat` divisé par `hrs_etab`)))
Affecter à `Tot_absences_deductible` la valeur de (`Absence_deductible_jours` plus `Absence_deductible_heures`)
Affecter à `nb_Absence_injustifiee` la valeur de `cumul_Abs_injustif`
Si (`date_debut_contrat` différent de 0)
Alors :
Affecter à `ancienneté` la valeur de (calculer une période(`date_debut_contrat`, `date_paye`) divisé par 365)
Sinon :
Affecter à `ancienneté` la valeur de (calculer une période(`date_entree_entreprise`, `date_paye`) divisé par 365)
Affecter à `date_deb_periode` la valeur de construire une date(1, 12, (`Année_paye` moins 1))
Affecter à `nb_mois_moyenne` la valeur de ((calculer une période(`date_paye`, `date_deb_periode`) divisé par 365) multiplié par 12)
Affecter à `salaire_base` la valeur de (`salaire_base_annuel` divisé par `nb_mois_moyenne`)
Si ((`ancienneté` supérieur ou égal à 12) et (`ancienneté` inférieur à 60))
Alors :
Affecter à `Pourcentage_prime` la valeur de 59
Si ((`ancienneté` supérieur ou égal à 60) et (`ancienneté` inférieur à 120))
Alors :
Affecter à `Pourcentage_prime` la valeur de 64
Si ((`ancienneté` supérieur ou égal à 120) et (`ancienneté` inférieur à 180))
Alors :
Affecter à `Pourcentage_prime` la valeur de 73
Si ((`ancienneté` supérieur ou égal à 180) et (`ancienneté` inférieur à 240))
Alors :
Affecter à `Pourcentage_prime` la valeur de 80
Si ((`ancienneté` supérieur ou égal à 240) et (`ancienneté` inférieur à 300))
Alors :
Affecter à `Pourcentage_prime` la valeur de 85
Si ((`ancienneté` supérieur ou égal à 300) et (`ancienneté` inférieur à 360))
Alors :
Affecter à `Pourcentage_prime` la valeur de 100
Si (`ancienneté` supérieur ou égal à 360)
Alors :
Affecter à `Pourcentage_prime` la valeur de 100
Si ((`motif_fin_ct` égal à 3) ou (`motif_fin_ct` égal à 6))