Skip to content

Commit bb618e8

Browse files
author
cgl
committed
suite mise à jour IFI
1 parent abca3f1 commit bb618e8

File tree

26 files changed

+86
-300
lines changed

26 files changed

+86
-300
lines changed

openfisca_france/model/prelevements_obligatoires/isf.py

Lines changed: 24 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -330,7 +330,7 @@ class b9pr(Variable):
330330
cerfa_field = '9PR'
331331
unit = 'currency'
332332
entity = FoyerFiscal
333-
label = 'Impôts dus au titre des revenus et produits 2018'
333+
label = 'Impôts dus au titre des revenus et produits'
334334
definition_period = YEAR
335335
# start = '2018-01-01'
336336

@@ -340,7 +340,7 @@ class b9px(Variable):
340340
cerfa_field = '9PX'
341341
unit = 'currency'
342342
entity = FoyerFiscal
343-
label = 'Revenus et produits de l’année 2018 en cas de montant négatif, inscrivez 0'
343+
label = 'Revenus et produits de l’année en cas de montant négatif, inscrivez 0'
344344
definition_period = YEAR
345345
# start = '2018-01-01'
346346

@@ -425,36 +425,19 @@ class isf_ifi_imm_non_bati(Variable):
425425
def formula_2018_01_01(foyer_fiscal, period, parameters):
426426
b9ac = foyer_fiscal('b9ac', period)
427427
b9ad = foyer_fiscal('b9ad', period)
428-
b1bh = foyer_fiscal('b1bh', period)
429-
b1bk = foyer_fiscal('b1bk', period)
430-
non_bati = parameters(period).taxation_capital.impot_fortune_immobiliere_ifi_partir_2018.forfait_mobilier.non_bati
428+
b9ba = foyer_fiscal('b9ba', period)
429+
b9bb = foyer_fiscal('b9bb', period)
430+
exonerations = parameters(period).taxation_capital.impot_fortune_immobiliere_ifi_partir_2018.exonerations
431431

432432
# forêts
433-
b9ac_exon = b9ac * non_bati.taux_bois_forets
433+
b9ac_exon = b9ac * exonerations.taux_bois_forets
434434
# bien ruraux loués à long terme
435-
b9ad_exon_sous_seuil = min_(b9ad, non_bati.seuil) * non_bati.taux_biens_ruraux
436-
b9ad_exon_dessus_seuil = max_(b9ad - non_bati.seuil, 0) * non_bati.taux_forestier_agricole
435+
b9ad_exon_sous_seuil = min_(b9ad, exonerations.taux_avec_seuil.seuil) * exonerations.taux_avec_seuil.taux_sous_seuil
436+
b9ad_exon_dessus_seuil = max_(b9ad - exonerations.taux_avec_seuil.seuil, 0) * exonerations.taux_avec_seuil.taux_dessous_seuil
437437
# part de groupements forestiers- agricoles fonciers
438-
b1bi = min_(b1bh, non_bati.seuil) * non_bati.taux_biens_ruraux
439-
b1bj = max_(b1bh - non_bati.seuil, 0) * non_bati.taux_forestier_agricole
440-
return b9ac_exon + b9ad_exon_sous_seuil + b9ad_exon_dessus_seuil + b1bi + b1bj + b1bk
441-
442-
# def formula_2018_01_01(foyer_fiscal, period, parameters):
443-
# b1bc = foyer_fiscal('b1bc', period)
444-
# b1be = foyer_fiscal('b1be', period)
445-
# b1bh = foyer_fiscal('b1bh', period)
446-
# b1bk = foyer_fiscal('b1bk', period)
447-
# non_bati = parameters(period).taxation_capital.impot_fortune_immobiliere_ifi_partir_2018.forfait_mobilier.non_bati
448-
449-
# # forêts
450-
# b1bd = b1bc * non_bati.taux_bois_forets
451-
# # bien ruraux loués à long terme
452-
# b1bf = min_(b1be, non_bati.seuil) * non_bati.taux_biens_ruraux
453-
# b1bg = max_(b1be - non_bati.seuil, 0) * non_bati.taux_forestier_agricole
454-
# # part de groupements forestiers- agricoles fonciers
455-
# b1bi = min_(b1bh, non_bati.seuil) * non_bati.taux_biens_ruraux
456-
# b1bj = max_(b1bh - non_bati.seuil, 0) * non_bati.taux_forestier_agricole
457-
# return b1bd + b1bf + b1bg + b1bi + b1bj + b1bk
438+
b9ba_exon_sous_seuil = min_(b9ba, exonerations.taux_avec_seuil.seuil) * exonerations.taux_avec_seuil.taux_sous_seuil
439+
b9ba_exon_dessus_seuil = max_(b9ba - exonerations.taux_avec_seuil.seuil, 0) * exonerations.taux_avec_seuil.taux_dessous_seuil
440+
return b9ac_exon + b9ad_exon_sous_seuil + b9ad_exon_dessus_seuil + b9ba_exon_sous_seuil + b9ba_exon_dessus_seuil + b9bb
458441

