Skip to content
Snippets Groups Projects
Commit e1e78f21 authored by sandcha's avatar sandcha Committed by Augustin Wenger
Browse files

Set pre-nbptr operations in helpers

parent c5206417
Branches
Tags
1 merge request!17Quotient Familial : réformer le mode de calcul
......@@ -16,7 +16,8 @@ from Simulation_engine.lexception import LexCeption
def generate_nbptr_class(
calcul_nb_parts
): # redéfinit le calcul des nbptr si spécifié par l'utilisateur
situations_familiales = ["veuf", "mariesOuPacses", "celibataire", "divorce"]
def exit_on_missing_mandatory_key(calcul_nb_parts):
for nom_rubrique in [
"partsSelonNombrePAC",
"partsParPACAuDela",
......@@ -28,9 +29,24 @@ def generate_nbptr_class(
nom_rubrique
)
)
parts_pac_array_of_objects = calcul_nb_parts["partsSelonNombrePAC"]
nb_cases_tableau = len(parts_pac_array_of_objects)
for nb_pac in range(nb_cases_tableau):
parts_supp_cp = calcul_nb_parts["partsParPACChargePartagee"]
for nb_cp in [
"zeroChargePrincipale",
"unChargePrincipale",
"deuxOuPlusChargePrincipale",
]:
if nb_cp not in parts_supp_cp:
raise LexCeption(
"the field '{}' is missing from 'partsParPACChargePartagee'. You can refer to the README to check valid format.".format(
nb_cp
)
)
def exit_on_inconsistent_partsSelonNombrePAC(
parts_pac_array_of_objects, nb_situations, situations_familiales
):
for nb_pac in range(nb_situations):
for nom_situation in situations_familiales:
if nom_situation not in parts_pac_array_of_objects[nb_pac]:
raise LexCeption(
......@@ -39,30 +55,29 @@ def generate_nbptr_class(
)
)
parts_pac_tableau = {
def build_parts_by_situation_familiale(
parts_pac_array_of_objects, nb_situations, situations_familiales
):
return {
nom_situation: [
parts_pac_array_of_objects[nb_enfant][nom_situation]
for nb_enfant in range(nb_cases_tableau)
for nb_enfant in range(nb_situations)
]
for nom_situation in situations_familiales
}
nb_enfants_tableau = nb_cases_tableau - 1 # car le zéro est décrit dans le tableau
exit_on_missing_mandatory_key(calcul_nb_parts)
parts_pac_array_of_objects = calcul_nb_parts["partsSelonNombrePAC"]
parts_supp_cp = calcul_nb_parts["partsParPACChargePartagee"]
for nb_cp in [
"zeroChargePrincipale",
"unChargePrincipale",
"deuxOuPlusChargePrincipale",
]:
if nb_cp not in parts_supp_cp:
raise LexCeption(
"the field '{}' is missing from 'partsParPACChargePartagee'. You can refer to the README to check valid format.".format(
nb_cp
)
)
bonus_isole = calcul_nb_parts["bonusParentIsole"]
situations_familiales = ["veuf", "mariesOuPacses", "celibataire", "divorce"]
nb_situations = len(parts_pac_array_of_objects)
exit_on_inconsistent_partsSelonNombrePAC(parts_pac_array_of_objects, nb_situations, situations_familiales)
parts_pac_tableau = build_parts_by_situation_familiale(parts_pac_array_of_objects, nb_situations, situations_familiales)
nb_enfants_tableau = nb_situations - 1 # car le zéro personne à charge est décrit dans le tableau
class nbptr(Variable):
value_type = float
entity = FoyerFiscal
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment