Commit 700ce0b6 by Yvon

implement core function to target points = total makeups count (todo + to come)

parent 693158ef
......@@ -2,12 +2,37 @@
from openerp import _, api, models, fields
import logging
import datetime
_logger = logging.getLogger(__name__)
class ShiftCounterEvent(models.Model):
_inherit = 'shift.counter.event'
def _alter_point_event_depending_on_makeups_total_count(self, vals):
try:
if vals['point_qty'] > 0:
res_partner = self.env['res.partner'].search([('id', '=', vals['partner_id'])])
if res_partner:
p = res_partner[0]
if p.final_standard_point == -2 and p.shift_type != "ftop":
cond = [
['name', '=', p["name"]],
['shift_type', '=', 'standard'],
['is_makeup', '=', True],
['date_begin', '>=', datetime.datetime.now().isoformat()]
]
fields = ['id']
res_shift_reg = self.env['shift.registration'].search_read(cond, fields)
points_after_required_change = p.final_standard_point + vals['point_qty']
makeups_total_count = p['makeups_to_do'] + len(res_shift_reg)
if points_after_required_change + makeups_total_count > 0:
points_target = - makeups_total_count
vals['point_qty'] = points_target - p.final_standard_point
except Exception as e:
# don't block process if an error occurs here
_logger.error("Error during _alter_point_event_depending_on_makeups_total_count : %s", str(e))
def _update_partner_target_status(self, vals):
"""actions when points are removed or added"""
......@@ -39,6 +64,7 @@ class ShiftCounterEvent(models.Model):
@api.model
def write(self, vals):
self._alter_point_event_depending_on_makeups_total_count(vals)
res = super(ShiftCounterEvent, self).write(vals)
_logger.info("Vals recues = %s", str(vals))
self._update_partner_target_status(vals)
......@@ -46,6 +72,7 @@ class ShiftCounterEvent(models.Model):
@api.model
def create(self, vals):
self._alter_point_event_depending_on_makeups_total_count(vals)
self._update_partner_target_status(vals)
_logger.info("Vals recues creation = %s", str(vals))
return super(ShiftCounterEvent, self).create(vals)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment