diff --git a/models/res_partner.py b/models/res_partner.py index 7b55364410463ba7ad8c66f2b831ce8ad23f236e..d494e89156ff7b28b071b5793a15314e962ff40c 100644 --- a/models/res_partner.py +++ b/models/res_partner.py @@ -966,46 +966,43 @@ class ScopPartner(models.Model): def _compute_revision_next_exercice(self): for partner in self: # Si aucune périodicité de défini, on n'insiste pas - if not partner.revision_type: + if not partner.revision_type or not partner.first_closeout: partner.revision_next_exercice = False - - # On commence par regarder si l'on a des révisions - last_rev = partner.revision_ids.sorted( - key=lambda r: r.revision_result_year, reverse=True) - - # On calcule l'année de référence du calcul - if len(last_rev) > 0: - # si On a déjà révisé un exercice il devient la base du calcul - base_rev = last_rev[0].revision_result_year else: - base_rev = partner.first_closeout.year - 1 - - # On calcule le prochain exercice révisable - # Cas d'une révision annuelle - if partner.revision_type == '1y': - partner.revision_next_exercice = base_rev + 1 - - # Cas d'une révision quinquénnale - if partner.revision_type == '5y': - partner.revision_next_exercice = base_rev + 5 - - # Cas d'une révision quinquénnale séquencée (annuelle) - if partner.revision_type == '5ys': - partner.revision_next_exercice = base_rev + 1 - - # Cas d'une révision quinquénnale séquencée (2 et 3) - if partner.revision_type == '5ys23': - # On doit regarder l'écart avec la révision précédente - if len(last_rev) > 1: - # On a une réunion précédente, il faut regarder l'écart entre les deux - ex1 = last_rev[0].revision_result_year - ex2 = last_rev[1].revision_result_year - # le prochain exercie est donc 5 moins la durée de la précédente révision - partner.revision_next_exercice = base_rev + ( - 5 - (ex1 - ex2)) + # On commence par regarder si l'on a des révisions + last_rev = partner.revision_ids.sorted( + key=lambda r: r.revision_result_year, reverse=True) + + # On calcule l'année de référence du calcul + if len(last_rev) > 0: + # si On a déjà révisé un exercice il devient la base du calcul + base_rev = last_rev[0].revision_result_year else: - # Pas de révision précédente - partner.revision_next_exercice = base_rev + 2 + base_rev = partner.first_closeout.year - 1 + + # On calcule le prochain exercice révisable + # Cas d'une révision annuelle + if partner.revision_type == '1y': + partner.revision_next_exercice = base_rev + 1 + # Cas d'une révision quinquénnale + elif partner.revision_type == '5y': + partner.revision_next_exercice = base_rev + 5 + # Cas d'une révision quinquénnale séquencée (annuelle) + elif partner.revision_type == '5ys': + partner.revision_next_exercice = base_rev + 1 + # Cas d'une révision quinquénnale séquencée (2 et 3) + elif partner.revision_type == '5ys23': + # On doit regarder l'écart avec la révision précédente + if len(last_rev) > 1: + # On a une réunion précédente, il faut regarder l'écart entre les deux + ex1 = last_rev[0].revision_result_year + ex2 = last_rev[1].revision_result_year + # le prochain exercie est donc 5 moins la durée de la précédente révision + partner.revision_next_exercice = base_rev + ( + 5 - (ex1 - ex2)) + else: + # Pas de révision précédente + partner.revision_next_exercice = base_rev + 2 def _inverse_revision_next_exercice(self): for expense in self: