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

application des abattements pour le calcul de la CSS #2361

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,19 @@
# Changelog

### 169.1.2 [2361](https://github.com/openfisca/openfisca-france/pull/2361)

* Évolution du système socio-fiscal.
* Périodes concernées : à partir du 01/04/2021.
* Zones impactées :
- `openfisca_france/model/prestations/minima_sociaux/cs/ressources.py`
- `openfisca_france/parameters/prestations_sociales/solidarite_insertion/minima_sociaux/cs/css/`
* Détails :
Prise en compte des abattements pour palier les revalorisations exceptionnelles de
- l’allocation aux adultes handicapés (AAH),
- l’allocation de solidarité aux personnes âgées (ASPA),
- l’allocation supplémentaire vieillesse (ASV),
- l’allocation supplémentaire d’invalidité (ASI)

### 169.1.1 [2329](https://github.com/openfisca/openfisca-france/pull/2329)

* Évolution du système socio-fiscal.
Expand Down
110 changes: 98 additions & 12 deletions openfisca_france/model/prestations/minima_sociaux/cs/ressources.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from numpy import absolute as abs_, logical_or as or_, logical_not as not_
from numpy import absolute as abs_, logical_or as or_, logical_not as not_, select

from openfisca_core.periods import Period

Expand All @@ -8,6 +8,7 @@
Famille,
MONTH,
ADD,
max_,
TypesStatutOccupationLogement,
TypesActivite,
set_input_divide_by_period,
Expand All @@ -31,21 +32,21 @@ class css_cmu_base_ressources_individu(Variable):

def formula(individu, period, parameters):
# Rolling year
previous_year = Period(('year', period.start, 1)).offset(-1)
previous_year = compute_previous_year(period)
# N-1
last_year = period.last_year
last_month = period.last_month

P = parameters(period).prestations_sociales.solidarite_insertion.minima_sociaux.cs.cmu
parametres_cmu = parameters(period).prestations_sociales.solidarite_insertion.minima_sociaux.cs.cmu

ressources_a_inclure = [
'aah',
'allocation_securisation_professionnelle',
'asi',
'ass',
'bourse_recherche',
'caah',
'chomage_net',
'css_base_ressources_aah_individu',
'css_base_ressources_asi_individu',
'dedommagement_victime_amiante',
'gains_exceptionnels',
'indemnites_chomage_partiel',
Expand Down Expand Up @@ -82,11 +83,91 @@ def formula(individu, period, parameters):
+ bourse
+ revenus_tns(individu, previous_year, last_year)
- pensions_alim_versees
- abbattement_chomage(individu, period, previous_year, P)
- abattement_chomage(individu, period, previous_year, parametres_cmu)
- neutralisation_stage_formation_pro(individu, previous_year, last_month)
)


class css_base_ressources_aah_individu(Variable):
value_type = float
label = "Base de ressources AAH de l'individu prise en compte pour l'éligibilité à la CSS après application de l'abattement"
reference = [
'Bulletin officiel Santé - Protection sociale - Solidarité n° 2021/6 du 16 avril 2021 - Instruction interministérielle N° DSS/SD2A/2021/71 du 30 mars 2021',
'https://sante.gouv.fr/fichiers/bo/2021/2021.6.sante.pdf#page=75',
'Bulletin officiel Santé - Protection sociale - Solidarité n° 2023/24 du 29 décembre 2023 - Instruction interministérielle N° DSS/SD2A/2023/98 du 22 décembre 2023',
'https://sante.gouv.fr/fichiers/bo/2023/2023.24.sante.pdf#page=82',
]
entity = Individu
definition_period = MONTH
set_input = set_input_divide_by_period

def formula(individu, period, parameters):
return individu('aah', period)

def formula_2021_04(individu, period, parameters):
return max_(individu('aah', period) - parameters(period).prestations_sociales.solidarite_insertion.minima_sociaux.cs.css.abattements.aah, 0)


class css_base_ressources_asi_individu(Variable):
value_type = float
label = "Base de ressources ASI de l'individu prise en compte pour l'éligibilité à la CSS après application de l'abattement"
reference = [
'Bulletin officiel Santé - Protection sociale - Solidarité n° 2021/6 du 16 avril 2021 - Instruction interministérielle N° DSS/SD2A/2021/71 du 30 mars 2021',
'https://sante.gouv.fr/fichiers/bo/2021/2021.6.sante.pdf#page=75'
]
entity = Individu
definition_period = MONTH
set_input = set_input_divide_by_period

