Skip to content

Commit

Permalink
fix(build): fix rebase errors
Browse files Browse the repository at this point in the history
  • Loading branch information
robinguill committed Nov 20, 2024
1 parent a9d9c21 commit 0ada827
Show file tree
Hide file tree
Showing 15 changed files with 170 additions and 113 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4063,7 +4063,7 @@ def formula(foyer_fiscal, period, parameters):
class plus_values_gains_divers(Variable):
value_type = float
entity = FoyerFiscal
label = "Plus-values et gains divers"
label = 'Plus-values et gains divers'
definition_period = YEAR


Expand Down
9 changes: 5 additions & 4 deletions openfisca_france/model/prestations/aides_logement.py
Original file line number Diff line number Diff line change
Expand Up @@ -256,21 +256,21 @@ class etat_logement(Variable):
class assistant_maternel(Variable):
value_type = bool
entity = Individu
label = "Assistant maternel"
label = 'Assistant maternel'
definition_period = MONTH


class assistant_familial(Variable):
value_type = bool
entity = Individu
label = "Assistant familial"
label = 'Assistant familial'
definition_period = MONTH


class journaliste(Variable):
value_type = bool
entity = Individu
label = "Journaliste"
label = 'Journaliste'
definition_period = MONTH


Expand Down Expand Up @@ -605,12 +605,13 @@ def formula_2021_01_01(individu, period, parameters):

abattement_frais_pro = where(frais_reels > abattement_forfaitaire, frais_reels, abattement_forfaitaire)

rpns = individu('rpns_imposables', period.n_2)
rpns_pvce = individu('rpns_pvce', period.n_2)
rpns_pvct = individu('rpns_pvct', period.n_2)
rpns_mvct = individu('moins_values_court_terme_non_salaries', period.n_2)
rpns_mvlt = individu('moins_values_long_terme_non_salaries', period.n_2)

rpns = rpns_pvce + rpns_pvct + rpns_mvct + rpns_mvlt
rpns = rpns + rpns_pvce + rpns_pvct + rpns_mvct + rpns_mvlt
# TO DO : compléter la formule pour prendre en compte la disposition particulière concernant les indépendants ayant commencé une activité entre N-2 et N.
# Non implémentée car diffile à comprendre ce qui est fait exactement

Expand Down
151 changes: 73 additions & 78 deletions openfisca_france/model/prestations/minima_sociaux/aah.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
class aah_date_debut_incarceration(Variable):
value_type = date
default_value = date.max
label = 'La date de début d\'incarcération'
label = "La date de début d'incarcération"
entity = Individu
definition_period = MONTH
set_input = set_input_dispatch_by_period
Expand All @@ -28,7 +28,7 @@ class aah_date_debut_incarceration(Variable):
class aah_date_debut_hospitalisation(Variable):
value_type = date
default_value = date.max
label = 'La date de début d\'hospitalisation'
label = "La date de début d'hospitalisation"
entity = Individu
definition_period = MONTH
set_input = set_input_dispatch_by_period
Expand All @@ -41,50 +41,6 @@ class aah_base_ressources_conjugalisee(Variable):
definition_period = MONTH
set_input = set_input_divide_by_period

def formula_2023_10_01(individu, period, parameters):
law = parameters(period)
aah = law.prestations_sociales.prestations_etat_de_sante.invalidite.aah

en_activite = individu('activite', period) == TypesActivite.actif

def assiette_revenu_activite_demandeur(revenus_demandeur):
smic_brut_annuel = 12 * law.marche_travail.salaire_minimum.smic.smic_b_horaire * law.marche_travail.salaire_minimum.smic.nb_heures_travail_mensuel
total_tranche1 = min_(aah.travail_ordinaire.tranche_smic * smic_brut_annuel, revenus_demandeur)
total_tranche2 = max_(0, revenus_demandeur - total_tranche1)
revenus_abattus_smic = (1 - aah.travail_ordinaire.abattement_30) * total_tranche1 + (1 - aah.travail_ordinaire.abattement_sup) * total_tranche2

