Rubrique « Plafond Sécurité Sociale 2018 » (code 10400) (RUB_GAIN=0 : retenue, info ou technique selon usage). Actuellement active, variante en vigueur depuis le 2026-01-01. 5 variantes successives au fil du temps. La formule actuelle (1858 octets) référence 19 variable(s) et 4 fonction(s).
Explication
Cette règle calcule le Plafond de la Sécurité Sociale applicable au salarié pour le mois en cours, en l'ajustant à sa situation réelle (durée de présence, temps de travail, absences, cas particuliers). Le point de départ est le plafond mensuel de référence (Plafond_SS), qui est ensuite proratisé selon plusieurs étapes successives.
Premier cas particulier : si la fiche du salarié contient un nombre de jours forcé pour le plafond, on l'applique directement (plafond ramené à ce nombre de jours sur le mois) et le calcul s'arrête là.
Sinon, on procède en plusieurs étapes. D'abord, une proratisation au prorata temporis : on ajuste le plafond en fonction du nombre de jours calendaires réellement couverts par le contrat sur le mois (utile en cas d'entrée ou de sortie en cours de mois). Ensuite, pour les salariés à temps partiel (hors cadres au forfait jours), on réduit encore le plafond proportionnellement aux heures contractuelles par rapport à l'horaire de l'établissement, en tenant compte des heures complémentaires. Les cadres au forfait ne subissent pas cette réduction temps partiel.
Puis on tient compte des absences non rémunérées : le plafond est diminué proportionnellement à la part d'absence non payée, et le nombre de jours d'absence et de jours rémunérés est calculé et arrondi.
Deux cas particuliers écrasent ensuite le résultat : pour les contrats de vacataires, le plafond est recalculé à partir du coefficient de vacation ; pour les situations d'employeurs multiples, si un montant de plafond est saisi directement dans la fiche contrat, c'est ce montant qui s'applique.
Ambiguïté : la variable "test_forfait" n'est pas définie ici, son origine reste à clarifier.
XNb_Jours_Période_Emploi_Contrat = Periode(Date_Déb_Bulletin;Date_Fin_Bulletin)
//XNb_Jours_Calendaires_Mois = Periode(Date_Déb_Mois;Date_Fin_Mois)
XNb_Jours_Calendaires_Mois = Periode(DebutMois(Date_Déb_Bulletin);FinMois(Date_Fin_Bulletin))
// test pour forcer le plafond (en trentième fiche salarié)
Si nbre_jrs_forcer_plafond <> 0 alors
Plafond = Plafond_SS * nbre_jrs_forcer_plafond / XNb_Jours_Calendaires_Mois
quitter
finsi
// 1 Proratisation au prorata temporis du nombre de jours calendaires
Plafond_JC = Plafond_SS * ( XNb_Jours_Période_Emploi_Contrat / XNb_Jours_Calendaires_Mois)
// 2 Proratisation au prorata des salariés à temps partiel Hors Cadre Forfait Jours
Plafond_Temps_Trav = Plafond_JC
Si Heures_Contrat <> Heures_etab et Heures_Contrat <> 0 alors
Plafond_Temps_Trav = Plafond_JC * ((Heures_Contrat + Heures_Compl) / Heures_etab)
Finsi
// Gestion Cadre au forfait
Si Forfait_cadre <> 0 ou test_forfait <> 0 alors
Plafond_Temps_Trav = Plafond_JC
Finsi
// 3 Proratisation au protata des absences non rémunérées
Plafond = Plafond_Temps_Trav * (1- Coeff_Absence_Non_Rem)
XNb_Jours_Absences_NON_Remunérés = Coeff_Absence_Non_Rem * XNb_Jours_Période_Emploi_Contrat
XNb_Jours_Absences_NON_Remunérés = arrondi(XNb_Jours_Absences_NON_Remunérés;1)
XNb_Jours_Période_Remunérés = XNb_Jours_Période_Emploi_Contrat - XNb_Jours_Absences_NON_Remunérés
// Gestion contrats Vacataires Ouverts !!!
Si Coeff_Vacations <> 0 et test_forfait = 0 alors
Plafond = Plafond_SS * Coeff_Vacations
Finsi
// Gestion Employeur Multiple Montant planfond dans la fiche contrat
Si Montant_Contrat <> 0 alors
Plafond = Montant_Contrat
Finsi
// 4 Gestion des régularisation absences
//XNb_Jours_Période_Rémunérée = XNb_Jours_Période_Emploi - XNb_Jours_Absence_Non_Rém
Narration structurée
Arbre des cas et actions extrait du code par le parseur CEGI.
Résumé : Formule contenant 5 branche(s) conditionnelle(s), 8 affectation(s).
Affecter à `XNb_Jours_Période_Emploi_Contrat` la valeur de calculer une période(`Date_Déb_Bulletin`, `Date_Fin_Bulletin`)
Affecter à `XNb_Jours_Calendaires_Mois` la valeur de calculer une période(renvoyer le début du mois(`Date_Déb_Bulletin`), renvoyer la fin du mois(`Date_Fin_Bulletin`))
Si (`nbre_jrs_forcer_plafond` différent de 0)
Alors :
Affecter à `Plafond` la valeur de ((`Plafond_SS` multiplié par `nbre_jrs_forcer_plafond`) divisé par `XNb_Jours_Calendaires_Mois`)
Sortir de la formule sans calcul
Affecter à `Plafond_JC` la valeur de (`Plafond_SS` multiplié par (`XNb_Jours_Période_Emploi_Contrat` divisé par `XNb_Jours_Calendaires_Mois`))
Affecter à `Plafond_Temps_Trav` la valeur de `Plafond_JC`
Si ((`Heures_Contrat` différent de `Heures_etab`) et (`Heures_Contrat` différent de 0))
Alors :
Affecter à `Plafond_Temps_Trav` la valeur de (`Plafond_JC` multiplié par ((`Heures_Contrat` plus `Heures_Compl`) divisé par `Heures_etab`))
Si ((`Forfait_cadre` différent de 0) ou (`test_forfait` différent de 0))
Alors :
Affecter à `Plafond_Temps_Trav` la valeur de `Plafond_JC`
Affecter à `Plafond` la valeur de (`Plafond_Temps_Trav` multiplié par (1 moins `Coeff_Absence_Non_Rem`))
Affecter à `XNb_Jours_Absences_NON_Remunérés` la valeur de (`Coeff_Absence_Non_Rem` multiplié par `XNb_Jours_Période_Emploi_Contrat`)
Affecter à `XNb_Jours_Absences_NON_Remunérés` la valeur de arrondir(`XNb_Jours_Absences_NON_Remunérés`, 1)
Affecter à `XNb_Jours_Période_Remunérés` la valeur de (`XNb_Jours_Période_Emploi_Contrat` moins `XNb_Jours_Absences_NON_Remunérés`)
Si ((`Coeff_Vacations` différent de 0) et (`test_forfait` égal à 0))
Alors :
Affecter à `Plafond` la valeur de (`Plafond_SS` multiplié par `Coeff_Vacations`)
Si (`Montant_Contrat` différent de 0)
Alors :
Affecter à `Plafond` la valeur de `Montant_Contrat`