@@ -407,56 +407,99 @@ def compute_allegement_general(individu, period, parameters):
407407 '''
408408
409409 assiette = individu ('assiette_allegement' , period )
410- smic_proratise = individu ('smic_proratise' , period )
411- effectif_entreprise = individu ('effectif_entreprise' , period )
412-
413- # Calcul du taux
414- # Le montant maximum de l’allègement dépend de l’effectif de l’entreprise.
415- # Le montant est calculé chaque année civile, pour chaque salarié ;
416- # il est égal au produit de la totalité de la rémunération annuelle telle
417- # que visée à l’article L. 242-1 du code de la Sécurité sociale par un
418- # coefficient.
419- # Ce montant est majoré de 10 % pour les entreprises de travail temporaire
420- # au titre des salariés temporaires pour lesquels elle est tenue à
421- # l’obligation d’indemnisation compensatrice de congés payés.
422-
423- allegement_general = parameters (period ).prelevements_sociaux .reductions_cotisations_sociales .allegement_general
424-
425- # Du 2003-07-01 au 2005-06-30
426- if date (2003 , 7 , 1 ) <= period .start .date <= date (2005 , 6 , 30 ):
427- seuil = allegement_general .entreprises_ayant_signe_un_accord_de_rtt_avant_le_30_06_2003 .plafond
428- tx_max = allegement_general .entreprises_ayant_signe_un_accord_de_rtt_avant_le_30_06_2003 .reduction_maximale
429- # Du 2005-07-01 au 2019-12-31
430- elif date (2005 , 7 , 1 ) <= period .start .date <= date (2019 , 12 , 31 ):
431- seuil = allegement_general .ensemble_des_entreprises .plafond
432- petite_entreprise = (effectif_entreprise < 20 )
433- tx_max = (
434- allegement_general .ensemble_des_entreprises .entreprises_de_20_salaries_et_plus
435- * not_ (petite_entreprise )
436- + allegement_general .ensemble_des_entreprises .entreprises_de_moins_de_20_salaries
437- * petite_entreprise
438- )
439- # Après le 2019-12-31
440- else :
441- seuil = allegement_general .ensemble_des_entreprises .plafond
442- petite_entreprise = (effectif_entreprise < 50 )
443- tx_max = (
444- allegement_general .ensemble_des_entreprises .entreprises_de_50_salaries_et_plus
445- * not_ (petite_entreprise )
446- + allegement_general .ensemble_des_entreprises .entreprises_de_moins_de_50_salaries
447- * petite_entreprise
448- )
410+ taux_allegement_general = individu ('taux_allegement_general' , period )
449411
450- if seuil <= 1 :
451- return 0
412+ # Montant de l'allegment
413+ return taux_allegement_general * assiette
452414
453- ratio_smic_salaire = smic_proratise / (assiette + 1e-16 )
454415
455- # règle d'arrondi: 4 décimales au dix-millième le plus proche
456- taux_allegement_general = round_ (tx_max * min_ (1 , max_ (seuil * ratio_smic_salaire - 1 , 0 ) / (seuil - 1 )), 4 )
416+ class taux_allegement_general (Variable ):
417+ value_type = float
418+ entity = Individu
419+ label = 'Taux de réduction générale des cotisations employeur'
420+ definition_period = MONTH
421+ is_period_size_independent = True
422+ set_input = set_input_dispatch_by_period
457423
458- # Montant de l'allegment
459- return taux_allegement_general * assiette
424+ def formula_2026_01_01 (individu , period , parameters ):
425+
426+ # cf. Décret n° 2025-887 du 4 septembre 2025
427+ # https://www.legifrance.gouv.fr/jorf/id/JORFTEXT000052194026
428+ # https://boss.gouv.fr/portail/accueil/actualites-boss-et-rescrits/actualites-boss/2025/septembre/reforme-des-allegements-generaux.html
429+
430+ assiette = individu ('assiette_allegement' , period )
431+ smic_proratise = individu ('smic_proratise' , period )
432+ effectif_entreprise = individu ('effectif_entreprise' , period )
433+
434+ allegement_general = parameters (period ).prelevements_sociaux .reductions_cotisations_sociales .allegement_general
435+
436+ seuil_taille_entreprise = allegement_general .ensemble_des_entreprises .seuil_taille_entreprise
437+ t_delta = where (effectif_entreprise < seuil_taille_entreprise , allegement_general .ensemble_des_entreprises .t_delta_petites_entreprises , allegement_general .ensemble_des_entreprises .t_delta_grandes_entreprises )
438+ t_min = allegement_general .ensemble_des_entreprises .t_min
439+ seuil_sortie = allegement_general .ensemble_des_entreprises .plafond
440+ puissance = allegement_general .ensemble_des_entreprises .puissance
441+ remuneration = (assiette + 1e-16 )
442+ ratio_salaire_smic = remuneration / smic_proratise
443+ condition_sortie_seuil = ratio_salaire_smic < seuil_sortie
444+
445+ taux_allegement_general = t_min + round_ (
446+ t_delta * (max_ (((1 / 2 ) * (3 * (smic_proratise / remuneration ) - 1 )), 0 ) ** puissance ), 4 )
447+
448+ taux_allegement_general = condition_sortie_seuil * taux_allegement_general
449+ taux_allegement_general = min_ (t_min + t_delta , taux_allegement_general )
450+
451+ return taux_allegement_general
452+
453+ def formula (individu , period , parameters ):
454+ # Calcul du taux
455+ # Le montant maximum de l’allègement dépend de l’effectif de l’entreprise.
456+ # Le montant est calculé chaque année civile, pour chaque salarié ;
457+ # il est égal au produit de la totalité de la rémunération annuelle telle
458+ # que visée à l’article L. 242-1 du code de la Sécurité sociale par un
459+ # coefficient.
460+ # Ce montant est majoré de 10 % pour les entreprises de travail temporaire
461+ # au titre des salariés temporaires pour lesquels elle est tenue à
462+ # l’obligation d’indemnisation compensatrice de congés payés.
463+
464+ assiette = individu ('assiette_allegement' , period )
465+ smic_proratise = individu ('smic_proratise' , period )
466+ effectif_entreprise = individu ('effectif_entreprise' , period )
467+
468+ allegement_general = parameters (period ).prelevements_sociaux .reductions_cotisations_sociales .allegement_general
469+
470+ # Du 2003-07-01 au 2005-06-30
471+ if date (2003 , 7 , 1 ) <= period .start .date <= date (2005 , 6 , 30 ):
472+ seuil = allegement_general .entreprises_ayant_signe_un_accord_de_rtt_avant_le_30_06_2003 .plafond
473+ tx_max = allegement_general .entreprises_ayant_signe_un_accord_de_rtt_avant_le_30_06_2003 .reduction_maximale
474+ # Du 2005-07-01 au 2019-12-31
475+ elif date (2005 , 7 , 1 ) <= period .start .date <= date (2019 , 12 , 31 ):
476+ seuil = allegement_general .ensemble_des_entreprises .plafond
477+ petite_entreprise = (effectif_entreprise < 20 )
478+ tx_max = (
479+ allegement_general .ensemble_des_entreprises .entreprises_de_20_salaries_et_plus
480+ * not_ (petite_entreprise )
481+ + allegement_general .ensemble_des_entreprises .entreprises_de_moins_de_20_salaries
482+ * petite_entreprise
483+ )
484+ # Après le 2019-12-31
485+ elif date (2019 , 12 , 31 ) <= period .start .date <= date (2025 , 12 , 31 ):
486+ seuil = allegement_general .ensemble_des_entreprises .plafond
487+ petite_entreprise = (effectif_entreprise < 50 )
488+ tx_max = (
489+ allegement_general .ensemble_des_entreprises .entreprises_de_50_salaries_et_plus
490+ * not_ (petite_entreprise )
491+ + allegement_general .ensemble_des_entreprises .entreprises_de_moins_de_50_salaries
492+ * petite_entreprise
493+ )
494+
495+ if seuil <= 1 :
496+ return 0
497+
498+ ratio_smic_salaire = smic_proratise / (assiette + 1e-16 )
499+ # règle d'arrondi: 4 décimales au dix-millième le plus proche
500+ taux_allegement_general = round_ (tx_max * min_ (1 , max_ (seuil * ratio_smic_salaire - 1 , 0 ) / (seuil - 1 )), 4 )
501+
502+ return taux_allegement_general
460503
461504
462505class allegement_cotisation_allocations_familiales (Variable ):
@@ -466,6 +509,7 @@ class allegement_cotisation_allocations_familiales(Variable):
466509 reference = 'https://www.urssaf.fr/portail/home/employeur/calculer-les-cotisations/les-taux-de-cotisations/la-cotisation-dallocations-famil/la-reduction-du-taux-de-la-cotis.html'
467510 definition_period = MONTH
468511 set_input = set_input_divide_by_period
512+ end = '2025-12-31'
469513
470514 def formula_2015_01_01 (individu , period , parameters ):
471515 allegement_cotisation_allocations_familiales_base = individu ('allegement_cotisation_allocations_familiales_base' , period )
@@ -481,6 +525,7 @@ class allegement_cotisation_allocations_familiales_base(Variable):
481525 reference = 'https://www.urssaf.fr/portail/home/employeur/calculer-les-cotisations/les-taux-de-cotisations/la-cotisation-dallocations-famil/la-reduction-du-taux-de-la-cotis.html'
482526 definition_period = MONTH
483527 set_input = set_input_divide_by_period
528+ end = '2025-12-31'
484529
485530 def formula_2015_01_01 (individu , period , parameters ):
486531 stagiaire = individu ('stagiaire' , period )
@@ -536,6 +581,7 @@ class allegement_cotisation_maladie(Variable):
536581 set_input = set_input_divide_by_period
537582 label = 'Allègement des cotisations employeur d’assurance maladie sur les bas et moyens salaires (Ex-CICE)'
538583 reference = 'https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000037947559'
584+ end = '2025-12-31'
539585
540586 def formula_2019_01_01 (individu , period , parameters ):
541587 allegement_cotisation_maladie_base = individu ('allegement_cotisation_maladie_base' , period )
@@ -551,6 +597,7 @@ class allegement_cotisation_maladie_base(Variable):
551597 set_input = set_input_divide_by_period
552598 label = 'Allègement des cotisations employeur d’assurance maladie sur les bas et moyens salaires (Ex-CICE)'
553599 reference = 'https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000037947559'
600+ end = '2025-12-31'
554601
555602 def formula_2019_01_01 (individu , period , parameters ):
556603 # propose 3 modes de paiement possibles
0 commit comments