From 275a2d8a9bc2262327f2ae619ab1c6eb48874a0c Mon Sep 17 00:00:00 2001 From: Denis Merigoux <denis.merigoux@gmail.com> Date: Tue, 2 Jul 2019 13:49:26 -0700 Subject: [PATCH] Added relative/absolute diff for new child --- main.py | 14 +++++++++++--- questions.py | 18 ++++++++++++++---- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/main.py b/main.py index 7ed0d0a..36a3298 100644 --- a/main.py +++ b/main.py @@ -59,10 +59,18 @@ search_marginal_tax = MaxMarginalTaxRateSearch( avoid_seuil_non_distribution_bourses_college=False, ) -search_new_child = MaxGainFromNewChild( +search_new_child_relative = MaxGainFromNewChild( menage_constraints, - nb_personnes_a_charge_init=1, - age_nouvel_enfant=0 + relative=True, + 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( diff --git a/questions.py b/questions.py index ab6fb12..7abdeb8 100644 --- a/questions.py +++ b/questions.py @@ -436,10 +436,12 @@ class MaxGainFromNewChild(DichotomicSearch): def __init__(self, menage_constraints: MenageConstraints, + relative: bool, 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.relative = relative self.nb_personnes_a_charge_init = nb_personnes_a_charge_init self.age_nouvel_enfant = age_nouvel_enfant @@ -520,7 +522,10 @@ class MaxGainFromNewChild(DichotomicSearch): if self.s1 is None: raise TypeError("Error !") 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: raise TypeError("Le gain doit être positif !") return self.deltai >= deltai_min @@ -541,7 +546,11 @@ class MaxGainFromNewChild(DichotomicSearch): relative_gain_found: float = float("inf") else: 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]]: if self.deltai is None: @@ -549,7 +558,8 @@ class MaxGainFromNewChild(DichotomicSearch): deltai_m = self.deltai // 12 return [ ("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: -- GitLab