diff --git a/openfisca_france_reforms/plf_plfss_2025/__init__.py b/openfisca_france_reforms/plf_plfss_2025/__init__.py index bdb409e791f471d092ceb1410cad2c63f39c02a9..4520914ecea4953bd643516833803e0ead8741cf 100644 --- a/openfisca_france_reforms/plf_plfss_2025/__init__.py +++ b/openfisca_france_reforms/plf_plfss_2025/__init__.py @@ -14,7 +14,7 @@ from openfisca_france_reforms.plf_plfss_2025.cdhr import ( contribution_differentielle_hauts_revenus_eligible, contribution_differentielle_hauts_revenus, contribution_exceptionnelle_hauts_revenus_majoration, - impots_directs + revenus_nets_apres_impot_menage ) @@ -137,4 +137,4 @@ class PlfPlfss2025(Reform): self.add_variable(contribution_differentielle_hauts_revenus) self.add_variable(contribution_differentielle_hauts_revenus_decote) self.add_variable(contribution_exceptionnelle_hauts_revenus_majoration) - self.update_variable(impots_directs) + self.update_variable(revenus_nets_apres_impot_menage) diff --git a/openfisca_france_reforms/plf_plfss_2025/cdhr.py b/openfisca_france_reforms/plf_plfss_2025/cdhr.py index 9c575faa048d9b2eb8e74ee9f82cad70c6dcf0a6..c6b2913832fff285f9b0c29e771c42b808eeac6f 100644 --- a/openfisca_france_reforms/plf_plfss_2025/cdhr.py +++ b/openfisca_france_reforms/plf_plfss_2025/cdhr.py @@ -1,4 +1,4 @@ -from openfisca_france.model.base import calculate_output_divide, FoyerFiscal, max_, Variable, YEAR, Menage +from openfisca_france.model.base import calculate_output_divide, FoyerFiscal, max_, Variable, YEAR, Menage, ADD @@ -208,70 +208,32 @@ class contribution_differentielle_hauts_revenus(Variable): return contribution_differentielle_hauts_revenus_eligible * contribution_differentielle_hauts_revenus_montant -class impots_directs(Variable): + +class revenus_nets_apres_impot_menage(Variable): value_type = float entity = Menage - label = 'Impôts directs' - reference = 'http://fr.wikipedia.org/wiki/Imp%C3%B4t_direct' + label = 'Revenus nets après impôts' 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) - + def formula_2025_01_01(menage, period): + revenus_nets_menage = menage('revenus_nets_menage', period, options = [ADD]) 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_differentielle_hauts_revenus_i = menage.members.foyer_fiscal('contribution_differentielle_hauts_revenus', period) contribution_differentielle_hauts_revenus = menage.sum(contribution_differentielle_hauts_revenus_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) - return ( - taxe_habitation - + irpp_economique - + ir_pv_immo - + isf_ifi - + prelevement_liberatoire_autoentrepreneur - - contribution_differentielle_hauts_revenus # en négatif car les autres dispositifs sont en négatif - ) - - 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) + return revenus_nets_menage + irpp_economique + isf_ifi - contribution_differentielle_hauts_revenus + def formula_2024_01_01(menage, period): + revenus_nets_menage = menage('revenus_nets_menage', period, options = [ADD]) 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 - ) \ No newline at end of file + return revenus_nets_menage + irpp_economique + isf_ifi \ No newline at end of file