Skip to content
Snippets Groups Projects
Commit 4fdbb8bb authored by Emmanuel Raviart's avatar Emmanuel Raviart
Browse files

Merge branch 'amelioration-cdhr' into 'master'

[PLF2025] Amélioration CDHR

See merge request !49
parents 6159f67c ecccc657
No related branches found
No related tags found
1 merge request!49[PLF2025] Amélioration CDHR
Pipeline #17660 failed
Pipeline: leximpact-socio-fiscal-api

#17662

    Pipeline: OpenFisca-JSON-Model

    #17661

      Showing
      with 211 additions and 11 deletions
      File moved
      ......@@ -10,6 +10,7 @@ from ..inflaters import inflate_parameters
      from openfisca_france_reforms.plf_plfss_2025.allegement import allegement_general
      from openfisca_france_reforms.plf_plfss_2025.cdhr import (
      contribution_differentielle_hauts_revenus_ressources,
      contribution_differentielle_hauts_revenus_decote,
      contribution_differentielle_hauts_revenus_eligible,
      contribution_differentielle_hauts_revenus,
      impots_directs
      ......@@ -137,5 +138,5 @@ class PlfPlfss2025(Reform):
      self.add_variable(contribution_differentielle_hauts_revenus_ressources)
      self.add_variable(contribution_differentielle_hauts_revenus_eligible)
      self.add_variable(contribution_differentielle_hauts_revenus)
      self.add_variable(contribution_differentielle_hauts_revenus_decote)
      self.update_variable(impots_directs)
      ......@@ -48,7 +48,7 @@ class contribution_differentielle_hauts_revenus_eligible(Variable):
      calculate_output = calculate_output_divide
      def formula_2024_01_01(foyer_fiscal, period, parameters): # PLF 2025 sur revenus 2024
      # Il est institué une contribution à la charge des contribuables
      # I. - Il est institué une contribution à la charge des contribuables
      # domiciliés fiscalement en France au sens de l’article 4 B (TODO hypothèse = toujours vrai)
      # dont le revenu du foyer fiscal tel que défini au II
      contribution_differentielle_hauts_revenus_ressources = foyer_fiscal("contribution_differentielle_hauts_revenus_ressources", period)
      ......@@ -66,10 +66,64 @@ class contribution_differentielle_hauts_revenus_eligible(Variable):
      return revenu_celibataire_eligible + revenu_couple_eligible
      class contribution_differentielle_hauts_revenus_decote(Variable):
      value_type = float
      entity = FoyerFiscal
      label = "Décote de la contribution différentielle sur les hauts revenus"
      # reference = TODO
      definition_period = YEAR
      end = '2026-12-31'
      calculate_output = calculate_output_divide
      documentation = '''
      Selon "Évaluations préalables des articles du projet de loi" :
      Pour atténuer l’effet de seuil lié à l’entrée dans le champ de cette nouvelle contribution, un mécanisme de décote
      est prévu. Ce mécanisme, qui vise à éviter les ressauts d’imposition potentiellement excessifs, bénéficiera aux
      contribuables célibataires, veufs, séparés ou divorcés dont le RFR est compris entre 250 000 € et 330 000 € et aux
      contribuables soumis à imposition commune dont le RFR est compris entre 500 000 € et 660 000 €.
      '''
      def formula_2024_01_01(foyer_fiscal, period, parameters): # PLF 2025 sur revenus 2024
      # (12) « V. – Toutefois, lorsque le revenu mentionné au II est inférieur ou égal à 330 000 € pour les contribuables célibataires,
      # veufs, séparés ou divorcés et à 660 000 € pour les contribuables soumis à imposition commune,
      contribution_differentielle_hauts_revenus_ressources = foyer_fiscal("contribution_differentielle_hauts_revenus_ressources", period)
      cdhr_parameters = parameters(period).impot_revenu.contributions_exceptionnelles.contribution_differentielle_hauts_revenus
      nb_adult = foyer_fiscal("nb_adult", period)
      celibataire = (nb_adult == 1)
      couple = (nb_adult == 2)
      condition_revenus_celibataire = celibataire * (contribution_differentielle_hauts_revenus_ressources <= cdhr_parameters.plafond_revenus_decote_celibataire)
      condition_revenus_couple = couple * (contribution_differentielle_hauts_revenus_ressources <= cdhr_parameters.plafond_revenus_decote_couple)
      # le montant résultant de l’application du 1° du III est diminué de la différence, [différence calculée dans contribution_differentielle_hauts_revenus]
      # lorsqu’elle est positive, entre ce montant
      # et 82,5 % de la différence entre ce revenu et 250 000 € pour les contribuables célibataires,
      # veufs, séparés ou divorcés ou 500 000 € pour les contribuables soumis à imposition commune.
      taux = cdhr_parameters.taux_cdhr
      contribution_differentielle_hauts_revenus_ressources = foyer_fiscal("contribution_differentielle_hauts_revenus_ressources", period)
      impot_cible = contribution_differentielle_hauts_revenus_ressources * taux # = cdhr théorique cible
      decote_celibataire = max_(
      0,
      impot_cible - ( # 'ce montant'
      cdhr_parameters.taux_decote * (
      celibataire * (contribution_differentielle_hauts_revenus_ressources - cdhr_parameters.seuil_celibataire))))
      decote_couple = max_(
      0,
      impot_cible - (
      cdhr_parameters.taux_decote * (
      couple * (contribution_differentielle_hauts_revenus_ressources - cdhr_parameters.seuil_couple))))
      # ajout de l'éligibilité (non répétée dans le texte de loi) pour mettre la décote à zéro si non éligible
      contribution_differentielle_hauts_revenus_eligible = foyer_fiscal("contribution_differentielle_hauts_revenus_eligible", period)
      return contribution_differentielle_hauts_revenus_eligible * ((condition_revenus_celibataire * decote_celibataire) + (condition_revenus_couple * decote_couple))
      class contribution_differentielle_hauts_revenus(Variable):
      value_type = float
      entity = FoyerFiscal
      label = "Contribution différentielle sur les hauts revenus"
      label = "Contribution différentielle sur les hauts revenus (CDHR)"
      # reference = TODO
      definition_period = YEAR
      end = '2026-12-31'
      ......@@ -82,7 +136,11 @@ class contribution_differentielle_hauts_revenus(Variable):
      # (8) « 1° le montant résultant de l’application d’un taux de 20 % au revenu défini au II ;
      taux = parameters(period).impot_revenu.contributions_exceptionnelles.contribution_differentielle_hauts_revenus.taux_cdhr
      contribution_differentielle_hauts_revenus_ressources = foyer_fiscal("contribution_differentielle_hauts_revenus_ressources", period)
      impot_cible = contribution_differentielle_hauts_revenus_ressources * taux
      # [on soustrait la décote définie en V]
      contribution_differentielle_hauts_revenus_decote = foyer_fiscal("contribution_differentielle_hauts_revenus_decote", period)
      impot_cible = (contribution_differentielle_hauts_revenus_ressources * taux) - contribution_differentielle_hauts_revenus_decote
      # (9) « 2° et le montant résultant de la somme de l’impôt sur le revenu et de la contribution prévue à l’article
      # 223 sexies tels que définis au IV,
      # ainsi que des prélèvements libératoires de l’impôt sur le revenu
      ......@@ -110,6 +168,7 @@ class contribution_differentielle_hauts_revenus(Variable):
      # et aux articles 27 et 151 de la loi n° 2020-1721 du 29 décembre 2020 de finances pour 2021 et par les crédits d’impôt prévus par les conventions fiscales internationales, dans la limite de l’impôt dû.
      # (11) « La contribution mentionnée au 2° du III est déterminée sans qu’il soit fait application du 1 du II de l’article 223 sexies.
      #
      # [leximpact : V = décote ajoutée plus haut]
      # (12) « V. – Toutefois, lorsque le revenu mentionné au II est inférieur ou égal à 330 000 € pour les contribuables célibataires,
      # veufs, séparés ou divorcés et à 660 000 € pour les contribuables soumis à imposition commune,
      # le montant résultant de l’application du 1° du III est diminué de la différence, lorsqu’elle est positive,
      ......
      description: Plafond des revenus annuels de contribuable célibataire pour éligibilité à la décote de la contribution différentielle sur les hauts revenus
      values:
      2024-01-01: # PLF 2025 sur revenus 2024
      value: 330_000
      2027-01-01:
      value: null
      metadata:
      short_label: Plafond célib. décote contrib. différentielle hauts revenus
      # reference:
      # 2024-01-01:
      # title: Projet de loi de finances pour 2025
      # href: TODO
      unit: currency_next_year
      description: Plafond des revenus annuels de contribuable en couple pour éligibilité à la décote de la contribution différentielle sur les hauts revenus
      values:
      2024-01-01: # PLF 2025 sur revenus 2024
      value: 660_000
      2027-01-01:
      value: null
      metadata:
      short_label: Plafond célib. décote contrib. différentielle hauts revenus
      # reference:
      # 2024-01-01:
      # title: Projet de loi de finances pour 2025
      # href: TODO
      unit: currency_next_year
      ......@@ -8,6 +8,6 @@ metadata:
      short_label: Seuil célib. contrib. différentielle hauts revenus
      # reference:
      # 2024-01-01:
      # title: Projet de loi de finances pour 2025
      # title: Projet de loi de finances pour 2025, Article 3, I et V
      # href: TODO
      unit: currency_next_year
      ......@@ -8,6 +8,6 @@ metadata:
      short_label: Seuil couple contrib. différentielle hauts revenus
      # reference:
      # 2024-01-01:
      # title: Projet de loi de finances pour 2025
      # title: Projet de loi de finances pour 2025, Article 3, I et V
      # href: TODO
      unit: currency_next_year
      ......@@ -10,4 +10,4 @@ metadata:
      # 2024-01-01:
      # title: Projet de loi de finances pour 2025
      # href: TODO
      #unit: currency_next_year
      unit: /1
      description: Taux de la décote à la contribution différentielle sur les hauts revenus cible
      values:
      2024-01-01: # PLF 2025 sur revenus 2024
      value: 0.825
      2027-01-01:
      value: null
      metadata:
      short_label: Taux décote
      # reference:
      # 2024-01-01:
      # title: Projet de loi de finances pour 2025, Article 3, V
      # href: TODO
      unit: /1
      ......@@ -23,14 +23,54 @@
      2024: -39_900
      contribution_differentielle_hauts_revenus_ressources:
      2024: 300_000
      contribution_differentielle_hauts_revenus_decote:
      # célibataire et revenus à 300_000 <= 330_000
      # 20% de 300_000 = 60_000
      # 60_000 - (82,5 % de (300_000 - 250_000)) = 60_000 - 41_250 = 18_750
      2024: 18_750
      2025: 0
      contribution_differentielle_hauts_revenus:
      # CDHR = 300_000 de RFR * 20% - impot_revenu_restant_a_payer
      2024: 20100
      # CDHR = (300_000 de RFR * 20% - décote) - impot_revenu_restant_a_payer
      # = (60_000 - 18_750) - (-1 pour retirer le signe négatif de l'impôt * -39_900)
      2024: 1350 # était à 20_100 sans décote
      2025: 0
      contribution_differentielle_hauts_revenus_eligible:
      2024: True
      2025: False
      - name: Célibataire à 500 000€ de revenus, au PFU
      reforms: openfisca_france_reforms.plf_plfss_2025.PlfPlfss2025
      period: 2025
      absolute_error_margin: 0.07
      input:
      f3ua:
      2024: 500_000
      output:
      rni:
      2024: 0
      taux_moyen_imposition:
      2024: 0
      contribution_exceptionnelle_hauts_revenus:
      2024: (500_000 - 250_000) * 0.03
      2025: 0
      rfr:
      2024: 500_000
      prelevement_forfaitaire_unique_ir:
      2024: -500_000 * 0.128
      impot_revenu_restant_a_payer:
      2024: -71500
      contribution_differentielle_hauts_revenus_ressources:
      2024: 500_000
      contribution_differentielle_hauts_revenus_decote:
      2024: 0
      2025: 0
      contribution_differentielle_hauts_revenus:
      # CDHR = 500_000 de RFR * 20% - impot_revenu_restant_a_payer
      2024: 500_000 * 0.2 - 71500
      2025: 0
      contribution_differentielle_hauts_revenus_eligible:
      2024: True
      2025: False
      - name: Célibataire à plus de 250 000€ de revenus, au barème
      reforms: openfisca_france_reforms.plf_plfss_2025.PlfPlfss2025
      ......@@ -58,14 +98,66 @@
      2024: -9_786
      contribution_differentielle_hauts_revenus_ressources:
      2024: 300_000 # devrait être différent du rfr ?
      contribution_differentielle_hauts_revenus_decote:
      # célibataire et revenus à 300_000 <= 330_000
      # 20% de 300_000 = 60_000
      # 60_000 - (82,5 % de (300_000 - 250_000)) = 60_000 - 41_250 = 18_750
      2024: 18_750
      contribution_differentielle_hauts_revenus:
      # CDHR = 300_000 de RFR * 20% - 9_786 d'IRRP
      2024: 50214
      # CDHR = (300_000 de RFR * 20% - décote) - 9_786 d'IRRP
      # = (60_000 - 18_750) - 9_786
      2024: 31_464
      2025: 0
      contribution_differentielle_hauts_revenus_eligible:
      2024: True
      2025: False
      - name: Couple à 600_000€ de revenus, au PFU
      reforms: openfisca_france_reforms.plf_plfss_2025.PlfPlfss2025
      period: 2025
      absolute_error_margin: 0.07
      input:
      foyer_fiscal:
      declarants:
      - ind0
      - ind1
      f2dc:
      2024: 600_000
      individus:
      ind0:
      date_naissance: '1970-01-01'
      statut_marital: marie
      ind1:
      date_naissance: '1970-01-01'
      statut_marital: marie
      output:
      contribution_exceptionnelle_hauts_revenus:
      # 3% de 100_000€ (600_000 de rfr - 500_000 de seuil de CEHR pour couple)
      2024: 100_000 * 0.03
      2025: 0
      rfr:
      2024: 600_000
      prelevement_forfaitaire_unique_ir:
      2024: -600_000 * 0.128
      impot_revenu_restant_a_payer:
      2024: -79_800
      contribution_differentielle_hauts_revenus_decote:
      # couple et revenus à 600_000 <= 660_000
      # 20% de 600_000 = 120_000
      # 120_000 - (82,5 % de (600_000 - 500_000)) = 120_000 - 82_500 = 37_500
      2024: 37_500
      2025: 0
      contribution_differentielle_hauts_revenus_ressources:
      2024: 600_000
      contribution_differentielle_hauts_revenus:
      # CDHR = (600_000 de RFR * 20% - décote) - impot_revenu_restant_a_payer + majoration couple
      2024: 600_000 * 0.2 - 37_500 - 79_800 + 12_500 # 15_200 (était 52_700 avant décote)
      2025: 0
      contribution_differentielle_hauts_revenus_eligible:
      2024: True
      2025: False
      - name: Couple à 1_000_000€ de revenus, au PFU
      reforms: openfisca_france_reforms.plf_plfss_2025.PlfPlfss2025
      period: 2025
      ......@@ -95,6 +187,9 @@
      2024: -1_000_000 * 0.128
      impot_revenu_restant_a_payer:
      2024: -143_000
      contribution_differentielle_hauts_revenus_decote:
      2024: 0
      2025: 0
      contribution_differentielle_hauts_revenus_ressources:
      2024: 1_000_000
      contribution_differentielle_hauts_revenus:
      ......@@ -145,6 +240,9 @@
      2024: -155_500
      contribution_differentielle_hauts_revenus_ressources:
      2024: 1_000_000
      contribution_differentielle_hauts_revenus_decote:
      2024: 0
      2025: 0
      contribution_differentielle_hauts_revenus:
      # CDHR = 1_000_000 de RFR * 20% - impot_revenu_restant_a_payer + majoration enfant
      2024: 1_000_000 * 0.2 - 155_500 + 1_500 * 3
      ......@@ -163,6 +261,9 @@
      contribution_differentielle_hauts_revenus_ressources:
      2024: 205_000 # devrait être différent du rfr ?
      output:
      contribution_differentielle_hauts_revenus_decote:
      2024: 0
      2025: 0
      contribution_differentielle_hauts_revenus:
      2024: 0
      2025: 0
      ......
      0% Loading or .
      You are about to add 0 people to the discussion. Proceed with caution.
      Please register or to comment