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

Revalorisation des barèmes spécifiques à certains publics "logements foyers" - Aides au logement (FAM_Reforme_Logements Foyers) #1199

Merged
merged 77 commits into from
Nov 22, 2018

Conversation

mtifarine
Copy link
Contributor

@mtifarine mtifarine commented Oct 31, 2018

  • Évolution du système socio-fiscal.

  • Périodes concernées : toutes.

  • Zones impactées :

    • model/caracteristiques_socio_demographiques/logement.
    • conf/cache_blacklist
    • model/prestations/aides_logement.
    • parameters/prestations/aides_logement.
    • parameters/prestations/al_param.
    • parameters/prestations/al_param_accal.
    • parameters/prestations/al_plafonds_logement_foyer/conventionne.
    • parameters/prestations/al_plafonds_logement_foyer/personne_agee.
    • parameters/prestations/al_plafonds_logement_foyer_crous/non_rehabiliteel.
    • parameters/prestations/al_plafonds_logement_foyer_crous/rehabilitee.
  • Détails :

    • Ajoute le barème spécifique à certains publics "logements foyers".
    • Ajout de variables pour les aides au logement foyer:
      • aides_logement_foyer
      • aides_logement_foyer_k
        • aides_logement_foyer_k_al
        • aides_logement_foyer_k_apl
        • aides_logement_categorie
      • aides_logement_foyer_loyer_minimal
        • aides_logement_foyer_loyer_minimal_al
        • aides_logement_foyer_loyer_minimal_apl
      • aides_logement_foyer_plafond_mensualite
      • aides_logement_foyer_crous_plafond
      • aides_logement_foyer_plafond
      • aides_logement_foyer_personne_agee_plafond
      • etat_logement_foyer
      • logement_conventionne
      • logement_crous
      • aides_logement_foyer_chambre_non_rehabilite_eligibilite
      • aides_logement_foyer_personne_agee_eligibilite
    • Ajoute des tests correspondants.

Fixes #930

@mtifarine mtifarine added the contrib:msa Identification des sujets MSA label Oct 31, 2018

class etat_logement_foyer(Variable):
value_type = Enum
possible_values = TypeEtatLogementFoyer # defined in model/base.py
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Le commentaire n'est pas pertinent :)

@Morendil
Copy link
Contributor

@mtifarine Je vais essayer de faire une review en profondeur dans la semaine, au pire début de semaine prochaine.

@@ -24,6 +24,29 @@
zone_apl_by_depcom = None


class TypeEtatLogementFoyer(Enum):
non_renseigne = u"non renseigne"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
non_renseigne = u"non renseigne"
non_renseigne = u"Non renseigné"

@@ -24,6 +24,29 @@
zone_apl_by_depcom = None


class TypeEtatLogementFoyer(Enum):
non_renseigne = u"non renseigne"
logement_rehabilitee = u"Logement rehabilitee"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
logement_rehabilitee = u"Logement rehabilitee"
logement_rehabilite = u"Logement rehabilité"

(Et propager le nom de la variable logement_rehabilite avec un seul e ailleurs dans la PR)

class logement_conventionne(Variable):
value_type = bool
entity = Menage
label = u"logement conventionne"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
label = u"logement conventionne"
label = u"Logement conventionné"

@@ -0,0 +1,6 @@
reference: ipp
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ce paramètre est en doublon avec openfisca_france/parameters/prestations/al_param_accapl/multiplicateur_de_n/dans_la_formule_de_kl.yaml il me semble. Il vaut mieux utiliser l'existant.

@@ -0,0 +1,6 @@
reference: ipp
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ce paramètre est en doublon avec openfisca_france/parameters/prestations/al_param_accapl/multiplicateur_de_n/dans_la_formule_de_kl_numerateur.yaml.

)


class aides_logement_foyer_nb_part(Variable):
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Je ne comprends pas la rédaction de cette formule, qui est textuellement très proche de celle de aides_logement_primo_accedant_nb_part (et qui devrait être rapprochée d'elle dans le fichier afin de favoriser une éventuelle factorisation).

Les lignes 1363-1366 sont difficiles à suivre.

Je crois que la référence législative n'est pas la bonne (elle est identique à celle de l'autre formule), est-ce qu'il s'agirait plutôt de https://www.legifrance.gouv.fr/affichCodeArticle.do?cidTexte=LEGITEXT000006074096&idArticle=LEGIARTI000006899011 ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AL foyer et AL accession sont calculés de la même manière, la différence est dans les conditions et les barèmes, c'est pour ça j'ai suivi la même structure que l'AL accession.

)


