Rubrique « Traitement Fiscal Hres Suppl. EXO 2019 » (code 10040) (RUB_GAIN=0 : retenue, info ou technique selon usage). Actuellement active, variante en vigueur depuis le 2022-10-01. 4 variantes successives au fil du temps. La formule actuelle (1887 octets) référence 17 variable(s) et 1 fonction(s).
Explication
Cette règle gère le traitement fiscal des heures supplémentaires exonérées (dispositif de défiscalisation 2019). Elle détermine, pour le mois en cours, quelle part des heures supplémentaires reste défiscalisée (non soumise à l'impôt sur le revenu) et quelle part devient imposable, en fonction d'un plafond annuel d'exonération fiscale.
Le principe : on cumule le montant des heures supplémentaires exonérées déjà payées depuis le début de l'année avec celui du mois en cours, puis on compare ce cumul au plafond fiscal maximum autorisé.
Trois situations sont possibles. Premier cas : si le cumul annuel, mois en cours inclus, reste inférieur ou égal au plafond fiscal, alors la totalité du montant des heures supplémentaires du mois est défiscalisée et vient en déduction du net imposable. Le salarié bénéficie pleinement de l'exonération.
Deuxième cas : c'est le mois charnière, celui où l'on franchit le plafond. Le cumul antérieur était encore sous le seuil, mais avec le mois en cours il le dépasse. La règle scinde alors le montant du mois en deux parts : la portion qui reste sous le plafond demeure défiscalisée et réduit le net imposable, tandis que le dépassement devient imposable. Le mois de passage est mémorisé pour traçabilité.
Troisième cas : le plafond annuel était déjà atteint avant ce mois. La totalité des heures supplémentaires du mois est alors fiscalisée, soumise à l'impôt comme un salaire ordinaire, et aucune déduction du net imposable n'est appliquée.
En sortie, la règle alimente les montants défiscalisés, fiscalisés et la déduction à appliquer sur le net imposable du bulletin de paie.
//REPARTITION AUTOMATIQUE DES HRES FISCALISEES
// Gestion des heures Exo et Non Exo fiscales
Xheures_supp = Cpt_hres_exo_soc + Cpt_hres_non_exo_soc
XMt_hres_exo_soc_Mois_en_cours = Cpt_Mt_hres_exo_soc_Mois_en_cours
XMt_hres_non_exo_soc_Mois_en_cours = Cpt_Mt_hres_non_exo_soc_Mois_en_cours
XCum_Montant_Hrs_Supp_Exo = Cum_mt_hrs_supp_exo_annuel + XMt_hres_exo_soc_Mois_en_cours
// Si le cumul des HS mois en cours inclus est inférieur au seuil Max fiscal, le montant des heures HS ne sont pas imposables
si XCum_Montant_Hrs_Supp_Exo <= Mt_Max_Exo_Fiscal alors
XMt_hres_exo_soc_Mois_en_cours = arrondi(XMt_hres_exo_soc_Mois_en_cours;0.01)
Xmt_hres_défiscalisées = XMt_hres_exo_soc_Mois_en_cours //
XEn_Moins_Net_Imposable = arrondi(XMt_hres_exo_soc_Mois_en_cours;0.0)
// Gestion des heures supp le mois de passage de la limite du montant fiscal Max
sinonsi Cum_mt_hrs_supp_exo_annuel <= Mt_Max_Exo_Fiscal et XCum_Montant_Hrs_Supp_Exo > Mt_Max_Exo_Fiscal alors
Xmt_hres_fiscalisées = XCum_Montant_Hrs_Supp_Exo - Mt_Max_Exo_Fiscal
Xmt_hres_fiscalisées = arrondi(Xmt_hres_fiscalisées;0.01)
Xmt_hres_défiscalisées = XMt_hres_exo_soc_Mois_en_cours - Xmt_hres_fiscalisées
XEn_Moins_Net_Imposable = Mt_Max_Exo_Fiscal - Cum_mt_hrs_supp_exo_annuel
XEn_Moins_Net_Imposable = arrondi(XEn_Moins_Net_Imposable;0.01)
Mois_passage = Mois_paye
//Xmt_hres_défiscalisées = XMt_hres_exo_soc_Mois_en_cours
// Si le cumul des HS mois en cours inclus est donc supérieur au seuil Max fiscal, le montant des heures HS sont imposables
sinon
Xhres_fiscalisées = Cpt_hres_exo_soc
Xmt_hres_fiscalisées = XMt_hres_exo_soc_Mois_en_cours
Xmt_hres_fiscalisées = arrondi(Xmt_hres_fiscalisées;0.01)
XEn_Moins_Net_Imposable = 0
finsi
//***************************
Narration structurée
Arbre des cas et actions extrait du code par le parseur CEGI.
Résumé : Formule contenant 1 branche(s) conditionnelle(s), 4 affectation(s).
Affecter à `Xheures_supp` la valeur de (`Cpt_hres_exo_soc` plus `Cpt_hres_non_exo_soc`)
Affecter à `XMt_hres_exo_soc_Mois_en_cours` la valeur de `Cpt_Mt_hres_exo_soc_Mois_en_cours`
Affecter à `XMt_hres_non_exo_soc_Mois_en_cours` la valeur de `Cpt_Mt_hres_non_exo_soc_Mois_en_cours`
Affecter à `XCum_Montant_Hrs_Supp_Exo` la valeur de (`Cum_mt_hrs_supp_exo_annuel` plus `XMt_hres_exo_soc_Mois_en_cours`)
Si (`XCum_Montant_Hrs_Supp_Exo` inférieur ou égal à `Mt_Max_Exo_Fiscal`)
Alors :
Affecter à `XMt_hres_exo_soc_Mois_en_cours` la valeur de arrondir(`XMt_hres_exo_soc_Mois_en_cours`, 0.01)
Affecter à `Xmt_hres_défiscalisées` la valeur de `XMt_hres_exo_soc_Mois_en_cours`
Affecter à `XEn_Moins_Net_Imposable` la valeur de arrondir(`XMt_hres_exo_soc_Mois_en_cours`, 0.0)
Sinon, si ((`Cum_mt_hrs_supp_exo_annuel` inférieur ou égal à `Mt_Max_Exo_Fiscal`) et (`XCum_Montant_Hrs_Supp_Exo` supérieur à `Mt_Max_Exo_Fiscal`)) :
Affecter à `Xmt_hres_fiscalisées` la valeur de (`XCum_Montant_Hrs_Supp_Exo` moins `Mt_Max_Exo_Fiscal`)
Affecter à `Xmt_hres_fiscalisées` la valeur de arrondir(`Xmt_hres_fiscalisées`, 0.01)
Affecter à `Xmt_hres_défiscalisées` la valeur de (`XMt_hres_exo_soc_Mois_en_cours` moins `Xmt_hres_fiscalisées`)
Affecter à `XEn_Moins_Net_Imposable` la valeur de (`Mt_Max_Exo_Fiscal` moins `Cum_mt_hrs_supp_exo_annuel`)
Affecter à `XEn_Moins_Net_Imposable` la valeur de arrondir(`XEn_Moins_Net_Imposable`, 0.01)
Affecter à `Mois_passage` la valeur de `Mois_paye`
Sinon :
Affecter à `Xhres_fiscalisées` la valeur de `Cpt_hres_exo_soc`
Affecter à `Xmt_hres_fiscalisées` la valeur de `XMt_hres_exo_soc_Mois_en_cours`
Affecter à `Xmt_hres_fiscalisées` la valeur de arrondir(`Xmt_hres_fiscalisées`, 0.01)
Affecter à `XEn_Moins_Net_Imposable` la valeur de 0