From 3e8aa1e4bc0a288cd21a006320c553eb35a223f8 Mon Sep 17 00:00:00 2001 From: blackbelts <74664702+eslamtalaat74@users.noreply.github.com> Date: Tue, 24 Jun 2025 12:42:44 +0300 Subject: [PATCH] cla --- .../exp_hr_appraisal/models/appraisal.py | 74 +++++++++++++------ 1 file changed, 52 insertions(+), 22 deletions(-) diff --git a/odex25_hr/exp_hr_appraisal/models/appraisal.py b/odex25_hr/exp_hr_appraisal/models/appraisal.py index a6c033e41..bde3bf0b3 100644 --- a/odex25_hr/exp_hr_appraisal/models/appraisal.py +++ b/odex25_hr/exp_hr_appraisal/models/appraisal.py @@ -276,17 +276,21 @@ class StandardAppraisalLines(models.Model): store=True ) - # compute = '_compute_priority', - # inverse = '_inverse_priority', - # inverse='_inverse_priority', - # @api.depends('greed', 'great_level','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 + _previous_greed = None + _previous_priority = None + @api.onchange('greed', 'great_level', 'priority') + def _onchange_fields(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 + value = rec.greed / (rec.great_level / 5) if 1 <= value < 2: rec.priority = '1' elif 2 <= value < 3: @@ -298,19 +302,45 @@ class StandardAppraisalLines(models.Model): 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.priority = '0' + elif self._previous_priority != rec.priority: + # priority changed → compute greed rec.greed = int(rec.priority) * (rec.great_level / 5) - print(rec.greed) + + # 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) @api.constrains('greed', 'great_level') def greed_constrains(self):