def formula(individu, period, parameters):
return individu('asi', period)

def formula_2021_04(individu, period, parameters):

aah = individu('aah', period)
asi = individu('asi', period)
asi_famille = individu.famille.members('asi', period)
nb_allocataire_asi = individu.famille.sum(asi_famille > 0, role=Famille.PARENT)

abattement_asi_personne_seule = parameters(period).prestations_sociales.solidarite_insertion.minima_sociaux.cs.css.abattements.asi.personne_seule
abattement_asi_couple = parameters(period).prestations_sociales.solidarite_insertion.minima_sociaux.cs.css.abattements.asi.couple

condition_abattement_asi_couple = nb_allocataire_asi > 1
condition_abattement_asi_personne_seule = asi > 0
abattement_asi = select(
[aah > 0, condition_abattement_asi_couple, condition_abattement_asi_personne_seule],
[0, abattement_asi_couple / 2, abattement_asi_personne_seule],
0)

montant_asi = asi - abattement_asi
return max_(montant_asi, 0)


class css_base_ressources_aspa_asv(Variable):
value_type = float
label = "Base de ressources ASPA/ASV de pour une famille prise en compte pour l'éligibilité à la CSS après application de l'abattement"
reference = [
'Bulletin officiel Santé - Protection sociale - Solidarité n° 2021/6 du 16 avril 2021 - Instruction interministérielle N° DSS/SD2A/2021/71 du 30 mars 2021',
'https://sante.gouv.fr/fichiers/bo/2021/2021.6.sante.pdf#page=75'
]
entity = Famille
definition_period = MONTH
set_input = set_input_divide_by_period

def formula(famille, period, parameters):
return famille('aspa', period)

def formula_2021_04(famille, period, parameters):
aspa = famille('aspa', period)
aspa_couple = famille('aspa_couple', period)
abattement_aspa_personne_seule = parameters(period).prestations_sociales.solidarite_insertion.minima_sociaux.cs.css.abattements.aspa_asv.personne_seule
abattement_aspa_couple = parameters(period).prestations_sociales.solidarite_insertion.minima_sociaux.cs.css.abattements.aspa_asv.couple
return select(
[(aspa > 0) * aspa_couple, aspa > 0],
[max_(aspa - abattement_aspa_couple, 0), max_(aspa - abattement_aspa_personne_seule, 0)],
aspa)


class css_cmu_base_ressources(Variable):
value_type = float
label = "Base de ressources prise en compte pour l'éligibilité à la ACS / CMU-C / CSS"
Expand All @@ -95,12 +176,12 @@ class css_cmu_base_ressources(Variable):
set_input = set_input_divide_by_period

def formula(famille, period, parameters):
previous_year = Period(('year', period.start, 1)).offset(-1)
previous_year = compute_previous_year(period)

