From a909f51e3a2c1dffa82b26830e06049e29d2080d Mon Sep 17 00:00:00 2001 From: Jordi Ballester Alomar Date: Thu, 26 Mar 2020 10:52:38 +0100 Subject: [PATCH] Improving the management of planned orders: * Add menu entry for planned orders * Add button to navigate from planned orders to linked manufacturing orders * Add action to convert planned orders to fixed * When changing the due date in a planned order the release date is recomputed --- mrp_multi_level/__manifest__.py | 1 + mrp_multi_level/models/mrp_planned_order.py | 38 +++++- mrp_multi_level/readme/HISTORY.rst | 7 + .../views/mrp_planned_order_views.xml | 125 ++++++++++++++++++ 4 files changed, 170 insertions(+), 1 deletion(-) create mode 100644 mrp_multi_level/views/mrp_planned_order_views.xml diff --git a/mrp_multi_level/__manifest__.py b/mrp_multi_level/__manifest__.py index c77256f4f..bc2fd21c3 100644 --- a/mrp_multi_level/__manifest__.py +++ b/mrp_multi_level/__manifest__.py @@ -23,6 +23,7 @@ "views/stock_location_views.xml", "wizards/mrp_inventory_procure_views.xml", "views/mrp_inventory_views.xml", + "views/mrp_planned_order_views.xml", "wizards/mrp_multi_level_views.xml", "views/mrp_menuitem.xml", "data/mrp_multi_level_cron.xml", diff --git a/mrp_multi_level/models/mrp_planned_order.py b/mrp_multi_level/models/mrp_planned_order.py index 2307d409e..a8b8bde8b 100644 --- a/mrp_multi_level/models/mrp_planned_order.py +++ b/mrp_multi_level/models/mrp_planned_order.py @@ -1,8 +1,9 @@ # Copyright 2019 ForgeFlow S.L. (https://www.forgeflow.com) # - Lois Rilo Antelo # License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). +from datetime import timedelta -from odoo import fields, models +from odoo import api, fields, models class MrpPlannedOrder(models.Model): @@ -70,3 +71,38 @@ class MrpPlannedOrder(models.Model): comodel_name="mrp.inventory", ondelete="set null", ) + mrp_production_ids = fields.One2many( + "mrp.production", "planned_order_id", string="Manufacturing Orders" + ) + mo_count = fields.Integer(compute="_compute_mrp_production_count") + + def _compute_mrp_production_count(self): + for rec in self: + rec.mo_count = len(rec.mrp_production_ids) + + @api.onchange("due_date") + def _onchange_due_date(self): + if self.due_date: + if self.product_mrp_area_id.mrp_lead_time: + calendar = self.mrp_area_id.calendar_id + if calendar: + dt = fields.Datetime.from_string(self.due_date) + res = calendar.plan_days( + -1 * (self.product_mrp_area_id.mrp_lead_time + 1), dt + ) + self.order_release_date = res.date() + else: + self.order_release_date = fields.Date.from_string( + self.due_date + ) - timedelta(days=self.product_mrp_area_id.mrp_lead_time) + + def action_toggle_fixed(self): + for rec in self: + rec.fixed = not rec.fixed + + def action_open_linked_mrp_production(self): + action = self.env.ref("mrp.mrp_production_action") + result = action.read()[0] + result["context"] = {} + result["domain"] = "[('id','in',%s)]" % self.mrp_production_ids.ids + return result diff --git a/mrp_multi_level/readme/HISTORY.rst b/mrp_multi_level/readme/HISTORY.rst index d0ed96ffa..31f8c02f2 100644 --- a/mrp_multi_level/readme/HISTORY.rst +++ b/mrp_multi_level/readme/HISTORY.rst @@ -1,3 +1,10 @@ +13.0.1.4.0 (2020-03-26) +~~~~~~~~~~~~~~~~~~~~~~~ + * Add menu entry for planned orders + * Add button to navigate from planned orders to linked manufacturing orders + * Add action to convert planned orders to fixed + * When changing the due date in a planned order the release date is recomputed + 13.0.1.3.0 (2020-03-02) ~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/mrp_multi_level/views/mrp_planned_order_views.xml b/mrp_multi_level/views/mrp_planned_order_views.xml new file mode 100644 index 000000000..62e265b11 --- /dev/null +++ b/mrp_multi_level/views/mrp_planned_order_views.xml @@ -0,0 +1,125 @@ + + + + + mrp.planned.order.tree + mrp.planned.order + + + + + + + + + + + + + + + mrp.planned.order.form + mrp.planned.order + +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + +
+
+
+
+ + mrp.planned.order.pivot + mrp.planned.order + + + + + + + + + + + mrp.planned.order.search + mrp.planned.order + + + + + + + + + + + + + + + Planned Orders + mrp.planned.order + ir.actions.act_window + tree,form,pivot + {'search_default_fixed': 1} + + + + Toggle Fixed + + + code + records.action_toggle_fixed() + + + Procure + mrp.inventory.procure + form + new + + +