Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Corrige déconjugalisation du aah_plafond_ressource + test #2218

Merged
merged 13 commits into from
Feb 23, 2024
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,16 @@
# Changelog

### 158.0.1 [2218](https://github.com/openfisca/openfisca-france/pull/2218)

* Évolution du système socio-fiscal.
* Périodes concernées : à partir du 01/10/2023.
* Zones impactées :
- prestations_sociales/prestations_etat_de_sante/invalidite/aah/majoration_plafond
- model/prestations/minima sociaux/aah
* Détails :
- La déconjugalisation de l'aah ne prenait pas encore en compte la déconjugalisation du plafond
- Ajout de l'option de conjugalisation après octobre 2023. Renomme en conséquence aah_base_ressource et aah selon leur statut de conjugalisation.

### 158.0.1 [2256](https://github.com/openfisca/openfisca-france/pull/2256)

* Évolution du système socio-fiscal.
Expand Down
85 changes: 78 additions & 7 deletions openfisca_france/model/prestations/minima_sociaux/aah.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,9 @@ class aah_date_debut_hospitalisation(Variable):
set_input = set_input_dispatch_by_period


class aah_base_ressources(Variable):
class aah_base_ressources_conjugalisee(Variable):
value_type = float
label = "Base ressources de l'allocation adulte handicapé"
label = "Base ressources de l'allocation adulte handicapé avant déconjugalisation"
entity = Individu
definition_period = MONTH
set_input = set_input_divide_by_period
Expand Down Expand Up @@ -181,6 +181,14 @@ def base_ressource_eval_annuelle():
base_ressource_eval_annuelle() / 12
)


class aah_base_ressources_deconjugalisee(Variable):
value_type = float
label = "Base ressources de l'allocation adulte handicapé après déconjugalisation"
entity = Individu
definition_period = MONTH
set_input = set_input_divide_by_period

def formula_2023_10_01(individu, period, parameters):
law = parameters(period)
aah = law.prestations_sociales.prestations_etat_de_sante.invalidite.aah
Expand Down Expand Up @@ -478,9 +486,9 @@ def formula(individu, period):
return individu('pensions_invalidite', period) + individu('asi', period.last_month)


class aah_plafond_ressources(Variable):
class aah_plafond_ressources_conjugalise(Variable):
value_type = float
label = "Montant plafond des ressources pour bénéficier de l'Allocation adulte handicapé (hors complément)"
label = "Montant plafond des ressources pour bénéficier de l'Allocation adulte handicapé (hors complément) avant déconjugalisation"
entity = Individu
reference = [
'Article D821-2 du Code de la sécurité sociale',
Expand All @@ -489,6 +497,12 @@ class aah_plafond_ressources(Variable):
definition_period = MONTH
set_input = set_input_divide_by_period

'''
A partir du 01/10/2023, la déconjugalisation est la règle par défaut.
Seules les personnes ayant droit à la conjugalisation sans interruption
depuis cette date peuvent garder l'ancien calcul.
'''

def formula(individu, period, parameters):
law = parameters(period).prestations_sociales

Expand All @@ -505,6 +519,43 @@ def formula(individu, period, parameters):
)


class aah_plafond_ressources_deconjugalise(Variable):
value_type = float
label = "Montant plafond des ressources pour bénéficier de l'Allocation adulte handicapé (hors complément) après déconjugalisation"
entity = Individu
reference = [
'Article D821-2 du Code de la sécurité sociale',
'https://www.legifrance.gouv.fr/affichCodeArticle.do;jsessionid=4B54EC7065520E4812F84677B918A48E.tplgfr28s_2?idArticle=LEGIARTI000019077584&cidTexte=LEGITEXT000006073189&dateTexte=20081218'
]
definition_period = MONTH
set_input = set_input_divide_by_period

def formula(individu, period, parameters):
law = parameters(period).prestations_sociales

af_nbenf = individu.famille('af_nbenf', period)
montant_max = law.prestations_etat_de_sante.invalidite.aah.montant

return montant_max * (
+ 1
+ law.prestations_etat_de_sante.invalidite.aah.majoration_plafond.majoration_par_enfant_supplementaire
* af_nbenf
)


class aah_conjugalise_eligible(Variable):
value_type = bool
default_value = False
entity = Individu
label = "Eligibilité à la conjugalisation de l'AAH après le 01/10/2023"
reference = [
'Décret 2022-1694 du 28 décembre 2022',
'https://www.legifrance.gouv.fr/jorf/article_jo/JORFARTI000046830064'
]
definition_period = MONTH
set_input = set_input_dispatch_by_period


class aah_base(Variable):
calculate_output = calculate_output_add
value_type = float
Expand All @@ -521,16 +572,36 @@ def formula(individu, period, parameters):
law = parameters(period).prestations_sociales