class aides_logement_foyer_k(Variable):
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Même remarque que ci-dessus, c'est une formule très proche de aides_logement_primo_accedant_k textuellement, c'est dommage de les éloigner l'une de l'autre.

@@ -0,0 +1,40 @@
description: Loyer minimun lo
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

minimun -> minimum
(dans le nom du fichier aussi)

@@ -0,0 +1,6 @@
reference: ipp
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

En fait il vaudrait mieux réunir ces paramètres "avec N enfants" qui sont apparentés (et ont à vrai dire la forme d'un barème) dans un seul fichier, cela facilitera une simplification future.

@Morendil
Copy link
Contributor

Morendil commented Nov 5, 2018

@mtifarine Un certain nombre d'éléments de cette PR m'inquiètent quant à la dette technique d'OpenFisca France, beaucoup sont en partie imputables à l'état antérieur du code mais je crains de dégrader la situation.

On va se débrouiller pour la livrer sans trop tarder, et j'aimerais proposer un guide pour les suivantes: au-delà d'une cinquantaine de lignes de code ajoutées/modifiées (tests YAML non compris) essayons d'avoir une conversation MSA-DINSIC avant de lancer les travaux, pour anticiper s'il y a des incidences sur la dette technique.

@mtifarine
Copy link
Contributor Author

@Morendil j'ai fait quelques modifications su cette PR selon tes remarques.
On peux discuter par téléphone si tu vois que cela est nécessaire.

]
definition_period = MONTH

def formula_2017_10(famille, period, parameters):
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pourquoi ne définir qu'à partir de 2017-10 ? Il me semble que les aides au logement en logement-foyer / résidence autonomie remontent à bien plus longtemps…

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dans la fiche de besoin, ils ont mentionné qu'au 1er octobre 2017 certains paramètres de dépense du logement sont revalorisés que ce soit en APL, en ALF ou en ALS.
donc je sais pas exactement si les aides au logement-foyer se calculent de la même façon avant cette date.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Je crois qu'il faut qu'on soit attentifs à la différence entre une simple revalorisation, au sens strict, qui va se traduire dans OpenFisca par la mise à jour de fichiers de paramètres uniquement; et toute intervention dans les formules (fichiers Python) qui signale:

  • soit qu'on est en train de modéliser du droit qui ne l'était pas précédemment
  • soit qu'on enregistre une évolution structurelle de la loi
  • soit qu'on est confronté à une limitation technique de ce qui est possible avec les paramètres

Il me semble que dans chacun de ces trois cas (et en particulier pour les distinguer les uns des autres) c'est utile qu'on discute avant de lancer les PR.

Ici on est dans le premier cas, dans la mesure où ces aides logement sont ouvertes "pour les accédants à la propriété ainsi que pour les étudiants logés en résidence universitaire" au moins depuis l'année 2000.

On peut bien sûr restreindre la formule à une année ultérieure pour des raisons techniques (par exemple je vois en supprimant la date que les tests sont KO parce que les paramètres ne sont pas tous définis pour des périodes plus anciennes). Ici je fais l'effort d'introduire les anciens paramètres pour voir dans quelle mesure on peut unifier les formules.

@Morendil
Copy link
Contributor

Morendil commented Nov 6, 2018

@mtifarine Je reprends la main ajd pour essayer quelques factorisations ou reformulations, on s'appelle éventuellement après pour faire le point

@Morendil
Copy link
Contributor

Morendil commented Nov 6, 2018

Pour commencer on factorise aide_logement_montant_brut_avant_degressivite pour revenir à une formule unique, comme déjà discuté lors de #1179 - on voit dans cette PR que la duplication de la formule est excessive, on est obligé de faire les mêmes modifications deux fois, ce qui est très risqué en termes de potentiel de nouveaux bugs.

Pour ce faire on s'appuie sur l'évolution des paramètres, il faut distinguer l'APL des autres AL mais une fois que c'est fait on peut appeler un paramètre unique en utilisant le "fancy indexing". Il suffit donc d'abaisser à zéro le seuil de versement pour l'APL uniquement. C'est un peu dommage de devoir répéter les valeurs pour les deux paramètres (non APL et APL) mais c'est une limitation sur le format de saisie des paramètres sur laquelle on peut éventuellement travailler dans Core.

@Morendil
Copy link
Contributor

Morendil commented Nov 6, 2018

Dans une deuxième étape j'ai renommé montant_locataire_logement_foyer en aides_logement_foyer, ces deux formules étant proches il n'est pas logique de leur donner des noms aussi différents. J'ai fait apparaître plus clairement qu'il s'agit d'une même formule (ligne 1204 et 1230).

