Skip to content
Extraits de code Groupes Projets

Amélioration des champs révision

4 files
+ 90
13
Comparer les modifications
  • Côte à côte
  • En ligne

Fichiers

+ 67
2
@@ -297,13 +297,27 @@ class ScopPartner(models.Model):
revision_type = fields.Selection(
[('1y', "Annuelle"),
('5y', 'Quinquennale'),
('5ys', "Quinquennale séquencée")],
('5ys', "Quinquennale séquencée (annuel)"),
('5ys23', "Quinquennale séquencée (2 ans et 3 ans)")],
string='Périodicité de la révision')
revision_next_date = fields.Date("Prochain exercice révisable")
revision_next_date = fields.Date("Prochain exercice révisable (old)")
revision_format_id = fields.Many2one(
'scop.revision.format',
string='Format de révision',
on_delete='restrict')
revision_tarif = fields.Integer("Tarif de vente",
related='revision_format_id.tarif',
store=False)
revision_next_exercice = fields.Integer("Prochain exercice révisable",
compute='_compute_revision_next_exercice',
inverse='_inverse_revision_next_exercice',
store=True)
revision_next_year = fields.Integer("Année prochaine révision",
compute='_compute_revision_next_year',
inverse='_inverse_revision_next_year',
store=True)
revision_ids = fields.One2many(
comodel_name='scop.revision',
@@ -851,6 +865,57 @@ class ScopPartner(models.Model):
else:
partner.is_administrative = False
@api.depends('revision_next_exercice')
def _compute_revision_next_year(self):
for partner in self:
partner.revision_next_year = partner.revision_next_exercice + 1
def _inverse_revision_next_year(self):
for expense in self:
return
@api.depends('revision_type', 'revision_ids', 'revision_ids.revision_result_year', 'first_closeout')
@api.multi
def _compute_revision_next_exercice(self):
for partner in self:
# Si aucune périodicité de défini, on n'insiste pas
if (partner.revision_type == False):
return
# 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)
if (len(last_rev) > 0):
# On a déjà révisé un exercice
# Cas d'une révision annuelle
if (partner.revision_type == '1y'):
partner.revision_next_exercice = last_rev[0].revision_result_year + 1
# Cas d'une révision quinquénnale
if (partner.revision_type == '5y'):
partner.revision_next_exercice = last_rev[0].revision_result_year + 5
# Cas d'une révision quinquénnale séquencée (annuelle)
if (partner.revision_type == '5ys'):
partner.revision_next_exercice = last_rev[0].revision_result_year + 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 = last_rev[0].revision_result_year + (5 - (ex1-ex2))
else:
# Pas de révision précédente
partner.revision_next_exercice = last_rev[0].revision_result_year + 2
else:
# On n'a pas révisé d'exercice alors il faut révise le 1er exercice
partner.revision_next_exercice = partner.first_closeout.year
def _inverse_revision_next_exercice(self):
for expense in self:
return
# ------------------------------------------------------
# Button Action
# ------------------------------------------------------
Chargement en cours