Formule de calcul
Base ressources des allocations logement
Ce dispositif est peut-être obsolète !
La dernière date de relecture du dispositif est vendredi 1 janvier 2021.
Formule de calcul OpenFisca à compter du 2021-01-01 :
def formula_2021_01_01(famille, period, parameters): biactivite = famille('aide_logement_biactivite', period) parametres_ressources = parameters(period).prestations_sociales.aides_logement.allocations_logement.ressources age_etudiant_max = parameters(period).prestations_sociales.aides_logement.allocations_logement.al_etudiant.age_max base_ressources_i = famille.members('aide_logement_base_ressources_individu', period) base_ressources_parents = famille.sum(base_ressources_i, role = Famille.PARENT) ressources_patrimoine = famille('aide_logement_base_ressources_patrimoine', period) abattement_ressources_enfant = parameters(period.n_2.stop).prestations_sociales.solidarite_insertion.minimum_vieillesse.aspa.plafond_ressources.personnes_seules * 1.25 base_ressources_enfants = famille.sum( max_(0, base_ressources_i - abattement_ressources_enfant), role = Famille.ENFANT) demandeur_declarant_principal = famille.demandeur.has_role(FoyerFiscal.DECLARANT_PRINCIPAL) conjoint_declarant_principal = famille.conjoint.has_role(FoyerFiscal.DECLARANT_PRINCIPAL) # Revenus du foyer fiscal aide_logement_base_revenus_fiscaux = ( famille.demandeur.foyer_fiscal('aide_logement_base_revenus_fiscaux', period.n_2) * demandeur_declarant_principal + famille.conjoint.foyer_fiscal('aide_logement_base_revenus_fiscaux', period.n_2) * conjoint_declarant_principal ) pensions_alimentaires_versees = ( famille.demandeur.foyer_fiscal('pensions_alimentaires_versees', period.last_year) * demandeur_declarant_principal + famille.conjoint.foyer_fiscal('pensions_alimentaires_versees', period.last_year) * conjoint_declarant_principal ) abat_spe = ( famille.demandeur.foyer_fiscal('abattements_speciaux_prestations_familiales', period.n_2) * demandeur_declarant_principal + famille.conjoint.foyer_fiscal('abattements_speciaux_prestations_familiales', period.n_2) * conjoint_declarant_principal ) base_ressources_parents = max_(0, base_ressources_parents - abat_spe) ressources = ( base_ressources_parents + base_ressources_enfants + ressources_patrimoine + aide_logement_base_revenus_fiscaux + pensions_alimentaires_versees ) # Abattement forfaitaire pour double activité abattement_double_activite = biactivite * parametres_ressources.dar_1 # Arrondi aux 100 euros supérieurs ressources = max_(ressources - abattement_double_activite, 0) # Forfait de ressources pour étudiants # Seul le statut étudiant (et boursier) du demandeur importe, pas celui du conjoint demandeur_etudiant = famille.demandeur('etudiant', period) * (famille.demandeur('age', period) < age_etudiant_max) demandeur_boursier = famille.demandeur('boursier', period) statut_occupation_logement = famille.demandeur.menage('statut_occupation_logement', period) logement_crous = famille.demandeur.menage('logement_crous', period) logement_crous_ou_foyer = (statut_occupation_logement == TypesStatutOccupationLogement.locataire_foyer) + logement_crous montant_plancher_ressources = not_(logement_crous_ou_foyer) * max_(0, demandeur_etudiant * parametres_ressources.dar_4 - demandeur_boursier * parametres_ressources.dar_5) montant_plancher_ressources_logement_foyer = logement_crous_ou_foyer * max_(0, demandeur_etudiant * parametres_ressources.dar_11 - demandeur_boursier * parametres_ressources.dar_12) ressources = where(demandeur_etudiant, max_(montant_plancher_ressources, montant_plancher_ressources_logement_foyer), ressources) # Arrondi au centime, pour éviter qu'une petite imprécision liée à la recombinaison d'une valeur annuelle éclatée ne fasse monter d'un cran l'arrondi au 100€ supérieur. ressources = round_(ressources * 100) / 100 # Arrondi aux 100 euros supérieurs ressources = ceil(ressources / 100) * 100 accedant = famille.demandeur.menage('aides_logement_primo_accedant_eligibilite', period) plancher = famille.demandeur.menage('aides_logement_primo_accedant_ressources', period) return where(accedant, max_(ressources, plancher), ressources)
Formule OpenFisca sur GithubVariables et paramètres inscrits dans la formule :
Paramètres :
- prestations_sociales.aides_logement.allocations_logement.al_etudiant.age_max
- prestations_sociales.aides_logement.allocations_logement.ressources.dar_1
- prestations_sociales.aides_logement.allocations_logement.ressources.dar_11
- prestations_sociales.aides_logement.allocations_logement.ressources.dar_12
- prestations_sociales.aides_logement.allocations_logement.ressources.dar_4
- prestations_sociales.aides_logement.allocations_logement.ressources.dar_5
- prestations_sociales.solidarite_insertion.minimum_vieillesse.aspa.plafond_ressources.personnes_seules
Variables utilisées par le cas type :
Formule initiale de calcul OpenFisca :
def formula(famille, period, parameters): biactivite = famille('aide_logement_biactivite', period.n_2.last_month) parametres_ressources = parameters(period).prestations_sociales.aides_logement.allocations_logement.ressources base_ressources_i = famille.members('aide_logement_base_ressources_individu', period) base_ressources_eval_forfaitaire_i = famille.members('aide_logement_base_ressources_eval_forfaitaire', period) base_ressources = where( base_ressources_eval_forfaitaire_i > 0, base_ressources_eval_forfaitaire_i, base_ressources_i ) base_ressources_parents = famille.sum(base_ressources, role = Famille.PARENT) ressources_patrimoine = famille('aide_logement_base_ressources_patrimoine', period) abattement_ressources_enfant = parameters(period.n_2.stop).prestations_sociales.solidarite_insertion.minimum_vieillesse.aspa.plafond_ressources.personnes_seules * 1.25 base_ressources_enfants = famille.sum( max_(0, base_ressources_i - abattement_ressources_enfant), role = Famille.ENFANT) demandeur_declarant_principal = famille.demandeur.has_role(FoyerFiscal.DECLARANT_PRINCIPAL) conjoint_declarant_principal = famille.conjoint.has_role(FoyerFiscal.DECLARANT_PRINCIPAL) # Revenus du foyer fiscal aide_logement_base_revenus_fiscaux = ( famille.demandeur.foyer_fiscal('aide_logement_base_revenus_fiscaux', period.n_2) * demandeur_declarant_principal + famille.conjoint.foyer_fiscal('aide_logement_base_revenus_fiscaux', period.n_2) * conjoint_declarant_principal ) pensions_alimentaires_versees = ( famille.demandeur.foyer_fiscal('pensions_alimentaires_versees', period.n_2) * demandeur_declarant_principal + famille.conjoint.foyer_fiscal('pensions_alimentaires_versees', period.n_2) * conjoint_declarant_principal ) abat_spe = ( famille.demandeur.foyer_fiscal('abattements_speciaux_prestations_familiales', period.n_2) * demandeur_declarant_principal + famille.conjoint.foyer_fiscal('abattements_speciaux_prestations_familiales', period.n_2) * conjoint_declarant_principal ) base_ressources_parents = max_(0, base_ressources_parents - abat_spe) ressources = ( base_ressources_parents + base_ressources_enfants + ressources_patrimoine + aide_logement_base_revenus_fiscaux + pensions_alimentaires_versees ) # Abattement forfaitaire pour double activité abattement_double_activite = biactivite * parametres_ressources.dar_1 # Arrondi aux 100 euros supérieurs ressources = max_(ressources - abattement_double_activite, 0) # Planchers de ressources pour étudiants # Seul le statut étudiant (et boursier) du demandeur importe, pas celui du conjoint parametres_ressources = parameters(period).prestations_sociales.aides_logement.allocations_logement.ressources demandeur_etudiant = famille.demandeur('etudiant', period) demandeur_boursier = famille.demandeur('boursier', period) statut_occupation_logement = famille.demandeur.menage('statut_occupation_logement', period) logement_crous = famille.demandeur.menage('logement_crous', period) logement_crous_ou_foyer = (statut_occupation_logement == TypesStatutOccupationLogement.locataire_foyer) + logement_crous montant_plancher_ressources = not_(logement_crous_ou_foyer) * max_(0, demandeur_etudiant * parametres_ressources.dar_4 - demandeur_boursier * parametres_ressources.dar_5) montant_plancher_ressources_logement_foyer = logement_crous_ou_foyer * max_(0, demandeur_etudiant * parametres_ressources.dar_11 - demandeur_boursier * parametres_ressources.dar_12) ressources = max_(ressources, max_(montant_plancher_ressources, montant_plancher_ressources_logement_foyer)) # Arrondi au centime, pour éviter qu'une petite imprécision liée à la recombinaison d'une valeur annuelle éclatée ne fasse monter d'un cran l'arrondi au 100€ supérieur. ressources = round_(ressources * 100) / 100 # Arrondi aux 100 euros supérieurs ressources = ceil(ressources / 100) * 100 accedant = famille.demandeur.menage('aides_logement_primo_accedant_eligibilite', period) plancher = famille.demandeur.menage('aides_logement_primo_accedant_ressources', period) return where(accedant, max_(ressources, plancher), ressources)
Formule OpenFisca sur GithubVariables et paramètres inscrits dans la formule :
Paramètres :
- prestations_sociales.aides_logement.allocations_logement.ressources.dar_1
- prestations_sociales.aides_logement.allocations_logement.ressources.dar_11
- prestations_sociales.aides_logement.allocations_logement.ressources.dar_12
- prestations_sociales.aides_logement.allocations_logement.ressources.dar_4
- prestations_sociales.aides_logement.allocations_logement.ressources.dar_5
- prestations_sociales.solidarite_insertion.minimum_vieillesse.aspa.plafond_ressources.personnes_seules
Variables utilisées par le cas type :
Variables et dispositifs influencés par la formule :
La formule du dispositif "Base ressources des allocations logement" peut avoir une influence sur d'autres dispositifs et variables :