From 90df41f0da787d7f4c98543c7fdb9f2e2db8b71c Mon Sep 17 00:00:00 2001 From: Jigar Patel Date: Thu, 18 Jul 2019 10:10:29 +0000 Subject: [PATCH] [IMP] mrp: improve the usability of workorder Gantt view - display WO in red which has a late planned start date. - hide the WO which are in done or cancel state. - show progress of WO. task-1939533 --- addons/mrp/models/mrp_workorder.py | 10 ++++++++++ addons/mrp/static/src/scss/mrp_gantt.scss | 19 +++++++++++++++++++ addons/mrp/views/mrp_templates.xml | 1 + addons/mrp/views/mrp_workorder_views.xml | 22 +++++++++++++++++----- 4 files changed, 47 insertions(+), 5 deletions(-) create mode 100644 addons/mrp/static/src/scss/mrp_gantt.scss diff --git a/addons/mrp/models/mrp_workorder.py b/addons/mrp/models/mrp_workorder.py index 75f18a7c4dc..d904616a9b3 100644 --- a/addons/mrp/models/mrp_workorder.py +++ b/addons/mrp/models/mrp_workorder.py @@ -83,6 +83,7 @@ class MrpWorkorder(models.Model): duration_percent = fields.Integer( 'Duration Deviation (%)', compute='_compute_duration', group_operator="avg", readonly=True, store=True) + progress = fields.Float('Progress Done (%)', digits=(16, 2), compute='_compute_progress') operation_id = fields.Many2one( 'mrp.routing.workcenter', 'Operation') # Should be used differently as BoM can change in the meantime @@ -232,6 +233,15 @@ class MrpWorkorder(models.Model): else: order.duration_percent = 0 + def _compute_progress(self): + for order in self: + if order.state == 'done': + order.progress = 100 + elif order.duration_expected: + order.progress = order.duration * 100 / order.duration_expected + else: + order.progress = 0 + def _compute_working_users(self): """ Checks whether the current user is working, all the users currently working and the last user that worked. """ for order in self: diff --git a/addons/mrp/static/src/scss/mrp_gantt.scss b/addons/mrp/static/src/scss/mrp_gantt.scss new file mode 100644 index 00000000000..5d6ed467b73 --- /dev/null +++ b/addons/mrp/static/src/scss/mrp_gantt.scss @@ -0,0 +1,19 @@ +@mixin gantt-decoration-color($color) { + background-image: linear-gradient($color, $color); + background-color: lighten($color, 10%); + &:before { + content: none; + } +} + +.o_mrp_workorder_gantt .o_gantt_view .o_gantt_row_container .o_gantt_row .o_gantt_cell .o_gantt_pill_wrapper { + div.o_gantt_pill.decoration-success { + @include gantt-decoration-color($success); + } + div.o_gantt_pill.decoration-warning { + @include gantt-decoration-color(gray('500')); + } + div.o_gantt_pill.decoration-danger { + @include gantt-decoration-color($danger); + } +} diff --git a/addons/mrp/views/mrp_templates.xml b/addons/mrp/views/mrp_templates.xml index bdf3c619b4d..427a0e09b26 100644 --- a/addons/mrp/views/mrp_templates.xml +++ b/addons/mrp/views/mrp_templates.xml @@ -12,6 +12,7 @@ + diff --git a/addons/mrp/views/mrp_workorder_views.xml b/addons/mrp/views/mrp_workorder_views.xml index f160ec9cae4..a87fabbcd13 100644 --- a/addons/mrp/views/mrp_workorder_views.xml +++ b/addons/mrp/views/mrp_workorder_views.xml @@ -335,7 +335,13 @@ mrp.production.work.order.gantt.production mrp.workorder - + + + @@ -344,7 +350,13 @@ mrp.workorder.view.gantt mrp.workorder - + + + @@ -409,7 +421,7 @@ gantt,tree,form,calendar,pivot,graph - {'search_default_work_center': True} + {'search_default_work_center': True, 'search_default_ready': True, 'search_default_progress': True, 'search_default_pending': True}

Start a new work order @@ -429,7 +441,7 @@ gantt,tree,form,calendar,pivot,graph - {'search_default_production': True} + {'search_default_production': True, 'search_default_ready': True, 'search_default_progress': True, 'search_default_pending': True}

Start a new work order @@ -447,7 +459,7 @@ Work Orders ir.actions.act_window mrp.workorder - tree,kanban,form,calendar,pivot,graph + tree,kanban,form,calendar,pivot,graph,gantt {'search_default_ready': True, 'search_default_progress': True, 'search_default_pending': True}