Skip to content

Commit 28b511b

Browse files
author
benoit-cty
committed
Ajout de test
1 parent 774f34e commit 28b511b

File tree

2 files changed

+283
-17
lines changed

2 files changed

+283
-17
lines changed

openfisca_france/model/prelevements_obligatoires/impot_revenu/contribution_differentielle_hauts_revenus.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -490,7 +490,7 @@ def formula_2026_01_01(foyer_fiscal, period, parameters):
490490
cdhr_parameters = parameters(
491491
period
492492
).impot_revenu.contributions_exceptionnelles.contribution_differentielle_hauts_revenus
493-
taux_acompte = cdhr_parameters.taux_acompte # 0.95
493+
taux_acompte = cdhr_parameters.taux_acompte
494494

495495
cdhr = foyer_fiscal('contribution_differentielle_hauts_revenus', period)
496496
return cdhr * taux_acompte
@@ -525,6 +525,7 @@ def formula_2026_01_01(foyer_fiscal, period, parameters):
525525
acompte_verse = foyer_fiscal("contribution_differentielle_hauts_revenus_acompte_verse", period)
526526

527527
# Seuil de sous-estimation toléré = 20% de marge
528+
# TODO: A mettre en paramètre ?
528529
seuil_acompte_minimum = cdhr * taux_acompte * (1 - 0.20)
529530