aah_eligible = individu('aah_eligible', period)
aah_base_ressources = individu('aah_base_ressources', period)
plaf_ress_aah = individu('aah_plafond_ressources', period)
aah_base_ressources_conjugalisee = individu('aah_base_ressources_conjugalisee', period)
plaf_ress_aah_conjugalise = individu('aah_plafond_ressources_conjugalise', period)
# Le montant de l'AAH est plafonné au montant de base.
montant_max = law.prestations_etat_de_sante.invalidite.aah.montant
montant_aah = min_(montant_max, max_(0, plaf_ress_aah - aah_base_ressources))
montant_aah = min_(montant_max, max_(0, plaf_ress_aah_conjugalise - aah_base_ressources_conjugalisee))

aah_base_non_cumulable = individu('aah_base_non_cumulable', period)

return aah_eligible * min_(max_(0, montant_aah), max_(0, montant_max - aah_base_non_cumulable))

def formula_2023_10_01(individu, period, parameters):
law = parameters(period).prestations_sociales
# Le montant de l'AAH est plafonné au montant de base.
montant_max = law.prestations_etat_de_sante.invalidite.aah.montant
aah_eligible = individu('aah_eligible', period)
aah_base_non_cumulable = individu('aah_base_non_cumulable', period)
aah_conjugalise_eligible = individu('aah_conjugalise_eligible', period)

aah_base_ressources_conjugalisee = individu('aah_base_ressources_conjugalisee', period)
plaf_ress_aah_conjugalise = individu('aah_plafond_ressources_conjugalise', period)
montant_aah_conjugalise = min_(montant_max, max_(0, plaf_ress_aah_conjugalise - aah_base_ressources_conjugalisee))
aah_conjugalise = aah_eligible * min_(max_(0, montant_aah_conjugalise), max_(0, montant_max - aah_base_non_cumulable))

aah_base_ressources_deconjugalisee = individu('aah_base_ressources_deconjugalisee', period)
plaf_ress_aah_deconjugalise = individu('aah_plafond_ressources_deconjugalise', period)
montant_aah_deconjugalise = min_(montant_max, max_(0, plaf_ress_aah_deconjugalise - aah_base_ressources_deconjugalisee))
aah_deconjugalise = aah_eligible * min_(max_(0, montant_aah_deconjugalise), max_(0, montant_max - aah_base_non_cumulable))

return where(aah_conjugalise_eligible, max_(aah_conjugalise, aah_deconjugalise), aah_deconjugalise)


class aah(Variable):
calculate_output = calculate_output_add
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,3 +24,6 @@ metadata:
official_journal_date:
2018-11-01: "2018-11-03"
2019-11-01: "2019-11-13"
documentation:
"Depuis le 01/10/2023, ce taux n'est appliqué que pour les personnes encore éligibles à la conjugalisation de l'AAH."

2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