459442
def formula(foyer_fiscal, period, parameters):
460443
b1bc = foyer_fiscal('b1bc', period)
@@ -523,15 +506,10 @@ def formula_2018_01_01(foyer_fiscal, period, parameters):
523506
# TODO: Gérer les trois option meubles meublants
524507
isf_ifi_imm_bati = foyer_fiscal('isf_ifi_imm_bati', period)
525508
isf_ifi_imm_non_bati = foyer_fiscal('isf_ifi_imm_non_bati', period)
526-
isf_droits_sociaux = foyer_fiscal('isf_droits_sociaux', period)
527-
b1cg = foyer_fiscal('b1cg', period)
528-
b2gh = foyer_fiscal('b2gh', period)
529-
forfait_mobilier = parameters(period).taxation_capital.impot_fortune_immobiliere_ifi_partir_2018.forfait_mobilier
509+
b9gf = foyer_fiscal('b9gf', period)
510+
b9gh = foyer_fiscal('b9gh', period)
530511

531-
total = isf_ifi_imm_bati + isf_ifi_imm_non_bati + isf_droits_sociaux
532-
forf_mob = (b1cg != 0) * b1cg + (b1cg == 0) * total * forfait_mobilier.majoration_forfaitaire
533-
actif_brut = total + forf_mob
534-
return actif_brut - b2gh
512+
return max_(isf_ifi_imm_bati + isf_ifi_imm_non_bati - b9gf - b9gh, 0)
535513

536514
def formula_1989_01_01(foyer_fiscal, period, parameters):
537515
# TODO: Gérer les trois option meubles meublants
@@ -624,7 +602,7 @@ class isf_inv_pme(Variable):
624602
entity = FoyerFiscal
625603
label = 'isf_inv_pme'
626604
definition_period = YEAR
627-
end = '2018-12-31'
605+
end = '2017-12-31'
628606

