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

Improve amen social #179

Merged
merged 6 commits into from
Dec 15, 2024
Merged
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
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
# Changelog

### 0.41.3 - [#179](https://github.com/openfisca/openfisca-tunisia/pull/179)

* Évolution du système socio-fiscal.
* Périodes concernées : toutes.
* Zones impactées : `prestations/non_contributives/amen_social`.
* Détails :
- Améliore Amen social (WIP)

### 0.41.2 - [#177](https://github.com/openfisca/openfisca-tunisia/pull/177)

* Évolution du système socio-fiscal.
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
description: Seuil de revenu d’exclusion du programme Amen social (en part de Smig) pour un ménage de deux personnes
values:
2020-01-01:
value: 1.5
metadata:
short_label: Deux personnes
unit: smig
reference:
2020-01-01:
title: Décret 2020-317 du 19 mai 2020
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
description: Seuil de revenu d’exclusion du programme Amen social pour un ménage comprenant une personne présentant un handicap lourd
metadata:
short_label: Ménage avec handicap lourd
order:
- un_membre
- deux_membres
- trois_quatre_membres
- plus_de_cinq_membres
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
description: Seuil de revenu d’exclusion du programme Amen social (en part de Smig) pour un ménage comprenant plus de cinq personnes
values:
2020-01-01:
value: 2.5
metadata:
short_label: Plus de cinq personnes
unit: smig
reference:
2020-01-01:
title: Décret 2020-317 du 19 mai 2020
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
description: Seuil de revenu d’exclusion du programme Amen social (en part de Smig) pour un ménage comprenant trois ou quatre personnes
values:
2020-01-01:
value: 2
metadata:
short_label: Trois ou quatre personnes
unit: smig
reference:
2020-01-01:
title: Décret 2020-317 du 19 mai 2020
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
description: Seuil de revenu d’exclusion du programme Amen social (en part de Smig) pour un ménage d'une personne
values:
2020-01-01:
value: 1.25
metadata:
short_label: Une persone
unit: smig
reference:
2020-01-01:
title: Décret 2020-317 du 19 mai 2020
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@ metadata:
short_label: Âge de départ des civils
order:
- cadre_commun
- cadre_actifs
- ensegnants_du_superieur
- cadres_actifs
- enseignants_du_superieur
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ metadata:
short_label: Âge de départ
order:
- civil
- militaire
# - militaire
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ values:
1959-02-01:
value: 0.5
metadata:
unit: Smig
unit: smig
documentation:
L'allocation de vieillesse est octroyée aux cotisants ne pouvant bénéficier d'une pension de retraite mais
qui justifient d'une période d'activité d'au moins 5 ans
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@ values:
1974-01-01:
value: 0.66666
metadata:
unit: Smig
unit: smig
documentation:
Pension minimale servie aux cotisants justifiant d'une durée suffisante pour prétendre à une pension de retraite
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
from openfisca_tunisia.variables.base import *


class amen_social_allocation_familiale(Variable):
class allocation_familiale_non_contributive(Variable):
value_type = float
entity = Menage
label = 'Allocation familiale du programme Amen social'
label = 'Allocation familiale pour les ménages on affiliés à un régime de sécurité sociale'
definition_period = MONTH

def formula_2023_02(menage, period, parameters):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,31 +1,85 @@
from openfisca_tunisia.variables.base import *


class amen_social_presence_handicap_lourd(Variable):
value_type = bool
entity = Menage
label = 'Ménage comprenant un membre avec un handicap lourd'
definition_period = MONTH
# Critères primaires du décret 2020-317 du 19 mai 2020
# Handicap de niveau 3


class amen_social_pas_d_achat_onereux(Variable):
value_type = bool
entity = Menage
label = 'Ménage comprenant un membre avec un handicap lourd'
definition_period = ETERNITY
# Critères primaires du décret 2020-317 du 19 mai 2020
# Ni le chef du ménage ni aucun membre de son ménage n’a effectué une transaction d’achat
# ou de vente d’un bien mobilier ou immobilier dont la valeur dépasse 30 fois le SMIG. Ce
# critère est vérifiable actuellement uniquement pour les véhicules immatriculés par les
# recoupements administratifs avec l’Agence Technique des Transports Terrestres (ATTT).


