This commit is contained in:
blackbelts 2025-06-24 12:58:21 +03:00
parent 3e8aa1e4bc
commit 62750864b3
1 changed files with 14 additions and 54 deletions

View File

@ -264,32 +264,25 @@ class StandardAppraisalLines(models.Model):
question = fields.Char()
great_level = fields.Float()
priority = fields.Selection(
[('0', '0'),
[
('0', '0'),
('1', '1'),
('2', '2'),
('3', '3'),
('4', '4'),
('5', '5'),
# ('6', '6'),
],
string='Priority',
store=True
compute='_compute_priority',
inverse='_inverse_priority',
store=True,
)
_previous_greed = None
_previous_priority = None
@api.onchange('greed', 'great_level', 'priority')
def _onchange_fields(self):
@api.depends('greed', 'great_level')
def _compute_priority(self):
for rec in self:
# Skip if no level
if not rec.great_level:
rec.priority = '0'
return
# Check who changed
if self._previous_greed != rec.greed:
# greed changed → compute priority
rec.priority = '0'
if rec.great_level:
value = rec.greed / (rec.great_level / 5)
if 1 <= value < 2:
rec.priority = '1'
@ -302,45 +295,12 @@ class StandardAppraisalLines(models.Model):
elif value >= 5:
rec.priority = '5'
else:
rec.priority = '0'
elif self._previous_priority != rec.priority:
# priority changed → compute greed
rec.greed = int(rec.priority) * (rec.great_level / 5)
rec.priority = '0' # fallback
# Update previous values
rec._previous_greed = rec.greed
rec._previous_priority = rec.priority
# @api.onchange('greed', 'great_level')
# def _compute_priority(self):
# for rec in self:
# if rec.great_level:
# value = rec.greed / (rec.great_level / 5)
# # value = 7/ (10 / 5) = 3.5
#
# if 1 <= value < 2:
# rec.priority = '1'
# elif 2 <= value < 3:
# rec.priority = '2'
# elif 3 <= value < 4:
# rec.priority = '3'
# elif 4 <= value < 5:
# rec.priority = '4'
# elif value >= 5:
# rec.priority = '5'
# else:
# rec.priority = '0' # fallback
# else:
# rec.priority = '0'
# # rec.greed +=1
#
# print(rec.priority)
#
# @api.onchange('priority')
# def _inverse_priority(self):
# for rec in self:
# if rec.great_level and rec.priority:
# rec.greed = int(rec.priority) * (rec.great_level / 5)
# print(rec.greed)
def _inverse_priority(self):
for rec in self:
if rec.great_level and rec.priority:
rec.greed = int(rec.priority) * (rec.great_level / 5)
@api.constrains('greed', 'great_level')
def greed_constrains(self):