last_month = Period(('month', period.start, 1)).offset(-1)
ressource_interrompue = not_(en_activite + (individu('activite', period) == TypesActivite.etudiant))
has_ressources_substitution = (
individu('chomage_net', last_month)
+ individu('retraite_nette', last_month)
+ individu('rente_accident_travail', last_month)
+ individu('pensions_invalidite', last_month)
) > 0
abattement_cessation_activite = (1 - aah.abattement_cessation_activite * (ressource_interrompue + has_ressources_substitution))
return abattement_cessation_activite * (revenus_abattus_smic)

def base_ressource_eval_trim():
three_previous_months = Period(('month', period.first_month.start, 3)).offset(-3)
base_ressource_activite = individu('aah_base_ressources_activite_eval_trimestrielle', period) - individu('aah_base_ressources_activite_milieu_protege', three_previous_months, options = [ADD])
base_ressource_hors_activite = individu('aah_base_ressources_hors_activite_eval_trimestrielle', period) + individu('aah_base_ressources_activite_milieu_protege', three_previous_months, options = [ADD])

base_ressource_demandeur = max_(0, assiette_revenu_activite_demandeur(base_ressource_activite) + base_ressource_hors_activite)

return base_ressource_demandeur

def base_ressource_eval_annuelle():
base_ressource_activite = assiette_revenu_activite_demandeur(individu('aah_base_ressources_activite_eval_annuelle', period))
base_ressource = base_ressource_activite + individu('aah_base_ressources_hors_activite_eval_annuelle', period)

return base_ressource

return where(
en_activite,
base_ressource_eval_trim() / 12,
base_ressource_eval_annuelle() / 12
)

def formula_2022_01_01(individu, period, parameters):
law = parameters(period)
aah = law.prestations_sociales.prestations_etat_de_sante.invalidite.aah
Expand Down Expand Up @@ -112,7 +68,7 @@ def assiette_revenu_activite_demandeur(revenus_demandeur):
) > 0
abattement_cessation_activite = (1 - aah.abattement_cessation_activite * (ressource_interrompue + has_ressources_substitution))
return abattement_cessation_activite * (revenus_abattus_smic)

def base_ressource_eval_trim():
three_previous_months = Period(('month', period.first_month.start, 3)).offset(-3)
base_ressource_activite = individu('aah_base_ressources_activite_eval_trimestrielle', period) - individu('aah_base_ressources_activite_milieu_protege', three_previous_months, options = [ADD])
Expand Down Expand Up @@ -142,15 +98,7 @@ def base_ressource_eval_annuelle():
base_ressource_eval_annuelle() / 12
)


class aah_base_ressources_deconjugalisee(Variable):
value_type = float
label = "Base ressources de l'allocation adulte handicapé après déconjugalisation"
entity = Individu
definition_period = MONTH
set_input = set_input_divide_by_period

def formula_2023_10_01(individu, period, parameters):
def formula_2011(individu, period, parameters):
law = parameters(period)
aah = law.prestations_sociales.prestations_etat_de_sante.invalidite.aah

Expand Down Expand Up @@ -227,11 +175,11 @@ def base_ressource_eval_annuelle():
return base_ressource_eval_annuelle() / 12

def formula(individu, period, parameters): # formule pour les cas les plus anciens, moins vérifiée (sans abattement à part celui de 20% sur les revenus du conjoint)
_parameters = parameters(period)
aah = _parameters.prestations_sociales.prestations_etat_de_sante.invalidite.aah
law = parameters(period)
aah = law.prestations_sociales.prestations_etat_de_sante.invalidite.aah

def assiette_conjoint(revenus_conjoint):
return (1 - _parameters.impot_revenu.calcul_revenus_imposables.deductions.taux_salaires_pensions) * (1 - aah.abattement_conjoint.abattement_proportionnel) * revenus_conjoint
return (1 - law.impot_revenu.calcul_revenus_imposables.deductions.taux_salaires_pensions) * (1 - aah.abattement_conjoint.abattement_proportionnel) * revenus_conjoint

def base_ressource_eval_annuelle():
base_ressource = individu('aah_base_ressources_activite_eval_annuelle', period) + individu('aah_base_ressources_hors_activite_eval_annuelle', period)
Expand All @@ -244,14 +192,62 @@ def base_ressource_eval_annuelle():

return base_ressource_eval_annuelle() / 12

# TODO: - Prendre en compte les abattements temporaires sur les ressources en cas de changement de situation (6 mois pour retour à l'emploi, un an pour inactivité)
# - La formule du calcul de la base de ressource est celle en vigueur à partir de 2011, avant 2011:
# - l'abattement pour les personnes invalides (défini dans l'art. 157 du CGI) sur le revenu net global est pris en compte (art. R821-4 du CSS)