629607
def formula_2008(foyer_fiscal, period, parameters):
630608
'''
@@ -652,32 +630,6 @@ def formula_2008(foyer_fiscal, period, parameters):
652630

653631
return where(montant_reduc < plaf, montant_reduc, plaf)
654632

655-
def formula_2018(foyer_fiscal, period, parameters):
656-
'''
657-
Réductions pour investissements dans les PME
658-
à partir de 2018!
659-
'''
660-
b2mt = foyer_fiscal('b2mt', period)
661-
b2ne = foyer_fiscal('b2ne', period)
662-
b2mv = foyer_fiscal('b2mv', period)
663-
b2nf = foyer_fiscal('b2nf', period)
664-
b2mx = foyer_fiscal('b2mx', period)
665-
b2na = foyer_fiscal('b2na', period)
666-
reduc_impot = parameters(period).taxation_capital.impot_fortune_immobiliere_ifi_partir_2018.reduc_impot
667-
taux_dons = reduc_impot.reduction_dons_certains_organismes_interet_general.taux
668-
taux_invest_direct = reduc_impot.reduction_investissements_capital_pme.taux_investissement_direct
669-
taux_fip_fci = reduc_impot.reduction_investissements_dans_fcpi_ou_fip_dans_pme.taux_investissement
670-
671-
inv_dir_soc = b2mt * taux_dons + b2ne * taux_invest_direct
672-
holdings = b2mv * taux_dons + b2nf * taux_invest_direct
673-
fip = b2mx * taux_fip_fci
674-
fcpi = b2na * taux_fip_fci
675-
676-
montant_reduc = holdings + fip + fcpi + inv_dir_soc
677-
plaf = parameters(period).taxation_capital.impot_fortune_immobiliere_ifi_partir_2018.reduc_impot.plafond_somme_trois_reductions_pme_fcip_fip_pme_dons
678-
679-
return where(montant_reduc < plaf, montant_reduc, plaf)
680-
681633

682634
class isf_org_int_gen(Variable):
683635
value_type = float
@@ -693,9 +645,10 @@ def formula_2008(foyer_fiscal, period, parameters):
693645
return where(montant < P.limite_reduction, montant, P.limite_reduction)
694646

695647
def formula_2018(foyer_fiscal, period, parameters):
696-
b2nc = foyer_fiscal('b2nc', period)
648+
b9nc = foyer_fiscal('b9nc', period)
649+
b9ng = foyer_fiscal('b9ng', period)
697650
P = parameters(period).taxation_capital.impot_fortune_immobiliere_ifi_partir_2018.reduc_impot.reduction_dons_certains_organismes_interet_general
698-
montant = b2nc * P.taux
651+
montant = (b9nc + b9ng) * P.taux
699652

700653
return where(montant < P.limite_reduction, montant, P.limite_reduction)
701654

@@ -731,21 +684,9 @@ def formula_2009(foyer_fiscal, period, parameters):
731684

732685
def formula_2018(foyer_fiscal, period, parameters):
733686
isf_ifi_avant_reduction = foyer_fiscal('isf_ifi_avant_reduction', period)
734-
isf_inv_pme = foyer_fiscal('isf_inv_pme', period)
735687
isf_org_int_gen = foyer_fiscal('isf_org_int_gen', period)
736-
isf_reduc_pac = foyer_fiscal('isf_reduc_pac', period)
737-
borne_max = parameters(period).taxation_capital.impot_fortune_immobiliere_ifi_partir_2018.reduc_impot.plafond_somme_trois_reductions_pme_fcip_fip_pme_dons
738688

739-
return max_(0, isf_ifi_avant_reduction - min_(isf_inv_pme + isf_org_int_gen, borne_max) - isf_reduc_pac)
740-
741-
def formula_2019(foyer_fiscal, period, parameters):
742-
# Les réductions pour investissements dans les PME (FIP et FCPI) ne sont plus éligibles
743-
isf_ifi_avant_reduction = foyer_fiscal('isf_ifi_avant_reduction', period)
744-
isf_org_int_gen = foyer_fiscal('isf_org_int_gen', period)
745-
isf_reduc_pac = foyer_fiscal('isf_reduc_pac', period)
746-
borne_max = parameters(period).taxation_capital.impot_fortune_immobiliere_ifi_partir_2018.reduc_impot.plafond_somme_trois_reductions_pme_fcip_fip_pme_dons
747-
748-
return max_(0, isf_ifi_avant_reduction - min_(isf_org_int_gen, borne_max) - isf_reduc_pac)
689+
return max_(0, isf_ifi_avant_reduction - isf_org_int_gen)
749690

750691

751692
# # calcul du plafonnement ##
@@ -922,6 +863,11 @@ class isf_ifi(Variable):
922863
reference = 'https://www.legifrance.gouv.fr/codes/id/LEGISCTA000036385039/'
923864
definition_period = YEAR
924865

866+
def formula_2018_01_01(foyer_fiscal, period):
867+
b9rs = foyer_fiscal('b9rs', period)
868+
isf_ifi_apres_plaf = foyer_fiscal('isf_ifi_apres_plaf', period)
869+
return min_(-(isf_ifi_apres_plaf - b9rs), 0)
870+
925871
def formula(foyer_fiscal, period):
926872
b4rs = foyer_fiscal('b4rs', period)
927873
isf_ifi_apres_plaf = foyer_fiscal('isf_ifi_apres_plaf', period)

openfisca_france/parameters/taxation_capital/impot_fortune_immobiliere_ifi_partir_2018/bareme.yaml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,5 @@ metadata:
4545
href: https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000036385041/
4646
official_journal_date:
4747
2018-01-01: "2017-12-31"
48-
notes:
49-
2018-01-01:
50-
- title: L'IFI remplace l'ISF. Les barèmes sont les mêmes, mais la base taxable est réduite aux seuls biens immobiliers.
5148
rate_unit: /1
5249
threshold_unit: currency

openfisca_france/parameters/taxation_capital/impot_fortune_immobiliere_ifi_partir_2018/decote/borne_inferieure_decote.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ values:
44
value: 1300000
55
metadata:
66
short_label: Borne inférieure
7-
last_value_still_valid_on: "2025-03-31"
7+
last_value_still_valid_on: "2026-02-24"
88
label_en: "\"Décote\" computation"
99
ipp_csv_id: inf_decote1_ifi
1010
unit: currency

openfisca_france/parameters/taxation_capital/impot_fortune_immobiliere_ifi_partir_2018/decote/borne_superieure_decote.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ values:
44
value: 1400000
55
metadata:
66
short_label: Borne supérieure
7-
last_value_still_valid_on: "2025-03-28"
7+
last_value_still_valid_on: "2026-02-24"
88
label_en: "\"Décote\" computation"
99
ipp_csv_id: sup_decote1_ifi
1010
unit: currency

openfisca_france/parameters/taxation_capital/impot_fortune_immobiliere_ifi_partir_2018/decote/parametre_calcul_decote.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ values:
44
value: 17500
55
metadata:
66
short_label: Paramètre de calcul
7-
last_value_still_valid_on: "2025-02-20"
7+
last_value_still_valid_on: "2026-02-24"
88
label_en: Décote computation
99
ipp_csv_id: decote_1_ifi
1010
unit: currency

openfisca_france/parameters/taxation_capital/impot_fortune_immobiliere_ifi_partir_2018/decote/taux_decote.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ values:
44
value: 0.0125
55
metadata:
66
short_label: Taux
7-
last_value_still_valid_on: "2025-03-28"
7+
last_value_still_valid_on: "2026-02-24"
88
label_en: Décote computation
99
ipp_csv_id: tx_decote_ifi
1010
unit: /1
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
description: Taux d'exoneration de certains actifs non batis pour l'IFI
2+
metadata:
3+
short_label: Taux d'exoneration
4+
order:
5+
- taux_bois_forets
6+
- taux_groupements_forestiers
7+
- taux_avec_seuil
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
description: Seuil et taux Exonération pour bail long-terme et foncier agricole, IFI
2+
metadata:
3+
short_label: Taux et seuil d'exoneration
4+
order:
5+
- seuil
6+
- taux_sou_seuil
7+
- taux_dessus_seuil

openfisca_france/parameters/taxation_capital/impot_fortune_immobiliere_ifi_partir_2018/forfait_mobilier/non_bati/seuil.yaml renamed to openfisca_france/parameters/taxation_capital/impot_fortune_immobiliere_ifi_partir_2018/exonerations/taux_avec_seuil/seuil.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
description: Seuil biens ruraux, ISF-IFI sur l'immobilier non-bâti
1+
description: Seuil d'exonération pour bail long-terme et foncier agricole, IFI
22
values:
33
2018-01-01:
44
value: 101897
55
metadata:
6-
last_value_still_valid_on: "2025-02-20"
6+
last_value_still_valid_on: "2026-02-24"
77
unit: currency
88
reference:
99
2018-01-01:

openfisca_france/parameters/taxation_capital/impot_fortune_immobiliere_ifi_partir_2018/forfait_mobilier/non_bati/taux_forestier_agricole.yaml renamed to openfisca_france/parameters/taxation_capital/impot_fortune_immobiliere_ifi_partir_2018/exonerations/taux_avec_seuil/taux_dessus_seuil.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
description: Taux biens ruraux, ISF-IFI sur l'immobilier non-bâti
1+
description: Taux d'exonération bail long-terme et foncier agricole pour l'IFI, au dessus du seuil
22
values:
33
2018-01-01:
44
value: 0.5
55
metadata:
6-
last_value_still_valid_on: "2025-03-31"
6+
last_value_still_valid_on: "2026-02-24"
77
unit: /1
88
reference:
99
2018-01-01:
10-
title: Article 976 V du Code général des impôts
10+
title: Article 976 III du Code général des impôts
1111
href: https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000036385037
1212
notes:
1313
2018-01-01:

0 commit comments

Comments
 (0)