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é sur le bulletin de paie en cours, en l'ajustant à la situation réelle de la période travaillée. Le point de départ est le plafond officiel de la Sécurité Sociale, qui est ensuite réduit (proratisé) selon plusieurs critères successifs.
D'abord, on compare la durée d'emploi sur le bulletin au nombre total de jours calendaires du mois concerné, afin de tenir compte d'une éventuelle entrée ou sortie en cours de mois.
Un cas particulier est prévu : si la fiche du salarié indique un nombre de jours forcé pour le plafond, ce nombre est utilisé directement et le calcul s'arrête là.
Sinon, la règle applique trois ajustements en cascade :
1. Une proratisation selon les jours calendaires réellement couverts par la période d'emploi.
2. Une proratisation selon le temps de travail contractuel : si le salarié est à temps partiel (heures du contrat différentes des heures de l'établissement), le plafond est réduit en proportion, en tenant compte des heures complémentaires. Les cadres au forfait jours échappent à cette réduction et gardent le plafond plein.
3. Une réduction liée aux absences non rémunérées de la période.
Un cas spécifique est traité pour les vacataires : s'il s'agit d'un contrat de vacations (hors forfait), le plafond est calculé directement à partir d'un coefficient de vacation appliqué au plafond officiel, ce qui remplace les calculs précédents.
Le résultat final est le plafond personnalisé du salarié, utilisé ensuite pour calculer les cotisations sociales plafonnées du bulletin.
//XNb_Jours_Période_Emploi = Periode(Date_Déb_Bulletin;Date_Fin_Bulletin)
//XNb_Jours_Calendaires_Mois = Periode(Date_Déb_Mois;Date_Fin_Mois)
XNb_Jours_Période_Emploi = Periode(Date_Déb_Bulletin;Date_Fin_Bulletin)
Si MoisDate(Date_Fin_Bulletin) = MoisDate(Date_Fin_Mois) alors
XNb_Jours_Calendaires_Mois = Periode(Date_Déb_Mois;Date_Fin_Mois)
Sinon
XNb_Jours_Calendaires_Mois = Periode(DebutMois(Date_Déb_Bulletin);FinMois(Date_Fin_Bulletin))
Finsi
// 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 / 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 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)
// Gestion contrats Vacataires Ouverts !!!
Si Coeff_Vacations <> 0 et test_forfait = 0 alors
Plafond = Plafond_SS * Coeff_Vacations
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), 4 affectation(s).
Affecter à `XNb_Jours_Période_Emploi` la valeur de calculer une période(`Date_Déb_Bulletin`, `Date_Fin_Bulletin`)
Si (extraire le mois d'une date(`Date_Fin_Bulletin`) égal à extraire le mois d'une date(`Date_Fin_Mois`))
Alors :
Affecter à `XNb_Jours_Calendaires_Mois` la valeur de calculer une période(`Date_Déb_Mois`, `Date_Fin_Mois`)
Sinon :
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` divisé par `XNb_Jours_Calendaires_Mois`))
Affecter à `Plafond_Temps_Trav` la valeur de `Plafond_JC`
Si (`Heures_Contrat` différent de `Heures_etab`)
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`))
Si ((`Coeff_Vacations` différent de 0) et (`test_forfait` égal à 0))
Alors :
Affecter à `Plafond` la valeur de (`Plafond_SS` multiplié par `Coeff_Vacations`)