From e79e623ed558f3b249cdfa48c243e825d9bf76b1 Mon Sep 17 00:00:00 2001 From: GF Date: Wed, 10 Apr 2024 11:57:57 +0200 Subject: [PATCH] fix(ppa): prise en compte des statuts apprenti et stagiaire dans le calcul de l eligibilite a la prime d activite --- CHANGELOG.md | 9 +++ .../model/prestations/minima_sociaux/ppa.py | 30 +++++----- setup.py | 2 +- tests/formulas/ppa/ppa.yaml | 56 +++++++++++++++++-- 4 files changed, 77 insertions(+), 20 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2139cd9a654..1d349fddbf6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +### 155.2.5 [2279](https://github.com/openfisca/openfisca-france/pull/2328) + +* Évolution du système socio-fiscal. +* Périodes concernées : Toujours +* Zones impactées : + - `openfisca_france/model/prestations/minima_sociaux/ppa.py` +* Détails : + - Les apprenants (etudiants, apprentis et stagiaires) ne sont éligibles à la prime d'activité que s'ils ont des revenus professionnels qui dépassent un seuil. Cet aspect était bien pris en compte pour les étudiants, et desormais pour les apprentis et les stagiaires aussi. + ### 155.2.4 [2279](https://github.com/openfisca/openfisca-france/pull/2279) * Évolution du système socio-fiscal. diff --git a/openfisca_france/model/prestations/minima_sociaux/ppa.py b/openfisca_france/model/prestations/minima_sociaux/ppa.py index d80622fdcb9..3fca77e1ce4 100644 --- a/openfisca_france/model/prestations/minima_sociaux/ppa.py +++ b/openfisca_france/model/prestations/minima_sociaux/ppa.py @@ -19,10 +19,10 @@ def formula(famille, period, parameters): return condition_age -class ppa_plancher_revenu_activite_etudiant(Variable): +class ppa_plancher_revenu_activite_apprenant(Variable): value_type = float entity = Individu - label = "Plancher des revenus d'activité pour être éligible à la PPA en tant qu'étudiant" + label = "Plancher des revenus d'activité pour être éligible à la PPA en tant qu'apprenant (étudiant/stagiaire ou apprenti)" definition_period = MONTH set_input = set_input_divide_by_period @@ -36,7 +36,7 @@ def formula(individu, period, parameters): ) -class ppa_eligibilite_etudiants(Variable): +class ppa_eligibilite_apprenants(Variable): value_type = bool entity = Famille label = 'Eligibilité à la PPA (condition sur tout le trimestre)' @@ -44,7 +44,7 @@ class ppa_eligibilite_etudiants(Variable): 'Article L842-1 du code de la sécurité sociale', 'https://www.legifrance.gouv.fr/affichCodeArticle.do;jsessionid=46068A49B8592A593A05D64D8EDB045A.tplgfr26s_3?idArticle=LEGIARTI000031087527&cidTexte=LEGITEXT000006073189&dateTexte=20181226', 'Article L842-2 du Code de la Sécurité Sociale', - 'https://www.legifrance.gouv.fr/affichCodeArticle.do;jsessionid=F2B88CEFCB83FCAFA4AA31671DAC89DD.tplgfr26s_3?idArticle=LEGIARTI000031087615&cidTexte=LEGITEXT000006073189&dateTexte=20181226' + 'https://www.legifrance.gouv.fr/affichCodeArticle.do;jsessionid=F2B88CEFCB83FCAFA4AA31671DAC89DD.tplgfr26s_3?idArticle=LEGIARTI000031087615&cidTexte=LEGITEXT000006073189&dateTexte=20181226', ] definition_period = MONTH set_input = set_input_dispatch_by_period @@ -52,8 +52,8 @@ class ppa_eligibilite_etudiants(Variable): def formula(famille, period, parameters): ppa_majoree_eligibilite = famille('rsa_majore_eligibilite', period) - etudiant_i = famille.members('etudiant', period) - plancher_etudiant = famille.members('ppa_plancher_revenu_activite_etudiant', period) + apprenant_i = famille.members('etudiant', period) + famille.members('stagiaire', period) + famille.members('apprenti', period) + plancher_apprenant = famille.members('ppa_plancher_revenu_activite_apprenant', period) def condition_ressource(period2, plancher): revenu_activite = famille.members('ppa_revenu_activite_individu', period2) @@ -63,21 +63,21 @@ def condition_ressource(period2, plancher): m_2 = period.offset(-2, 'month') m_3 = period.offset(-3, 'month') - condition_etudiant_i = ( - condition_ressource(m_1, plancher_etudiant) - * condition_ressource(m_2, plancher_etudiant) - * condition_ressource(m_3, plancher_etudiant) + condition_apprenant_i = ( + condition_ressource(m_1, plancher_apprenant) + * condition_ressource(m_2, plancher_apprenant) + * condition_ressource(m_3, plancher_apprenant) ) - condition_non_etudiant_i = ( - not_(etudiant_i) * ( + condition_non_apprenant_i = ( + not_(apprenant_i) * ( condition_ressource(m_1, 0) + condition_ressource(m_2, 0) + condition_ressource(m_3, 0) ) ) - condition_famille = famille.any(condition_non_etudiant_i + condition_etudiant_i, role = Famille.PARENT) + condition_famille = famille.any(condition_non_apprenant_i + condition_apprenant_i, role = Famille.PARENT) return ppa_majoree_eligibilite + condition_famille @@ -506,9 +506,9 @@ def formula_2016_01_01(famille, period, parameters): seuil_non_versement = parameters(period).prestations_sociales.solidarite_insertion.minima_sociaux.ppa.pa_m.montant_minimum_verse # éligibilité étudiants - ppa_eligibilite_etudiants = famille('ppa_eligibilite_etudiants', period) + ppa_eligibilite_apprenants = famille('ppa_eligibilite_apprenants', period) ppa = famille('ppa_fictive', period.last_3_months, options = [ADD]) / 3 - ppa = ppa * ppa_eligibilite_etudiants * (ppa >= seuil_non_versement) + ppa = ppa * ppa_eligibilite_apprenants * (ppa >= seuil_non_versement) return ppa diff --git a/setup.py b/setup.py index f06b60e5a13..bfb7cea89f1 100644 --- a/setup.py +++ b/setup.py @@ -9,7 +9,7 @@ setup( name = 'OpenFisca-France', - version = '155.2.4', + version = '155.2.5', author = 'OpenFisca Team', author_email = 'contact@openfisca.fr', classifiers = [ diff --git a/tests/formulas/ppa/ppa.yaml b/tests/formulas/ppa/ppa.yaml index 89c04151522..66c1e84b21d 100644 --- a/tests/formulas/ppa/ppa.yaml +++ b/tests/formulas/ppa/ppa.yaml @@ -602,7 +602,7 @@ 2015-10: 900 etudiant: true output: - ppa_eligibilite_etudiants: true + ppa_eligibilite_apprenants: true ppa: 244.21 - name: 'PPA: étudiant non éligible (ressources < plancher)' @@ -614,7 +614,31 @@ 2015-10: 890 etudiant: true output: - ppa_eligibilite_etudiants: false + ppa_eligibilite_apprenants: false + ppa: 0 + +- name: 'PPA: stagiaire non éligible (ressources < plancher)' + period: 2016-01 + input: + salaire_net: + 2015-12: 890 + 2015-11: 890 + 2015-10: 890 + stagiaire: true + output: + ppa_eligibilite_apprenants: false + ppa: 0 + +- name: 'PPA: apprenti non éligible (ressources < plancher)' + period: 2016-01 + input: + salaire_net: + 2015-12: 890 + 2015-11: 890 + 2015-10: 890 + apprenti: true + output: + ppa_eligibilite_apprenants: false ppa: 0 - name: 'PPA: étudiant éligible (majoré)' @@ -627,7 +651,7 @@ etudiant: true rsa_majore_eligibilite: true output: - ppa_eligibilite_etudiants: true + ppa_eligibilite_apprenants: true - name: 'PPA: étudiant non éligible car plancher non atteint pour un mois du trimestre de référence' period: 2016-01 @@ -638,7 +662,31 @@ 2015-10: 900 etudiant: true output: - ppa_eligibilite_etudiants: false + ppa_eligibilite_apprenants: false + ppa: 0 + +- name: 'PPA: stagiaire non éligible car plancher non atteint pour un mois du trimestre de référence' + period: 2016-01 + input: + salaire_net: + 2015-12: 800 + 2015-11: 900 + 2015-10: 900 + stagiaire: true + output: + ppa_eligibilite_apprenants: false + ppa: 0 + +- name: 'PPA: apprenti non éligible car plancher non atteint pour un mois du trimestre de référence' + period: 2016-01 + input: + salaire_net: + 2015-12: 800 + 2015-11: 900 + 2015-10: 900 + apprenti: true + output: + ppa_eligibilite_apprenants: false ppa: 0 - name: "PPA: couple d'étudiants avec enfant: pas de ppa"