Cette formule est issue d'un même texte, dont l'article II commence par: "pour les accédants à la propriété ainsi que pour les étudiants logés en résidence universitaire, le montant de l'allocation de logement est obtenu par l'application de la formule…". Le texte de loi est unique, il n'y a aucune raison d'avoir deux formules différentes ! Il faut au contraire les rapprocher mais descendre les critères de décision (sur les plafonds, les coefficients etc.) plus bas dans le calcul.

((aides_logement_foyer_crous_eligibilite + aides_logement_foyer_personne_agee_eligibilite) * plafond_mensualite) +
(not_(aides_logement_foyer_crous_eligibilite + aides_logement_foyer_personne_agee_eligibilite) * min_(plafond_mensualite, loyer))
)
C = not_(logement_conventionne) * famille('aide_logement_charges', period)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Quel est le texte de loi qui fait qu'on n'applique pas le C de la formule dans le cas d'un logement foyer conventionné (donc ouvrant droit à l'APL) ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

D’après la fiche de besoin:
APL = K(E - Eo) avec
APL = K(L+C - (Lo+C))
L est le loyer réel pris en compte dans la limite d’un plafond variable en fonction de trois zones géographiques et du nombre de personnes à charge.
E représente l’équivalence de loyer et de charges locatives prise en compte dans la limite d’un plafond variable dans les mêmes conditions que L.
E0 représente l’équivalence de loyer et les charges locatives minimales, fonction du revenu et du nombre de personnes à charge.
C est le forfait de charges ; un forfait de charges spécifique est appliqué en cas de cohabitation de plusieurs foyers distincts lorsque l’allocataire est une personne isolée, avec ou sans personne à charge.
L0 est le loyer minimal que le ménage doit consacrer à son logement. Il est fonction du revenu et du nombre de personnes à charge.

Je vais voir si je trouve le teste de loi.

Copy link
Contributor Author

@mtifarine mtifarine Nov 6, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

N = famille('aides_logement_foyer_nb_part', period)

