diff --git a/openfisca_france/model/prestations/prestations_familiales/aeeh.py b/openfisca_france/model/prestations/prestations_familiales/aeeh.py index ee43455f20..7dbf041bbc 100644 --- a/openfisca_france/model/prestations/prestations_familiales/aeeh.py +++ b/openfisca_france/model/prestations/prestations_familiales/aeeh.py @@ -1,4 +1,5 @@ from openfisca_france.model.base import * +from openfisca_france.model.caracteristiques_socio_demographiques.logement import TypesLieuResidence class aeeh_niveau_handicap(Variable): @@ -55,7 +56,7 @@ def formula_2006_01_01(famille, period, parameters): + (niveau_handicap == 6) * majoration._children['6e_categorie'] * isole ) + (niveau_handicap == 6) * complement_d_allocation._children['6e_categorie_1'] - montant_total = famille.sum(montant_par_enfant, role = Famille.ENFANT) + montant_total = famille.sum(montant_par_enfant, role=Famille.ENFANT) # L'attribution de l'AEEH de base et de ses compléments éventuels ne fait pas obstacle au # versement des prestations familiales. @@ -104,3 +105,53 @@ def formula_2002_04_01(famille, period, parameters): montant_total = famille.sum(montant_par_enfant, role = Famille.ENFANT) return montant_total + + +class besoin_educatif_particulier(Variable): + value_type = bool + entity = Individu + label = "Enfant possède une reconnaissance d’un besoin éducatif particulier" + definition_period = MONTH + + +class aeeh_eligible(Variable): + value_type = bool + entity = Famille + label = "Éligibilité à l'allocation d'éducation de l'enfant handicapé (AEEH)" + reference = [ + "https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000006743351/", + "https://www.legifrance.gouv.fr/codes/section_lc/LEGITEXT000006073189/LEGISCTA000006156691/" + ] + documentation = """ + L’Allocation d’éducation de l’enfant handicapé (AEEH) est une prestation familiale destinée, sous conditions, aux personnes qui ont à leur charge et à domicile un enfant de moins de 21 ans en situation de handicap. + L’attribution de cette aide fait l’objet d’une évaluation préalable. + + """ + definition_period = MONTH + set_input = set_input_divide_by_period + calculate_output = calculate_output_add + + def formula_2005_12_20(famille, period, parameters): + age = famille.members('age', period) + taux_incapacite = famille.members('taux_incapacite', period) + besoin_educatif_particulier = famille.members('besoin_educatif_particulier', period) + + aeeh_parameters = parameters(period).prestations.prestations_familiales.aeeh + residence = famille.members.menage('residence', period) + + condition_age = (age < aeeh_parameters.age_maximum_de_l_enfant) + condition_taux_incapacite = ( + ( + taux_incapacite >= aeeh_parameters.taux_incapacite_maximal.taux_incapacite_maximal + ) + ( + ( + taux_incapacite >= aeeh_parameters.taux_incapacite_minimal.taux_incapacite_minimal + ) * ( + taux_incapacite < aeeh_parameters.taux_incapacite_maximal.taux_incapacite_maximal + ) * besoin_educatif_particulier + ) + ) + + condition_residence_FR = False if residence == TypesLieuResidence.non_renseigne else True + + return condition_age * condition_taux_incapacite * condition_residence_FR diff --git a/openfisca_france/parameters/prestations/prestations_familiales/aeeh/taux_incapacite_maximal.yml b/openfisca_france/parameters/prestations/prestations_familiales/aeeh/taux_incapacite_maximal.yml new file mode 100644 index 0000000000..82cca5da40 --- /dev/null +++ b/openfisca_france/parameters/prestations/prestations_familiales/aeeh/taux_incapacite_maximal.yml @@ -0,0 +1,6 @@ +taux_incapacite_maximal: + reference: https://www.legifrance.gouv.fr/codes/section_lc/LEGITEXT000006073189/LEGISCTA000006156691/#LEGIARTI000006750709 + description: Taux d'incapacité maximal au dessous duquel l'enfant peut prétendre à l'aeeh + values: + 2005-12-20: + value: 0.8 diff --git a/openfisca_france/parameters/prestations/prestations_familiales/aeeh/taux_incapacite_minimal.yml b/openfisca_france/parameters/prestations/prestations_familiales/aeeh/taux_incapacite_minimal.yml new file mode 100644 index 0000000000..82e24c84b5 --- /dev/null +++ b/openfisca_france/parameters/prestations/prestations_familiales/aeeh/taux_incapacite_minimal.yml @@ -0,0 +1,6 @@ +taux_incapacite_minimal: + reference: https://www.legifrance.gouv.fr/codes/section_lc/LEGITEXT000006073189/LEGISCTA000006156691/#LEGIARTI000006750709 + description: Taux d'incapacité minimal à partir duquel l'enfant peut prétendre à l'aeeh + values: + 2005-12-20: + value: 0.5 diff --git a/tests/formulas/test_aeeh_eligible.yml b/tests/formulas/test_aeeh_eligible.yml new file mode 100644 index 0000000000..e8bb4bc97d --- /dev/null +++ b/tests/formulas/test_aeeh_eligible.yml @@ -0,0 +1,77 @@ +- name: Éligibilité à l'aide nationale AEEH + period: 2020-10 + input: + individus: + p1: + age: 19 + taux_incapacite: 0.81 + menage: + residence: metropole + output: + aeeh_eligible: True + +- name: Éligibilité à l'aide nationale AEEH avec besoin educatif particulier + period: 2020-10 + input: + individus: + p1: + age: 19 + taux_incapacite: 0.70 + besoin_educatif_particulier: + 2020-10: True + menage: + residence: metropole + output: + aeeh_eligible: True + +- name: Non éligibilité à l'aide nationale AEEH car taux_incapacité trop faible + period: 2020-10 + input: + individus: + p1: + age: 19 + taux_incapacite: 0.48 + besoin_educatif_particulier: + 2020-01: False + menage: + residence: metropole + output: + aeeh_eligible: False + +- name: Non éligibilité à l'aide nationale AEEH car trop âgé + period: 2020-10 + input: + individus: + p1: + age: 29 + taux_incapacite: 0.81 + menage: + residence: metropole + output: + aeeh_eligible: False + +- name: Non éligibilité à l'aide nationale AEEH car résidence hors France + period: 2020-10 + input: + individus: + p1: + age: 19 + taux_incapacite: 0.81 + menage: + residence: non_renseigne + output: + aeeh_eligible: False + +- name: Non éligibilité à l'aide nationale AEEH car taux < 80% mais pas besoin educatif + period: 2020-10 + input: + individus: + p1: + age: 19 + taux_incapacite: 0.78 + besoin_educatif_particulier: + 2020-01: False + menage: + residence: metropole + output: + aeeh_eligible: False