class aah_base_ressources_deconjugalisee(Variable):
value_type = float
label = "Base ressources de l'allocation adulte handicapé après déconjugalisation"
entity = Individu
definition_period = MONTH
set_input = set_input_divide_by_period

def formula_2023_10_01(individu, period, parameters):
parameters = parameters(period)
aah = parameters.prestations_sociales.prestations_etat_de_sante.invalidite.aah

en_activite = ((individu('salaire_imposable', period, options = [ADD]) + individu('rpns_imposables', period.last_year)) > 0)

def assiette_revenu_activite_demandeur(revenus_demandeur):
smic_brut_annuel = 12 * parameters.marche_travail.salaire_minimum.smic.smic_b_horaire * parameters.marche_travail.salaire_minimum.smic.nb_heures_travail_mensuel
total_tranche1 = min_(aah.travail_ordinaire.tranche_smic * smic_brut_annuel, revenus_demandeur)
total_tranche2 = max_(0, revenus_demandeur - total_tranche1)
revenus_abattus_smic = (1 - aah.travail_ordinaire.abattement_30) * total_tranche1 + (1 - aah.travail_ordinaire.abattement_sup) * total_tranche2

last_month = Period(('month', period.start, 1)).offset(-1)
ressource_interrompue = not_(en_activite + (individu('activite', period) == TypesActivite.etudiant))
has_ressources_substitution = (
individu('chomage_net', last_month)
+ individu('retraite_nette', last_month)
+ individu('rente_accident_travail', last_month)
+ individu('pensions_invalidite', last_month)
) > 0
abattement_cessation_activite = (1 - aah.abattement_cessation_activite * (ressource_interrompue + has_ressources_substitution))
return abattement_cessation_activite * (revenus_abattus_smic)

def base_ressource_eval_trim():
three_previous_months = Period(('month', period.first_month.start, 3)).offset(-3)
base_ressource_activite = individu('aah_base_ressources_activite_eval_trimestrielle', period) - individu('aah_base_ressources_activite_milieu_protege', three_previous_months, options = [ADD])
base_ressource_hors_activite = individu('aah_base_ressources_hors_activite_eval_trimestrielle', period) + individu('aah_base_ressources_activite_milieu_protege', three_previous_months, options = [ADD])

base_ressource_demandeur = max_(0, assiette_revenu_activite_demandeur(base_ressource_activite) + base_ressource_hors_activite)

return base_ressource_demandeur

def base_ressource_eval_annuelle():
base_ressource_activite = assiette_revenu_activite_demandeur(individu('aah_base_ressources_activite_eval_annuelle', period))
base_ressource = base_ressource_activite + individu('aah_base_ressources_hors_activite_eval_annuelle', period)

return base_ressource

return where(
en_activite,
base_ressource_eval_trim() / 12,
base_ressource_eval_annuelle() / 12
)


class aah_base_ressources_activite_eval_trimestrielle(Variable):
value_type = float
label = 'Base de ressources des revenus d\'activité de l\'AAH pour un individu, évaluation trimestrielle'
label = "Base de ressources des revenus d'activité de l'AAH pour un individu, évaluation trimestrielle"
entity = Individu
definition_period = MONTH
set_input = set_input_divide_by_period
Expand Down Expand Up @@ -303,15 +299,15 @@ def revenus_tns():

class aah_base_ressources_activite_milieu_protege(Variable):
value_type = float
label = 'Base de ressources de l\'AAH des revenus d\'activité en milieu protégé pour un individu'
label = "Base de ressources de l'AAH des revenus d'activité en milieu protégé pour un individu"
entity = Individu
definition_period = MONTH
set_input = set_input_divide_by_period


class aah_base_ressources_hors_activite_eval_trimestrielle(Variable):
value_type = float
label = 'Base de ressources hors revenus d\'activité de l\'AAH pour un individu, évaluation trimestrielle'
label = "Base de ressources hors revenus d'activité de l'AAH pour un individu, évaluation trimestrielle"
entity = Individu
definition_period = MONTH
set_input = set_input_divide_by_period
Expand Down Expand Up @@ -359,7 +355,7 @@ def formula(individu, period):