return (
(coef_k - (R / (multi_n * N))) * not_(logement_conventionne) +
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ici également, en vertu de quel texte est-ce qu'on applique une formule différenciée ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

d’après l'expert:

Il existe deux barèmes applicables en secteur foyer :

  • l’APL 1 (cas général), qui concerne la plupart des logements-foyers, en particulier les résidences sociales neuves.
    Les logements foyers éligibles à l'APL 1 foyer sont tous les logements foyers conventionnés neufs ou après travaux à compter du 1er avril 1979.
    Les résidences sociales éligibles à l'APL 1 foyer sont :
    • toute résidence sociale, conventionnée à ce titre pour la première fois, neuve ou après travaux (à compter du 1er janvier 1995),
    • tout foyer jeunes travailleurs ou travailleurs migrants déjà éligible à l'APL 1 foyer faisant l'objet d'un nouveau conventionnement (à compter du 1er janvier 1995).

  • l’APL 2 concerne les résidences sociales existantes conventionnées sans travaux depuis le 1er janvier 2005, et les foyers de jeunes travailleurs conventionnés sans travaux depuis le 1er octobre 1990.

Et dans la liste des tests j'ai remarqué que:

  • L'APL1 concerne les logements conventionnés.
  • L'APL2 concerne les logements non conventionnés.

N = famille('aides_logement_foyer_nb_part', period)
majoration_loyer_apl1 = prestations.al_param_accal.majoration_du_loyer_minimum_lo_apl1 * N

L_plafond1 = ((bareme_apl1.calc(baseRessource / N) * N + majoration_loyer_apl1) / 12) * logement_conventionne
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Même question que précédemment, d'où vient ce switch sur logement_conventionne ?


L_plafond1 = ((bareme_apl1.calc(baseRessource / N) * N + majoration_loyer_apl1) / 12) * logement_conventionne
L_plafond2 = ((bareme.calc(baseRessource / N) * N + majoration_loyer) / 12) * not_(logement_conventionne)
return max(L_plafond1, L_plafond2)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Accessoirement pourquoi prend-on le max des deux plafonds ici ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oui c'est toujours l'un des 2 plafonds est à 0.
Sinon on fais un "OU logique" entre les 2 plafonds.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oui ça serait plus cohérent avec les autres endroits où on fait ça dans le code. Mais j'ai une remarque plus générale que je vais mettre dans le fil principal.

@benjello
Copy link
Member

benjello commented Nov 7, 2018

@Morendil @mtifarine : Vous pouvez utiliser https://github.com/openfisca/openfisca-france/blob/master/openfisca_france/conf/cache_blacklist.py pour éviter que des variables intermédiaires utilisées qu'une fois ou peu de fois avec un calcul pas cher ne soit stockées ad vitam eternam. C'est important de ne pas surcharger la mémoire pour les runs avec de grosse bases de données surtout si les variables en questions sont mensuelles et calculées sur plusieurs années.

@Morendil
Copy link
Contributor

Morendil commented Nov 7, 2018

Je pense que ça a été une erreur de généraliser ce motif dans ce fichier aides_logement:

  resultat = (logement_conventionne * tel_calcul) + (not_(logement_conventionne) * autre_calcul) 

Cela rend les formules difficiles à lire et à factoriser, et je pense qu'en l'occurrence on a de meilleures façons de s'en tirer; les formules sont généralement les mêmes, ce sont les barèmes qui changent. J'essaie de remettre tout ça à plat mais on a accumulé pas mal de passif, des copier-coller de formules avec ensuite de petites modifications du genre ci-dessus pour distinguer les secteurs APL et AL. Il faut revenir en arrière et mettre en évidence les similitudes entre les formules, avant de pouvoir les factoriser proprement. Ca risque de prendre du temps.

J'ai trouvé pas mal d'infos dans cette brochure qui est citée dans un ou deux tests de Mes Aides et qui reprend certaines des explications déjà mentionnées dans ce fil de discussion.

@Morendil
Copy link
Contributor

Morendil commented Nov 7, 2018

@benjello Oui j'ai repéré ça, il y a effectivement pas mal de variables des aides au logement dans cette liste. On va d'abord se préoccuper de la structure de code, en limitant la duplication, avant de se préoccuper de l'optimiser.

Je crois qu'il faudrait aussi optimiser cette optimisation, elle me paraît implémentée de façon un peu ad-hoc. La modulation du comportement du cache devrait être un champ associé à la variable elle-même; si tu modifies le nom d'une variable tu vas changer ce comportement et ne pas t'en rendre compte parce que c'est planqué dans cache_blacklist.

@benjello
Copy link
Member

benjello commented Nov 7, 2018

@Morendil : côté IPP on préfère de la duplication à du code qui ne peut plus tourner ;-)
Et oui l'optimisation est basique mais cela nous a sorti simplement et rapidement d'une situation où on explosait la RAM ...
Je suis bien entendu preneur de toute amélioration.

@Morendil
Copy link
Contributor

Morendil commented Nov 7, 2018

Il faut revenir en arrière et mettre en évidence les similitudes entre les formules, avant de pouvoir les factoriser proprement.

Illustration:

Dans d06b43d on peut voir que les formules sont devenues très proches:

