Skip to content

Commit

Permalink
Corrige déconjugalisation du aah_plafond_ressource + test (#2218)
Browse files Browse the repository at this point in the history
  • Loading branch information
sylvainipp authored Feb 23, 2024
2 parents c3ddd91 + 62b7151 commit c29e88e
Show file tree
Hide file tree
Showing 7 changed files with 124 additions and 38 deletions.
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

0 comments on commit c29e88e

Please sign in to comment.