Skip to content

Commit

Permalink
Clean ppa (#2214)
Browse files Browse the repository at this point in the history
  • Loading branch information
benjello authored Dec 7, 2023
2 parents 06f5c3a + 9ec0d49 commit fab6ece
Show file tree
Hide file tree
Showing 29 changed files with 197 additions and 167 deletions.
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,14 @@
# Changelog

### 155.0.10 [2214](https://github.com/openfisca/openfisca-france/pull/2214)

* Changement mineur.
* Périodes concernées : toutes.
* Zones impactées : `parameters/prestations_sociales/solidarite_insertion/minima_sociaux/ppa`.
* Détails :
- Nettoyage des descriptions et des notes


### 155.0.9 [2211](https://github.com/openfisca/openfisca-france/pull/2211)

* Amélioration technique.
Expand Down
63 changes: 43 additions & 20 deletions openfisca_france/model/prestations/minima_sociaux/ppa.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from openfisca_core.periods import Instant, Period
from openfisca_france.model.base import *

from numpy import round as round_, logical_or as or_, remainder as remainder_, datetime64


Expand Down Expand Up @@ -92,7 +92,12 @@ def formula(famille, period, parameters):
nb_parents = famille('nb_parents', period)
nb_enfants = famille('rsa_nb_enfants', period)
ppa_majoree_eligibilite = famille('rsa_majore_eligibilite', period) # noqa F841
ppa = parameters(period).prestations_sociales.solidarite_insertion.minima_sociaux.ppa

if period.start.date < date(2016, 1, 1):
instant = Instant((2016, 1, 1))
ppa = parameters(Period(('month', instant, 1))).prestations_sociales.solidarite_insertion.minima_sociaux.ppa
else:
ppa = parameters(period).prestations_sociales.solidarite_insertion.minima_sociaux.ppa

nb_personnes = nb_parents + nb_enfants

Expand All @@ -118,7 +123,11 @@ class ppa_montant_forfaitaire_familial_majore(Variable):

def formula(famille, period, parameters):
nb_enfants = famille('rsa_nb_enfants', period)
ppa = parameters(period).prestations_sociales.solidarite_insertion.minima_sociaux.ppa
if period.start.date < date(2016, 1, 1):
instant = Instant((2016, 1, 1))
ppa = parameters(Period(('month', instant, 1))).prestations_sociales.solidarite_insertion.minima_sociaux.ppa
else:
ppa = parameters(period).prestations_sociales.solidarite_insertion.minima_sociaux.ppa

taux_majore = (
ppa.pa_m.majoration_isolement.femmes_enceintes
Expand Down Expand Up @@ -158,8 +167,8 @@ class ppa_revenu_activite_individu(Variable):
]

def formula(individu, period, parameters):
P = parameters(period)
smic_horaire = P.marche_travail.salaire_minimum.smic.smic_b_horaire
parametres = parameters(period)
smic_horaire = parametres.marche_travail.salaire_minimum.smic.smic_b_horaire

ressources = [
'salaire_net',
Expand All @@ -170,15 +179,13 @@ def formula(individu, period, parameters):
'rpns_auto_entrepreneur_benefice',
'rsa_indemnites_journalieres_activite'
]

revenus_mensualises = sum(individu(ressource, period) for ressource in ressources)

revenus_tns_annualises = individu('ppa_rsa_derniers_revenus_tns_annuels_connus', period.this_year)

revenus_activites = revenus_mensualises + revenus_tns_annualises

# L'aah est pris en compte comme revenu d'activité si revenu d'activité hors aah > 29 * smic horaire brut
seuil_aah_activite = P.prestations_sociales.solidarite_insertion.minima_sociaux.ppa.pa_cond.seuil_aah_activite * smic_horaire
ppa = parametres.prestations_sociales.solidarite_insertion.minima_sociaux.ppa
seuil_aah_activite = ppa.pa_cond.seuil_aah_activite * smic_horaire
aah_activite = (revenus_activites >= seuil_aah_activite) * individu('aah', period)

return revenus_activites + aah_activite
Expand Down Expand Up @@ -344,13 +351,19 @@ class ppa_bonification(Variable):
set_input = set_input_divide_by_period

def formula(individu, period, parameters):
P = parameters(period)
smic_horaire = P.marche_travail.salaire_minimum.smic.smic_b_horaire
ppa_base = P.prestations_sociales.solidarite_insertion.minima_sociaux.ppa.pa_m.montant_de_base
parametres = parameters(period)
smic_horaire = parametres.marche_travail.salaire_minimum.smic.smic_b_horaire
if period.start.date < date(2016, 1, 1):
instant = Instant((2016, 1, 1))
ppa = parameters(Period(('month', instant, 1))).prestations_sociales.solidarite_insertion.minima_sociaux.ppa
else:
ppa = parameters(period).prestations_sociales.solidarite_insertion.minima_sociaux.ppa

ppa_base = ppa.pa_m.montant_de_base
revenu_activite = individu('ppa_revenu_activite_individu', period)
seuil_1 = P.prestations_sociales.solidarite_insertion.minima_sociaux.ppa.pa_m.bonification.seuil_bonification * smic_horaire
seuil_2 = P.prestations_sociales.solidarite_insertion.minima_sociaux.ppa.pa_m.bonification.seuil_max_bonification * smic_horaire
bonification_max = round_(P.prestations_sociales.solidarite_insertion.minima_sociaux.ppa.pa_m.bonification.taux_bonification_max * ppa_base, 2)
seuil_1 = ppa.pa_m.bonification.seuil_bonification * smic_horaire
seuil_2 = ppa.pa_m.bonification.seuil_max_bonification * smic_horaire
bonification_max = round_(ppa.pa_m.bonification.taux_bonification_max * ppa_base, 2)
bonification = bonification_max * (revenu_activite - seuil_1) / (seuil_2 - seuil_1)
bonification = max_(bonification, 0)
bonification = min_(bonification, bonification_max)
Expand All @@ -361,7 +374,7 @@ def formula(individu, period, parameters):
class ppa_forfait_logement(Variable):
value_type = float
entity = Famille
label = "Forfait logement intervenant dans le calcul de la Prime pour l'Activité"
label = "Forfait logement intervenant dans le calcul de la prime pour l'activité"
reference = 'https://www.legifrance.gouv.fr/affichCodeArticle.do;jsessionid=9A3FFF4142B563EB5510DDE9F2870BF4.tplgfr41s_2?idArticle=LEGIARTI000031675988&cidTexte=LEGITEXT000006073189'
definition_period = MONTH
set_input = set_input_divide_by_period
Expand All @@ -381,7 +394,11 @@ def formula(famille, period, parameters):
avantage_al = aide_logement > 0

params = parameters(period).prestations_sociales.solidarite_insertion.minima_sociaux.rsa
ppa = parameters(period).prestations_sociales.solidarite_insertion.minima_sociaux.ppa
if period.start.date < date(2016, 1, 1):
instant = Instant((2016, 1, 1))
ppa = parameters(Period(('month', instant, 1))).prestations_sociales.solidarite_insertion.minima_sociaux.ppa
else:
ppa = parameters(period).prestations_sociales.solidarite_insertion.minima_sociaux.ppa

# Le montant forfaitaire se calcule de la même manière que celle de la formule 'ppa_montant_forfaitaire_familial_non_majore',
# sauf dans le cas où le foyer se compose de trois personnes ou plus, où le montant forfaitaire se calcule pour trois personnes seulement.
Expand Down Expand Up @@ -413,7 +430,13 @@ class ppa_fictive_ressource_activite(Variable):
set_input = set_input_dispatch_by_period

def formula(famille, period, parameters):
pente = parameters(period).prestations_sociales.solidarite_insertion.minima_sociaux.ppa.pa_m.majoration_ressources_revenus_activite
if period.start.date < date(2016, 1, 1):
instant = Instant((2016, 1, 1))
ppa = parameters(Period(('month', instant, 1))).prestations_sociales.solidarite_insertion.minima_sociaux.ppa
else:
ppa = parameters(period).prestations_sociales.solidarite_insertion.minima_sociaux.ppa

pente = ppa.pa_m.majoration_ressources_revenus_activite
ppa_revenu_activite = famille('ppa_revenu_activite', period)

return pente * ppa_revenu_activite
Expand All @@ -422,7 +445,7 @@ def formula(famille, period, parameters):
class ppa_fictive_montant_forfaitaire(Variable):
value_type = float
entity = Famille
label = "Montant forfaitaire de la Prime pour l'Activité fictive"
label = "Montant forfaitaire de la prime pour l'activité fictive"
definition_period = MONTH
set_input = set_input_divide_by_period

Expand Down Expand Up @@ -500,7 +523,7 @@ class ppa_mois_demande(Variable):
class ppa_indice_du_mois_trimestre_reference(Variable):
value_type = int
entity = Famille
label = "Nombre de mois par rapport au mois de du précédent recalcul de la Prime pour l'Activité"
label = "Nombre de mois par rapport au mois de du précédent recalcul de la prime pour l'activité"
definition_period = MONTH
set_input = set_input_dispatch_by_period

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,3 @@ metadata:
amount_unit: currency
threshold_unit: currency
type: single_amount
documentation: |-
Notes:
(1) Le chèque est codifié aux articles R.124-1 à R.124-17 du code de l’énergie.
(2) Les dépenses payables avec le chèque énergie sont les factures d'énergie, les charges de chauffage pour certains logements et certains travaux de rénovation énergétique. Les professionnels concernés ont l’obligation d’accepter le chèque énergie, conformément à l’article L. 124-1 du code de l’énergie. Le chèque énergie est valable jusqu’au 31 mars de l’année suivant sa date d’émission. Le chèque énergie est cumulable avec MaPrimeRénov'.
(3) Le revenu fiscal de référence est rapporté au nombre d'unités de consommation (UC) qui composent le foyer. La première personne compte pour une unité, la deuxième pour 0,5 et chaque personne supplémentaire pour 0,3 (les enfants en garde partagée n'apportent que 0,15 UC).
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
description: Prime Pour l'Activité (PA ou PPA)
description: Prime pour l'activité (PPA)
metadata:
short_label: PPA
label_en: "Activity prenium (PA) : accomodation allowance"
label_en: "Activity premium (PPA)"
order:
- pa_cond
- pa_m
- pa_fl
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
description: Âge minimal pour bénéficier de la Prime pour l'Activité (PPA)
description: Âge minimal pour bénéficier de la prime pour l'activité (PPA)
values:
2015-10-01:
value: 18
metadata:
short_label: Âge minimal
label_en: "Active solidarity income - Activity premium (PA) : Amounts"
label_en: "Active solidarity income - Activity premium (PPA) : Amounts"
unit: year
reference:
2015-10-01:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
description: Conditions générales de la Prime Pour l'Activité (PA ou PPA)
description: Conditions générales de la prime pour l'activité (PPA)
metadata:
short_label: Conditions générales
label_en: "Activity prenium (PA) : accomodation allowance"
label_en: "Activity premium (PPA) : general requirements"
order:
- age_min
- seuil_aah_activite
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
description: Forfait logement de la Prime Pour l'Activité (PA ou PPA)
description: Forfait logement de la prime pour l'activité (PPA)
metadata:
short_label: Forfait logement
label_en: "Activity prenium (PA) : accomodation allowance"
label_en: "Activity premium (PPA) : accomodation allowance"
order:
- taux_forfait_logement
documentation: Il faut appliquer ces taux au montant du RSA en tenant compte de la composition du foyer
Original file line number Diff line number Diff line change
@@ -1,17 +1,16 @@
description: Taux du forfait logement pour un foyer d'une personne, pour la Prime Pour l'Activité (PA ou PPA)
description: Taux du forfait logement pour un foyer d'une personne, pour la prime pour l'activité (PPA)
values:
2015-10-01:
2016-01-01:
value: 0.12
metadata:
short_label: Foyer 1 pers.
last_value_still_valid_on: "2022-01-10"
label_en: "Activity prenium (PA) : accomodation allowance"
label_en: "Activity premium (PPA) : accomodation allowance"
ipp_csv_id: pa_logt1
unit: /1
reference:
2016-01-01:
title: Art. R262-9 du CASF (modifié par Décret 2015-1709 du 21/12/2015, art. 2)
href: https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000031694445/
documentation: |-
Notes :
Il faut appliquer ces taux au montant du RSA en tenant compte de la composition du foyer
official_journal_date:
2016-01-01: "2015-12-22"
Original file line number Diff line number Diff line change
@@ -1,17 +1,16 @@
description: Taux du forfait logement pour un foyer de 2 personnes, pour la Prime Pour l'Activité (PA ou PPA)
description: Taux du forfait logement pour un foyer de 2 personnes, pour la prime pour l'activité (PPA)
values:
2015-10-01:
2016-01-01:
value: 0.16
metadata:
short_label: Foyer 2 pers.
last_value_still_valid_on: "2022-01-10"
label_en: "Activity prenium (PA) : accomodation allowance"
label_en: "Activity premium (PPA) : accomodation allowance"
ipp_csv_id: pa_logt2
unit: /1
reference:
2016-01-01:
title: Art. R262-9 du CASF (modifié par Décret 2015-1709 du 21/12/2015, art. 2)
href: https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000031694445/
documentation: |-
Notes :
Il faut appliquer ces taux au montant du RSA en tenant compte de la composition du foyer
official_journal_date:
2016-01-01: "2015-12-22"
Original file line number Diff line number Diff line change
@@ -1,17 +1,16 @@
description: Taux du forfait logement pour un foyer de 3 personnes, pour la Prime Pour l'Activité (PA ou PPA)
description: Taux du forfait logement pour un foyer de 3 personnes, pour la prime pour l'activité (PPA)
values:
2015-10-01:
2016-01-01:
value: 0.165
metadata:
short_label: Foyer 3 pers.
last_value_still_valid_on: "2022-01-10"
label_en: "Activity prenium (PA) : accomodation allowance"
label_en: "Activity premium (PPA) : accomodation allowance"
ipp_csv_id: pa_logt3
unit: /1
reference:
2016-01-01:
title: Art. R262-9 du CASF (modifié par Décret 2015-1709 du 21/12/2015, art. 2)
href: https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000031694445/
documentation: |-
Notes :
Il faut appliquer ces taux au montant du RSA en tenant compte de la composition du foyer
official_journal_date:
2016-01-01: "2015-12-22"
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
description: Taux du forfait logement de la Prime Pour l'Activité (PA ou PPA)
description: Taux du forfait logement de la prime pour l'activité (PPA)
metadata:
short_label: Taux
label_en: "Activity prenium (PA) : accomodation allowance"
label_en: "Activity premium (PPA) : accomodation allowance"
order:
- foyer_1_personne
- foyer_2_personnes
- foyer_3_personnes
documentation: Il faut appliquer ces taux au montant du RSA en tenant compte de la composition du foyer
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
description: Bonification de la Prime Pour l'Activité (PA ou PPA)
description: Bonification de la prime pour l'activité (PPA)
metadata:
short_label: Bonification
label_en: "Activity prenium (PA) : accomodation allowance"
label_en: "Activity premium (PPA) : accomodation allowance"
order:
- seuil_bonification
- seuil_max_bonification
Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
description: Seuil de salaire minimum (en multiple du smic horaire brut) pour bénéficier de la bonification de la Prime pour l'Activité (PPA)
description: Seuil de salaire minimum (en multiple du smic horaire brut) pour bénéficier de la bonification de la prime pour l'activité (PPA)
values:
2015-10-01:
2016-01-01:
value: 59
metadata:
short_label: Seuil salaire min
short_label: Seuil salaire minimal
last_value_still_valid_on: "2022-08-03"
label_en: "Active solidarity income - Activity premium (PA) : Amounts"
label_en: "Active solidarity income - Activity premium (PPA) : Amounts"
ipp_csv_id: pa_seuil_min
unit: currency
reference:
2015-10-01:
2016-01-01:
- title: Article D843-1 du Code de la sécurité sociale
href: https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000031673885/
- title: Décret 2015-1710 du 21/12/2015, art. 2
- title: Décret 2015-1710 du 21/12/2015, art. 2 (crée art. D843-1 du CSS)
href: https://www.legifrance.gouv.fr/jorf/id/JORFTEXT000031665094
official_journal_date:
2015-10-01: "2015-12-22"
2016-01-01: "2015-12-22"
Original file line number Diff line number Diff line change
@@ -1,22 +1,28 @@
description: Seuil de salaire (en multiple du smic horaire brut) pour bénéficier de la bonification maximale de la Prime pour l'Activité (PPA)
description: Seuil de salaire (en multiple du smic horaire brut) pour bénéficier de la bonification maximale de la prime pour l'activité (PPA)
values:
2015-10-01:
2016-01-01:
value: 95
2018-10-01:
2019-01-01:
value: 120
metadata:
short_label: Seuil salaire bonification max
last_value_still_valid_on: "2022-08-03"
label_en: "Active solidarity income - Activity premium (PA) : Amounts"
label_en: "Active solidarity income - Activity premium (PPA) : Amounts"
ipp_csv_id: pa_seuil_max
reference:
2015-10-01:
2016-01-01:
- title: Décret 2015-1710 du 21/12/2015, art. 2 (crée art. D843-1 du CSS)
href: https://www.legifrance.gouv.fr/jorf/id/JORFTEXT000031665094
- title: Article D843-1 du Code de la sécurité sociale
href: https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000031673885/
- title: Décret 2015-1710 du 21/12/2015, art. 2
href: https://www.legifrance.gouv.fr/jorf/id/JORFTEXT000031665094
2018-10-01:
title: Décret nº2018-1197 du 21/12/2018
2019-01-01:
title: Décret 2018-1197 du 21/12/2018, art. 1
href: https://www.legifrance.gouv.fr/jorf/id/JORFTEXT000037846000
official_journal_date:
2015-10-01: "2015-12-22"
2016-01-01: "2015-12-22"
2019-01-01: "2018-12-22"
notes:
2016-01-01:
- title: Création de la prime d'activité.
2019-01-01:
- title: Revalorisation de la prime d'activité suite à la loi 2018-1213 du 24/12/2018 portant mesures d'urgence économique et sociale. La prime d'activité augmente de 90 euros au niveau du Smic, via une augmentation de la bonification individuelle.
Loading

0 comments on commit fab6ece

Please sign in to comment.