class aides_logement_primo_accedant_nb_part(Variable):
value_type = float
entity = Famille
label = u"Allocation logement pour les primo-accédants nombre de part"
reference = u"https://www.legifrance.gouv.fr/affichCodeArticle.do?cidTexte=LEGITEXT000006073189&idArticle=LEGIARTI000006737341&dateTexte=&categorieLien=cid"
definition_period = MONTH
def formula(famille, period, parameters):
prestations = parameters(period).prestations
al_nb_pac = famille('al_nb_personnes_a_charge', period)
couple = famille('al_couple', period)
return (
prestations.al_param_accal.n_0_personnes_a_charge.isole * not_(couple) * (al_nb_pac == 0)
+ prestations.al_param_accal.n_0_personnes_a_charge.menage * couple * (al_nb_pac == 0)
+ prestations.al_param.parametre_n['1_personne_a_charge'] * (al_nb_pac == 1)
+ prestations.al_param.parametre_n['2_personnes_a_charge'] * (al_nb_pac == 2)
+ prestations.al_param.parametre_n['3_personnes_a_charge'] * (al_nb_pac == 3)
+ prestations.al_param.parametre_n['4_personnes_a_charge'] * (al_nb_pac >= 4)
+ prestations.al_param.majoration_n_par_personne_a_charge_supplementaire * (al_nb_pac > 4) * (al_nb_pac - 4)
)
class aides_logement_foyer_nb_part_apl(Variable):
value_type = float
entity = Famille
label = u"Allocation logement pour les logement foyers en APL nombre de part"
reference = u"https://www.legifrance.gouv.fr/affichCodeArticle.do?cidTexte=LEGITEXT000006074096&idArticle=LEGIARTI000006899011"
definition_period = MONTH
def formula(famille, period, parameters):
prestations = parameters(period).prestations
logement_conventionne = famille.demandeur.menage('logement_conventionne', period)
al_nb_pac = famille('al_nb_personnes_a_charge', period)
couple = famille('al_couple', period)
return (
prestations.al_param_accal.n_0_personnes_a_charge.isole_apl1 * not_(couple) * (al_nb_pac == 0)
+ prestations.al_param_accal.n_0_personnes_a_charge.menage_apl1 * couple * (al_nb_pac == 0)
+ prestations.al_param.parametre_n['1_personne_a_charge'] * (al_nb_pac == 1)
+ prestations.al_param.parametre_n['2_personnes_a_charge'] * (al_nb_pac == 2)
+ prestations.al_param.parametre_n['3_personnes_a_charge'] * (al_nb_pac == 3)
+ prestations.al_param.parametre_n['4_personnes_a_charge'] * (al_nb_pac >= 4)
+ prestations.al_param.majoration_n_par_personne_a_charge_supplementaire * (al_nb_pac > 4) * (al_nb_pac - 4)
)
class aides_logement_foyer_nb_part_al(Variable):
value_type = float
entity = Famille
label = u"Allocation logement pour les logement foyers en AL nombre de part"
reference = u"https://www.legifrance.gouv.fr/affichCodeArticle.do?cidTexte=LEGITEXT000006074096&idArticle=LEGIARTI000006899011"
definition_period = MONTH
def formula(famille, period, parameters):
prestations = parameters(period).prestations
al_nb_pac = famille('al_nb_personnes_a_charge', period)
couple = famille('al_couple', period)
return (
prestations.al_param_accal.n_0_personnes_a_charge.isole * not_(couple) * (al_nb_pac == 0)
+ prestations.al_param_accal.n_0_personnes_a_charge.menage * couple * (al_nb_pac == 0)
+ prestations.al_param.parametre_n['1_personne_a_charge'] * (al_nb_pac == 1)
+ prestations.al_param.parametre_n['2_personnes_a_charge'] * (al_nb_pac == 2)
+ prestations.al_param.parametre_n['3_personnes_a_charge'] * (al_nb_pac == 3)
+ prestations.al_param.parametre_n['4_personnes_a_charge'] * (al_nb_pac >= 4)
+ prestations.al_param.majoration_n_par_personne_a_charge_supplementaire * (al_nb_pac > 4) * (al_nb_pac - 4)
)

Au prix d'une réorganisation des paramètres et d'une variable intermédiaire, b5f48b6 les rend rigoureusement identiques:

https://github.com/openfisca/openfisca-france/blob/1f51d4a4202d1279af060731289892d41ab74de1/openfisca_france/model/prestations/aides_logement.py#L1341-L1422

On va donc pouvoir se débarrasser de deux copies redondantes sur les trois !

@Morendil Morendil merged commit 974c236 into master Nov 22, 2018
@Morendil Morendil deleted the msa_logement_foyer branch November 22, 2018 19:18
K = famille('aides_logement_primo_accedant_k', period)
Lo = famille('aides_logement_primo_accedant_loyer_minimal', period)
plafond_mensualite = famille('aides_logement_plafond_mensualite', period)
L = where(logement_conventionne, min_(plafond_mensualite, loyer), plafond_mensualite)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note : cette ligne semble générer une régression dans un de nos tests fonctionnels sur Mes Aides.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Je suspecterais une inadéquation Ménage vs Famille mais je ne 'ai pas vérifié les entités des différentes variables

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@guillett Parce que vous n'avez pas logement_conventionne qui était précédemment le statut locataire_hlm ?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Désolé, j'ai mis cette note hier soir juste avant de fermer mon ordinateur pour plus facilement la retrouver ce matin (enfin maintenant quoi :).

@Morendil, non je ne pense pas qu'il s’agisse de ça.

Le test en question est le suivant, un foyer primo accédant ayant remboursé son prêt (donc avec un loyer à 0).

Quelque soit le status conventionné ou non. L devrait être égal à 0 ie. le min_(plafond_mensualite, loyer) sinon la famille se voit attribuer des aides au logement (dans ce cas précis) 268€.

Copy link
Member

@guillett guillett Dec 6, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Je vais faire une proposition de fix avec
L = where(logement_conventionne + accedant, min_(plafond_mensualite, loyer), plafond_mensualite)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Je suis surpris que plafond_mensualite puisse ne pas être un plafond (et je n'arrive pas à trouver une base légale pour le moment).

@claireleroy claireleroy removed the contrib:msa Identification des sujets MSA label Dec 11, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants