Mentions légales du service

Skip to content
Snippets Groups Projects
Commit 275a2d8a authored by Denis Merigoux's avatar Denis Merigoux
Browse files

Added relative/absolute diff for new child

parent 9d38a61f
No related branches found
No related tags found
No related merge requests found
...@@ -59,10 +59,18 @@ search_marginal_tax = MaxMarginalTaxRateSearch( ...@@ -59,10 +59,18 @@ search_marginal_tax = MaxMarginalTaxRateSearch(
avoid_seuil_non_distribution_bourses_college=False, avoid_seuil_non_distribution_bourses_college=False,
) )
search_new_child = MaxGainFromNewChild( search_new_child_relative = MaxGainFromNewChild(
menage_constraints, menage_constraints,
nb_personnes_a_charge_init=1, relative=True,
age_nouvel_enfant=0 nb_personnes_a_charge_init=0,
age_nouvel_enfant=None
)
search_new_child_absolute = MaxGainFromNewChild(
menage_constraints,
relative=False,
nb_personnes_a_charge_init=0,
age_nouvel_enfant=None
) )
search_different_distribution_revenus = MaxGainFromDifferentRevenueDistribution( search_different_distribution_revenus = MaxGainFromDifferentRevenueDistribution(
......
...@@ -436,10 +436,12 @@ class MaxGainFromNewChild(DichotomicSearch): ...@@ -436,10 +436,12 @@ class MaxGainFromNewChild(DichotomicSearch):
def __init__(self, def __init__(self,
menage_constraints: MenageConstraints, menage_constraints: MenageConstraints,
relative: bool,
nb_personnes_a_charge_init: Optional[int]=None, nb_personnes_a_charge_init: Optional[int]=None,
age_nouvel_enfant: Optional[int]=None age_nouvel_enfant: Optional[int]=None,
): ):
self.menage_constraints_ = menage_constraints self.menage_constraints_ = menage_constraints
self.relative = relative
self.nb_personnes_a_charge_init = nb_personnes_a_charge_init self.nb_personnes_a_charge_init = nb_personnes_a_charge_init
self.age_nouvel_enfant = age_nouvel_enfant self.age_nouvel_enfant = age_nouvel_enfant
...@@ -520,7 +522,10 @@ class MaxGainFromNewChild(DichotomicSearch): ...@@ -520,7 +522,10 @@ class MaxGainFromNewChild(DichotomicSearch):
if self.s1 is None: if self.s1 is None:
raise TypeError("Error !") raise TypeError("Error !")
if current_search_param_value >= 0: if current_search_param_value >= 0:
deltai_min = self.s1 % Taux.pourcent(current_search_param_value) if self.relative:
deltai_min = self.s1 % Taux.pourcent(current_search_param_value)
else:
deltai_min = Montant.euros(current_search_param_value, s)
else: else:
raise TypeError("Le gain doit être positif !") raise TypeError("Le gain doit être positif !")
return self.deltai >= deltai_min return self.deltai >= deltai_min
...@@ -541,7 +546,11 @@ class MaxGainFromNewChild(DichotomicSearch): ...@@ -541,7 +546,11 @@ class MaxGainFromNewChild(DichotomicSearch):
relative_gain_found: float = float("inf") relative_gain_found: float = float("inf")
else: else:
relative_gain_found = ratio * 100 relative_gain_found = ratio * 100
return relative_gain_found absolute_gain_found: float = deltai_m_print.to_float() # type:ignore
if self.relative:
return relative_gain_found
else:
return absolute_gain_found
def result_found_lines(self, s: Solver, new_search_param_value: float) -> List[Tuple[str, Any]]: def result_found_lines(self, s: Solver, new_search_param_value: float) -> List[Tuple[str, Any]]:
if self.deltai is None: if self.deltai is None:
...@@ -549,7 +558,8 @@ class MaxGainFromNewChild(DichotomicSearch): ...@@ -549,7 +558,8 @@ class MaxGainFromNewChild(DichotomicSearch):
deltai_m = self.deltai // 12 deltai_m = self.deltai // 12
return [ return [
("Changement mensuel après redistribution", deltai_m), ("Changement mensuel après redistribution", deltai_m),
("Gain relatif avec nouvel enfant", "{0:.1f}%".format(new_search_param_value)) (("Gain relatif avec nouvel enfant", "{0:.1f}%".format(new_search_param_value)) if self.relative else
("Gain absolu avec nouvel enfant", Montant.centimes(int(new_search_param_value * 100), s)))
] ]
def before_request_message(self, current_search_param_value: int) -> str: def before_request_message(self, current_search_param_value: int) -> str:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment