Rubrique « PRIME ANNUELLE D'ASSIDUITE » (code 7374) (RUB_GAIN=0 : retenue, info ou technique selon usage). Inactive à ce jour. Une seule variante de formule définie.
Explication
Cette règle détermine le montant de la prime annuelle d'assiduité versée au salarié. Elle calcule un montant proportionnel à la présence effective du salarié sur la période, puis applique des réductions (voire une suppression) en cas d'absences pour maladie ou selon le type de contrat.
Le calcul commence par l'ancienneté du salarié, mesurée à partir de sa date d'entrée. Si aucune date d'entrée n'est renseignée, l'ancienneté est considérée comme nulle.
Les règles d'attribution dépendent ensuite du type de contrat. Pour un salarié en CDD, la prime n'est versée que si l'ancienneté atteint au moins six mois. Pour un salarié en CDI, la prime est calculée systématiquement, sans condition d'ancienneté.
Le montant de la prime est proportionnel au temps de présence : on part du montant de référence de la prime, on retire la part correspondant aux heures d'absence du salarié (les jours d'absence étant convertis en heures sur la base de 5,05 heures par jour, additionnés aux heures d'absence déjà comptabilisées), et on rapporte le tout au volume horaire normal de l'établissement.
Des réductions s'appliquent ensuite en fonction des jours d'arrêt maladie sur la période : à partir de 3 jours de maladie, la prime est divisée par deux ; à partir de 6 jours, elle est divisée par quatre ; à partir de 11 jours, elle est totalement supprimée.
Enfin, les salariés rattachés au lot de paie des vacataires ne perçoivent pas cette prime : son montant est ramené à zéro dans ce cas.
Ancienneté = Arrondi(((datecourante+1)-
Evaluer( // test si la date 'entre' est renseignée
// si date 'entre' est inférieure à 1/1/1900
// alors date 'entre' non renseigné
Max(date_entree;coderdate(1;1;1900))=CoderDate(1;1;1900)
// si date non renseigne alors age = 0
:DateCourante;date_entree))/365;0.01;-1)
si type_contrat = 'CDD' alors
si ancienneté >= 0.5 alors
heures_absences = (nb_jours_abs * 5.05) + nb_heures_abs
prime = Montant * (hres_cnt - heures_absences) / hres_etb
finsi
finsi
si type_contrat = 'CDI' alors
heures_absences = (nb_jours_abs * 5.05) + nb_heures_abs
prime = Montant * (hres_cnt - heures_absences) / hres_etb
finsi
si jrs_mal >= 3 alors
prime = (prime = Montant * (hres_cnt - heures_absences) / hres_etb
) / 2
finsi
si jrs_mal >= 6 alors
prime = (prime = Montant * (hres_cnt - heures_absences) / hres_etb
) / 4
finsi
si jrs_mal >= 11 alors
prime = 0
finsi
si lot_paie = 'VAC'alors
prime = 0
finsi
Narration structurée
Arbre des cas et actions extrait du code par le parseur CEGI.
Résumé : Formule contenant 6 branche(s) conditionnelle(s), 1 affectation(s).
Affecter à `Ancienneté` la valeur de arrondir(((`datecourante` plus 1) moins évaluer une expression((prendre le maximum(`date_entree`, construire une date(1, 1, 1900)) égal à construire une date(1, 1, 1900)))))
Instruction non interprétée
Si (`type_contrat` égal à « CDD »)
Alors :
Si (`ancienneté` supérieur ou égal à 0.5)
Alors :
Affecter à `heures_absences` la valeur de ((`nb_jours_abs` multiplié par 5.05) plus `nb_heures_abs`)
Affecter à `prime` la valeur de ((`Montant` multiplié par (`hres_cnt` moins `heures_absences`)) divisé par `hres_etb`)
Si (`type_contrat` égal à « CDI »)
Alors :
Affecter à `heures_absences` la valeur de ((`nb_jours_abs` multiplié par 5.05) plus `nb_heures_abs`)
Affecter à `prime` la valeur de ((`Montant` multiplié par (`hres_cnt` moins `heures_absences`)) divisé par `hres_etb`)
Si (`jrs_mal` supérieur ou égal à 3)
Alors :
Affecter à `prime` la valeur de ((`prime` égal à ((`Montant` multiplié par (`hres_cnt` moins `heures_absences`)) divisé par `hres_etb`)) divisé par 2)
Si (`jrs_mal` supérieur ou égal à 6)
Alors :
Affecter à `prime` la valeur de ((`prime` égal à ((`Montant` multiplié par (`hres_cnt` moins `heures_absences`)) divisé par `hres_etb`)) divisé par 4)