530531
# Pénalité si acompte insuffisant
Lines changed: 281 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,73 @@
1-
- name: Célibataire à plus de 250 000€ de revenus, au PFU
1+
2+
- name: Test acompte avec pénalité si sous-estimation 2026
3+
period: 2026
4+
absolute_error_margin: 0.07
5+
input:
6+
f3ua:
7+
2026: 400_000
8+
contribution_differentielle_hauts_revenus_acompte_verse:
9+
2026: 10_000 # Versement insuffisant (bien en dessous des 95%)
10+
# 2026: 0 # Versement insuffisant (bien en dessous des 95%)
11+
output:
12+
rfr:
13+
2026: 400_000
14+
contribution_differentielle_hauts_revenus_eligible:
15+
2026: true
16+
2027: false
17+
contribution_differentielle_hauts_revenus_ressources:
18+
2026: 400_000
19+
prelevement_forfaitaire_unique_ir:
20+
2026: 400_000 * 0.128
21+
impot_revenu_restant_a_payer:
22+
2026: -55_700
23+
contribution_differentielle_hauts_revenus_decote:
24+
2026: 0
25+
2027: 0
26+
contribution_differentielle_hauts_revenus:
27+
# CDHR 2026 = (400_000 * 0.20) - 55_700
28+
2026: 24_300
29+
contribution_differentielle_hauts_revenus_penalite_acompte:
30+
# Acompte attendu = 24_300 * 0.95 = 23_085.0
31+
# Seuil minimum (avec 20% de marge) = 24_300 * 0.80 = 19_440
32+
# Versement = 10_000 < 19_440, donc pénalité
33+
# Assiette = max(19_440 - 10_000, 0) = 9_440
34+
# Pénalité = 9_440 * 0.20 = 1 888
35+
2026: 1_888
36+
2027: 0
37+
contribution_differentielle_hauts_revenus_acompte:
38+
2026: 0 # 24_300 * 0.95
39+
40+
- name: Célibataire non éligible 2026 (revenus < 250 000€)
41+
period: 2027
42+
input:
43+
f3ua:
44+
2026: 200_000
45+
output:
46+
rfr:
47+
2026: 200_000
48+
contribution_differentielle_hauts_revenus_eligible:
49+
2026: false
50+
2027: false
51+
contribution_differentielle_hauts_revenus_decote:
52+
2026: 0
53+
2027: 0
54+
contribution_differentielle_hauts_revenus:
55+
2026: 0
56+
2027: 0
57+
contribution_differentielle_hauts_revenus_acompte:
58+
2026: 0
59+
2027: 0
60+
61+
- name: Célibataire à 300 000€ de revenus 2026, au PFU
262
period: 2027
363
input:
464
f3ua:
565
2026: 300_000
6-
f7ud:
7-
2026: 2000
866
output:
9-
dfppce:
10-
# TODO: Passer à 1 500 € après merge de l'autre PR
11-
2026: 750
1267
rni:
1368
2026: 0
1469
taux_moyen_imposition:
1570
2026: 0
16-
contribution_exceptionnelle_hauts_revenus:
17-
# 3% de 50_000€ (300_000 de rfr - 250_000 de seuil de CEHR)
18-
# Moins les dons 50_000 - (2_000 * 0.75) = 48_500
19-
# 48_500 * 0.03
20-
# 2026: 1_455
21-
2026: 1_500
22-
2027: 0
2371
rfr:
2472
2026: 300_000
2573
prelevement_forfaitaire_unique_ir:
@@ -35,7 +83,224 @@
3583
contribution_differentielle_hauts_revenus_ressources:
3684
2026: 300_000
3785
contribution_differentielle_hauts_revenus:
38-
# CDHR = (300_000 de RFR * 20% - décote) - impot_revenu_restant_a_payer
39-
# = (60_000 - 18_750) - (-1 pour retirer le signe négatif de l'impôt * -39_900)
40-
2026: 1350 # était à 20_100 sans décote
86+
# CDHR 2026 = (300_000 * 20% - décote) - impôt avant création
87+
# = (60_000 - 18_750) - 39_900
88+
# = 41_250 - 39_900 = 1_350
89+
2026: 1_350
90+
2027: 0
91+
contribution_differentielle_hauts_revenus_acompte:
92+
2026: 1_350 * 0.95
93+
2027: 0
94+
95+
- name: Célibataire à 500 000€ de revenus 2026, au PFU
96+
period: 2027
97+
absolute_error_margin: 0.07
98+
input:
99+
f3ua:
100+
2026: 500_000
101+
output:
102+
rni:
103+
2026: 0
104+
taux_moyen_imposition:
105+
2026: 0
106+
rfr:
107+
2026: 500_000
108+
prelevement_forfaitaire_unique_ir:
109+
2026: 500_000 * 0.128
110+
impot_revenu_restant_a_payer:
111+
2026: -71_500
112+
contribution_differentielle_hauts_revenus_eligible:
113+
2026: true
114+
2027: false
115+
contribution_differentielle_hauts_revenus_decote:
116+
2026: 0
117+
2027: 0
118+
contribution_differentielle_hauts_revenus_ressources:
119+
2026: 500_000
120+
contribution_differentielle_hauts_revenus:
121+
# CDHR 2026 = (500_000 * 20% - 0) - 71_500
122+
# = 100_000 - 71_500 =
123+
2026: 28_500
124+
2027: 0
125+
contribution_differentielle_hauts_revenus_acompte:
126+
2026: 28_500 * 0.95
127+
2027: 0
128+
129+
- name: Couple à 600 000€ de revenus 2026, au PFU
130+
period: 2027
131+
absolute_error_margin: 0.07
132+
input:
133+
foyer_fiscal:
134+
declarants:
135+
- ind0
136+
- ind1
137+
f2dc:
138+
2026: 600_000
139+
individus:
140+
ind0:
141+
date_naissance: '1970-01-01'
142+
statut_marital: marie
143+
ind1:
144+
date_naissance: '1970-01-01'
145+
statut_marital: marie
146+
output:
147+
rfr:
148+
2026: 600_000
149+
prelevement_forfaitaire_unique_ir:
150+
2026: 600_000 * 0.128
151+
impot_revenu_restant_a_payer:
152+
2026: -79_800
153+
contribution_differentielle_hauts_revenus_decote:
154+
# couple et revenus à 600_000 <= 660_000
155+
# 20% de 600_000 = 120_000
156+
# 120_000 - (82,5 % de (600_000 - 500_000)) = 120_000 - 82_500 = 37_500
157+
2026: 37_500
158+
2027: 0
159+
contribution_differentielle_hauts_revenus_ressources:
160+
2026: 600_000
161+
contribution_differentielle_hauts_revenus_majoration:
162+
2026: 12_500
163+
contribution_differentielle_hauts_revenus:
164+
# CDHR 2026 = (600_000 * 20% - 37_500 - 79_800 - 12_500 majoration couple) = - 92 300
165+
# Donc max(0, -92_300) = 0
166+
2026: 0
167+
2027: 0
168+
contribution_differentielle_hauts_revenus_acompte:
169+
2026: 0
170+
2027: 0
171+
172+
- name: Couple à 1 000 000€ de revenus 2026, au PFU
173+
period: 2027
174+
absolute_error_margin: 0.07
175+
input:
176+
foyer_fiscal:
177+
declarants:
178+
- ind0
179+
- ind1
180+
f2dc:
181+
2026: 1_000_000
182+
individus:
183+
ind0:
184+
date_naissance: '1970-01-01'
185+
statut_marital: marie
186+
ind1:
187+
date_naissance: '1970-01-01'
188+
statut_marital: marie
189+
output:
190+
rfr:
191+
2026: 1_000_000
192+
prelevement_forfaitaire_unique_ir:
193+
2026: 1_000_000 * 0.128
194+
impot_revenu_restant_a_payer:
195+
2026: -143_000
196+
contribution_differentielle_hauts_revenus_decote:
197+
2026: 0
198+
2027: 0
199+
contribution_differentielle_hauts_revenus_majoration:
200+
2026: 12_500
201+
contribution_differentielle_hauts_revenus_ressources:
202+
2026: 1_000_000
203+
contribution_differentielle_hauts_revenus_eligible:
204+
2026: true
205+
2027: false
206+
contribution_differentielle_hauts_revenus:
207+
# CDHR 2026 = (1_000_000 * 20% - 0) - 143_000 - 12_500
208+
# = 200_000 - 155_500
209+
2026: 44_500
210+
2027: 0
211+
contribution_differentielle_hauts_revenus_acompte:
212+
2026: 44_500 * 0.95
213+
2027: 0
214+
215+
- name: Célibataire à 270 000€ avec dons 2026, au barème
216+
period: 2027
217+
absolute_error_margin: 0.01
218+
input:
219+
foyer_fiscal:
220+
declarants:
221+
- ind0
222+
f2dc:
223+
2026: 270_000
224+
f7ud:
225+
2026: 1_000 # Dons aux oeuvres (nouvellement inclus en 2026)
226+
f7uf:
227+
2026: 4_000
228+
individus:
229+
ind0:
230+
date_naissance: '1970-01-01'
231+
statut_marital: celibataire
232+
output:
233+
rni:
234+
2026: 0
235+
rfr:
236+
2026: 270_000
237+
contribution_differentielle_hauts_revenus_eligible:
238+
2026: true
239+
2027: false
240+
contribution_differentielle_hauts_revenus_decote:
241+
# Célibataire et revenus à 270_000 <= 330_000
242+
# 20% de 270_000 = 54_000
243+
# 54_000 - (82,5 % de (270_000 - 250_000)) = 54_000 - 16_500 = 37_500
244+
2026: 37_500
245+
2027: 0
246+
contribution_differentielle_hauts_revenus_ressources:
247+
2026: 270_000
248+
dfppce:
249+
# Le f7uf * 0.60 ne s'applique pas car le RNI est à 0 !!!
250+
2026: 1_000 * 0.75
251+
contribution_differentielle_hauts_revenus_majoration_impot:
252+
# Inclut dfppce depuis 2026
253+
2026: 1_000 * 0.75
254+
contribution_differentielle_hauts_revenus:
255+
2026: 0
256+
2027: 0
257+
258+
259+
- name: Couple à 1 000 000€ avec dons en 2026, au PFU
260+
period: 2027
261+
absolute_error_margin: 0.07
262+
input:
263+
foyer_fiscal:
264+
declarants:
265+
- ind0
266+
- ind1
267+
f2dc:
268+
2026: 1_000_000
269+
f7ud:
270+
2026: 1_000 # Dons aux oeuvres (nouvellement inclus en 2026)
271+
f7uf:
272+
2026: 4_000
273+
individus:
274+
ind0:
275+
date_naissance: '1970-01-01'
276+
statut_marital: marie
277+
ind1:
278+
date_naissance: '1970-01-01'
279+
statut_marital: marie
280+
output:
281+
rni:
282+
2026: 0
283+
rfr:
284+
2026: 1_000_000
285+
prelevement_forfaitaire_unique_ir:
286+
2026: 1_000_000 * 0.128
287+
impot_revenu_restant_a_payer:
288+
2026: -143_000
289+
contribution_differentielle_hauts_revenus_decote:
290+
2026: 0
291+
2027: 0
292+
contribution_differentielle_hauts_revenus_majoration:
293+
2026: 12_500
294+
contribution_differentielle_hauts_revenus_ressources:
295+
2026: 1_000_000
296+
contribution_differentielle_hauts_revenus_eligible:
297+
2026: true
298+
2027: false
299+
contribution_differentielle_hauts_revenus:
300+
# CDHR 2026 = (1_000_000 * 20% - 0) - 143_000 - 12_500
301+
# = 200_000 - 155_500
302+
2026: 44_500 - 750
303+
2027: 0
304+
contribution_differentielle_hauts_revenus_acompte:
305+
2026: (44_500 - 750) * 0.95
41306
2027: 0

0 commit comments

Comments
 (0)