class aah_base_ressources_activite_eval_annuelle(Variable):
value_type = float
label = 'Base de ressources de l\'AAH pour un individu, évaluation annuelle'
label = "Base de ressources de l'AAH pour un individu, évaluation annuelle"
entity = Individu
definition_period = MONTH
set_input = set_input_divide_by_period
Expand Down Expand Up @@ -399,7 +395,7 @@ class aah_restriction_substantielle_durable_acces_emploi(Variable):
value_type = bool
default_value = False
entity = Individu
label = 'Restriction substantielle et durable pour l\'accès à l\'emploi reconnue par la commission des droits et de l\'autonomie des personnes handicapées'
label = "Restriction substantielle et durable pour l'accès à l'emploi reconnue par la commission des droits et de l'autonomie des personnes handicapées"
reference = [
'Article L821-2 du Code de la sécurité sociale',
'https://www.legifrance.gouv.fr/affichCodeArticle.do;jsessionid=17BE3036A19374AA1C8C7A4169702CD7.tplgfr24s_2?idArticle=LEGIARTI000020039305&cidTexte=LEGITEXT000006073189&dateTexte=20180731'
Expand All @@ -410,7 +406,7 @@ class aah_restriction_substantielle_durable_acces_emploi(Variable):

class aah_eligible(Variable):
value_type = bool
label = 'Eligibilité à l\'Allocation adulte handicapé'
label = "Eligibilité à l'Allocation adulte handicapé"
entity = Individu
definition_period = MONTH
set_input = set_input_dispatch_by_period
Expand Down Expand Up @@ -500,7 +496,7 @@ def formula(individu, period, parameters):

class aah_base_non_cumulable(Variable):
value_type = float
label = 'Montant de l\'Allocation adulte handicapé (hors complément) pour un individu, mensualisée'
label = "Montant de l'Allocation adulte handicapé (hors complément) pour un individu, mensualisée"
entity = Individu
definition_period = MONTH
set_input = set_input_divide_by_period
Expand Down Expand Up @@ -528,17 +524,16 @@ class aah_plafond_ressources_conjugalise(Variable):

def formula(individu, period, parameters):
law = parameters(period).prestations_sociales
aah_law = law.prestations_etat_de_sante.invalidite.aah

en_couple = individu.famille('en_couple', period)
af_nbenf = individu.famille('af_nbenf', period)
montant_max = law.prestations_etat_de_sante.invalidite.aah.montant
montant_max = aah_law.montant

return montant_max * (
+ 1
+ en_couple
* law.prestations_etat_de_sante.invalidite.aah.majoration_plafond.majoration_plafond_couple
+ law.prestations_etat_de_sante.invalidite.aah.majoration_plafond.majoration_par_enfant_supplementaire
* af_nbenf
1
+ (en_couple * aah_law.majoration_plafond.majoration_plafond_couple)
+ (af_nbenf * aah_law.majoration_plafond.majoration_par_enfant_supplementaire)
)


Expand All @@ -560,7 +555,7 @@ def formula(individu, period, parameters):
montant_max = law.prestations_etat_de_sante.invalidite.aah.montant

return montant_max * (
+ 1
1
+ law.prestations_etat_de_sante.invalidite.aah.majoration_plafond.majoration_par_enfant_supplementaire
* af_nbenf
)
Expand All @@ -582,7 +577,7 @@ class aah_conjugalise_eligible(Variable):
class aah_base(Variable):
calculate_output = calculate_output_add
value_type = float
label = 'Montant de l\'Allocation adulte handicapé (hors complément) pour un individu, mensualisée'
label = "Montant de l'Allocation adulte handicapé (hors complément) pour un individu, mensualisée"
entity = Individu
reference = [
'Article L821-1 du Code de la sécurité sociale',
Expand Down Expand Up @@ -687,7 +682,7 @@ def formula_2015_07_01(individu, period, parameters):
class caah(Variable):
calculate_output = calculate_output_add
value_type = float
label = 'Complément d\'allocation adulte handicapé (mensualisé)'
label = "Complément d'allocation adulte handicapé (mensualisé)"
entity = Individu
set_input = set_input_divide_by_period
definition_period = MONTH
Expand Down
Loading

0 comments on commit 0ada827

Please sign in to comment.