Formule de calcul
Réduction d'impôt Duflot - Pinel - Denormandie
Ce dispositif est peut-être obsolète !
La dernière date de relecture du dispositif est vendredi 1 janvier 2021.
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 ('f7qq', 9, 'outremer'), # Pinel 2019 ('f7nd', 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', 6, 'outremer'), # Pinel 2018 ('f7qy', 6, 'outremer'), # Pinel 2019 ('f7nc', 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', 9, 'metropole'), # Pinel 2018 ('f7qx', 9, 'metropole'), # Pinel 2019 ('f7nb', 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', 6, 'metropole'), # Pinel 2018 ('f7qw', 6, 'metropole'), # Pinel 2019 ('f7na', 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 = { 2014: ['f7di'], 2015: ['f7ez'], 2016: ['f7sz', 'f7tz'], 2017: ['f7rc', 'f7rd'], 2018: ['f7rg', 'f7rh'], 2019: ['f7lm', 'f7mm', 'f7jc', 'f7jd'], # Pinel et Denormandie 2020: ['f7jp', 'f7jq', 'f7jt', 'f7ju'], # Pinel et Denormandie } # Première prorogation, 6 ans f7rs = foyer_fiscal('f7rs', period) # Outre-Mer, 2014 f7ry = foyer_fiscal('f7ry', period) # Outre-Mer, 2015 # Prorogation reports, 6 ans f7sy = foyer_fiscal('f7sy', period) # Outre-Mer, 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 == 'outremer': if duree == 9: reduction += around(duflot_pinel_denormandie.location_9_ans.taux_om * min_(max_(0, duflot_pinel_denormandie.plafond - depenses_cumulees), depense) / duree) elif duree == 6: reduction += around(duflot_pinel_denormandie.location_6_ans.taux_om * 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(2016, 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]]) prorogation = (around(min_(duflot_pinel_denormandie.plafond, f7rs) * duflot_pinel_denormandie.taux_prolongation.taux_prolong1_6ans / 3) + around(min_(duflot_pinel_denormandie.plafond, f7ry) * duflot_pinel_denormandie.taux_prolongation.taux_prolong1_6ans / 3)) return reduction_cumulee + report + prorogation + f7sy
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_om
- impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie.location_9_ans.taux_om
- 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
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', 9, 'outremer'), # Pinel 2017 ('f7qu', 9, 'outremer'), # Pinel 2018 ('f7qq', 9, 'outremer'), # Pinel 2019 ('f7nd', 9, 'outremer'), # Denormandie 2019 ('f7qd', 9, 'outremer'), # Pinel 2020 ('f7nh', 9, 'outremer'), # Denormandie 2020 ('f7qo', 6, 'outremer'), # Pinel 2017 ('f7qt', 6, 'outremer'), # Pinel 2018 ('f7qy', 6, 'outremer'), # Pinel 2019 ('f7nc', 6, 'outremer'), # Denormandie 2019 ('f7qc', 6, 'outremer'), # Pinel 2020 ('f7ng', 6, 'outremer'), # Denormandie 2020 ('f7qn', 9, 'metropole'), # Pinel 2017 ('f7qs', 9, 'metropole'), # Pinel 2018 ('f7qx', 9, 'metropole'), # Pinel 2019 ('f7nb', 9, 'metropole'), # Denormandie 2019 ('f7qb', 9, 'metropole'), # Pinel 2020 ('f7nf', 9, 'metropole'), # Denormandie 2020 ('f7qm', 6, 'metropole'), # Pinel 2017 ('f7qr', 6, 'metropole'), # Pinel 2018 ('f7qw', 6, 'metropole'), # Pinel 2019 ('f7na', 6, 'metropole'), # Denormandie 2019 ('f7qa', 6, 'metropole'), # Pinel 2020 ('f7ne', 6, 'metropole')], # Denormandie 2020 } cases_report = { 2014: ['f7di'], 2015: ['f7dz', 'f7ez'], 2016: ['f7sz', 'f7tz'], 2017: ['f7rc', 'f7rd'], 2018: ['f7rg', 'f7rh'], 2019: ['f7lm', 'f7mm', 'f7jc', 'f7jd'], # Pinel et Denormandie } # Première prorogation, 6 ans, 2014 f7rs = foyer_fiscal('f7rs', period) # Outre-Mer, 6 ans 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 == 'outremer': if duree == 9: reduction += around(duflot_pinel_denormandie.location_9_ans.taux_om * min_(max_(0, duflot_pinel_denormandie.plafond - depenses_cumulees), depense) / duree) elif duree == 6: reduction += around(duflot_pinel_denormandie.location_6_ans.taux_om * 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(2016, 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]]) prorogation = around(min_(duflot_pinel_denormandie.plafond, f7rs) * duflot_pinel_denormandie.taux_prolongation.taux_prolong1_6ans / 3) return reduction_cumulee + report + 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_om
- impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie.location_9_ans.taux_om
- 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
Variables utilisées par le cas type :
Formule de calcul OpenFisca à compter du 2019-01-01 :
Notes : Duflot + Pinel + Denormandie
def formula_2019_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 ('f7ql_2019', 9, 'outremer'), # Pinel 2016 ('f7qp', 9, 'outremer'), # Pinel 2017 ('f7qu', 9, 'outremer'), # Pinel 2018 ('f7qq', 9, 'outremer'), # Pinel 2019 ('f7nd', 9, 'outremer'), # Denormandie ('f7qk_2019', 6, 'outremer'), # Pinel 2016 ('f7qo', 6, 'outremer'), # Pinel 2017 ('f7qt', 6, 'outremer'), # Pinel 2018 ('f7qy', 6, 'outremer'), # Pinel ('f7nc', 6, 'outremer'), # Denormandie ('f7qj_2019', 9, 'metropole'), # Pinel 2016 ('f7qn', 9, 'metropole'), # Pinel 2017 ('f7qs', 9, 'metropole'), # Pinel 2018 ('f7qx', 9, 'metropole'), # Pinel 2019 ('f7nb', 9, 'metropole'), # Denormandie ('f7qi_2019', 6, 'metropole'), # Pinel 2016 ('f7qm', 6, 'metropole'), # Pinel 2017 ('f7qr', 6, 'metropole'), # Pinel 2018 ('f7qw', 6, 'metropole'), # Pinel 2019 ('f7na', 6, 'metropole')], # Denormandie } cases_report = { 2014: ['f7ci_2019', 'f7di'], 2015: ['f7dz', 'f7ez'], 2016: ['f7sz', 'f7tz'], 2017: ['f7rc', 'f7rd'], 2018: ['f7rg', 'f7rh'], } 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 == 'outremer': if duree == 9: reduction += around(duflot_pinel_denormandie.location_9_ans.taux_om * min_(max_(0, duflot_pinel_denormandie.plafond - depenses_cumulees), depense) / duree) elif duree == 6: reduction += around(duflot_pinel_denormandie.location_6_ans.taux_om * 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(2016, 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
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_om
- impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie.location_9_ans.taux_om
- impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie.plafond
Formule de calcul OpenFisca à compter du 2015-01-01 :
Notes : Duflot + Pinel
def formula_2015_01_01(foyer_fiscal, period, parameters): ''' Duflot + Pinel ''' duflot_pinel_denormandie = parameters(period).impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie # Duflot année N, 2013 f7gi = foyer_fiscal('f7gi', period) # Outre-Mer # Duflot année N, 2014 f7el = foyer_fiscal('f7el', period) # Outre-Mer # Pinel année N, 2014 f7qc = foyer_fiscal('f7qc_2018', period) # Outre-Mer, 6 ans f7qd = foyer_fiscal('f7qd_2018', period) # Outre-Mer, 9 ans # Duflot 2013 reduc_2013 = duflot_pinel_denormandie.location_9_ans.taux_om * min_(duflot_pinel_denormandie.plafond, f7gi) / 9 # Duflot et Pinel 2014 reduc_2014 = (around(duflot_pinel_denormandie.location_9_ans.taux_om * min_(duflot_pinel_denormandie.plafond, f7el + f7qd) / 9) + around(duflot_pinel_denormandie.location_6_ans.taux_om * min_(duflot_pinel_denormandie.plafond - f7el - f7qd, f7qc) / 6)) cases_investissement = { 2015: [ ('f7qh', 9, 'outremer'), ('f7qg', 6, 'outremer'), ('f7qf', 9, 'metropole'), ('f7qe', 6, 'metropole')], 2016: [ ('f7ql_2019', 9, 'outremer'), ('f7qk_2019', 6, 'outremer'), ('f7qj_2019', 9, 'metropole'), ('f7qi_2019', 6, 'metropole')], 2017: [ ('f7qp', 9, 'outremer'), ('f7qo', 6, 'outremer'), ('f7qn', 9, 'metropole'), ('f7qm', 6, 'metropole')], 2018: [ ('f7qu', 9, 'outremer'), ('f7qt', 6, 'outremer'), ('f7qs', 9, 'metropole'), ('f7qr', 6, 'metropole')], } cases_report = { 2014: ['f7ci_2019', 'f7di'], 2015: ['f7dz', 'f7ez'], 2016: ['f7sz', 'f7tz'], 2017: ['f7rc', 'f7rd'], } 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 == 'outremer': if duree == 9: reduction += around(duflot_pinel_denormandie.location_9_ans.taux_om * min_(max_(0, duflot_pinel_denormandie.plafond - depenses_cumulees), depense) / duree) elif duree == 6: reduction += around(duflot_pinel_denormandie.location_6_ans.taux_om * 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
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_om
- impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie.location_9_ans.taux_om
- 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 f7gi = foyer_fiscal('f7gi', period) # Outre-Mer # Duflot année N, 2014 f7el = foyer_fiscal('f7el', period) # Outre-Mer # Pinel année N, 2014 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_om * min_(duflot_pinel_denormandie.plafond, f7gi) / 9) # Duflot et Pinel 2014 inv_29_om = min_(duflot_pinel_denormandie.plafond, f7el + f7qd) inv_23_om = min_(duflot_pinel_denormandie.plafond - inv_29_om, f7qc) reduc = (around((inv_29_om * duflot_pinel_denormandie.location_9_ans.taux_om / 9) + around(inv_23_om * duflot_pinel_denormandie.location_6_ans.taux_om / 6))) + reduc_2013 return reduc
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_om
- impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie.location_9_ans.taux_om
- 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 ''' duflot_pinel_denormandie = parameters(period).impot_revenu.calcul_reductions_impots.investissements_immobiliers.duflot_pinel_denormandie # Duflot année N, 2013 f7gi = foyer_fiscal('f7gi', period) # Outre-Mer inv_om = min_(duflot_pinel_denormandie.plafond, f7gi) ri_om = around(inv_om * duflot_pinel_denormandie.location_9_ans.taux_om / 9) return ri_om
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" peut avoir une influence sur d'autres dispositifs et variables :