Formule de calcul
Réduction d'impôt Duflot - Pinel - Denormandie que metropole
Ce dispositif est à jour !
La dernière date de relecture du dispositif est lundi 1 janvier 2024.
Formule de calcul OpenFisca à compter du 2024-01-01 :
Notes : Duflot + Pinel + Denormandie
def formula_2024_01_01(foyer_fiscal, period, parameters): ''' Duflot + Pinel + Denormandie ''' duflot_pinel_denormandie = parameters(period).impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie cases_investissement = { 2019: [ # A compter de 2019, le plafonnement de la base de calcul est commun à tous les investissements réalisés ('f7nh', 9, 'outremer', 'taux_plein'), # Denormandie 2020 ('f7ql', 9, 'outremer', 'taux_plein'), # Pinel 2021 ('f7nl', 9, 'outremer', 'taux_plein'), # Denormandie 2021 ('f7pg', 9, 'outremer', 'taux_plein'), # Denormandie 2022 ('f7nr', 9, 'outremer', 'taux_plein'), # Denormandie 2023 ('f7qp', 9, 'outremer', 'taux_plein'), # Pinel 2022 ('f7qu', 9, 'outremer', 'taux_reduit'), # Pinel 2023 ('f7sg', 9, 'outremer', 'taux_reduit'), # Pinel 2024 ('f7vg', 9, 'outremer', 'taux_plein'), # Pinel 2023 QPV performant ('f7vz', 9, 'outremer', 'taux_plein'), # Pinel 2024 QPV performant ('f7ng', 6, 'outremer', 'taux_plein'), # Denormandie 2020 ('f7qk', 6, 'outremer', 'taux_plein'), # Pinel 2021 ('f7nk', 6, 'outremer', 'taux_plein'), # Denormandie 2021 ('f7pf', 6, 'outremer', 'taux_plein'), # Denormandie 2022 ('f7nq', 6, 'outremer', 'taux_plein'), # Denormandie 2023 ('f7qo', 6, 'outremer', 'taux_plein'), # Pinel 2022 ('f7qt', 6, 'outremer', 'taux_reduit'), # Pinel 2023 ('f7sf', 6, 'outremer', 'taux_reduit'), # Pinel 2024 ('f7vf', 6, 'outremer', 'taux_plein'), # Pinel 2023 QPV performant ('f7vy', 6, 'outremer', 'taux_plein'), # Pinel 2024 QPV performant ('f7nf', 9, 'metropole', 'taux_plein'), # Denormandie 2020 ('f7qj', 9, 'metropole', 'taux_plein'), # Pinel 2021 ('f7nj', 9, 'metropole', 'taux_plein'), # Denormandie 2021 ('f7nn', 9, 'metropole', 'taux_plein'), # Denormandie 2022 ('f7np', 9, 'metropole', 'taux_plein'), # Denormandie 2023 ('f7qn', 9, 'metropole', 'taux_plein'), # Pinel 2022 ('f7qs', 9, 'metropole', 'taux_reduit'), # Pinel 2023 ('f7se', 9, 'metropole', 'taux_reduit'), # Pinel 2024 ('f7ve', 9, 'metropole', 'taux_plein'), # Pinel 2023 QPV performant ('f7vx', 9, 'metropole', 'taux_plein'), # Pinel 2024 QPV performant ('f7ne', 6, 'metropole', 'taux_plein'), # Denormandie 2020 ('f7qi', 6, 'metropole', 'taux_plein'), # Pinel 2021 ('f7ni', 6, 'metropole', 'taux_plein'), # Denormandie 2021 ('f7nm', 6, 'metropole', 'taux_plein'), # Denormandie 2022 ('f7no', 6, 'metropole', 'taux_plein'), # Denormandie 2023 ('f7qm', 6, 'metropole', 'taux_plein'), # Pinel 2022 ('f7vd', 6, 'metropole', 'taux_plein'), # Pinel 2023 QPV performant ('f7vw', 6, 'metropole', 'taux_plein'), # Pinel 2024 QPV performant ('f7qr', 6, 'metropole', 'taux_reduit'), # Pinel 2023 ('f7sd', 6, 'metropole', 'taux_reduit')], # Pinel 2024 } cases_report = { 2016: ['f7rz', 'f7fv'], 2017: ['f7rb', 'f7fw'], 2018: ['f7rf', 'f7fx'], 2019: ['f7jm', 'f7km', 'f7ja', 'f7jb'], # Pinel et Denormandie 2020: ['f7jn', 'f7jo', 'f7jr', 'f7js'], # Pinel et Denormandie 2021: ['f7jv', 'f7jw', 'f7lg', 'f7lh'], # Pinel et Denormandie 2022: ['f7ji', 'f7jj', 'f7je', 'f7jf'], # Pinel et Denormandie 2023: ['f7ia', 'f7ib', 'f7ie', 'f7if'], # Pinel et Denormandie } cases_prorogation = { # case, n prorogation (3 pour après 9 ans), lieu 2014: [ ('f7rw', 2, 'outremer'), ('f7rv', 2, 'metropole'), ('f7wb_2024', 3, 'outremer'), ('f7wa_2024', 3, 'metropole'),], 2015: [ ('f7si', 2, 'outremer'), ('f7sh', 2, 'metropole'), ('f7xb', 3, 'outremer'), ('f7xa', 3, 'metropole'),], 2017: [ ('f7rs', 1, 'outremer'), ('f7rr', 1, 'metropole')], 2018: [ ('f7ry', 1, 'outremer'), ('f7rx', 1, 'metropole')], } # Prorogation reports 2022, 6 ans f7pk = foyer_fiscal('f7pk_2024', period) # Metropole, 2015 f7pm = foyer_fiscal('f7pm_2024', period) # Metropole, 2016 # Prorogation reports 2023, 9 ans f7of = foyer_fiscal('f7of', period) # Metropole, 2014 # Prorogation reports 2023, 6 ans f7na = foyer_fiscal('f7na', period) # Metropole, 2016 f7nc = foyer_fiscal('f7nc', period) # Metropole, 2017 # Seconde prorogation reports 2023, 6 ans f7sy = foyer_fiscal('f7sy', period) # Metropole, 2014 def calcul_reduction_investissement(cases): reduction = foyer_fiscal.empty_array() depenses_cumulees = foyer_fiscal.empty_array() for case in cases: variable, duree, zone, taux = case depense = foyer_fiscal(variable, period) if taux == 'taux_reduit': if zone == 'metropole': if duree == 9: reduction += around(duflot_pinel_denormandie.location_9_ans.taux_metro * min_(max_(0, duflot_pinel_denormandie.plafond - depenses_cumulees), depense) / duree) elif duree == 6: reduction += around(duflot_pinel_denormandie.location_6_ans.taux_metro * min_(max_(0, duflot_pinel_denormandie.plafond - depenses_cumulees), depense) / duree) elif taux == 'taux_plein': if zone == 'metropole': if duree == 9: reduction += around(duflot_pinel_denormandie.location_9_ans.taux_metro_qpv_performant * min_(max_(0, duflot_pinel_denormandie.plafond - depenses_cumulees), depense) / duree) elif duree == 6: reduction += around(duflot_pinel_denormandie.location_6_ans.taux_metro_qpv_performant * min_(max_(0, duflot_pinel_denormandie.plafond - depenses_cumulees), depense) / duree) depenses_cumulees += depense return reduction def calcul_reduction_investissement_prorogation(cases): reduction = foyer_fiscal.empty_array() depenses_cumulees = foyer_fiscal.empty_array() for case in cases: variable, prorogation, zone = case depense = foyer_fiscal(variable, period) if zone == 'metropole': if prorogation == 1: reduction += around(duflot_pinel_denormandie.taux_prolongation.taux_prolong1_6ans * min_(max_(0, duflot_pinel_denormandie.plafond - depenses_cumulees), depense) / 3) elif prorogation == 2: reduction += around(duflot_pinel_denormandie.taux_prolongation.taux_prolong2_6ans * min_(max_(0, duflot_pinel_denormandie.plafond - depenses_cumulees), depense) / 3) elif prorogation == 3: reduction += around(duflot_pinel_denormandie.taux_prolongation.taux_prolong1_9ans * min_(max_(0, duflot_pinel_denormandie.plafond - depenses_cumulees), depense) / 3) depenses_cumulees += depense return reduction annee_fiscale = period.start.year range_year_investissement = list(set([year for year in range(2016, annee_fiscale + 1)]) & set([year for year in cases_investissement.keys()])) range_year_prorogation = [year for year in cases_prorogation.keys()] range_year_report = list(set([year for year in range(2016, annee_fiscale)]) & set([year for year in cases_report.keys()])) reduction_cumulee = sum([calcul_reduction_investissement(cases_investissement[year]) for year in range_year_investissement]) report = sum([foyer_fiscal(case, period) for year in range_year_report for case in cases_report[year]]) prorogation_cumulee = sum([calcul_reduction_investissement_prorogation(cases_prorogation[year]) for year in range_year_prorogation]) reports_prorogation = f7pk + f7pm + f7of + f7na + f7nc + f7sy return reduction_cumulee + report + prorogation_cumulee + reports_prorogation
Formule OpenFisca sur GithubVariables et paramètres inscrits dans la formule :
Paramètres :
- impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie.location_6_ans.taux_metro
- impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie.location_6_ans.taux_metro_qpv_performant
- impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie.location_9_ans.taux_metro
- impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie.location_9_ans.taux_metro_qpv_performant
- impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie.plafond
- impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie.taux_prolongation.taux_prolong1_6ans
- impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie.taux_prolongation.taux_prolong1_9ans
- impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie.taux_prolongation.taux_prolong2_6ans
Variables utilisées par le cas type :
Formule de calcul OpenFisca à compter du 2023-01-01 :
Notes : Duflot + Pinel + Denormandie
def formula_2023_01_01(foyer_fiscal, period, parameters): ''' Duflot + Pinel + Denormandie ''' duflot_pinel_denormandie = parameters(period).impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie cases_investissement = { 2019: [ # A compter de 2019, le plafonnement de la base de calcul est commun à tous les investissements réalisés ('f7qq', 9, 'outremer', 'taux_plein'), # Pinel 2019 ('f7qd', 9, 'outremer', 'taux_plein'), # Pinel 2020 ('f7nh', 9, 'outremer', 'taux_plein'), # Denormandie 2020 ('f7ql', 9, 'outremer', 'taux_plein'), # Pinel 2021 ('f7nl', 9, 'outremer', 'taux_plein'), # Denormandie 2021 ('f7pg', 9, 'outremer', 'taux_plein'), # Denormandie 2022 ('f7nr', 9, 'outremer', 'taux_plein'), # Denormandie 2023 ('f7qp', 9, 'outremer', 'taux_plein'), # Pinel 2022 ('f7qu', 9, 'outremer', 'taux_reduit'), # Pinel 2023 ('f7vg', 9, 'outremer', 'taux_plein'), # Pinel 2023 QPV performant ('f7qy', 6, 'outremer', 'taux_plein'), # Pinel 2019 ('f7qc', 6, 'outremer', 'taux_plein'), # Pinel 2020 ('f7ng', 6, 'outremer', 'taux_plein'), # Denormandie 2020 ('f7qk', 6, 'outremer', 'taux_plein'), # Pinel 2021 ('f7nk', 6, 'outremer', 'taux_plein'), # Denormandie 2021 ('f7pf', 6, 'outremer', 'taux_plein'), # Denormandie 2022 ('f7nq', 6, 'outremer', 'taux_plein'), # Denormandie 2023 ('f7qo', 6, 'outremer', 'taux_plein'), # Pinel 2022 ('f7qt', 6, 'outremer', 'taux_reduit'), # Pinel 2023 ('f7vf', 6, 'outremer', 'taux_plein'), # Pinel 2023 QPV performant ('f7qx', 9, 'metropole', 'taux_plein'), # Pinel 2019 ('f7qb', 9, 'metropole', 'taux_plein'), # Pinel 2020 ('f7nf', 9, 'metropole', 'taux_plein'), # Denormandie 2020 ('f7qj', 9, 'metropole', 'taux_plein'), # Pinel 2021 ('f7nj', 9, 'metropole', 'taux_plein'), # Denormandie 2021 ('f7nn', 9, 'metropole', 'taux_plein'), # Denormandie 2022 ('f7np', 9, 'metropole', 'taux_plein'), # Denormandie 2023 ('f7qn', 9, 'metropole', 'taux_plein'), # Pinel 2022 ('f7qs', 9, 'metropole', 'taux_reduit'), # Pinel 2023 ('f7ve', 9, 'metropole', 'taux_plein'), # Pinel 2023 QPV performant ('f7qw', 6, 'metropole', 'taux_plein'), # Pinel 2019 ('f7qa', 6, 'metropole', 'taux_plein'), # Pinel 2020 ('f7ne', 6, 'metropole', 'taux_plein'), # Denormandie 2020 ('f7qi', 6, 'metropole', 'taux_plein'), # Pinel 2021 ('f7ni', 6, 'metropole', 'taux_plein'), # Denormandie 2021 ('f7nm', 6, 'metropole', 'taux_plein'), # Denormandie 2022 ('f7no', 6, 'metropole', 'taux_plein'), # Denormandie 2023 ('f7qm', 6, 'metropole', 'taux_plein'), # Pinel 2022 ('f7vd', 6, 'metropole', 'taux_plein'), # Pinel 2023 QPV performant ('f7qr', 6, 'metropole', 'taux_reduit')], # Pinel 2023 } cases_report = { 2015: ['f7cz', 'f7fr'], 2016: ['f7rz', 'f7fv'], 2017: ['f7rb', 'f7fw'], 2018: ['f7re', 'f7rf', 'f7fx'], 2019: ['f7jm', 'f7km', 'f7ja', 'f7jb'], # Pinel et Denormandie 2020: ['f7jn', 'f7jo', 'f7jr', 'f7js'], # Pinel et Denormandie 2021: ['f7jv', 'f7jw', 'f7lg', 'f7lh'], # Pinel et Denormandie 2022: ['f7ji', 'f7jj', 'f7je', 'f7jf'], # Pinel et Denormandie } cases_prorogation = { # case, n prorogation (3 pour après 9 ans), lieu 2014: [ ('f7rw', 2, 'outremer'), ('f7rv', 2, 'metropole'), ('f7wb_2024', 3, 'outremer'), ('f7wa_2024', 3, 'metropole'),], 2016: [ ('f7rq_2023', 1, 'outremer'), ('f7rp_2023', 1, 'metropole')], 2017: [ ('f7rs', 1, 'outremer'), ('f7rr', 1, 'metropole')], } # Prorogation reports 2021, 6 ans f7ri = foyer_fiscal('f7ri_2023', period) # Metropole, 2014 f7uy = foyer_fiscal('f7uy_2023', period) # Metropole, 2015 # Prorogation reports 2022, 6 ans f7pk = foyer_fiscal('f7pk_2024', period) # Metropole, 2015 f7pm = foyer_fiscal('f7pm_2024', period) # Metropole, 2016 def calcul_reduction_investissement(cases): reduction = foyer_fiscal.empty_array() depenses_cumulees = foyer_fiscal.empty_array() for case in cases: variable, duree, zone, taux = case depense = foyer_fiscal(variable, period) if taux == 'taux_reduit': if zone == 'metropole': if duree == 9: reduction += around(duflot_pinel_denormandie.location_9_ans.taux_metro * min_(max_(0, duflot_pinel_denormandie.plafond - depenses_cumulees), depense) / duree) elif duree == 6: reduction += around(duflot_pinel_denormandie.location_6_ans.taux_metro * min_(max_(0, duflot_pinel_denormandie.plafond - depenses_cumulees), depense) / duree) elif taux == 'taux_plein': if zone == 'metropole': if duree == 9: reduction += around(duflot_pinel_denormandie.location_9_ans.taux_metro_qpv_performant * min_(max_(0, duflot_pinel_denormandie.plafond - depenses_cumulees), depense) / duree) elif duree == 6: reduction += around(duflot_pinel_denormandie.location_6_ans.taux_metro_qpv_performant * min_(max_(0, duflot_pinel_denormandie.plafond - depenses_cumulees), depense) / duree) depenses_cumulees += depense return reduction def calcul_reduction_investissement_prorogation(cases): reduction = foyer_fiscal.empty_array() depenses_cumulees = foyer_fiscal.empty_array() for case in cases: variable, prorogation, zone = case depense = foyer_fiscal(variable, period) if zone == 'metropole': if prorogation == 1: reduction += around(duflot_pinel_denormandie.taux_prolongation.taux_prolong1_6ans * min_(max_(0, duflot_pinel_denormandie.plafond - depenses_cumulees), depense) / 3) elif prorogation == 2: reduction += around(duflot_pinel_denormandie.taux_prolongation.taux_prolong2_6ans * min_(max_(0, duflot_pinel_denormandie.plafond - depenses_cumulees), depense) / 3) elif prorogation == 3: reduction += around(duflot_pinel_denormandie.taux_prolongation.taux_prolong1_9ans * min_(max_(0, duflot_pinel_denormandie.plafond - depenses_cumulees), depense) / 3) depenses_cumulees += depense return reduction annee_fiscale = period.start.year range_year_investissement = list(set([year for year in range(2016, annee_fiscale + 1)]) & set([year for year in cases_investissement.keys()])) range_year_prorogation = [year for year in cases_prorogation.keys()] range_year_report = list(set([year for year in range(2015, annee_fiscale)]) & set([year for year in cases_report.keys()])) reduction_cumulee = sum([calcul_reduction_investissement(cases_investissement[year]) for year in range_year_investissement]) report = sum([foyer_fiscal(case, period) for year in range_year_report for case in cases_report[year]]) prorogation_cumulee = sum([calcul_reduction_investissement_prorogation(cases_prorogation[year]) for year in range_year_prorogation]) reports_prorogation = f7ri + f7uy + f7pk + f7pm return reduction_cumulee + report + prorogation_cumulee + reports_prorogation
Formule OpenFisca sur GithubVariables et paramètres inscrits dans la formule :
Paramètres :
- impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie.location_6_ans.taux_metro
- impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie.location_6_ans.taux_metro_qpv_performant
- impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie.location_9_ans.taux_metro
- impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie.location_9_ans.taux_metro_qpv_performant
- impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie.plafond
- impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie.taux_prolongation.taux_prolong1_6ans
- impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie.taux_prolongation.taux_prolong1_9ans
- impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie.taux_prolongation.taux_prolong2_6ans
Variables utilisées par le cas type :
Formule de calcul OpenFisca à compter du 2022-01-01 :
Notes : Duflot + Pinel + Denormandie
def formula_2022_01_01(foyer_fiscal, period, parameters): ''' Duflot + Pinel + Denormandie ''' duflot_pinel_denormandie = parameters(period).impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie cases_investissement = { 2019: [ # A compter de 2019, le plafonnement de la base de calcul est commun à tous les investissements réalisés ('f7qq', 9, 'outremer'), # Pinel 2019 ('f7nd_2022', 9, 'outremer'), # Denormandie 2019 ('f7qd', 9, 'outremer'), # Pinel 2020 ('f7nh', 9, 'outremer'), # Denormandie 2020 ('f7ql', 9, 'outremer'), # Pinel 2021 ('f7nl', 9, 'outremer'), # Denormandie 2021 ('f7pg', 9, 'outremer'), # Denormandie 2022 ('f7qp', 9, 'outremer'), # Pinel 2022 ('f7qy', 6, 'outremer'), # Pinel 2019 ('f7nc_2022', 6, 'outremer'), # Denormandie 2019 ('f7qc', 6, 'outremer'), # Pinel 2020 ('f7ng', 6, 'outremer'), # Denormandie 2020 ('f7qk', 6, 'outremer'), # Pinel 2021 ('f7nk', 6, 'outremer'), # Denormandie 2021 ('f7pf', 6, 'outremer'), # Denormandie 2022 ('f7qo', 6, 'outremer'), # Pinel 2022 ('f7qx', 9, 'metropole'), # Pinel 2019 ('f7nb_2022', 9, 'metropole'), # Denormandie 2019 ('f7qb', 9, 'metropole'), # Pinel 2020 ('f7nf', 9, 'metropole'), # Denormandie 2020 ('f7qj', 9, 'metropole'), # Pinel 2021 ('f7nj', 9, 'metropole'), # Denormandie 2021 ('f7nn', 9, 'metropole'), # Denormandie 2022 ('f7qn', 9, 'metropole'), # Pinel 2022 ('f7qw', 6, 'metropole'), # Pinel 2019 ('f7na_2022', 6, 'metropole'), # Denormandie 2019 ('f7qa', 6, 'metropole'), # Pinel 2020 ('f7ne', 6, 'metropole'), # Denormandie 2020 ('f7qi', 6, 'metropole'), # Pinel 2021 ('f7ni', 6, 'metropole'), # Denormandie 2021 ('f7nm', 6, 'metropole'), # Denormandie 2022 ('f7qm', 6, 'metropole')], # Pinel 2022 } cases_report = { 2014: ['f7bi_2022', 'f7fk'], 2015: ['f7cz', 'f7fr'], 2016: ['f7rz', 'f7fv'], 2017: ['f7ra', 'f7rb', 'f7fw'], 2018: ['f7re', 'f7rf', 'f7fx'], 2019: ['f7jm', 'f7km', 'f7ja', 'f7jb'], # Pinel et Denormandie 2020: ['f7jn', 'f7jo', 'f7jr', 'f7js'], # Pinel et Denormandie 2021: ['f7jv', 'f7jw', 'f7lg', 'f7lh'], # Pinel et Denormandie } cases_prorogation = { # case, n prorogation (3 pour après 9 ans), lieu 2015: [ ('f7ry_2022', 1, 'outremer'), ('f7rx', 1, 'metropole')], 2016: [ ('f7rq_2023', 1, 'outremer'), ('f7rp_2023', 1, 'metropole')], } # Prorogation reports 2020, 6 ans f7sx = foyer_fiscal('f7sx_2022', period) # Metropole, 2014 # Prorogation reports 2021, 6 ans f7ri = foyer_fiscal('f7ri_2023', period) # Metropole, 2014 f7uy = foyer_fiscal('f7uy_2023', period) # Metropole, 2015 def calcul_reduction_investissement(cases): reduction = foyer_fiscal.empty_array() depenses_cumulees = foyer_fiscal.empty_array() for case in cases: variable, duree, zone = case depense = foyer_fiscal(variable, period) if zone == 'metropole': if duree == 9: reduction += around(duflot_pinel_denormandie.location_9_ans.taux_metro * min_(max_(0, duflot_pinel_denormandie.plafond - depenses_cumulees), depense) / duree) elif duree == 6: reduction += around(duflot_pinel_denormandie.location_6_ans.taux_metro * min_(max_(0, duflot_pinel_denormandie.plafond - depenses_cumulees), depense) / duree) depenses_cumulees += depense return reduction def calcul_reduction_investissement_prorogation(cases): reduction = foyer_fiscal.empty_array() depenses_cumulees = foyer_fiscal.empty_array() for case in cases: variable, prorogation, zone = case depense = foyer_fiscal(variable, period) if zone == 'metropole': if prorogation == 1: reduction += around(duflot_pinel_denormandie.taux_prolongation.taux_prolong1_6ans * min_(max_(0, duflot_pinel_denormandie.plafond - depenses_cumulees), depense) / 3) elif prorogation == 2: reduction += around(duflot_pinel_denormandie.taux_prolongation.taux_prolong2_6ans * min_(max_(0, duflot_pinel_denormandie.plafond - depenses_cumulees), depense) / 3) elif prorogation == 3: reduction += around(duflot_pinel_denormandie.taux_prolongation.taux_prolong1_9ans * min_(max_(0, duflot_pinel_denormandie.plafond - depenses_cumulees), depense) / 3) depenses_cumulees += depense return reduction annee_fiscale = period.start.year range_year_investissement = list(set([year for year in range(2016, annee_fiscale + 1)]) & set([year for year in cases_investissement.keys()])) range_year_prorogation = [year for year in cases_prorogation.keys()] range_year_report = list(set([year for year in range(2014, annee_fiscale)]) & set([year for year in cases_report.keys()])) reduction_cumulee = sum([calcul_reduction_investissement(cases_investissement[year]) for year in range_year_investissement]) report = sum([foyer_fiscal(case, period) for year in range_year_report for case in cases_report[year]]) prorogation_cumulee = sum([calcul_reduction_investissement_prorogation(cases_prorogation[year]) for year in range_year_prorogation]) reports_prorogation = f7sx + f7ri + f7uy return reduction_cumulee + report + prorogation_cumulee + reports_prorogation
Formule OpenFisca sur GithubVariables et paramètres inscrits dans la formule :
Paramètres :
- impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie.location_6_ans.taux_metro
- impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie.location_9_ans.taux_metro
- impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie.plafond
- impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie.taux_prolongation.taux_prolong1_6ans
- impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie.taux_prolongation.taux_prolong1_9ans
- impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie.taux_prolongation.taux_prolong2_6ans
Variables utilisées par le cas type :
Formule de calcul OpenFisca à compter du 2021-01-01 :
Notes : Duflot + Pinel + Denormandie
def formula_2021_01_01(foyer_fiscal, period, parameters): ''' Duflot + Pinel + Denormandie ''' duflot_pinel_denormandie = parameters(period).impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie cases_investissement = { 2019: [ # A compter de 2019, le plafonnement de la base de calcul est commun à tous les investissements réalisés ('f7qu_2021', 9, 'outremer'), # Pinel 2018 ('f7qq', 9, 'outremer'), # Pinel 2019 ('f7nd_2022', 9, 'outremer'), # Denormandie 2019 ('f7qd', 9, 'outremer'), # Pinel 2020 ('f7nh', 9, 'outremer'), # Denormandie 2020 ('f7ql', 9, 'outremer'), # Pinel 2021 ('f7nl', 9, 'outremer'), # Denormandie 2021 ('f7qt_2021', 6, 'outremer'), # Pinel 2018 ('f7qy', 6, 'outremer'), # Pinel 2019 ('f7nc_2022', 6, 'outremer'), # Denormandie 2019 ('f7qc', 6, 'outremer'), # Pinel 2020 ('f7ng', 6, 'outremer'), # Denormandie 2020 ('f7qk', 6, 'outremer'), # Pinel 2021 ('f7nk', 6, 'outremer'), # Denormandie 2021 ('f7qs_2021', 9, 'metropole'), # Pinel 2018 ('f7qx', 9, 'metropole'), # Pinel 2019 ('f7nb_2022', 9, 'metropole'), # Denormandie 2019 ('f7qb', 9, 'metropole'), # Pinel 2020 ('f7nf', 9, 'metropole'), # Denormandie 2020 ('f7qj', 9, 'metropole'), # Pinel 2021 ('f7nj', 9, 'metropole'), # Denormandie 2021 ('f7qr_2021', 6, 'metropole'), # Pinel 2018 ('f7qw', 6, 'metropole'), # Pinel 2019 ('f7na_2022', 6, 'metropole'), # Denormandie 2019 ('f7qa', 6, 'metropole'), # Pinel 2020 ('f7ne', 6, 'metropole'), # Denormandie 2020 ('f7qi', 6, 'metropole'), # Pinel 2021 ('f7ni', 6, 'metropole')], # Denormandie 2021 } cases_report = { 2013: ['f7fi'], # Duflot 2014: ['f7bi_2022', 'f7fk'], # Pinel et Duflot 2015: ['f7cz', 'f7fr'], 2016: ['f7qz', 'f7rz', 'f7fv'], 2017: ['f7ra', 'f7rb', 'f7fw'], 2018: ['f7re', 'f7rf', 'f7fx'], 2019: ['f7jm', 'f7km', 'f7ja', 'f7jb'], # Pinel et Denormandie 2020: ['f7jn', 'f7jo', 'f7jr', 'f7js'], # Pinel et Denormandie } cases_prorogation = { # case, n prorogation (3 pour après 9 ans), lieu 2014: [ ('f7rs_2021', 1, 'outremer'), ('f7rr_2021', 1, 'metropole')], 2015: [ ('f7ry_2022', 1, 'outremer'), ('f7rx', 1, 'metropole')], } # Prorogation reports, 6 ans f7sx = foyer_fiscal('f7sx_2022', period) # Metropole, 2014 def calcul_reduction_investissement(cases): reduction = foyer_fiscal.empty_array() depenses_cumulees = foyer_fiscal.empty_array() for case in cases: variable, duree, zone = case depense = foyer_fiscal(variable, period) if zone == 'metropole': if duree == 9: reduction += around(duflot_pinel_denormandie.location_9_ans.taux_metro * min_(max_(0, duflot_pinel_denormandie.plafond - depenses_cumulees), depense) / duree) elif duree == 6: reduction += around(duflot_pinel_denormandie.location_6_ans.taux_metro * min_(max_(0, duflot_pinel_denormandie.plafond - depenses_cumulees), depense) / duree) depenses_cumulees += depense return reduction def calcul_reduction_investissement_prorogation(cases): reduction = foyer_fiscal.empty_array() depenses_cumulees = foyer_fiscal.empty_array() for case in cases: variable, prorogation, zone = case depense = foyer_fiscal(variable, period) if zone == 'metropole': if prorogation == 1: reduction += around(duflot_pinel_denormandie.taux_prolongation.taux_prolong1_6ans * min_(max_(0, duflot_pinel_denormandie.plafond - depenses_cumulees), depense) / 3) elif prorogation == 2: reduction += around(duflot_pinel_denormandie.taux_prolongation.taux_prolong2_6ans * min_(max_(0, duflot_pinel_denormandie.plafond - depenses_cumulees), depense) / 3) elif prorogation == 3: reduction += around(duflot_pinel_denormandie.taux_prolongation.taux_prolong1_9ans * min_(max_(0, duflot_pinel_denormandie.plafond - depenses_cumulees), depense) / 3) depenses_cumulees += depense return reduction annee_fiscale = period.start.year range_year_investissement = list(set([year for year in range(2016, annee_fiscale + 1)]) & set([year for year in cases_investissement.keys()])) range_year_prorogation = [year for year in cases_prorogation.keys()] range_year_report = list(set([year for year in range(2013, annee_fiscale)]) & set([year for year in cases_report.keys()])) reduction_cumulee = sum([calcul_reduction_investissement(cases_investissement[year]) for year in range_year_investissement]) report = sum([foyer_fiscal(case, period) for year in range_year_report for case in cases_report[year]]) prorogation_cumulee = sum([calcul_reduction_investissement_prorogation(cases_prorogation[year]) for year in range_year_prorogation]) return reduction_cumulee + report + prorogation_cumulee + f7sx
Formule OpenFisca sur GithubVariables et paramètres inscrits dans la formule :
Paramètres :
- impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie.location_6_ans.taux_metro
- impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie.location_9_ans.taux_metro
- impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie.plafond
- impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie.taux_prolongation.taux_prolong1_6ans
- impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie.taux_prolongation.taux_prolong1_9ans
- impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie.taux_prolongation.taux_prolong2_6ans
Variables utilisées par le cas type :
Formule de calcul OpenFisca à compter du 2020-01-01 :
Notes : Duflot + Pinel + Denormandie NB: it is not clear whether the extension of the Pinel investment should also count towards the ceiling of € 300K. I will assume it does.
def formula_2020_01_01(foyer_fiscal, period, parameters): ''' Duflot + Pinel + Denormandie NB: it is not clear whether the extension of the Pinel investment should also count towards the ceiling of € 300K. I will assume it does. ''' duflot_pinel_denormandie = parameters(period).impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie cases_investissement = { 2019: [ # A compter de 2019, le plafonnement de la base de calcul est commun à tous les investissements réalisés ('f7qp_2021', 9, 'outremer'), # Pinel 2017 ('f7qu_2021', 9, 'outremer'), # Pinel 2018 ('f7qq', 9, 'outremer'), # Pinel 2019 ('f7nd_2022', 9, 'outremer'), # Denormandie 2019 ('f7qd', 9, 'outremer'), # Pinel 2020 ('f7nh', 9, 'outremer'), # Denormandie 2020 ('f7qo_2020', 6, 'outremer'), # Pinel 2017 ('f7qt_2021', 6, 'outremer'), # Pinel 2018 ('f7qy', 6, 'outremer'), # Pinel 2019 ('f7nc_2022', 6, 'outremer'), # Denormandie 2019 ('f7qc', 6, 'outremer'), # Pinel 2020 ('f7ng', 6, 'outremer'), # Denormandie 2020 ('f7qn_2020', 9, 'metropole'), # Pinel 2017 ('f7qs_2021', 9, 'metropole'), # Pinel 2018 ('f7qx', 9, 'metropole'), # Pinel 2019 ('f7nb_2022', 9, 'metropole'), # Denormandie 2019 ('f7qb', 9, 'metropole'), # Pinel 2020 ('f7nf', 9, 'metropole'), # Denormandie 2020 ('f7qm_2020', 6, 'metropole'), # Pinel 2017 ('f7qr_2021', 6, 'metropole'), # Pinel 2018 ('f7qw', 6, 'metropole'), # Pinel 2019 ('f7na_2022', 6, 'metropole'), # Denormandie 2019 ('f7qa', 6, 'metropole'), # Pinel 2020 ('f7ne', 6, 'metropole')], # Denormandie 2020 } cases_report = { 2013: ['f7fi'], # Duflot 2014: ['f7bi_2022', 'f7fk'], # Pinel et Duflot 2015: ['f7bz_2020', 'f7cz', 'f7fr'], 2016: ['f7qz', 'f7rz', 'f7fv'], 2017: ['f7ra', 'f7rb', 'f7fw'], 2018: ['f7re', 'f7rf', 'f7fx'], 2019: ['f7jm', 'f7km', 'f7ja', 'f7jb'], # Pinel, Denormandie } cases_prorogation = { # case, n prorogation (3 pour après 9 ans), lieu 2014: [ ('f7rs_2021', 1, 'outremer'), ('f7rr_2021', 1, 'metropole')], } def calcul_reduction_investissement(cases): reduction = foyer_fiscal.empty_array() depenses_cumulees = foyer_fiscal.empty_array() for case in cases: variable, duree, zone = case depense = foyer_fiscal(variable, period) if zone == 'metropole': if duree == 9: reduction += around(duflot_pinel_denormandie.location_9_ans.taux_metro * min_(max_(0, duflot_pinel_denormandie.plafond - depenses_cumulees), depense) / duree) elif duree == 6: reduction += around(duflot_pinel_denormandie.location_6_ans.taux_metro * min_(max_(0, duflot_pinel_denormandie.plafond - depenses_cumulees), depense) / duree) depenses_cumulees += depense return reduction def calcul_reduction_investissement_prorogation(cases): reduction = foyer_fiscal.empty_array() depenses_cumulees = foyer_fiscal.empty_array() for case in cases: variable, prorogation, zone = case depense = foyer_fiscal(variable, period) if zone == 'metropole': if prorogation == 1: reduction += around(duflot_pinel_denormandie.taux_prolongation.taux_prolong1_6ans * min_(max_(0, duflot_pinel_denormandie.plafond - depenses_cumulees), depense) / 3) elif prorogation == 2: reduction += around(duflot_pinel_denormandie.taux_prolongation.taux_prolong2_6ans * min_(max_(0, duflot_pinel_denormandie.plafond - depenses_cumulees), depense) / 3) elif prorogation == 3: reduction += around(duflot_pinel_denormandie.taux_prolongation.taux_prolong1_9ans * min_(max_(0, duflot_pinel_denormandie.plafond - depenses_cumulees), depense) / 3) depenses_cumulees += depense return reduction annee_fiscale = period.start.year range_year_investissement = list(set([year for year in range(2016, annee_fiscale + 1)]) & set([year for year in cases_investissement.keys()])) range_year_prorogation = [year for year in cases_prorogation.keys()] range_year_report = list(set([year for year in range(2013, annee_fiscale)]) & set([year for year in cases_report.keys()])) reduction_cumulee = sum([calcul_reduction_investissement(cases_investissement[year]) for year in range_year_investissement]) report = sum([foyer_fiscal(case, period) for year in range_year_report for case in cases_report[year]]) prorogation_cumulee = sum([calcul_reduction_investissement_prorogation(cases_prorogation[year]) for year in range_year_prorogation]) return reduction_cumulee + report + prorogation_cumulee
Formule OpenFisca sur GithubVariables et paramètres inscrits dans la formule :
Paramètres :
- impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie.location_6_ans.taux_metro
- impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie.location_9_ans.taux_metro
- impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie.plafond
- impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie.taux_prolongation.taux_prolong1_6ans
- impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie.taux_prolongation.taux_prolong1_9ans
- impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie.taux_prolongation.taux_prolong2_6ans
Formule de calcul OpenFisca à compter du 2019-01-01 :
Notes : Duflot + Pinel + Denormandie Le plafonnement spécifiquement Duflot + Pinel + Denormandie est fait en commun outre-mer et métropole, mais chacun est ensuite plafonné séparément avec les autres réductions.
def formula_2019_01_01(foyer_fiscal, period, parameters): ''' Duflot + Pinel + Denormandie Le plafonnement spécifiquement Duflot + Pinel + Denormandie est fait en commun outre-mer et métropole, mais chacun est ensuite plafonné séparément avec les autres réductions. ''' duflot_pinel_denormandie = parameters(period).impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie cases_investissement = { 2019: [ # A compter de 2019, le plafonnement de la base de calcul est commun à tous les investissements réalisés ('f7ql_2019', 9, 'outremer'), # Pinel 2016 ('f7qp_2021', 9, 'outremer'), # Pinel 2017 ('f7qu_2021', 9, 'outremer'), # Pinel 2018 ('f7qq', 9, 'outremer'), # Pinel 2019 ('f7nd_2022', 9, 'outremer'), # Denormandie ('f7qk_2019', 6, 'outremer'), # Pinel 2016 ('f7qo_2020', 6, 'outremer'), # Pinel 2017 ('f7qt_2021', 6, 'outremer'), # Pinel 2018 ('f7qy', 6, 'outremer'), # Pinel ('f7nc_2022', 6, 'outremer'), # Denormandie ('f7qj_2019', 9, 'metropole'), # Pinel 2016 ('f7qn_2020', 9, 'metropole'), # Pinel 2017 ('f7qs_2021', 9, 'metropole'), # Pinel 2018 ('f7qx', 9, 'metropole'), # Pinel 2019 ('f7nb_2022', 9, 'metropole'), # Denormandie ('f7qi_2019', 6, 'metropole'), # Pinel 2016 ('f7qm_2020', 6, 'metropole'), # Pinel 2017 ('f7qr_2021', 6, 'metropole'), # Pinel 2018 ('f7qw', 6, 'metropole'), # Pinel 2019 ('f7na_2022', 6, 'metropole')], # Denormandie } cases_report = { 2013: ['f7fi'], 2014: ['f7ai_2019', 'f7bi_2022', 'f7fk'], 2015: ['f7bz_2020', 'f7cz', 'f7fr'], 2016: ['f7qz', 'f7rz', 'f7fv'], 2017: ['f7ra', 'f7rb', 'f7fw'], 2018: ['f7re', 'f7rf', 'f7fx'], } def calcul_reduction_investissement(cases): reduction = foyer_fiscal.empty_array() depenses_cumulees = foyer_fiscal.empty_array() for case in cases: variable, duree, zone = case depense = foyer_fiscal(variable, period) if zone == 'metropole': if duree == 9: reduction += around(duflot_pinel_denormandie.location_9_ans.taux_metro * min_(max_(0, duflot_pinel_denormandie.plafond - depenses_cumulees), depense) / duree) elif duree == 6: reduction += around(duflot_pinel_denormandie.location_6_ans.taux_metro * min_(max_(0, duflot_pinel_denormandie.plafond - depenses_cumulees), depense) / duree) depenses_cumulees += depense return reduction annee_fiscale = period.start.year range_year_report = list(set([year for year in range(2013, annee_fiscale)]) & set([year for year in cases_report.keys()])) reduction_cumulee = sum(calcul_reduction_investissement(cases_investissement[2019])) report = sum([foyer_fiscal(case, period) for year in range_year_report for case in cases_report[year]]) return reduction_cumulee + report
Formule OpenFisca sur GithubVariables et paramètres inscrits dans la formule :
Paramètres :
- impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie.location_6_ans.taux_metro
- impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie.location_9_ans.taux_metro
- impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie.plafond
Formule de calcul OpenFisca à compter du 2015-01-01 :
Notes : Investissement locatif privé - Dispositif Pinel De 2015 à 2018
def formula_2015_01_01(foyer_fiscal, period, parameters): ''' Investissement locatif privé - Dispositif Pinel De 2015 à 2018 ''' duflot_pinel_denormandie = parameters(period).impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie # Duflot année N, 2013 f7gh = foyer_fiscal('f7gh_2018', period) # Métropole f7gi = foyer_fiscal('f7gi_2018', period) # Outre-Mer # Duflot année N, 2014 f7ek = foyer_fiscal('f7ek', period) # Métropole f7el = foyer_fiscal('f7el_2015', period) # Outre-Mer # Duflot reports f7fi = foyer_fiscal('f7fi', period) # 2013 # Pinel année N, 2014 f7qa = foyer_fiscal('f7qa_2018', period) # Métropole, 6 ans f7qb = foyer_fiscal('f7qb_2018', period) # Métropole, 9 ans f7qc = foyer_fiscal('f7qc_2018', period) # Outre-Mer, 6 ans f7qd = foyer_fiscal('f7qd_2018', period) # Outre-Mer, 9 ans cases_investissement = { 2015: [ ('f7qh', 9, 'outremer'), ('f7qg', 6, 'outremer'), ('f7qf', 9, 'metropole'), ('f7qe_2018', 6, 'metropole')], 2016: [ ('f7ql_2019', 9, 'outremer'), ('f7qk_2019', 6, 'outremer'), ('f7qj_2019', 9, 'metropole'), ('f7qi_2019', 6, 'metropole')], 2017: [ ('f7qp_2021', 9, 'outremer'), ('f7qo_2020', 6, 'outremer'), ('f7qn_2020', 9, 'metropole'), ('f7qm_2020', 6, 'metropole')], 2018: [ ('f7qu_2021', 9, 'outremer'), ('f7qt_2021', 6, 'outremer'), ('f7qs_2021', 9, 'metropole'), ('f7qr_2021', 6, 'metropole')], } cases_report = { 2014: ['f7ai_2019', 'f7bi_2022', 'f7fk'], # deux premiers Pinel, dernier Duflot 2015: ['f7bz_2020', 'f7cz', 'f7fr'], 2016: ['f7qz', 'f7rz', 'f7fv'], 2017: ['f7ra', 'f7rb', 'f7fw'], } # Duflot 2013 reduc_2013 = around(duflot_pinel_denormandie.location_9_ans.taux_metro * min_(duflot_pinel_denormandie.plafond - f7gi, f7gh) / 9) # Duflot et Pinel 2014 max1 = max_(0, duflot_pinel_denormandie.plafond - f7el - f7qd - f7qc) # 2014 : plafond commun 'duflot' et 'rpinel' reduc_2014 = (around(duflot_pinel_denormandie.location_9_ans.taux_metro * min_(max1, f7ek + f7qb) / 9) + around(duflot_pinel_denormandie.location_6_ans.taux_metro * min_(max1 - f7ek - f7qb, f7qa) / 6)) def calcul_reduction_investissement(cases): reduction = foyer_fiscal.empty_array() depenses_cumulees = foyer_fiscal.empty_array() for case in cases: variable, duree, zone = case depense = foyer_fiscal(variable, period) if zone == 'metropole': if duree == 9: reduction += around(duflot_pinel_denormandie.location_9_ans.taux_metro * min_(max_(0, duflot_pinel_denormandie.plafond - depenses_cumulees), depense) / duree) elif duree == 6: reduction += around(duflot_pinel_denormandie.location_6_ans.taux_metro * min_(max_(0, duflot_pinel_denormandie.plafond - depenses_cumulees), depense) / duree) depenses_cumulees += depense return reduction annee_fiscale = period.start.year range_year_investissement = list(set([year for year in range(2015, annee_fiscale + 1)]) & set([year for year in cases_investissement.keys()])) range_year_report = list(set([year for year in range(2014, annee_fiscale)]) & set([year for year in cases_report.keys()])) reduction_cumulee = sum([calcul_reduction_investissement(cases_investissement[year]) for year in range_year_investissement]) report = sum([foyer_fiscal(case, period) for year in range_year_report for case in cases_report[year]]) return reduction_cumulee + report + reduc_2013 + reduc_2014 + f7fi
Formule OpenFisca sur GithubVariables et paramètres inscrits dans la formule :
Paramètres :
- impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie.location_6_ans.taux_metro
- impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie.location_9_ans.taux_metro
- impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie.plafond
Variables utilisées par le cas type :
Formule de calcul OpenFisca à compter du 2014-01-01 :
Notes : Duflot + Pinel NB: I count the reports of past Duflot investments towards Métropole, even though they may contain OM investments as well (only relevant after 2015, but since there are no separate cases, nothing one can potentially do).
def formula_2014_01_01(foyer_fiscal, period, parameters): ''' Duflot + Pinel NB: I count the reports of past Duflot investments towards Métropole, even though they may contain OM investments as well (only relevant after 2015, but since there are no separate cases, nothing one can potentially do). ''' duflot_pinel_denormandie = parameters(period).impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie # Duflot année N, 2013 f7gh = foyer_fiscal('f7gh_2018', period) # Métropole f7gi = foyer_fiscal('f7gi_2018', period) # Outre-Mer # Duflot année N, 2014 f7ek = foyer_fiscal('f7ek', period) # Métropole f7el = foyer_fiscal('f7el_2015', period) # Outre-Mer # Duflot reports f7fi = foyer_fiscal('f7fi', period) # 2013 # Pinel année N, 2014 f7qa = foyer_fiscal('f7qa_2018', period) # Métropole, 6 ans f7qb = foyer_fiscal('f7qb_2018', period) # Métropole, 9 ans f7qc = foyer_fiscal('f7qc_2018', period) # Outre-Mer, 6 ans f7qd = foyer_fiscal('f7qd_2018', period) # Outre-Mer, 9 ans # Duflot 2013 reduc_2013 = around(duflot_pinel_denormandie.location_9_ans.taux_metro * min_(duflot_pinel_denormandie.plafond - f7gi, f7gh) / 9) # Duflot et Pinel 2014 max1 = max_(0, duflot_pinel_denormandie.plafond - f7el - f7qd - f7qc) # 2014 : plafond commun 'duflot' et 'rpinel' reduc_2014 = (around(duflot_pinel_denormandie.location_9_ans.taux_metro * min_(max1, f7ek + f7qb) / 9) + around(duflot_pinel_denormandie.location_6_ans.taux_metro * min_(max1 - f7ek - f7qb, f7qa) / 6)) ri_metro = reduc_2013 + reduc_2014 + f7fi return ri_metro
Formule OpenFisca sur GithubVariables et paramètres inscrits dans la formule :
Paramètres :
- impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie.location_6_ans.taux_metro
- impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie.location_9_ans.taux_metro
- impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie.plafond
Variables utilisées par le cas type :
Formule de calcul OpenFisca à compter du 2013-01-01 :
Notes : Duflot
def formula_2013_01_01(foyer_fiscal, period, parameters): ''' Duflot ''' reduction = parameters(period).impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie # Duflot année N, 2013 f7gh = foyer_fiscal('f7gh_2018', period) # Métropole f7gi = foyer_fiscal('f7gi_2018', period) # Outre-Mer inv_om = min_(reduction.plafond, f7gi) inv_metro = min_(reduction.plafond - inv_om, f7gh) ri_metro = around(inv_metro * reduction.location_9_ans.taux_metro / 9) return ri_metro
Formule OpenFisca sur GithubVariables et paramètres inscrits dans la formule :
Paramètres :
Variables utilisées par le cas type :
Variables et dispositifs influencés par la formule :
La formule du dispositif "Réduction d'impôt Duflot - Pinel - Denormandie que metropole" peut avoir une influence sur d'autres dispositifs et variables :