Rubrique « PRIME DE JUIN » (code 7107) (RUB_GAIN=0 : retenue, info ou technique selon usage). Inactive à ce jour. Une seule variante de formule définie.
Explication
Cette règle calcule le montant de la prime de juin versée aux salariés en CDI. Les salariés qui ne sont pas en CDI ne reçoivent rien : la règle s'arrête immédiatement pour eux.
Pour les autres, on prend comme date de référence le 4 juillet de l'année précédente. Deux situations annulent la prime (montant ramené à zéro) : si le contrat du salarié a commencé après cette date de référence (donc le salarié est trop récent dans l'établissement), ou si son contrat s'est terminé avant la fin de la période de paie en cours.
Quand la prime est due, son montant de base est proratisé selon le temps de travail du salarié : on applique le rapport entre son horaire personnel et l'horaire de référence de l'établissement. Un salarié à temps partiel touche donc une fraction proportionnelle.
L'absentéisme est ensuite pris en compte : les 30 premiers jours d'absence sont tolérés sans impact, mais au-delà, chaque jour d'absence supplémentaire vient réduire la prime au prorata de l'année (365 jours).
Un traitement particulier est prévu pour certaines qualifications infirmières : IADE, IBODE, IDE, IDE Cadre, Infirmière responsable adjointe d'unité de soins et IDE Puéricultrice. Pour ces professions, le calcul de base reprend la proratisation horaire. Si elles ont été embauchées après le 4 juillet de l'année précédente, leur prime est en plus proratisée selon le nombre de mois restants dans l'année à compter de leur mois d'entrée. L'abattement pour absentéisme au-delà de 30 jours s'applique également, sinon le montant proratisé à l'entrée est conservé tel quel.
si type_contrat <> 'CDI' alors quitter
finsi
//test presence
//annee = extraire(anneedate(date_deb_paye);Longueur(anneedate(date_deb_paye))-1;2)
annee = anneedate(date_deb_paye)- 1
date = coderdate(04;07;annee)
si date_deb_contrat > date alors Montant = 0
finsi
si date_fin_contrat <> 0 et date_fin_contrat < date_fin_paye
alors Montant = 0
finsi
//proratisation selon horaire de base
Montant = prime * hor_base / hor_etab
//test absenteisme
si nbre_jours_abs > 30 alors
Montant = Montant * (365-(nbre_jours_abs - 30))/365
finsi
//exception infirmiere
si qualif = 'IADE'ou qualif ='IBODE'ou qualif ='I.D.E.'ou qualif ='IDE CADRE'ou qualif ='INFIRMIERE RESPONSABLE ADJ. UNITE SOIN'ou qualif ='IDE PUERICULTRICE' alors
Montant = prime * hor_base / hor_etab
// proratisation à l'entrée
si date_deb_contrat > date alors
num_mois_entree = extraire(date_deb_contrat;4;2)
Montant1 = Montant *(12 - num_mois_entree)/12
si nbre_jours_abs > 30 alors
Montant = Montant1 * (365-(nbre_jours_abs - 30))/365
si nbre_jours_abs < 30 alors
Montant = Montant1
finsi
finsi
finsi
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), 3 affectation(s).
Si (`type_contrat` différent de « CDI »)
Alors :
Sortir de la formule sans calcul
Affecter à `annee` la valeur de (extraire l'année d'une date(`date_deb_paye`) moins 1)
Affecter à `date` la valeur de construire une date(04, 07, `annee`)
Si (`date_deb_contrat` supérieur à `date`)
Alors :
Affecter à `Montant` la valeur de 0
Si ((`date_fin_contrat` différent de 0) et (`date_fin_contrat` inférieur à `date_fin_paye`))
Alors :
Affecter à `Montant` la valeur de 0
Affecter à `Montant` la valeur de ((`prime` multiplié par `hor_base`) divisé par `hor_etab`)
Si (`nbre_jours_abs` supérieur à 30)
Alors :
Affecter à `Montant` la valeur de ((`Montant` multiplié par (365 moins (`nbre_jours_abs` moins 30))) divisé par 365)
Si ((((((`qualif` égal à « IADE ») ou (`qualif` égal à « IBODE »)) ou (`qualif` égal à « I.D.E. »)) ou (`qualif` égal à « IDE CADRE »)) ou (`qualif` égal à « INFIRMIERE RESPONSABLE ADJ. UNITE SOIN »)) ou (`qualif` égal à « IDE PUERICULTRICE »))
Alors :
Affecter à `Montant` la valeur de ((`prime` multiplié par `hor_base`) divisé par `hor_etab`)
Si (`date_deb_contrat` supérieur à `date`)
Alors :
Affecter à `num_mois_entree` la valeur de appeler extraire(`date_deb_contrat`, 4, 2)
Affecter à `Montant1` la valeur de ((`Montant` multiplié par (12 moins `num_mois_entree`)) divisé par 12)
Si (`nbre_jours_abs` supérieur à 30)
Alors :
Affecter à `Montant` la valeur de ((`Montant1` multiplié par (365 moins (`nbre_jours_abs` moins 30))) divisé par 365)