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

initie la réforme allègement général 2,4 smic

parent 6736fa32
No related branches found
No related tags found
No related merge requests found
Pipeline #22180 passed
Showing
with 1039 additions and 0 deletions
import os
from openfisca_core.parameters import ParameterNode
from openfisca_core.reforms import Reform
from ...inflaters import inflate_parameters
from openfisca_france_reforms.contrefactuel_plf.revalorisation_retraite_brute import retraite_brute, retraite_complementaire, retraite_de_base, retraite_de_base_n_1
from .taux_allegement_general import taux_allegement_general
year_contrefactuel = 2026
def modify_parameters(parameters):
# del parameters.children['inflateurs']
inflateurs_parameters = ParameterNode(
"inflateurs",
directory_path=os.path.join(os.path.dirname(__file__), "parameters/inflateurs"),
)
parameters.add_child("inflateurs", inflateurs_parameters)
## IR
param_ir = parameters.impot_revenu
liste_param_impot = [
# même ordre des paramètres que dans leximpact-socio-fiscal-openfisca-json/custom/parameters_customizations.json
## revalo sans texte de loi mais usuelle :
param_ir.bareme_ir_depuis_1945.bareme,
param_ir.calcul_impot_revenu.plaf_qf.plafond_avantages_procures_par_demi_part,
param_ir.calcul_impot_revenu.plaf_qf.decote.seuil_couple,
param_ir.calcul_impot_revenu.plaf_qf.decote.seuil_celib,
param_ir.calcul_revenus_imposables.abat_rni.enfant_marie,
param_ir.calcul_revenus_imposables.charges_deductibles.pensions_alimentaires.plafond,
## revalo selon 1e tranche de l'IR
param_ir.calcul_revenus_imposables.deductions.abatpen.min,
param_ir.calcul_revenus_imposables.deductions.abatpen.max,
param_ir.calcul_revenus_imposables.deductions.abatpro.min,
param_ir.calcul_revenus_imposables.deductions.abatpro.max,
param_ir.calcul_revenus_imposables.charges_deductibles.accueil_personne_agee.plafond,
param_ir.calcul_revenus_imposables.abat_rni.contribuable_age_invalide,
## Evolution triennale selon 1e tranche bareme, derniere revalo revenus 2022
# param_ir.calcul_revenus_imposables.rpns.micro.microentreprise.regime_micro_bnc.plafond,
# param_ir.calcul_revenus_imposables.rpns.micro.microentreprise.regime_micro_ba.plafond_recettes,
# param_ir.calcul_revenus_imposables.rpns.micro.microentreprise.regime_micro_bic.services.plafond,
# param_ir.calcul_revenus_imposables.rpns.micro.microentreprise.regime_micro_bic.marchandises.plafond,
]
for noeud in liste_param_impot:
inflate_parameters(
noeud,
inflator=inflateurs_parameters(year_contrefactuel).inflateur_impot,
base_year=year_contrefactuel - 2,
last_year=year_contrefactuel - 1,
start_instant=f"{year_contrefactuel - 1}-01-01",
round_ndigits=0,
)
add_metadata(noeud, {"inflator": "inflateurs.inflateur_impot"})
## CSG
inflate_parameters(
parameters.prelevements_sociaux.contributions_sociales.csg.remplacement.seuils,
inflator=inflateurs_parameters(year_contrefactuel).inflateur_csg,
base_year=year_contrefactuel - 1,
last_year=year_contrefactuel,
start_instant=f"{year_contrefactuel}-01-01",
round_ndigits=0,
)
add_metadata(
parameters.prelevements_sociaux.contributions_sociales.csg.remplacement.seuils,
{"inflator": "inflateurs.inflateur_csg"},
)
## PSS (utilisé pour le calcul des cotisations sociales)
inflate_parameters(
parameters.prelevements_sociaux.pss,
inflator=inflateurs_parameters(year_contrefactuel).inflateur_pss,
base_year=year_contrefactuel - 1,
last_year=year_contrefactuel,
start_instant=f"{year_contrefactuel}-01-01",
round_ndigits=0,
)
add_metadata(
parameters.prelevements_sociaux.pss, {"inflator": "inflateurs.inflateur_pss"}
)
## Aides au logement :
param_apl = parameters.prestations_sociales.aides_logement.allocations_logement
### aides au logement paramètres loyers
list_param_al_loyer = [
param_apl.locatif.formule.l_plafonds_loyers.par_zone,
param_apl.locatif.formule.c_forfait_charges,
param_apl.foyer.al.formule.c_forfait_charges,
param_apl.accession.formule.c_forfait_charges,
param_apl.foyer.al.formule.l_plafonds_loyers,
param_apl.foyer.apl.formule.e_equiv_loyers_eligible,
param_apl.locatif.formule.pp_particip_perso.p0_particip_min.p0_forfait
]
for param in list_param_al_loyer:
inflate_parameters(
param,
inflator=inflateurs_parameters(
year_contrefactuel - 1
).inflateur_aides_logement_loyer,
base_year=year_contrefactuel - 2,
last_year=year_contrefactuel - 1,
start_instant=f"{year_contrefactuel - 1}-10-01",
round_ndigits=2,
ignore_missing_units=True,
)
add_metadata(
param, {"inflator": "inflateurs.inflateur_aides_logement_loyer"}
)
## TODO : rajouter une option pour l'inflation en octobre N-1 tant que décret pour octobre n'est pas sorti
### parametres de ressources
inflate_parameters(
param_apl.locatif.formule.pp_particip_perso.r0_abattement.cas_general,
inflator=inflateurs_parameters(
year_contrefactuel
).inflateur_aides_logement_depenses,
base_year=year_contrefactuel - 1,
last_year=year_contrefactuel,
start_instant=f"{year_contrefactuel}-01-01",
round_ndigits=0,
)
add_metadata(
param_apl.locatif.formule.pp_particip_perso.r0_abattement.cas_general,
{"inflator": "inflateurs.inflateur_aides_logement_depenses"},
)
### attention il y a un sous dossier mayotte qui ne rentre peut être pas dans ce qui devrait être revalorisé. Mais pour l'instant on n'a pas le détail Mayotte
param_apl_etudiant = parameters.prestations_sociales.aides_logement.allocations_logement
### forfait étudiant
list_param_forfait_etudiant = [
param_apl_etudiant.ressources.etudiants.locatif.dar_4_forfait_ressources,
param_apl_etudiant.ressources.etudiants.locatif.dar_5_minoration_boursier,
param_apl_etudiant.ressources.etudiants.foyer.dar_11_forfait_ressources_foyer,
param_apl_etudiant.ressources.etudiants.foyer.dar_12_minoration_boursier,
]
for param in list_param_forfait_etudiant:
inflate_parameters(
param,
inflator=inflateurs_parameters(
year_contrefactuel
).inflateur_aides_logement_forfait_etudiant,
base_year=year_contrefactuel - 1,
last_year=year_contrefactuel,
start_instant=f"{year_contrefactuel}-01-01",
round_ndigits=0,
)
add_metadata(
param,
{"inflator": "inflateurs.inflateur_aides_logement_forfait_etudiant"},
)
## Prestations sociales revalorisees en janvier
param_prestations = parameters.prestations_sociales
list_param_prestats_janvier = [
param_prestations.solidarite_insertion.minimum_vieillesse.aspa.plafond_ressources,
param_prestations.solidarite_insertion.minimum_vieillesse.aspa.montant_maximum_annuel,
]
for param in list_param_prestats_janvier:
inflate_parameters(
param,
inflator=inflateurs_parameters(
year_contrefactuel
).inflateur_prestations_janvier,
base_year=year_contrefactuel - 1,
last_year=year_contrefactuel,
start_instant=f"{year_contrefactuel}-01-01",
round_ndigits=2,
)
add_metadata(param, {"inflator": "inflateurs.inflateur_prestations_janvier"})
list_param_prestats_avril = [
param_prestations.solidarite_insertion.minima_sociaux.rsa.rsa_m.montant_de_base_du_rsa,
param_prestations.solidarite_insertion.minima_sociaux.ppa.pa_m.montant_de_base,
param_prestations.prestations_etat_de_sante.invalidite.asi.plafond_ressource_couple,
param_prestations.prestations_etat_de_sante.invalidite.asi.plafond_ressource_seul,
param_prestations.prestations_etat_de_sante.invalidite.aah.montant,
param_prestations.prestations_familiales.bmaf.bmaf,
param_prestations.education.contrat_engagement_jeune.montants,
]
for param in list_param_prestats_avril:
inflate_parameters(
param,
inflator=inflateurs_parameters(
year_contrefactuel
).inflateur_prestations_avril,
base_year=year_contrefactuel - 1,
last_year=year_contrefactuel,
start_instant=f"{year_contrefactuel}-04-01",
round_ndigits=2,
)
add_metadata(param, {"inflator": "inflateurs.inflateur_prestations_avril"})
# ------- REFORME ALLEGEMENT GENERAUX COTISATIONS PATRONALES -------
# --- ALLEGEMENT GENERAL ---
# seuil (cf. Article 18 III 2° c) de la LFSS2025)
parameters.prelevements_sociaux.reductions_cotisations_sociales.allegement_general.ensemble_des_entreprises.plafond.update(
start=f"{year_contrefactuel}-01-01", value=3
)
# TODO : Dans l'annexe 9 du PLFSS 2025 (p.32) est indiquée une nouvelle formule de la réduction générale afin de prendre en compte la suppression des bandeaux maladie et famille. Les changements apportés par cette formule sont :
# - compensation des bandeaux maladie et famille par une hausse de la valeur de T de 5,80 pts de pourcentage (5,80 n'est pas inscrit mais il peut se déduire des valeurs T évoquées dans l'annexe)
# - une baisse de la valeur T de 2 pts de pourcentage (sur cotis. viellesse)
# - intégration d'une puissance dans la formule pour renforcer la convexité de la courbe (puissance 1,37)
# Toutefois, ces changements ont été évoqués mais pas formalisés dans Légifrance, à la différence de :
# - la hausse du seuil de sortie à 3 Smic (cf. https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000051286005/2026-01-01/)
# - la suppression des bandeaux maladie et famille (cf. Article 18 III 2° b) de la LFSS2025)
# L'ajustement des valeurs T ci-dessous sont donc prossibles :
# Valeur T
# entreprises de moins de 50 salariés
parameters.prelevements_sociaux.reductions_cotisations_sociales.allegement_general.ensemble_des_entreprises.entreprises_de_moins_de_50_salaries.update(
start=f"{year_contrefactuel}-01-01", value=0.3573
# la somme des taux de cotisations : 31.93%
# baisse valeur T (vieillesse) : - 2 ,00 pt
# la suppression des bandeaux : + 5,80 pt
# soit une valeur T de 35,73 %
)
# entreprises de plus de 50 salariés
parameters.prelevements_sociaux.reductions_cotisations_sociales.allegement_general.ensemble_des_entreprises.entreprises_de_50_salaries_et_plus.update(
start=f"{year_contrefactuel}-01-01", value=0.3613
# la somme des taux de cotisations : 32.33%
# baisse valeur T (vieillesse) : - 2 ,00 pt
# la suppression des bandeaux : + 5,80 pt
# soit une valeur T de 36,13 %
)
# --- BANDEAU MALADIE --- (cf. Article 18 III 2° b) de la LFSS2025)
# seuil
parameters.prelevements_sociaux.reductions_cotisations_sociales.alleg_gen.mmid.plafond_smic_2025_01_01.update(
start=f"{year_contrefactuel}-01-01", value=0
)
# reduction
parameters.prelevements_sociaux.reductions_cotisations_sociales.alleg_gen.mmid.taux.update(
start=f"{year_contrefactuel}-01-01", value=0
)
# --- BANDEAU FAMILLE --- (cf. Article 18 III 2° b) de la LFSS2025)
# seuil
parameters.prelevements_sociaux.reductions_cotisations_sociales.allegement_cotisation_allocations_familiales.plafond_smic_2025_01_01.update(
start=f"{year_contrefactuel}-01-01", value=0
)
# reduction
parameters.prelevements_sociaux.reductions_cotisations_sociales.allegement_cotisation_allocations_familiales.reduction.update(
start=f"{year_contrefactuel}-01-01", value=0
)
return parameters
class ReformeAllegementGeneral(Reform):
name = "Contrefactuel PLF"
tax_benefit_system_name = "openfisca_france_with_indirect_taxation"
def apply(self):
self.modify_parameters(modifier_function=modify_parameters)
for variable in [taux_allegement_general, retraite_brute, retraite_complementaire, retraite_de_base, retraite_de_base_n_1]:
self.update_variable(variable)
def add_metadata(parameters, metadata: dict):
if isinstance(parameters, ParameterNode):
for sub_parameter in parameters.children.values():
add_metadata(sub_parameter, metadata)
else:
parameters.metadata.update(metadata)
\ No newline at end of file
description: ensemble des paramètres utilisés pour la revalorisation automatique des paramètres.
\ No newline at end of file
description: Indice des prix à la consommation hors tabac entre octobre de l'avant dernière et de la dernière année avant la revalorisation
values:
2024-01-01:
value: 0.052
2025-01-01:
value: 0.039 # evolution prix entre aout 2023 et aout 2024 (provisoire, à défaut d'octobre)
2026-01-01:
value: 0.07 # evolution prix entre aout 2023 et aout 2024 (provisoire, à défaut d'octobre)
metadata:
short_label: inflation_oct_n_1
unit: /1
reference:
2024-01-01:
title: Projet de loi de financement de la sécurité sociale pour 2024, Article 13, p.40.
href: "https://www.assemblee-nationale.fr/dyn/16/textes/l16b1682_projet-loi#"
notes:
2025-01-01: "https://www.ecologie.gouv.fr/sites/default/files/documents/Brochure-bareme-avril-2023-APL.pdf"
description: Indice des prix des loyers d'octobre N-1
values:
2024-01-01:
value: 0.035
2025-01-01:
value: 0.0326
2026-01-01:
value: 0.05
metadata:
short_label: irl_oct_n_1
unit: /1
reference:
2024-01-01:
title: Projet de loi de finances pour 2024
href: "https://www.assemblee-nationale.fr/dyn/16/textes/l16b1680_projet-loi#_Toc146713346"
description: Indice de référence des loyers du 2e trimestre de l'année en cours
values:
2023-01-01: # attention, année en cours (cf. documentation)
value: 0.035
2024-01-01: # attention, année en cours (cf. documentation)
value: 0.0326
metadata:
short_label: irl_t2
unit: /1
reference:
2023-01-01:
title: Indice de référence des loyers du 2e trimestre 2023
href: https://www.insee.fr/fr/statistiques/7650300
2024-01-01:
title: Indice de référence des loyers du 2e trimestre 2024
href: https://www.insee.fr/fr/statistiques/8220551
documentation: Attention, ce paramètre est revalorisé en octobre ; de ce fait, on le revalorise pour l'année en cours et non pour l'année du PLF.
description: Évolution en moyenne annuelle des prix à la consommation, hors tabac, constatée pour l'avant-dernière année et arrondis à l'euro le plus proche, la fraction d'euro égale à 0,50 étant comptée pour 1
values:
2024-01-01:
value: 0.053
2025-01-01:
value: 0.048
2026-01-01:
value: 0.06
metadata:
short_label: inflation_n_2
unit: /1
reference:
2024-01-01:
title: Rapport économique, social et financier annexé au projet de loi de finances pour 2024, p54
href: "https://www.budget.gouv.fr/documentation/documents-budgetaires/exercice-2024/le-projet-de-loi-de-finances-et-les-documents-annexes-pour-2024"
2025-01-01:
title: Projet de loi de financement de la Sécurité sociale pour 2025, p74
notes:
2024-01-01: "Le tableau récapitulatif des seuils à retenir pour l’année 2024, revalorisés de l’inflation de 2022 s’établissant à + 5,3 %, figure en annexe 2, pour la France métropolitaine et les collectivités d’outre-mer. cf. https://legislation.lassuranceretraite.fr/Pdf/lettre_ministerielle_23112023.pdf"
description: Prévisions d’inflation hors tabac arrêtées à l’été de l’année n, lors de l’élaboration du PLF pour l’année n + 1
values:
2024-01-01:
value: 0
2025-01-01:
value: 0
2026-01-01:
value: 0
metadata:
short_label: inflation_n_1
unit: /1
reference:
2024-01-01:
title: Projet de loi de finances pour 2024, Article 2, p.36
href: "https://www.assemblee-nationale.fr/dyn/16/textes/l16b1680_projet-loi#_Toc146713346"
documentation: L'inflateur de l'impôt dans le contrefactuel est à 0 car le fait d'augmenter les seuils chaque année, n'est pas inscrit dans la loi, il s'agit d'un usage. C'est le PLF qui indque si les seuils seront indexés ou non.
description: Revalorisation d'usage du barème de l'impot sur le revenu, prévisions d’inflation hors tabac arrêtées à l’été de l’année n, lors de l’élaboration du PLF pour l’année n + 1
values:
2024-01-01:
value: 0.08
2025-01-01:
value: 0.06
2026-01-01:
value: 0.1
metadata:
short_label: inflation_n_1
unit: /1
reference:
2024-01-01:
title: Projet de loi de finances pour 2024, Article 2, p.36
href: "https://www.assemblee-nationale.fr/dyn/16/textes/l16b1680_projet-loi#_Toc146713346"
2025-01-01:
title: Projet de loi de finances pour 2024, Article 2, p.36
href: "https://www.assemblee-nationale.fr/dyn/16/textes/l16b1680_projet-loi#_Toc146713346"
2026-01-01:
title: XXXXXX
href: "https://www.assemblee-nationale.fr/dyn/16/textes/l16b1680_projet-loi#_Toc146713346"
documentation: Dans la loi il n'est pas indiqué de revalorisation automatique du barème de l'impôt sur le revenu. Cependant depuis plusieurs dizaine d'années il est d'usage de revaloriser les tranches sur l'inflation de l'année en cours. C'est ce qu'indique ce paramètre qui n'est donc pas utilisé dans les formules du contrefactuel.
description: Moyenne annuelle des prix à la consommation, hors tabac, calculée sur les douze derniers indices mensuels de ces prix publiés par l'INSEE l'avant-dernier mois qui précède la date de revalorisation des prestations concernées.
values:
2024-01-01:
value: 0.046
2025-01-01:
value: 0.019
2026-01-01:
value: 0.04
metadata:
short_label: inflation_n_1_avril
unit: /1
reference:
2024-01-01:
- title: Projet de loi de financement de la sécurité sociale pour 2024, Article 13, p.40.
href: "https://www.assemblee-nationale.fr/dyn/16/textes/l16b1680_projet-loi#_Toc146713346"
- title: Article L161-25 du Code de la Sécurité sociale
href: "https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000031781092"
- title: INSTRUCTION INTERMINISTÉRIELLE N° DSS/2A/2C/2024/42 du 20 mars 2024
href: "https://circulaires.ameli.fr/sites/default/files/directives/Cir-revalo%20rentes%202024%20%20Annexe1.pdf"
- title: "Service public - Prestations familiales et sociales : les nouveaux montants au 1er avril 2024"
href: "https://www.service-public.fr/particuliers/actualites/A16506" # Service public - Prestations familiales et sociales : les nouveaux montants au 1er avril 2024
- title: INSEE - L'essentiel sur... l'inflation
href: "https://www.insee.fr/fr/statistiques/4268033"
2025-01-01:
title: Projet de loi de financement de la sécurité sociale pour 2025, p77
notes:
2025-01-01: "Le niveau de revalorisation est déterminé chaque année en fonction de l'indice des prix à la consommation hors tabac. Alors que les chiffres de l'Insee indiquent un taux d'inflation de 4,9 % sur l'année 2023, la revalorisation au 1er avril 2024 a été établie à 4,6 %. INSEE"
description: Moyenne annuelle des prix à la consommation, hors tabac, calculée sur les douze derniers indices mensuels de ces prix publiés par l'INSEE l'avant-dernier mois qui précède la date de revalorisation des prestations concernées.
values:
2024-01-01:
value: 0.052
2025-01-01:
value: 0.018
2026-01-01:
value: 0.09
metadata:
short_label: inflation_n_1_janvier
unit: /1
reference:
2024-01-01:
title: Projet de loi de financement de la sécurité sociale pour 2024, Article 13, p.40.
href: "https://www.assemblee-nationale.fr/dyn/16/textes/l16b1680_projet-loi#_Toc146713346"
2025-01-01:
title: Projet de loi de financement de la sécurité sociale pour 2024, Article 23, p.55 + Bleu budgétaire p.74
description: évolution salaire estimé en N-1 au moment du PLF
values:
2024-01-01:
value: 0.053
2025-01-01:
value: 0.029
2026-01-01:
value: 0.01
metadata:
short_label: inflateur_pss
unit: /1
reference:
2024-01-01:
title: Rapport économique, social et financier annexé au projet de loi de finances pour 2024, p54
href: "https://www.budget.gouv.fr/documentation/documents-budgetaires/exercice-2024/le-projet-de-loi-de-finances-et-les-documents-annexes-pour-2024"
notes:
2024-01-01 : "En réalité, le PSS a augmenté de +5,4% en 2024 et non +5,3%."
2025-01-01 : "Sur un an, le SMPT calculé à partir des éléments de rémunération soumis aux cotisations sociales enregistre une hausse de 2,9 %. (30 août 2024) cf. https://www.urssaf.org/accueil/espace-medias/communiques-et-dossiers-de-press/communiques-de-presse/masse-salariale-et-effectifs-T2.html En moyenne annuelle, les salaires nominaux décéléreraient en 2024 : +2,9 % prévu pour le SMB (après +4,3 % en 2023) et +2,7 % pour le SMPT (après +4,1 %) (9 juillet 2024) https://www.insee.fr/fr/statistiques/8218882?sommaire=8218910&q=smpt"
description: Taux de revalorisation des retraites au premier janvier
values:
2024-01-01:
value: 0.05
2025-01-01:
value: 0.06
2026-01-01:
value: 0.07
metadata:
short_label: Taux de revalorisation des retraites de base
unit: /1
reference:
2026-01-01:
title: PLFSS 2026, Article XXX
inflator: inflateurs.inflateur_retraites
revaluation_type: legal_revaluation
revaluation_reference:
0001-01-01:
href: https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000036393194/2023-10-21
title: Article L161-23-1 du Code de la sécurité sociale
note: Elle se concrétise par l'application d'un coefficient correspondant à une évolution de la moyenne annuelle des prix à la consommation, hors tabac.
%% Cell type:code id:6f7f9288 tags:
``` python
from openfisca_france import FranceTaxBenefitSystem
from openfisca_core.simulation_builder import SimulationBuilder
from openfisca_france_reforms.contrefactuel_plf.reforme_allegement_general import ReformeAllegementGeneral
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 datetime import date
```
%% Cell type:markdown id:75852fc0 tags:
# Tax benefit system
%% Cell type:code id:bc209f8f tags:
``` python
# Appliquer la réforme sur le système de base
tax_benefit_system = ReformeAllegementGeneral(FranceTaxBenefitSystem())
parameters = tax_benefit_system.parameters
# Créer un simulateur
builder = SimulationBuilder()
```
%% Output
/home/bmichaud/leximpact/openfisca-france-reforms/.venv/lib/python3.11/site-packages/openfisca_france/model/prelevements_obligatoires/taxe_habitation/taxe_habitation_import_baremes_locaux.py:4: UserWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html. The pkg_resources package is slated for removal as early as 2025-11-30. Refrain from using this package or pin to Setuptools<81.
import pkg_resources
%% Cell type:markdown id:472c6b25 tags:
# Valeur des paramètres (avant réforme)
%% Cell type:code id:ddd6cb86 tags:
``` python
temp_period = "2026-01"
```
%% Cell type:code id:b0cd9ee3 tags:
``` python
smic_mensuel = tax_benefit_system.get_parameters_at_instant(
temp_period
).marche_travail.salaire_minimum.smic.smic_b_mensuel
print(f"smic_mensuel : {smic_mensuel}")
```
%% Output
smic_mensuel : 1801.8
%% Cell type:code id:3e3eef62 tags:
``` python
plafond_alleg_gen = tax_benefit_system.get_parameters_at_instant(
temp_period
).prelevements_sociaux.reductions_cotisations_sociales.allegement_general.ensemble_des_entreprises.plafond
print(f"plafond_alleg_gen : {plafond_alleg_gen}")
```
%% Output
plafond_alleg_gen : 3
%% Cell type:code id:a7f492c9 tags:
``` python
# valeur T
valeur_T_moins_50_salaries = tax_benefit_system.get_parameters_at_instant(
temp_period
).prelevements_sociaux.reductions_cotisations_sociales.allegement_general.ensemble_des_entreprises.entreprises_de_moins_de_50_salaries
print(f"valeur_T_moins_50_salaries : {valeur_T_moins_50_salaries}")
valeur_T_plus_50_salaries = tax_benefit_system.get_parameters_at_instant(
temp_period
).prelevements_sociaux.reductions_cotisations_sociales.allegement_general.ensemble_des_entreprises.entreprises_de_50_salaries_et_plus
print(f"valeur_T_plus_50_salaries : {valeur_T_plus_50_salaries}")
```
%% Output
valeur_T_moins_50_salaries : 0.3573
valeur_T_plus_50_salaries : 0.3613
%% Cell type:markdown id:20c5780f tags:
# Cas-type
%% Cell type:code id:e0c053b5 tags:
``` python
# cas-type
smic_annuel = smic_mensuel * 12
cas_type_salaire_de_base = 125/100 * smic_annuel
cas_type_effectif_entreprise = 20
cas_type = {
"familles": {"Famille n°1": {"parents": ["Adulte 1"]}},
"foyers_fiscaux": {"Déclaration d’impôts n°1": {"declarants": ["Adulte 1"]}},
"individus": {
"Adulte 1": {
"date_naissance": {
2026: "1985-11-05"
},
"activite": {
2024: "actif",
2025: "actif",
2026: "actif"
},
"categorie_salarie": {
2024: "prive_non_cadre",
2025: "prive_non_cadre",
2026: "prive_non_cadre",
},
"contrat_de_travail": {
2024: "temps_plein",
2025: "temps_plein",
2026: "temps_plein",
},
"salaire_de_base": {
2024: cas_type_salaire_de_base,
2025: cas_type_salaire_de_base,
2026: cas_type_salaire_de_base
},
"effectif_entreprise": {
2024: cas_type_effectif_entreprise,
2025: cas_type_effectif_entreprise,
2026: cas_type_effectif_entreprise
}
}
},
"menages": {
"Logement principal n°1": {
"enfants": [],
"personne_de_reference": ["Adulte 1"],
}
},
}
```
%% Cell type:code id:618f4cde tags:
``` python
# cas_type = {
# "familles": {"Famille n°1": {"parents": ["Adulte 1"]}},
# "foyers_fiscaux": {"Déclaration d’impôts n°1": {"declarants": ["Adulte 1"]}},
# "individus": {
# "Adulte 1": {
# "date_naissance": {
# 2026: "1985-11-05"
# },
# "activite": {
# 2024: "actif",
# 2025: "actif",
# 2026: "actif"
# },
# "categorie_salarie": {
# 2024: "prive_non_cadre",
# 2025: "prive_non_cadre",
# 2026: "prive_non_cadre",
# },
# "contrat_de_travail": {
# 2024: "temps_plein",
# 2025: "temps_plein",
# 2026: "temps_plein",
# },
# "salaire_de_base": {
# 2024: cas_type_salaire_de_base,
# 2025: cas_type_salaire_de_base,
# 2026: cas_type_salaire_de_base
# },
# "effectif_entreprise": {
# 2024: cas_type_effectif_entreprise,
# 2025: cas_type_effectif_entreprise,
# 2026: cas_type_effectif_entreprise
# }
# }
# },
# "menages": {
# "Logement principal n°1": {
# "enfants": [],
# "personne_de_reference": ["Adulte 1"],
# }
# },
# }
```
%% Cell type:code id:c4bbbe99 tags:
``` python
# cas_type = {
# "familles": {
# "Famille n°1": {
# "enfants": [],
# "parents": ["Adulte 1"],
# "en_couple": {
# 2024: False,
# 2025: False,
# 2026: False
# }
# }
# },
# "foyers_fiscaux": {
# "Déclaration d’impôts n°1": {
# "declarants": ["Adulte 1"],
# "depcom_foyer": {
# 2024: "75107",
# 2025: "75107",
# 2026: "75107"
# },
# "personnes_a_charge": []
# }
# },
# "individus": {
# "Adulte 1": {
# "activite": {
# 2024: "actif",
# 2025: "actif",
# 2026: "actif"
# },
# "categorie_salarie": {
# 2024: "prive_non_cadre",
# 2025: "prive_non_cadre",
# 2026: "prive_non_cadre"
# },
# "contrat_de_travail": {
# 2024: "temps_plein",
# 2025: "temps_plein",
# 2026: "temps_plein"
# },
# "contrat_de_travail_type": {
# 2024: "cdi",
# 2025: "cdi",
# 2026: "cdi"
# },
# "effectif_entreprise": {
# 2024: 20,
# 2025: 20,
# 2026: 20
# },
# "date_naissance": {
# 2026: "1985-11-05"
# },
# "depcom_entreprise": {
# 2024: "75107",
# 2025: "75107",
# 2026: "75107"
# },
# "heures_remunerees_volume": {
# 2024: 1607,
# 2025: 1607,
# 2026: 1607
# },
# "invalidite": {
# 2024: False,
# 2025: False,
# 2026: False
# },
# "salaire_de_base": {
# 2024: "Math.round(smic * 1.25)",
# 2025: "Math.round(smic * 1.25)",
# 2026: "Math.round(smic * 1.25)"
# },
# "statut_marital": {
# 2024: "celibataire",
# 2025: "celibataire",
# 2026: "celibataire"
# },
# "pensions_alimentaires_percues": {
# 2026: 0
# }
# }
# },
# "menages": {
# "Logement principal n°1": {
# "depcom": {
# 2024: "75107",
# 2025: "75107",
# 2026: "75107"
# },
# "enfants": [],
# "personne_de_reference": ["Adulte 1"],
# "statut_occupation_logement": {
# 2024: "locataire_vide",
# 2025: "locataire_vide",
# 2026: "locataire_vide"
# },
# "loyer": {
# 2024: 7200,
# 2025: 7200,
# 2026: 7200
# }
# }
# }
# }
```
%% Cell type:markdown id:f8102708 tags:
# Simulation
%% Cell type:code id:200132fc tags:
``` python
simulation = SimulationBuilder()
simulation_cas_type_ctf = simulation.build_from_entities(tax_benefit_system, cas_type)
```
%% Cell type:markdown id:ac133ad2 tags:
# Résultats
%% Cell type:code id:373f29ca tags:
``` python
result_alleg_gen = simulation_cas_type_ctf.calculate_add("allegement_general", "2026")
print(f"result_alleg_gen : {result_alleg_gen}")
taux_allegement_general = simulation_cas_type_ctf.calculate_add("taux_allegement_general", "2026")
print(f"taux_allegement_general : {taux_allegement_general}")
taux_allegement_general = simulation_cas_type_ctf.calculate("taux_allegement_general", "2026-01")
print(f"taux_allegement_general : {taux_allegement_general}")
result_assiette = simulation_cas_type_ctf.calculate_add("assiette_allegement", "2026")
# print(f"assiette : {result_assiette}")
# print(f"% smic : {result_assiette / smic_annuel}")
result_alleg_mmid = simulation_cas_type_ctf.calculate_add("allegement_cotisation_maladie", "2026")
print(f"result_alleg_mmid : {result_alleg_mmid}")
```
%% Output
result_alleg_gen : [5924.319]
taux_allegement_general : [2.6303997]
taux_allegement_general : [0.2192]
result_alleg_mmid : [0.]
%% Cell type:markdown id:fb1f9107 tags:
# Budget
%% Cell type:code id:61964871 tags:
``` python
from leximpact_survey_scenario.leximpact_survey_scenario import (
LeximpactErfsSurveyScenario,
)
```
%% Output
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
Cell In[12], line 1
----> 1 from leximpact_survey_scenario.leximpact_survey_scenario import (
2 LeximpactErfsSurveyScenario,
3 )
File ~/leximpact/openfisca-france-reforms/.venv/lib/python3.11/site-packages/leximpact_survey_scenario/leximpact_survey_scenario.py:16
14 from openfisca_survey_manager.simulations import SecretViolationError
15 from openfisca_survey_manager.survey_collections import SurveyCollection
---> 16 from openfisca_survey_manager import default_config_files_directory
17 from openfisca_survey_manager.scenarios.abstract_scenario import AbstractSurveyScenario
19 from leximpact_survey_scenario.scenario_tools.inflation_calibration_values import (
20 inflation_coefs,
21 )
ImportError: cannot import name 'default_config_files_directory' from 'openfisca_survey_manager' (/home/bmichaud/leximpact/openfisca-france-reforms/.venv/lib/python3.11/site-packages/openfisca_survey_manager/__init__.py)
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 *
class taux_allegement_general(Variable):
value_type = float
entity = Individu
label = "Taux de réduction générale des cotisations employeur"
definition_period = MONTH
is_period_size_independent = True
set_input = set_input_dispatch_by_period
def formula(individu, period, parameters):
assiette = individu('assiette_allegement', period)
smic_proratise = individu('smic_proratise', period)
effectif_entreprise = individu('effectif_entreprise', period)
# Calcul du taux
# Le montant maximum de l’allègement dépend de l’effectif de l’entreprise.
# Le montant est calculé chaque année civile, pour chaque salarié ;
# il est égal au produit de la totalité de la rémunération annuelle telle
# que visée à l’article L. 242-1 du code de la Sécurité sociale par un
# coefficient.
# Ce montant est majoré de 10 % pour les entreprises de travail temporaire
# au titre des salariés temporaires pour lesquels elle est tenue à
# l’obligation d’indemnisation compensatrice de congés payés.
allegement_general = parameters(period).prelevements_sociaux.reductions_cotisations_sociales.allegement_general
# Du 2003-07-01 au 2005-06-30
if date(2003, 7, 1) <= period.start.date <= date(2005, 6, 30):
seuil = allegement_general.entreprises_ayant_signe_un_accord_de_rtt_avant_le_30_06_2003.plafond
tx_max = allegement_general.entreprises_ayant_signe_un_accord_de_rtt_avant_le_30_06_2003.reduction_maximale
# Du 2005-07-01 au 2019-12-31
elif date(2005, 7, 1) <= period.start.date <= date(2019, 12, 31):
seuil = allegement_general.ensemble_des_entreprises.plafond
petite_entreprise = (effectif_entreprise < 20)
tx_max = (
allegement_general.ensemble_des_entreprises.entreprises_de_20_salaries_et_plus
* not_(petite_entreprise)
+ allegement_general.ensemble_des_entreprises.entreprises_de_moins_de_20_salaries
* petite_entreprise
)
# Après le 2019-12-31
else:
seuil = allegement_general.ensemble_des_entreprises.plafond
petite_entreprise = (effectif_entreprise < 50)
tx_max = (
allegement_general.ensemble_des_entreprises.entreprises_de_50_salaries_et_plus
* not_(petite_entreprise)
+ allegement_general.ensemble_des_entreprises.entreprises_de_moins_de_50_salaries
* petite_entreprise
)
if seuil <= 1:
return 0
ratio_smic_salaire = smic_proratise / (assiette + 1e-16)
# règle d'arrondi: 4 décimales au dix-millième le plus proche
puissance = 1.37
taux_allegement_general = round_(tx_max * (min_(1, max_(seuil * ratio_smic_salaire - 1, 0) / (seuil - 1))) ** puissance, 4)
# Montant de l'allegment
return taux_allegement_general
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment