Formule de calcul

Réduction d'impôt Duflot - Pinel - Denormandie

Valeur du dispositif pour le cas type :

Réduction d'impôt Duflot - Pinel - Denormandie

Déclaration d’impôts n°1

    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 ('f7qu', 9, 'outremer'), ('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: ['f7bi'], 2015: ['f7cz'], 2016: ['f7qz', 'f7rz'], 2017: ['f7ra', 'f7rb'], 2018: ['f7re', 'f7rf'], 2019: ['f7jm', 'f7km', 'f7ja', 'f7jb'], # reports Pinel et denormandie 2020: ['f7jn', 'f7jo', 'f7jr', 'f7js'] # reports Pinel et denormandie } # Duflot reports f7fi = foyer_fiscal('f7fi', period) # 2013 f7fk = foyer_fiscal('f7fk', period) # 2014 f7fr = foyer_fiscal('f7fr', period) # 2015 f7fv = foyer_fiscal('f7fv', period) # 2016 f7fw = foyer_fiscal('f7fw', period) # 2017 f7fx = foyer_fiscal('f7fx', period) # 2018 # Première prorogation, 6 ans f7rr = foyer_fiscal('f7rr', period) # Métropole, 6 ans 2014 f7rs = foyer_fiscal('f7rs', period) # Outre-Mer, 6 ans 2014 f7rx = foyer_fiscal('f7rx', period) # Métropole, 2015 f7ry = foyer_fiscal('f7ry', period) # Outre-Mer, 2015 # Prorogation reports, 6 ans f7sx = foyer_fiscal('f7sx', period) # Métropole, 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 annee_fiscale = period.start.year range_year_investissement = list(set([year for year in range(2018, 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, f7rr) * duflot_pinel_denormandie.taux_prolongation.taux_prolong1_6ans / 3) + around(min_(duflot_pinel_denormandie.plafond - f7ry, f7rx) * duflot_pinel_denormandie.taux_prolongation.taux_prolong1_6ans / 3)) return reduction_cumulee + report + f7fi + f7fk + f7fr + f7fv + f7fw + f7fx + prorogation + f7sx

    Formule OpenFisca sur Github

    Variables et paramètres inscrits dans la formule :

    Paramètres :

    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: ['f7bi'], 2015: ['f7bz', 'f7cz'], 2016: ['f7qz', 'f7rz'], 2017: ['f7ra', 'f7rb'], 2018: ['f7re', 'f7rf'], 2019: ['f7jm', 'f7km', 'f7ja', 'f7jb'] # reports Pinel et denormandie } # Duflot reports f7fi = foyer_fiscal('f7fi', period) # 2013 f7fk = foyer_fiscal('f7fk', period) # 2014 f7fr = foyer_fiscal('f7fr', period) # 2015 f7fv = foyer_fiscal('f7fv', period) # 2016 f7fw = foyer_fiscal('f7fw', period) # 2017 f7fx = foyer_fiscal('f7fx', period) # 2018 # Première prorogation, 6 ans, 2014 f7rr = foyer_fiscal('f7rr', period) # Métropole, 6 ans 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 == '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(2018, 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, f7rr) * duflot_pinel_denormandie.taux_prolongation.taux_prolong1_6ans / 3) return reduction_cumulee + report + f7fi + f7fk + f7fr + f7fv + f7fw + f7fx + prorogation

    Formule OpenFisca sur Github

    Variables et paramètres inscrits dans la formule :

    Paramètres :

    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: ['f7ai', 'f7bi'], 2015: ['f7bz', 'f7cz'], 2016: ['f7qz', 'f7rz'], 2017: ['f7ra', 'f7rb'], 2018: ['f7re', 'f7rf'] } # Duflot reports f7fi = foyer_fiscal('f7fi', period) # 2013 f7fk = foyer_fiscal('f7fk', period) # 2014 f7fr = foyer_fiscal('f7fr', period) # 2015 f7fv = foyer_fiscal('f7fv', period) # 2016 f7fw = foyer_fiscal('f7fw', period) # 2017 f7fx = foyer_fiscal('f7fx', period) # 2018 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(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 + f7fi + f7fk + f7fr + f7fv + f7fw + f7fx

    Formule OpenFisca sur Github

    Variables et paramètres inscrits dans la formule :

    Paramètres :

    Variables utilisées par le cas type :

    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', period) # Métropole f7gi = foyer_fiscal('f7gi', period) # Outre-Mer # Duflot année N, 2014 f7ek = foyer_fiscal('f7ek', period) # Métropole f7el = foyer_fiscal('f7el', period) # Outre-Mer # Duflot reports f7fi = foyer_fiscal('f7fi', period) # 2013 f7fk = foyer_fiscal('f7fk', period) # 2014 f7fr = foyer_fiscal('f7fr', period) # 2015 f7fv = foyer_fiscal('f7fv', period) # 2016 f7fw = foyer_fiscal('f7fw', period) # 2017 # 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', 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: ['f7ai', 'f7bi'], 2015: ['f7bz', 'f7cz'], 2016: ['f7qz', 'f7rz'], 2017: ['f7ra', 'f7rb'], } # 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 + f7fk + f7fr + f7fv + f7fw

    Formule OpenFisca sur Github

    Variables et paramètres inscrits dans la formule :

    Paramètres :

    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', period) # Métropole f7gi = foyer_fiscal('f7gi', period) # Outre-Mer # Duflot année N, 2014 f7ek = foyer_fiscal('f7ek', period) # Métropole f7el = foyer_fiscal('f7el', 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 Github

    Variables et paramètres inscrits dans la formule :

    Paramètres :

    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', period) # Métropole f7gi = foyer_fiscal('f7gi', 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 Github

    Variables 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 :

    Caractéristiques avancées :

    Période de définition : year
    Entité : foyer_fiscal
    Type de valeur : float