Formule de calcul
Base ressources en évaluation forfaitaire des aides au logement (R351-7 du CCH)
Ce dispositif est peut-être obsolète !
La dernière date de relecture du dispositif est mercredi 1 avril 2020.
Formule de calcul OpenFisca à compter du 2020-04-01 :
Formule initiale de calcul OpenFisca :
def formula(individu, period, parameters): def eval_forfaitaire_salaries(): salaire_imposable = individu('salaire_imposable', period.offset(-1)) # Application de l'abattement pour frais professionnels P = parameters(period).impot_revenu.calcul_revenus_imposables.deductions somme_salaires_mois_precedent = 12 * salaire_imposable montant_abattement = round_( min_( max_(P.abatpro.taux * somme_salaires_mois_precedent, P.abatpro.min), P.abatpro.max ) ) return max_(0, somme_salaires_mois_precedent - montant_abattement) def eval_forfaitaire_tns(): last_july_first = Instant( (period.start.year if period.start.month >= 7 else period.start.year - 1, 7, 1)) smic_horaire_brut = parameters(last_july_first).marche_travail.salaire_minimum.smic.smic_b_horaire travailleur_non_salarie = individu('travailleur_non_salarie', period) return travailleur_non_salarie * 1500 * smic_horaire_brut base_ressources_eval_forfaitaire = max_(eval_forfaitaire_salaries(), eval_forfaitaire_tns()) mois_precedent = period.offset(-1) last_day_reference_year = period.n_2.stop revenu_assimile_salaire_apres_abattements_i = individu.famille.members('revenu_assimile_salaire_apres_abattements', period.n_2, options=[ADD]) revenu_assimile_salaire_apres_abattements = individu.famille.sum(revenu_assimile_salaire_apres_abattements_i, role = Famille.PARENT) 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 + rpns_pvce + rpns_pvct + rpns_mvct + rpns_mvlt revenu_assimile_pension_apres_abattements_i = individu.famille.members('revenu_assimile_pension_apres_abattements', period.n_2, options = [ADD]) revenu_assimile_pension_apres_abattements = individu.famille.sum(revenu_assimile_pension_apres_abattements_i, role = Famille.PARENT) demandeur_declarant_principal = individu.famille.demandeur.has_role(FoyerFiscal.DECLARANT_PRINCIPAL) conjoint_declarant_principal = individu.famille.conjoint.has_role(FoyerFiscal.DECLARANT_PRINCIPAL) aide_logement_base_revenus_fiscaux = ( individu.famille.demandeur.foyer_fiscal('aide_logement_base_revenus_fiscaux', period.n_2) * demandeur_declarant_principal + individu.famille.conjoint.foyer_fiscal('aide_logement_base_revenus_fiscaux', period.n_2) * conjoint_declarant_principal ) pensions_alimentaires_versees = ( individu.famille.demandeur.foyer_fiscal('pensions_alimentaires_versees', period.n_2) * demandeur_declarant_principal + individu.famille.conjoint.foyer_fiscal('pensions_alimentaires_versees', period.n_2) * conjoint_declarant_principal ) base_ressources = ( revenu_assimile_salaire_apres_abattements + rpns + revenu_assimile_pension_apres_abattements + aide_logement_base_revenus_fiscaux + pensions_alimentaires_versees ) en_couple = individu.famille('en_couple', period) aah_i = individu.famille.members('aah', mois_precedent) aah = individu.famille.sum(aah_i, role = Famille.PARENT) age_demandeur = individu.famille.demandeur('age', period) age_conjoint = individu.famille.conjoint('age', period) smic_horaire_brut_n2 = parameters(last_day_reference_year).marche_travail.salaire_minimum.smic.smic_b_horaire salaire_imposable_i = individu.famille.members('salaire_imposable', period.offset(-1)) somme_salaires = individu.famille.sum(salaire_imposable_i, role = Famille.PARENT) plafond_eval_forfaitaire = 1015 * smic_horaire_brut_n2 parametres_ressources = parameters(period).prestations_sociales.aides_logement.allocations_logement.ressources plafond_salaire_jeune_isole = parametres_ressources.dar_8 plafond_salaire_jeune_couple = parametres_ressources.dar_9 plafond_salaire_jeune = where(en_couple, plafond_salaire_jeune_couple, plafond_salaire_jeune_isole) neutral_jeune = or_(age_demandeur < 25, and_(en_couple, age_conjoint < 25)) neutral_jeune &= somme_salaires < plafond_salaire_jeune eval_forfaitaire = base_ressources <= plafond_eval_forfaitaire eval_forfaitaire &= base_ressources_eval_forfaitaire > 0 eval_forfaitaire &= aah == 0 eval_forfaitaire &= not_(neutral_jeune) ressources = where(eval_forfaitaire, base_ressources_eval_forfaitaire, 0) abattement_revenus_activite_professionnelle = individu('aide_logement_abattement_revenus_activite_professionnelle', period) abattement_indemnites_chomage = individu('aide_logement_abattement_indemnites_chomage', period) aide_logement_condition_neutralisation = individu('aide_logement_condition_neutralisation', period) taux_abattement = parametres_ressources.abattement_chomage_indemnise ressources = ressources * (1 - taux_abattement * abattement_revenus_activite_professionnelle) * (1 - taux_abattement * abattement_indemnites_chomage) * (1 - aide_logement_condition_neutralisation) return ressources
Formule OpenFisca sur GithubVariables et paramètres inscrits dans la formule :
Paramètres :
- impot_revenu.calcul_revenus_imposables.deductions.abatpro.max
- impot_revenu.calcul_revenus_imposables.deductions.abatpro.min
- impot_revenu.calcul_revenus_imposables.deductions.abatpro.taux
- marche_travail.salaire_minimum.smic.smic_b_horaire
- prestations_sociales.aides_logement.allocations_logement.ressources.abattement_chomage_indemnise
- prestations_sociales.aides_logement.allocations_logement.ressources.dar_8
- prestations_sociales.aides_logement.allocations_logement.ressources.dar_9
Variables utilisées par le cas type :
Variables et dispositifs influencés par la formule :
La formule du dispositif "Base ressources en évaluation forfaitaire des aides au logement (R351-7 du CCH)" peut avoir une influence sur d'autres dispositifs et variables :