Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision

Target

Select target project
  • leximpact/simulateur-socio-fiscal/openfisca/openfisca-france-reforms
1 result
Select Git revision
Show changes
Commits on Source (5)
Showing with 157 additions and 371 deletions
......@@ -18,4 +18,12 @@ poetry install
# poetry run python -m openfisca_france_reforms.plf_2022.scripts.run_test
# poetry run python -m openfisca_france_reforms.prime_partage_valeur.scripts.run_test
# poetry run python -m openfisca_france_reforms.plf_plfss_2023.scripts.run_test
```
\ No newline at end of file
```
## Ajouter le PLF/PLFSS
- Copier coller le dossier du plf/plfss de l'année en cours, et renommer l'année en cours par l'année N+1.
Notamment dans le init du dossier remplacer la méthode `PlfPlfss2025` par `PlfPlfss2026`
- Se rendre dans le fichier `openfisca-france-reform > pyproject.toml` :
- Ajouter une ligne : `plf_plfss_2026 = "openfisca_france_reforms.plf_plfss_2026:PlfPlfss2026"`
- Il n'y a rien a faire pour le contrefactuel, il est valable tous les ans
......@@ -45,142 +45,139 @@ def modify_parameters(parameters):
# param_ir.calcul_revenus_imposables.rpns.micro.microentreprise.regime_micro_ba.plafond_recettes,
# param_ir.calcul_revenus_imposables.rpns.micro.microentreprise.regime_micro_bnc.services/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"})
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
### On commente de manière temporaire pour gérer le budget début 2025
# 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"},
# )
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)
### On commente de manière temporaire pour gérer le budget début 2025
# 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"}
# )
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.pp_particip_perso.r0_abattement.cas_general,
# 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=0,
# ignore_missing_units=True,
# )
# add_metadata(
# param, {"inflator": "inflateurs/inflateur_aides_logement_loyer"}
# )
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.pp_particip_perso.r0_abattement.cas_general,
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=0,
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.al_param_r0.r0,
# 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.al_param_r0.r0,
# {"inflator": "inflateurs/inflateur_aides_logement_depenses"},
# )
inflate_parameters(
param_apl.al_param_r0.r0,
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.al_param_r0.r0,
{"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.dar_4,
# param_apl_etudiant.ressources.dar_5,
# param_apl_etudiant.ressources.dar_11,
# param_apl_etudiant.ressources.dar_12,
# ]
# 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"},
# )
param_apl_etudiant = parameters.prestations_sociales.aides_logement.allocations_logement
### forfait étudiant
list_param_forfait_etudiant = [
param_apl_etudiant.ressources.dar_4,
param_apl_etudiant.ressources.dar_5,
param_apl_etudiant.ressources.dar_11,
param_apl_etudiant.ressources.dar_12,
]
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
### On commente de manière temporaire pour gérer le budget début 2025
# 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_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,
......
......@@ -8,7 +8,8 @@ from openfisca_core.model_api import *
from openfisca_france.model.base import *
import os
reform_date = "2025-01-01"
reform_date = "2026-01-01"
def modify_parameters(parameters):
......@@ -20,6 +21,7 @@ def modify_parameters(parameters):
)
parameters.children['inflateurs'].children['inflateur_impot'] = inflateurs.inflateur_impot
parameters.children['inflateurs'].children['inflateur_bmaf'] = inflateurs.inflateur_bmaf
param_ir = parameters.impot_revenu
liste_param_impot = [
......@@ -40,205 +42,24 @@ def modify_parameters(parameters):
inflate_parameters(
noeud,
inflator=parameters(reform_date).inflateurs.inflateur_impot,
base_year=2023,
last_year=2024,
start_instant=f"{2024}-01-01",
base_year=2024,
last_year=2025,
start_instant="2025-01-01",
round_ndigits=0,
)
# # En attendant les véritables PLF et PLFSS 2025,
# # - applique une augmentation de 1 € de chaque seuil du barème de l'IR
# # - applique une augmentation de 1 % du taux de la décote
# impot_revenu = parameters.impot_revenu
# bareme = impot_revenu.bareme_ir_depuis_1945.bareme
# for bracket in bareme.brackets:
# threshold = bracket.threshold
# threshold_value = threshold.get_at_instant(reform_date)
# if threshold_value is not None:
# threshold.update(start=reform_date, value=round(threshold_value * 1.048, 2))
# plaf_qf = impot_revenu.calcul_impot_revenu.plaf_qf
# decote = plaf_qf.decote
param_ce = ParameterNode(
"contribution_exceptionnelle",
directory_path=os.path.join(os.path.dirname(__file__), "parameters/contribution_exceptionnelle/"),
inflate_parameters(
parameters.prestations_sociales.prestations_familiales.bmaf.bmaf,
inflator=parameters(reform_date).inflateurs.inflateur_bmaf,
base_year=2025,
last_year=2026,
start_instant="2026-04-01",
round_ndigits=2,
)
parameters.add_child("contribution_exceptionnelle", param_ce)
param_pfu = ParameterNode(
"pfu",
directory_path=os.path.join(os.path.dirname(__file__), "parameters/pfu/"),
)
parameters.taxation_capital.prelevement_forfaitaire.partir_2018.add_child("pfu", param_pfu)
return parameters
# Cette classe n'hérite pas de ContrefactuelPlf, car actuellement, les méthodes d'une
# réforme ne permettent pas l'héritage entre 2 réformes (La méthode modify_parameters
# n'est pas composable).
# Il faut donc reproduire ici le comportement de la méthode ContrefactuelPlf.apply.
class PlfPlfss2025(Reform):
name = "PLF & PLFSS 2025"
class PlfPlfss2026(Reform):
name = "PLF & PLFSS 2026"
tax_benefit_system_name = "openfisca_france_with_indirect_taxation"
def apply(self):
class contribution_exceptionnelle(Variable):
value_type = float
entity = FoyerFiscal
label = 'Contribution exceptionnelle pour tout le monde en 2025'
reference = 'http://www.legifrance.gouv.fr/affichCode.do?cidTexte=LEGITEXT000006069577&idSectionTA=LEGISCTA000025049019'
definition_period = YEAR
def formula_2025_01_01(foyer_fiscal, period, parameters):
rfr = foyer_fiscal('rfr', period)
bareme = parameters(period).contribution_exceptionnelle.bareme
return -bareme.calc(rfr)
class contribution_exceptionnelle_taux(Variable):
value_type = float
entity = FoyerFiscal
label = 'Contribution exceptionnelle pour tout le monde en 2025'
reference = 'http://www.legifrance.gouv.fr/affichCode.do?cidTexte=LEGITEXT000006069577&idSectionTA=LEGISCTA000025049019'
definition_period = YEAR
def formula_2025_01_01(foyer_fiscal, period, parameters):
rfr = foyer_fiscal('rfr', period)
taux = parameters(period).contribution_exceptionnelle.taux
return -rfr * taux
class impots_directs(Variable):
value_type = float
entity = Menage
label = 'Impôts directs'
reference = 'http://fr.wikipedia.org/wiki/Imp%C3%B4t_direct'
definition_period = YEAR
def formula_2025_01_01(menage, period, parameters):
'''
Pour les impôts définis au niveau du foyer fiscal :
on prend en compte l'impôt des foyers fiscaux dont le déclarant principal est dans le ménage
'''
taxe_habitation = menage('taxe_habitation', period)
irpp_economique_i = menage.members.foyer_fiscal('irpp_economique', period)
irpp_economique = menage.sum(irpp_economique_i, role = FoyerFiscal.DECLARANT_PRINCIPAL)
# On comptabilise ir_pv_immo ici directement, et non pas dans la variable 'impot_revenu_restant_a_payer', car administrativement, cet impôt n'est pas dans l'impot_revenu_restant_a_payer, et n'est déclaré dans le formulaire 2042C que pour calculer le revenu fiscal de référence. On colle à la définition administrative, afin d'avoir une variable 'impot_revenu_restant_a_payer' qui soit comparable à l'IR du simulateur en ligne de la DGFiP
ir_pv_immo_i = menage.members.foyer_fiscal('ir_pv_immo', period)
ir_pv_immo = menage.sum(ir_pv_immo_i, role = FoyerFiscal.DECLARANT_PRINCIPAL)
isf_ifi_i = menage.members.foyer_fiscal('isf_ifi', period)
isf_ifi = menage.sum(isf_ifi_i, role = FoyerFiscal.DECLARANT_PRINCIPAL)
prelevement_liberatoire_autoentrepreneur_i = menage.members.foyer_fiscal('microsocial', period)
prelevement_liberatoire_autoentrepreneur = menage.sum(prelevement_liberatoire_autoentrepreneur_i, role = FoyerFiscal.DECLARANT_PRINCIPAL)
contribution_exceptionnelle_i = menage.members.foyer_fiscal('contribution_exceptionnelle', period)
contribution_exceptionnelle = menage.sum(contribution_exceptionnelle_i, role = FoyerFiscal.DECLARANT_PRINCIPAL)
contribution_exceptionnelle_taux_i = menage.members.foyer_fiscal('contribution_exceptionnelle_taux', period)
contribution_exceptionnelle_taux = menage.sum(contribution_exceptionnelle_taux_i, role = FoyerFiscal.DECLARANT_PRINCIPAL)
return (
taxe_habitation
+ irpp_economique
+ ir_pv_immo
+ isf_ifi
+ prelevement_liberatoire_autoentrepreneur
+ contribution_exceptionnelle
+ contribution_exceptionnelle_taux
)
def formula(menage, period, parameters):
'''
Pour les impôts définis au niveau du foyer fiscal :
on prend en compte l'impôt des foyers fiscaux dont le déclarant principal est dans le ménage
'''
taxe_habitation = menage('taxe_habitation', period)
irpp_economique_i = menage.members.foyer_fiscal('irpp_economique', period)
irpp_economique = menage.sum(irpp_economique_i, role = FoyerFiscal.DECLARANT_PRINCIPAL)
# On comptabilise ir_pv_immo ici directement, et non pas dans la variable 'impot_revenu_restant_a_payer', car administrativement, cet impôt n'est pas dans l'impot_revenu_restant_a_payer, et n'est déclaré dans le formulaire 2042C que pour calculer le revenu fiscal de référence. On colle à la définition administrative, afin d'avoir une variable 'impot_revenu_restant_a_payer' qui soit comparable à l'IR du simulateur en ligne de la DGFiP
ir_pv_immo_i = menage.members.foyer_fiscal('ir_pv_immo', period)
ir_pv_immo = menage.sum(ir_pv_immo_i, role = FoyerFiscal.DECLARANT_PRINCIPAL)
isf_ifi_i = menage.members.foyer_fiscal('isf_ifi', period)
isf_ifi = menage.sum(isf_ifi_i, role = FoyerFiscal.DECLARANT_PRINCIPAL)
prelevement_liberatoire_autoentrepreneur_i = menage.members.foyer_fiscal('microsocial', period)
prelevement_liberatoire_autoentrepreneur = menage.sum(prelevement_liberatoire_autoentrepreneur_i, role = FoyerFiscal.DECLARANT_PRINCIPAL)
return (
taxe_habitation
+ irpp_economique
+ ir_pv_immo
+ isf_ifi
+ prelevement_liberatoire_autoentrepreneur
)
class prelevement_forfaitaire_unique_ir_hors_assurance_vie(Variable):
value_type = float
entity = FoyerFiscal
label = "Partie du prélèvement forfaitaire unique associée à l'impôt sur le revenu (hors assurance-vie, épargne solidaire et produits venant des états non-coopératifs)"
reference = [
'Article 28 de la Loi n° 2017-1837 du 30 décembre 2017 de finances pour 2018 (modifie art. 125 A, 125-0 A, 200 A et art. 117 quater du CGI)',
'https://www.legifrance.gouv.fr/affichTexteArticle.do?idArticle=LEGIARTI000036377422&cidTexte=JORFTEXT000036339197'
]
definition_period = YEAR
def formula_2025_01_01(foyer_fiscal, period, parameters):
P = parameters(period).taxation_capital.prelevement_forfaitaire.partir_2018.pfu
# Revenus des valeurs et capitaux mobiliers hors assurance-vie
revenus_capitaux_prelevement_forfaitaire_unique_ir = foyer_fiscal('revenus_capitaux_prelevement_forfaitaire_unique_ir', period, options = [ADD])
rfr = foyer_fiscal('rfr', period)
assurance_vie_pfu_ir = foyer_fiscal('assurance_vie_pfu_ir', period)
revenus_capitaux_prelevement_forfaitaire_unique_ir_hors_assurance_vie = (
revenus_capitaux_prelevement_forfaitaire_unique_ir
- assurance_vie_pfu_ir
)
# Plus-values
plus_values_prelevement_forfaitaire_unique_ir = foyer_fiscal('plus_values_prelevement_forfaitaire_unique_ir', period)
assiette_pfu_hors_assurance_vie = (
revenus_capitaux_prelevement_forfaitaire_unique_ir_hors_assurance_vie
+ plus_values_prelevement_forfaitaire_unique_ir
) + P.taux_rfr * rfr
return -assiette_pfu_hors_assurance_vie * P.taux
def formula_2018_01_01(foyer_fiscal, period, parameters):
P = parameters(period).taxation_capital.prelevement_forfaitaire.partir_2018
# Revenus des valeurs et capitaux mobiliers hors assurance-vie
revenus_capitaux_prelevement_forfaitaire_unique_ir = foyer_fiscal('revenus_capitaux_prelevement_forfaitaire_unique_ir', period, options = [ADD])
assurance_vie_pfu_ir = foyer_fiscal('assurance_vie_pfu_ir', period)
revenus_capitaux_prelevement_forfaitaire_unique_ir_hors_assurance_vie = (
revenus_capitaux_prelevement_forfaitaire_unique_ir
- assurance_vie_pfu_ir
)
# Plus-values
plus_values_prelevement_forfaitaire_unique_ir = foyer_fiscal('plus_values_prelevement_forfaitaire_unique_ir', period)
assiette_pfu_hors_assurance_vie = (
revenus_capitaux_prelevement_forfaitaire_unique_ir_hors_assurance_vie
+ plus_values_prelevement_forfaitaire_unique_ir
)
return -assiette_pfu_hors_assurance_vie * P.taux_prelevement_forfaitaire_rev_capital_eligibles_pfu_interets_dividendes_etc
self.modify_parameters(modifier_function=modify_parameters)
self.add_variable(contribution_exceptionnelle)
self.add_variable(contribution_exceptionnelle_taux)
for variable in [prelevement_forfaitaire_unique_ir_hors_assurance_vie, impots_directs]:
self.update_variable(variable)
\ No newline at end of file
description: Barème de la contribution exceptionnelle sur tous les revenus
brackets:
- threshold:
2025-01-01:
value: 0
rate:
2025-01-01:
value: 0.01
metadata:
last_value_still_valid_on: "2025-10-09"
short_label: Barème
reference:
2025-01-01:
title: PLF pour 2025
href: https://www.legifrance.gouv.fr/
documentation: Fausse réforme à supprimer !!
description: Taux contribution exceptionnelle
values:
2025-01-01:
value: 0.8
metadata:
short_label: Taux contribution exceptionnelle
last_value_still_valid_on: "2025-10-09"
unit: /1
reference:
2025-01-01:
title: PLF pour 2025
href: https://www.legifrance.gouv.fr/
documentation: Fausse réforme à supprimer !!
\ No newline at end of file
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:
2026-01-01:
value: 0
metadata:
short_label: inflation_n_1
unit: /1
reference:
2026-01-01:
title: XXXXX
href: "https://www.assemblee-nationale.fr/dyn/16/textes/l16b1680_projet-loi#_Toc146713346"
\ No newline at end of file
......@@ -4,6 +4,8 @@ values:
value: 0.048
2025-01-01:
value: 0.02
2026-01-01:
value: 0.1
metadata:
short_label: inflation_n_1
unit: /1
......@@ -12,5 +14,8 @@ metadata:
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
title: Projet de loi de finances pour 2025, Article 2, p.36
href: "https://www.assemblee-nationale.fr/dyn/16/textes/l16b1680_projet-loi#_Toc146713346"
2026-01-01:
title: Projet de loi de finances pour 2026, XX, p.XX
href: "https://www.assemblee-nationale.fr/dyn/16/textes/l16b1680_projet-loi#_Toc146713346"
\ No newline at end of file
description: Taux, au titre de l'impôt sur le revenu, du prélèvement forfaitaire unique (PFU) à partir de 2025
values:
2025-01-01:
value: 0.05
metadata:
short_label: Taux du PFU, au titre de l'IR, à partir de 2025
label_en: Flat tax on capital income (from 2018)
last_value_still_valid_on: "2025-10-09"
unit: /1
reference:
2025-01-01:
title: PLF pour 2025
href: https://www.legifrance.gouv.fr/
documentation: Fausse réforme à supprimer !!
\ No newline at end of file
description: Taux pour le rfr, au titre de l'impôt sur le revenu, du prélèvement forfaitaire unique (PFU) à partir de 2025
values:
2025-01-01:
value: 0.01
metadata:
short_label: Taux du PFU pour le rfr, au titre de l'IR, à partir de 2025
label_en: Flat tax on capital income (from 2018)
last_value_still_valid_on: "2025-10-09"
unit: /1
reference:
2025-01-01:
title: PLF pour 2025
href: https://www.legifrance.gouv.fr/
documentation: Fausse réforme à supprimer !!
\ No newline at end of file
......@@ -31,3 +31,4 @@ build-backend = "poetry.core.masonry.api"
contrefactuel_plf = "openfisca_france_reforms.contrefactuel_plf:ContrefactuelPlf"
# plf_plfss_2024 = "openfisca_france_reforms.plf_plfss_2024:PlfPlfss2024"
# plf_plfss_2025 = "openfisca_france_reforms.plf_plfss_2025:PlfPlfss2025"
plf_plfss_2026 = "openfisca_france_reforms.plf_plfss_2026:PlfPlfss2026"