class amen_social_pas_de_residence_secondaire(Variable):
value_type = bool
entity = Menage
label = 'Ménage comprenant un membre avec un handicap lourd'
definition_period = ETERNITY
# Critères primaires du décret 2020-317 du 19 mai 2020
# Le ménage n’est pas propriétaire d’un logement secondaire


class amen_social_eligible(Variable):
value_type = bool
entity = Menage
label = 'Ménage éligible au programme Amen social'
definition_period = MONTH

def formula_2020(menage, period, parameters):
# Critères du décret 2020-317
# Critères primaires du décret 2020-317 du 19 mai 2020
pas_de_residence_secondaire = menage('amen_social_pas_de_residence_secondaire', period)
pas_d_achat_onereux = menage('amen_social_pas_d_achat_onereux', period)

# Citère du revenu selon présence ou non de handicap lourd
presence_handicap_lourd = menage('amen_social_presence_handicap_lourd', period)
taille_menage = menage.nb_persons()
revenu_menage = menage.sum(menage.members('salaire_net_a_payer', period)) # Corriger les revenus
seuil_de_revenu = parameters(period).prestations.non_contributives.amen_social.eligibilite
smig_mensuel = parameters(period.start).marche_travail.smig_40h_mensuel
condiitons = [
conditions_sans_handicap = [
taille_menage == 1,
taille_menage == 2,
(taille_menage == 3) + (taille_menage == 4),
taille_menage >= 5,
]
valeurs_choisies = [
valeurs_choisies_sans_handicap = [
smig_mensuel * seuil_de_revenu.un_membre,
smig_mensuel * seuil_de_revenu.deux_membres,
smig_mensuel * seuil_de_revenu.trois_quatre_membres,
smig_mensuel * seuil_de_revenu.plus_de_cinq_membres,
]
return revenu_menage <= select(condiitons, valeurs_choisies)

conditions_avec_handicap = [
(taille_menage == 1) * presence_handicap_lourd,
(taille_menage == 2) * presence_handicap_lourd,
((taille_menage == 3) + (taille_menage == 4)) * presence_handicap_lourd,
(taille_menage >= 5) * presence_handicap_lourd,
]
valeurs_choisies_avec_handicap = [
smig_mensuel * seuil_de_revenu.handicap_lourd.un_membre,
smig_mensuel * seuil_de_revenu.handicap_lourd.deux_membres,
smig_mensuel * seuil_de_revenu.handicap_lourd.trois_quatre_membres,
smig_mensuel * seuil_de_revenu.handicap_lourd.plus_de_cinq_membres,
]

critere_revenu = where(
presence_handicap_lourd,
revenu_menage <= select(conditions_avec_handicap, valeurs_choisies_avec_handicap),
revenu_menage <= select(conditions_sans_handicap, valeurs_choisies_sans_handicap)
)
return pas_d_achat_onereux + pas_de_residence_secondaire + critere_revenu


class transfert_monetaire_permanent_eligible(Variable):
Expand All @@ -47,10 +101,11 @@ class transfert_monetaire_permanent_eligibilite_score(Variable):
label = 'Ménage éligible au programme Amen social selon le modèle de ciblage'
definition_period = MONTH

def formula_2020(menage, period):
def formula_2022_06(menage, period, parameters):
decile = parameters(period).prestations.non_contributives.amen_social.decile
return (
menage('amen_social_eligible', period)
+ (menage('amen_social_score_decile', period) <= 2)
+ (menage('amen_social_score_decile', period) <= decile)
)


Expand Down
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-Tunisia"
version = "0.41.2"
version = "0.41.3"
description = "OpenFisca Rules as Code model for Tunisia."
readme = "README.md"
keywords = ["microsimulation", "tax", "benefit", "rac", "rules-as-code", "tunisia"]
Expand Down
Loading