summaryrefslogtreecommitdiff
path: root/addons/mrp/models/mrp_workcenter.py
diff options
context:
space:
mode:
authorHaresh Shyara <hsh@odoo.com>2016-09-02 14:58:24 +0530
committerJosse Colpaert <jco@odoo.com>2016-09-28 12:45:03 +0200
commitae7cb1483c42e4e1e184b23e9ccb33e7fbb44e50 (patch)
treeb722373384ee716400bf744e9bdf71b7ad9f4fa9 /addons/mrp/models/mrp_workcenter.py
parent3597942721f9d2bc0f9ea0d7d71e7da367e68d66 (diff)
[IMP] mrp: create graph and pivot of duration_expected of workorders related to a workcenter and add stat button with load to come
This replaces the old workcenter load report
Diffstat (limited to 'addons/mrp/models/mrp_workcenter.py')
-rw-r--r--addons/mrp/models/mrp_workcenter.py9
1 files changed, 7 insertions, 2 deletions
diff --git a/addons/mrp/models/mrp_workcenter.py b/addons/mrp/models/mrp_workcenter.py
index 465875cc35b..161c18e6473 100644
--- a/addons/mrp/models/mrp_workcenter.py
+++ b/addons/mrp/models/mrp_workcenter.py
@@ -49,24 +49,29 @@ class MrpWorkcenter(models.Model):
oee = fields.Float(compute='_compute_oee', help='Overall Equipment Effectiveness, based on the last month')
oee_target = fields.Float(string='OEE Target', help="OEE Target in percentage", default=90)
performance = fields.Integer('Performance', compute='_compute_performance', help='Performance over the last month')
+ workcenter_load = fields.Float('Work Center Load', compute='_compute_workorder_count')
- @api.depends('order_ids.workcenter_id', 'order_ids.state', 'order_ids.date_planned_start')
+ @api.depends('order_ids.duration_expected', 'order_ids.workcenter_id', 'order_ids.state', 'order_ids.date_planned_start')
def _compute_workorder_count(self):
MrpWorkorder = self.env['mrp.workorder']
result = {wid: {} for wid in self.ids}
+ result_duration_expected = {wid: 0 for wid in self.ids}
#Count Late Workorder
data = MrpWorkorder.read_group([('workcenter_id', 'in', self.ids), ('state', 'in', ('pending', 'ready')), ('date_planned_start', '<', datetime.datetime.now().strftime('%Y-%m-%d'))], ['workcenter_id'], ['workcenter_id'])
count_data = dict((item['workcenter_id'][0], item['workcenter_id_count']) for item in data)
#Count All, Pending, Ready, Progress Workorder
res = MrpWorkorder.read_group(
[('workcenter_id', 'in', self.ids)],
- ['workcenter_id', 'state'], ['workcenter_id', 'state'],
+ ['workcenter_id', 'state', 'duration_expected'], ['workcenter_id', 'state'],
lazy=False)
for res_group in res:
result[res_group['workcenter_id'][0]][res_group['state']] = res_group['__count']
+ if res_group['state'] in ('pending', 'ready', 'progress'):
+ result_duration_expected[res_group['workcenter_id'][0]] += res_group['duration_expected']
for workcenter in self:
workcenter.workorder_count = sum(count for state, count in result[workcenter.id].items() if state not in ('done', 'cancel'))
workcenter.workorder_pending_count = result[workcenter.id].get('pending', 0)
+ workcenter.workcenter_load = result_duration_expected[workcenter.id]
workcenter.workorder_ready_count = result[workcenter.id].get('ready', 0)
workcenter.workorder_progress_count = result[workcenter.id].get('progress', 0)
workcenter.workorder_late_count = count_data.get(workcenter.id, 0)