setup(
name = 'OpenFisca-France',
version = '158.0.1',
version = '159.0.0',
author = 'OpenFisca Team',
author_email = '[email protected]',
classifiers = [
Expand Down
26 changes: 13 additions & 13 deletions tests/formulas/aah/aah.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
input:
taux_incapacite: 0.9
age: 22 # eligible aah
aah_base_ressources: 500 / 12
aah_base_ressources_conjugalisee: 500 / 12
en_couple: 0
af_nbenf: 0
output:
Expand All @@ -18,7 +18,7 @@
input:
taux_incapacite: 0.9
age: 33 # eligible aah
aah_base_ressources: 15000 / 12
aah_base_ressources_conjugalisee: 15000 / 12
en_couple: 1
af_nbenf: 0
output:
Expand Down Expand Up @@ -114,7 +114,7 @@
2015-09: 400
2015-08: 400
output:
aah_base_ressources:
aah_base_ressources_conjugalisee:
2015-11: 80
aah_base:
2015-11: 727.65
Expand All @@ -130,7 +130,7 @@
2015-09: 1471
2015-08: 1471
output:
aah_base_ressources:
aah_base_ressources_conjugalisee:
2015-11: (0.3 * 1457) * 0.2 + (1471 - 0.3 * 1457) * 0.6 # = 8494, Abat. de 80% sur les 30% du SMIC + abat. de 40% sur le reste
aah_base:
2015-11: 99.89
Expand All @@ -143,7 +143,7 @@
salaire_imposable:
2013: 770
output:
aah_base_ressources:
aah_base_ressources_conjugalisee:
2015-11: 154 / 12
aah_base:
2015-11: 795
Expand All @@ -163,7 +163,7 @@
salaire_imposable:
2013: 1128.70 * 12
output:
aah_base_ressources:
aah_base_ressources_conjugalisee:
2015-11:
- 812.66 # 1128.70 avec les abattements pour conjoint
- 502.31 # 1128.70 avec les abattements pour bénéficiaire
Expand Down Expand Up @@ -191,7 +191,7 @@
2015-09: 1000
2015-08: 1000
output:
aah_base_ressources:
aah_base_ressources_conjugalisee:
2015-11:
- 1427.67 # 1471 avec abat. bénéficiaire + 1000 avec abat. conjoint
- 1484.25 # 1471 avec abat. conjoint + 1000 avec abat. bénéficiaire
Expand Down Expand Up @@ -551,7 +551,7 @@
2022-02: 1000
2022-01: 1000
output:
aah_base_ressources:
aah_base_ressources_conjugalisee:
2022-05:
- 1174 # 1471 avec abat. bénéficiaire + 1000 avec abat. conjoint
- 1315 # 1471 avec abat. conjoint + 1000 avec abat. bénéficiaire
Expand Down Expand Up @@ -590,7 +590,7 @@
output:
aah_base_ressources_activite_eval_trimestrielle:
2022-05: [17652, 12000, 0]
aah_base_ressources:
aah_base_ressources_conjugalisee:
2022-05:
- 1052 # [[(1 - 0.8) * min(0.3 * 12 * 10.85 * 151.67, 17652) + (1 - 0.44) * (17 652 - 5924)] + [12000*0.9 - (5000 + 1*1400)]] / 12 [[base ressource demandeur + base ressource conjoint]] /12
- 1193
Expand All @@ -616,7 +616,7 @@
salaire_imposable:
2002: 1128.70 * 12
output:
aah_base_ressources:
aah_base_ressources_conjugalisee:
2004-04:
- 812.66 # 1128.70 avec les abattements pour conjoint
- 1128.7
Expand All @@ -638,7 +638,7 @@
2005: 1128.70 * 12
2004: 1128.70 * 12
output:
aah_base_ressources:
aah_base_ressources_conjugalisee:
2006-04:
- 812.66 # 1128.70 avec les abattements pour conjoint
- 887.8 # 1128.70 avec les abattements pour bénéficiaire
Expand All @@ -657,7 +657,7 @@
output:
aah_base_ressources_hors_activite_eval_annuelle:
2015-11: 1600
aah_base_ressources: 1600/12
aah_base_ressources_conjugalisee: 1600/12
aah: 674.32 # 807.65-1600/12

- name: AAH demandeur sans ressource et autre
Expand Down Expand Up @@ -752,4 +752,4 @@
2023-04: 200
2023-03: 200
output:
aah_base_ressources: [310, 0] # ((0.2 * 6290 + 0.6 * 8110) - (200 * 12))/12 ~= 310
aah_base_ressources_conjugalisee: [310, 0] # ((0.2 * 6290 + 0.6 * 8110) - (200 * 12))/12 ~= 310
19 changes: 10 additions & 9 deletions tests/formulas/aah/aah_couple.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
individus:
parent1:
aah_eligible: true
aah_base_ressources: 16790.72 / 12
aah_base_ressources_conjugalisee: 16790.72 / 12
parent2:
aah_eligible: false
foyers_fiscaux:
Expand Down Expand Up @@ -46,7 +46,7 @@
individus:
parent1:
aah_eligible: true
aah_base_ressources: 8777.70 / 12
aah_base_ressources_conjugalisee: 8777.70 / 12
parent2:
aah_eligible: false
foyers_fiscaux:
Expand Down Expand Up @@ -84,7 +84,7 @@
aah_eligible: false
parent2:
aah_eligible: true
aah_base_ressources: 12585.68 / 12
aah_base_ressources_conjugalisee: 12585.68 / 12
foyers_fiscaux:
foyer_fiscal_0:
declarants:
Expand Down Expand Up @@ -132,8 +132,8 @@
personne_de_reference:
- parent2
output:
aah_base_ressources: [413.42, 720]
# L'aah base_ressource change avec le smic (et le montant d'AAH peut changer), l'output réel est donc encore inconnu (05/2023) : test utile uniquement pour le développement, en utilisant la dernière valeur du SMIC et d'AAH(qui risque de changer encore d'ici octobre)
aah_base_ressources_conjugalisee: [413.42, 720]

- name: Couple de personnes en situation de handicap, déconjugalisation
period: 2023-11
absolute_error_margin: 1
Expand All @@ -157,9 +157,10 @@
personne_de_reference: parent1
conjoint: parent2
output:
aah_base_ressources: [990.33, 0]
aah_base: [767.85, 971.37]
aah: [767.85, 971.37] # montant maximum pour le 2ème individu en attendant l'actualisation du montant min((montant mensuel aah * 1.81 - base ressources), montant mensuel aah)
aah_conjugalise_eligible: false
aah_base_ressources_deconjugalisee: [990.33, 0]
aah_base: [0, 971.37]
aah: [0, 971.37]

- name: Couple de personnes en situation de handicap, juste avant déconjugalisation
period: 2023-08
Expand All @@ -184,6 +185,6 @@
personne_de_reference: parent1
conjoint: parent2
output:
aah_base_ressources: [990.33, 1383.33] #[..., 24000/12*0.9-5000/12]
aah_base_ressources_conjugalisee: [990.33, 1383.33] #[..., 24000/12*0.9-5000/12]
aah_base: [767.85, 374.84]
aah: [767.85, 374.84]
Loading
Loading