diff options
| -rw-r--r-- | addons/mrp/models/mrp_workcenter.py | 9 | ||||
| -rw-r--r-- | addons/mrp/models/mrp_workorder.py | 1 | ||||
| -rw-r--r-- | addons/mrp/views/mrp_workcenter_views.xml | 6 | ||||
| -rw-r--r-- | addons/mrp/views/mrp_workorder_views.xml | 39 |
4 files changed, 53 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) diff --git a/addons/mrp/models/mrp_workorder.py b/addons/mrp/models/mrp_workorder.py index ad21f3309c1..61a4ccbf21e 100644 --- a/addons/mrp/models/mrp_workorder.py +++ b/addons/mrp/models/mrp_workorder.py @@ -121,6 +121,7 @@ class MrpWorkorder(models.Model): next_work_order_id = fields.Many2one('mrp.workorder', "Next Work Order") scrap_ids = fields.One2many('stock.scrap', 'workorder_id') scrap_count = fields.Integer(compute='_compute_scrap_move_count', string='Scrap Move') + production_date = fields.Datetime('Production Date', related='production_id.date_planned_start', store=True) color = fields.Integer('Color', compute='_compute_color') capacity = fields.Float( 'Capacity', default=1.0, diff --git a/addons/mrp/views/mrp_workcenter_views.xml b/addons/mrp/views/mrp_workcenter_views.xml index 3947ea11dde..a73a03fbdce 100644 --- a/addons/mrp/views/mrp_workcenter_views.xml +++ b/addons/mrp/views/mrp_workcenter_views.xml @@ -271,6 +271,12 @@ <span class="o_stat_text">Lost</span> </div> </button> + <button name="%(action_mrp_workcenter_load_report_graph)d" type="action" class="oe_stat_button" icon="fa-bar-chart" context="{'search_default_workcenter_id': active_id}"> + <div class="o_form_field o_stat_info"> + <span class="o_stat_value"><field name="workcenter_load" widget="statinfo" nolabel="1"/> minute(s)</span> + <span class="o_stat_text">Work Center Load</span> + </div> + </button> <button name="%(mrp_workorder_report)d" type="action" class="oe_stat_button" icon="fa-bar-chart" context="{'search_default_workcenter_id': active_id, 'search_default_thisyear': True}"> <div class="o_form_field o_stat_info"> <span class="o_stat_value"><field name="performance" widget="statinfo" nolabel="1"/>%</span> diff --git a/addons/mrp/views/mrp_workorder_views.xml b/addons/mrp/views/mrp_workorder_views.xml index cafcc0f6a53..99b6d974baa 100644 --- a/addons/mrp/views/mrp_workorder_views.xml +++ b/addons/mrp/views/mrp_workorder_views.xml @@ -419,4 +419,43 @@ </p> </field> </record> + + <record id="view_workcenter_load_pivot" model="ir.ui.view"> + <field name="name">report.workcenter.load.pivot</field> + <field name="model">mrp.workorder</field> + <field name="arch" type="xml"> + <pivot string="Work Center Loads"> + <field name="duration_expected" type="measure"/> + <field name="workcenter_id" type="row"/> + <field name="production_date" type="row" interval="day"/> + </pivot> + </field> + </record> + + <record id="view_work_center_load_graph" model="ir.ui.view"> + <field name="name">report.workcenter.load.graph</field> + <field name="model">mrp.workorder</field> + <field name="arch" type="xml"> + <graph string="Work Center load" type="bar"> + <field name="production_date" interval="day"/> + <field name="workcenter_id"/> + <field name="duration_expected" type="measure"/> + </graph> + </field> + </record> + + <record id="action_mrp_workcenter_load_report_graph" model="ir.actions.act_window"> + <field name="name">Work Center Loads</field> + <field name="type">ir.actions.act_window</field> + <field name="res_model">mrp.workorder</field> + <field name="view_type">form</field> + <field name="view_mode">pivot,graph</field> + <field name="view_id" ref="view_workcenter_load_pivot"/> + </record> + + <record id="action_mrp_workcenter_load_report_pivot" model="ir.actions.act_window.view"> + <field name="view_mode">graph</field> + <field name="view_id" ref="view_work_center_load_graph"/> + <field name="act_window_id" ref="action_mrp_workcenter_load_report_graph"/> + </record> </odoo>
\ No newline at end of file |
