Rubrique « Calcul Fillon Brut et Smic Mensuel » (code 13360) (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 (1685 octets) référence 19 variable(s) et 1 fonction(s).
Explication
Cette règle prépare les deux montants de référence utilisés pour le calcul de la réduction Fillon : d'une part le SMIC mensuel reconstitué du salarié, d'autre part son brut de paie correspondant. Elle ajuste ensuite ces montants pour tenir compte des absences éventuelles du mois.
La règle ne s'applique pas aux stagiaires, apprentis et mandataires sociaux : pour ces profils, le calcul est immédiatement abandonné, car ils ne relèvent pas de la réduction Fillon.
Pour tous les autres salariés, la règle procède en plusieurs étapes. Elle reconstitue d'abord le SMIC mensuel théorique du salarié en multipliant ses heures retenues pour le calcul du SMIC par le taux horaire du SMIC en vigueur. Elle calcule ensuite un brut payé du mois (gain brut diminué des primes non impactées par les absences et de la prévoyance versée non soumise) ainsi qu'un brut théorique qui aurait été perçu si le salarié avait été présent tout le mois.
Si ce brut théorique présence complète est positif, le SMIC mensuel est proratisé en fonction du rapport entre le brut réellement payé et le brut théorique : autrement dit, les absences non rémunérées réduisent proportionnellement le SMIC de référence. Le résultat est arrondi au centime.
La règle calcule également un brut rémunéré servant d'assiette, en retirant du gain brut les heures de pause payées et la prévoyance non soumise, lui aussi arrondi au centime.
Enfin, sécurité importante : si à la fois le brut rémunéré et le SMIC proratisé ressortent à zéro (cas typique d'une paie ne contenant qu'une indemnité transactionnelle, sans salaire ni temps de travail), un indicateur d'exclusion est activé pour empêcher le déclenchement de la réduction de cotisations d'allocations familiales complémentaire, qui n'aurait pas de sens dans ce contexte.
//HEURES_SUPP_PLUS_EXO Le compteur sert a calculer le SMIC Fillon après le 1er septembre. Il n'y a plus d'heures exo mais toujours utilisées pour FILLON
si type_ct_part = "STA" ou type_ct_part = "AE" ou type_ct_part = "MAN" alors
quitter
finsi
//XHORAIRE_SMIC = HORAIRE_BASE + HEURES_SUPP_EXO + HRS_COMPL_EXO + HEURES_SUPP_NON_EXO + HRS_COMPL_NON_EXO + HEURES_SUPP_PLUS_EXO
XHORAIRE_SMIC = HEURES_POUR_SMIC
XSMIC_MENSUEL_CONTRACTUEL = (XHORAIRE_SMIC* SMIC_HORAIRE)
XBRUT_PAYE = GAIN_BRUT - PRIMES_NON_IMPACTEE_ABS - PREV_VERSEE_NON_SOUMIS //- XMONTANT_HRS_PAUSE_PAYEES - MONTANT_HRS_SUPP_NON_EXO- MONTANT_HRS_SUPP
XBRUT_PERCU_SI_PRESENT = BRUT_RECONSTITUE + PRIMES_SI_PRESENT - PRIMES_NON_IMPACTEE_ABS + MAINTIEN_SUJETION_NON_PAYEES //- PREV_VERSEE_NON_SOUMIS // + IJ - IJP - MONTANT_HRS_SUPP - MONTANT_HRS_SUPP_NON_EXO
XMONTANT_HRS_PAUSE_PAYEES = MONTANT_HRS_PAUSE_PAYEES
si XBRUT_PERCU_SI_PRESENT > 0 alors
XSMIC_MENSUEL_PRORATA_ABSENCE = (XSMIC_MENSUEL_CONTRACTUEL *( XBRUT_PAYE / XBRUT_PERCU_SI_PRESENT))
XSMIC_MENSUEL_PRORATA_ABSENCE = ARRONDI(XSMIC_MENSUEL_PRORATA_ABSENCE ;0,01)
finsi
XBRUT_REMUNERE = GAIN_BRUT - XMONTANT_HRS_PAUSE_PAYEES - PREV_VERSEE_NON_SOUMIS //- MONTANT_HRS_SUPP - MONTANT_HRS_SUPP_NON_EXO
XBRUT_REMUNERE = arrondi(XBRUT_REMUNERE ;0,01)
//La rubrique 20450 ne doit pas se déclencher dans le cas d'une paye sans brut et sans smic
//Exemple Indemnité Transactionnelle
Si XBRUT_REMUNERE = 0 et XSMIC_MENSUEL_PRORATA_ABSENCE = 0 alors
Test_Exclu_Alloc_Fam_Compl = 1
Finsi
Narration structurée
Arbre des cas et actions extrait du code par le parseur CEGI.
Résumé : Formule contenant 3 branche(s) conditionnelle(s), 7 affectation(s).
Si (((`type_ct_part` égal à « STA ») ou (`type_ct_part` égal à « AE »)) ou (`type_ct_part` égal à « MAN »))
Alors :
Sortir de la formule sans calcul
Affecter à `XHORAIRE_SMIC` la valeur de `HEURES_POUR_SMIC`
Affecter à `XSMIC_MENSUEL_CONTRACTUEL` la valeur de (`XHORAIRE_SMIC` multiplié par `SMIC_HORAIRE`)
Affecter à `XBRUT_PAYE` la valeur de ((`GAIN_BRUT` moins `PRIMES_NON_IMPACTEE_ABS`) moins `PREV_VERSEE_NON_SOUMIS`)
Affecter à `XBRUT_PERCU_SI_PRESENT` la valeur de (((`BRUT_RECONSTITUE` plus `PRIMES_SI_PRESENT`) moins `PRIMES_NON_IMPACTEE_ABS`) plus `MAINTIEN_SUJETION_NON_PAYEES`)
Affecter à `XMONTANT_HRS_PAUSE_PAYEES` la valeur de `MONTANT_HRS_PAUSE_PAYEES`
Si (`XBRUT_PERCU_SI_PRESENT` supérieur à 0)
Alors :
Affecter à `XSMIC_MENSUEL_PRORATA_ABSENCE` la valeur de (`XSMIC_MENSUEL_CONTRACTUEL` multiplié par (`XBRUT_PAYE` divisé par `XBRUT_PERCU_SI_PRESENT`))
Affecter à `XSMIC_MENSUEL_PRORATA_ABSENCE` la valeur de arrondir(`XSMIC_MENSUEL_PRORATA_ABSENCE`, 0,01)
Affecter à `XBRUT_REMUNERE` la valeur de ((`GAIN_BRUT` moins `XMONTANT_HRS_PAUSE_PAYEES`) moins `PREV_VERSEE_NON_SOUMIS`)
Affecter à `XBRUT_REMUNERE` la valeur de arrondir(`XBRUT_REMUNERE`, 0,01)
Si ((`XBRUT_REMUNERE` égal à 0) et (`XSMIC_MENSUEL_PRORATA_ABSENCE` égal à 0))
Alors :
Affecter à `Test_Exclu_Alloc_Fam_Compl` la valeur de 1