ressources_famille_a_inclure = [
'af',
'asf',
'aspa',
'css_base_ressources_aspa_asv',
'cf',
'paje_clca',
'paje_prepare',
Expand All @@ -115,7 +196,7 @@ def formula(famille, period, parameters):
css_cmu_forfait_logement_base = famille('css_cmu_forfait_logement_base', period)
css_cmu_forfait_logement_al = famille('css_cmu_forfait_logement_al', period)

P = parameters(period).prestations_sociales.solidarite_insertion.minima_sociaux.cs.cmu
parametres_cmu = parameters(period).prestations_sociales.solidarite_insertion.minima_sociaux.cs.cmu

proprietaire = (statut_occupation_logement == TypesStatutOccupationLogement.proprietaire)
heberge_titre_gratuit = (statut_occupation_logement == TypesStatutOccupationLogement.loge_gratuitement)
Expand All @@ -130,20 +211,25 @@ def formula(famille, period, parameters):
ressources_parents = famille.sum(ressources_individuelles, role = Famille.PARENT)

age = famille.members('age', period)
condition_enfant_a_charge = (age >= 0) * (age <= P.age_limite_pac)
condition_enfant_a_charge = (age >= 0) * (age <= parametres_cmu.age_limite_pac)
ressources_enfants = famille.sum(ressources_individuelles * condition_enfant_a_charge, role = Famille.ENFANT)

return forfait_logement + ressources_famille + ressources_parents + ressources_enfants

# Helper functions


def compute_previous_year(period):
return Period(('year', period.start, 1)).offset(-1)

# Abattement sur revenus d'activité si :
# - IJ maladie
# - chômage
# - ass
# - formation professionnelle
def abbattement_chomage(individu, period, previous_year, P):


def abattement_chomage(individu, period, previous_year, parametres_cmu):
indemnites_journalieres_maladie = individu('indemnites_journalieres_maladie', period)

chomage = individu('activite', period) == TypesActivite.chomeur
Expand All @@ -163,7 +249,7 @@ def abbattement_chomage(individu, period, previous_year, P):

salaire_net = individu('salaire_net', previous_year, options = [ADD])

return eligibilite_abattement_chomage * salaire_net * P.abattement_chomage
return eligibilite_abattement_chomage * salaire_net * parametres_cmu.abattement_chomage


# Revenus de stage de formation professionnelle exclus si plus perçus depuis 1 mois
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
description: Abattement sur le montant des ressources AAH pour le calcul de l'éligibilité à la CSS
values:
2021-04-01:
value: 68
metadata:
short_label: Abattement
unit: currency
reference:
2021-04-01:
title: Bulletin officiel Santé - Protection sociale - Solidarité n° 2021/6 du 16 avril 2021 - Instruction interministérielle N° DSS/SD2A/2021/71 du 30 mars 2021
href: https://sante.gouv.fr/fichiers/bo/2021/2021.6.sante.pdf#page=75
notes:
2024-01-01:
title: Précisions sur la formule - Bulletin officiel Santé - Protection sociale - Solidarité n° 2023/24 du 29 décembre 2023 - Instruction interministérielle N° DSS/SD2A/2023/98 du 22 décembre 2023
href: https://sante.gouv.fr/fichiers/bo/2023/2023.24.sante.pdf#page=82
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
description: Abattement sur le montant des ressources ASI pour le calcul de l'éligibilité à la CSS pour un couple dont les deux personnes beneficient de l'aide
values:
2021-04-01:
value: 86
metadata:
short_label: Abattement
unit: currency
reference:
2021-04-01:
title: Bulletin officiel Santé - Protection sociale - Solidarité n° 2021/6 du 16 avril 2021 - Instruction interministérielle N° DSS/SD2A/2021/71 du 30 mars 2021
href: https://sante.gouv.fr/fichiers/bo/2021/2021.6.sante.pdf#page=75
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
description: Abattement sur le montant des ressources ASI pour le calcul de l'éligibilité à la CSS
values:
2021-04-01:
value: 49
metadata:
short_label: Abattement
unit: currency
reference:
2021-04-01:
title: Bulletin officiel Santé - Protection sociale - Solidarité n° 2021/6 du 16 avril 2021 - Instruction interministérielle N° DSS/SD2A/2021/71 du 30 mars 2021
href: https://sante.gouv.fr/fichiers/bo/2021/2021.6.sante.pdf#page=75
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
description: Abattement sur le montant des ressources ASPA/ASV pour le calcul de l'éligibilité à la CSS pour un couple
values:
2021-04-01:
value: 110
metadata:
short_label: Abattement
unit: currency
reference:
2021-04-01:
title: Bulletin officiel Santé - Protection sociale - Solidarité n° 2021/6 du 16 avril 2021 - Instruction interministérielle N° DSS/SD2A/2021/71 du 30 mars 2021
href: https://sante.gouv.fr/fichiers/bo/2021/2021.6.sante.pdf#page=75
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
description: Abattement sur le montant des ressources ASPA/ASV pour le calcul de l'éligibilité à la CSS pour une personne seule
values:
2021-04-01:
value: 71
metadata:
short_label: Abattement
unit: currency
reference:
2021-04-01:
title: Bulletin officiel Santé - Protection sociale - Solidarité n° 2021/6 du 16 avril 2021 - Instruction interministérielle N° DSS/SD2A/2021/71 du 30 mars 2021
href: https://sante.gouv.fr/fichiers/bo/2021/2021.6.sante.pdf#page=75
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
description: Abattements sur le montant de certaines ressources pour le calcul de l'éligibilité à la CSS
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "OpenFisca-France"
version = "169.1.1"
version = "169.1.2"
description = "OpenFisca Rules as Code model for France."
readme = "README.md"
keywords = ["microsimulation", "tax", "benefit", "rac", "rules-as-code", "france"]
Expand Down
Loading
Loading