Skip to content
Snippets Groups Projects
Commit 7af78d3b authored by BENOIT MICHAUD's avatar BENOIT MICHAUD
Browse files

remplacement temporaire du barème d'abattement de la csg imposable salaire

parent 1ea0f32c
Branches
No related tags found
No related merge requests found
Pipeline #21852 passed
Pipeline: leximpact-socio-fiscal-api

#21854

    Pipeline: OpenFisca-JSON-Model

    #21853

      ......@@ -10,6 +10,8 @@ from openfisca_france.model.base import *
      from openfisca_france_reforms.plf_plfss_2026.abattement_retraite import revenu_assimile_pension_apres_abattements, indu_plaf_abat_pen, aide_logement_base_ressources_individu
      from openfisca_france_reforms.contrefactuel_plf.revalorisation_retraite_brute import retraite_brute, retraite_complementaire, retraite_de_base, retraite_de_base_n_1
      # temporaire : exemple suppression bareme (csg_imposable_salaire)
      from openfisca_france_reforms.plf_plfss_2026.exemple_remplacement_bareme_csg import csg_imposable_salaire
      import os
      ......@@ -202,61 +204,24 @@ def modify_parameters(parameters):
      .children["abatpen"] \
      .children[param_name] = getattr(node, param_name)
      # # Charger le nouveau paramètre `forfait`
      # abatpen_node = ParameterNode(
      # "abatpen",
      # directory_path=os.path.join(
      # os.path.dirname(__file__),
      # "parameters/impot_revenu/calcul_revenus_imposables/deductions/abatpen"
      # ),
      # )
      # parameters.children['impot_revenu'] \
      # .children['calcul_revenus_imposables'] \
      # .children['deductions'] \
      # .children['abatpen'] \
      # .children['forfait'] = abatpen_node.forfait
      # # écraser les paramètres max, min, taux
      # abatpen_max_node = ParameterNode(
      # "max",
      # directory_path=os.path.join(
      # os.path.dirname(__file__),
      # "parameters/impot_revenu/calcul_revenus_imposables/deductions/abatpen"
      # ),
      # )
      # parameters.children["impot_revenu"] \
      # .children["calcul_revenus_imposables"] \
      # .children["deductions"] \
      # .children["abatpen"] \
      # .children["max"] = abatpen_max_node.max
      # # min
      # abatpen_min_node = ParameterNode(
      # "min",
      # directory_path=os.path.join(
      # os.path.dirname(__file__),
      # "parameters/impot_revenu/calcul_revenus_imposables/deductions/abatpen"
      # ),
      # )
      # parameters.children["impot_revenu"] \
      # .children["calcul_revenus_imposables"] \
      # .children["deductions"] \
      # .children["abatpen"] \
      # .children["min"] = abatpen_min_node.min
      # # taux
      # abatpen_taux_node = ParameterNode(
      # "taux",
      # directory_path=os.path.join(
      # os.path.dirname(__file__),
      # "parameters/impot_revenu/calcul_revenus_imposables/deductions/abatpen"
      # ),
      # )
      # parameters.children["impot_revenu"] \
      # .children["calcul_revenus_imposables"] \
      # .children["deductions"] \
      # .children["abatpen"] \
      # .children["taux"] = abatpen_taux_node.taux
      # --- Temporaire : exemple remplacement bareme (CSG)
      dir_suppression_bareme_exemple = os.path.join(
      os.path.dirname(__file__),
      "parameters/prelevements_sociaux/contributions_sociales/csg/activite"
      )
      for param_name in ["abattement", "abattement_2",]:
      node = ParameterNode(param_name, directory_path=dir_suppression_bareme_exemple)
      print(f"{param_name} in node.__dict__: {param_name in node.__dict__}")
      print(f"node.children: {list(node.children.keys())}")
      parameters.children["prelevements_sociaux"] \
      .children["contributions_sociales"] \
      .children["csg"] \
      .children["activite"] \
      .children[param_name] = getattr(node, param_name)
      return parameters
      ......@@ -273,3 +238,6 @@ class PlfPlfss2026(Reform):
      self.update_variable(aide_logement_base_ressources_individu)
      for variable in [retraite_brute, retraite_complementaire, retraite_de_base, retraite_de_base_n_1]:
      self.update_variable(variable)
      # temporaire : exemple remplacement bareme (csg)
      self.update_variable(csg_imposable_salaire)
      import logging
      from numpy import busday_count, datetime64, logical_or as or_, logical_and as and_, timedelta64
      from openfisca_core.periods import Period
      from openfisca_france.model.base import *
      from openfisca_france.model.prelevements_obligatoires.prelevements_sociaux.cotisations_sociales.base import (
      apply_bareme)
      from openfisca_france.model.prelevements_obligatoires.prelevements_sociaux.contributions_sociales.base import montant_csg_crds_bareme
      log = logging.getLogger(__name__)
      class csg_imposable_salaire(Variable):
      calculate_output = calculate_output_add
      value_type = float
      label = 'CSG imposables sur les salaires'
      entity = Individu
      definition_period = MONTH
      set_input = set_input_divide_by_period
      def formula_2026_01_01(individu, period, parameters):
      assiette_csg_abattue = individu('assiette_csg_abattue', period)
      assiette_csg_non_abattue = individu('assiette_csg_non_abattue', period)
      plafond_securite_sociale = individu('plafond_securite_sociale', period)
      csg_parameters = parameters(period).prelevements_sociaux.contributions_sociales.csg
      montant_csg = montant_csg_crds_bareme(
      base_avec_abattement = assiette_csg_abattue,
      base_sans_abattement = assiette_csg_non_abattue,
      abattement_parameter = csg_parameters.activite.abattement_2,
      law_node = csg_parameters.activite.imposable,
      plafond_securite_sociale = plafond_securite_sociale,
      )
      return montant_csg
      def formula(individu, period, parameters):
      assiette_csg_abattue = individu('assiette_csg_abattue', period)
      assiette_csg_non_abattue = individu('assiette_csg_non_abattue', period)
      plafond_securite_sociale = individu('plafond_securite_sociale', period)
      csg_parameters = parameters(period).prelevements_sociaux.contributions_sociales.csg
      montant_csg = montant_csg_crds_bareme(
      base_avec_abattement = assiette_csg_abattue,
      base_sans_abattement = assiette_csg_non_abattue,
      abattement_parameter = csg_parameters.activite.abattement,
      law_node = csg_parameters.activite.imposable,
      plafond_securite_sociale = plafond_securite_sociale,
      )
      return montant_csg
      \ No newline at end of file
      description: Taux d'abattement pour frais professionnels appliqué sur l'assiette prise en compte pour le calcul de la contribution sociale généralisée (CSG) prélevée sur les salaires, selon le seuil de l'assiette comptée en plafonds de sécurité sociale (PSS)
      brackets:
      - threshold:
      1998-01-01:
      value: 0
      2026-01-01:
      value: null
      rate:
      1991-02-01:
      value: 0.05
      2005-01-01:
      value: 0.03
      2012-01-01:
      value: 0.0175
      2026-01-01:
      value: null
      - threshold:
      2011-01-01:
      value: 4
      2026-01-01:
      value: null
      rate:
      2011-01-01:
      value: 0
      2026-01-01:
      value: null
      metadata:
      short_label: Taux d'abattement, pour frais professionnels, appliqué sur l'assiette de la CSG
      last_value_still_valid_on: "2024-07-22"
      label_en: CSG - rates on work incomes
      ipp_csv_id: csg_abt
      reference:
      1991-02-01:
      title: Loi 90-1168 du 29/12/90, art. 127 à 135 (LF pour 1991)
      href: https://www.legifrance.gouv.fr/jorf/article_jo/JORFARTI000001948311
      1998-01-01:
      title: Loi 97-1164 du 19/12/1997, art. 5 (LFSS pour 1998)
      href: https://www.legifrance.gouv.fr/affichTexteArticle.do?idArticle=LEGIARTI000006757359&cidTexte=JORFTEXT000000569121
      2005-01-01:
      title: Loi 2004-810 du 13/08/2004, art. 72
      href: https://www.legifrance.gouv.fr/affichTexteArticle.do?idArticle=LEGIARTI000006759004&cidTexte=JORFTEXT000000625158
      2011-01-01:
      title: Loi 2010-1594 du 20/12/2010, art. 20 (LFSS pour 2011)
      href: https://www.legifrance.gouv.fr/affichTexteArticle.do?idArticle=LEGIARTI000023262256&cidTexte=JORFTEXT000023261006
      2012-01-01:
      - title: Article L136-2 du Code de la Sécurité sociale
      href: https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000025013432/2024-03-13/
      - title: Loi 2011-1906 du 28/12/2011, art. 17 (LFSS pour 2012)
      href: https://www.legifrance.gouv.fr/affichTexteArticle.do?idArticle=LEGIARTI000025007624&cidTexte=JORFTEXT000025005833
      official_journal_date:
      1991-02-01: "1990-12-30"
      1998-01-01: "1997-12-23"
      2005-01-01: "2004-08-17"
      2011-01-01: "2010-12-21"
      2012-01-01: "2011-12-29"
      notes:
      1991-02-01:
      - title: Une circulaire ministérielle du 16/01/1991 relative à la mise en œuvre de la CSG fournit des indications sur les assiettes et les exonérations.
      rate_unit: /1
      threshold_unit: PSS
      description: Taux d'abattement pour frais professionnels appliqué sur l'assiette prise en compte pour le calcul de la contribution sociale généralisée (CSG) prélevée sur les salaires, selon le seuil de l'assiette comptée en plafonds de sécurité sociale (PSS)
      brackets:
      - threshold:
      1998-01-01:
      value: 0
      2026-01-01:
      value: 0
      rate:
      1991-02-01:
      value: 0.05
      2005-01-01:
      value: 0.03
      2012-01-01:
      value: 0.0175
      2026-01-01:
      value: 0.0176
      - threshold:
      2011-01-01:
      value: 4
      2026-01-01:
      value: 5
      rate:
      2011-01-01:
      value: 0
      2026-01-01:
      value: 0
      metadata:
      short_label: Taux d'abattement, pour frais professionnels, appliqué sur l'assiette de la CSG
      last_value_still_valid_on: "2024-07-22"
      label_en: CSG - rates on work incomes
      ipp_csv_id: csg_abt
      reference:
      1991-02-01:
      title: Loi 90-1168 du 29/12/90, art. 127 à 135 (LF pour 1991)
      href: https://www.legifrance.gouv.fr/jorf/article_jo/JORFARTI000001948311
      1998-01-01:
      title: Loi 97-1164 du 19/12/1997, art. 5 (LFSS pour 1998)
      href: https://www.legifrance.gouv.fr/affichTexteArticle.do?idArticle=LEGIARTI000006757359&cidTexte=JORFTEXT000000569121
      2005-01-01:
      title: Loi 2004-810 du 13/08/2004, art. 72
      href: https://www.legifrance.gouv.fr/affichTexteArticle.do?idArticle=LEGIARTI000006759004&cidTexte=JORFTEXT000000625158
      2011-01-01:
      title: Loi 2010-1594 du 20/12/2010, art. 20 (LFSS pour 2011)
      href: https://www.legifrance.gouv.fr/affichTexteArticle.do?idArticle=LEGIARTI000023262256&cidTexte=JORFTEXT000023261006
      2012-01-01:
      - title: Article L136-2 du Code de la Sécurité sociale
      href: https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000025013432/2024-03-13/
      - title: Loi 2011-1906 du 28/12/2011, art. 17 (LFSS pour 2012)
      href: https://www.legifrance.gouv.fr/affichTexteArticle.do?idArticle=LEGIARTI000025007624&cidTexte=JORFTEXT000025005833
      official_journal_date:
      1991-02-01: "1990-12-30"
      1998-01-01: "1997-12-23"
      2005-01-01: "2004-08-17"
      2011-01-01: "2010-12-21"
      2012-01-01: "2011-12-29"
      notes:
      1991-02-01:
      - title: Une circulaire ministérielle du 16/01/1991 relative à la mise en œuvre de la CSG fournit des indications sur les assiettes et les exonérations.
      rate_unit: /1
      threshold_unit: PSS
      0% Loading or .
      You are about to add 0 people to the discussion. Proceed with caution.
      Please register or to comment