From d046fd529842dbccce031b8e550a05eea16e0613 Mon Sep 17 00:00:00 2001 From: guanhuan Date: Wed, 25 Jun 2025 14:22:27 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=BB=E9=99=A4=E9=94=80=E5=94=AE=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E4=BE=9B=E8=B4=A7=E6=96=B9=E5=BC=8F=E7=A1=AE=E8=AE=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_demand_plan/__manifest__.py | 1 + sf_demand_plan/models/sale_order.py | 36 +++++++++++++++++++++++ sf_demand_plan/models/sf_demand_plan.py | 6 ++++ sf_demand_plan/views/sale_order_views.xml | 29 ++++++++++++++++++ 4 files changed, 72 insertions(+) create mode 100644 sf_demand_plan/views/sale_order_views.xml diff --git a/sf_demand_plan/__manifest__.py b/sf_demand_plan/__manifest__.py index c7df6fab..663dba80 100644 --- a/sf_demand_plan/__manifest__.py +++ b/sf_demand_plan/__manifest__.py @@ -15,6 +15,7 @@ 'security/ir.model.access.csv', 'views/demand_plan_info.xml', 'views/demand_plan.xml', + 'views/sale_order_views.xml', 'wizard/sf_demand_plan_print_wizard_view.xml', ], 'demo': [ diff --git a/sf_demand_plan/models/sale_order.py b/sf_demand_plan/models/sale_order.py index c7ece36d..f0bd5570 100644 --- a/sf_demand_plan/models/sale_order.py +++ b/sf_demand_plan/models/sale_order.py @@ -10,6 +10,16 @@ class ReSaleOrder(models.Model): string='与此销售订单相关联的制造订单', groups='mrp.group_mrp_user', store=True) + demand_plan_count = fields.Integer( + "需求计划生成计数", + compute='_compute_demand_plan_count', + ) + + def _compute_demand_plan_count(self): + for line in self: + demand_plan = self.env['sf.production.demand.plan'].sudo().search([('sale_order_id', '=', line.id)]) + line.demand_plan_count = len(demand_plan) + def sale_order_create_line(self, product, item): ret = super(ReSaleOrder, self).sale_order_create_line(product, item) vals = { @@ -30,3 +40,29 @@ class ReSaleOrder(models.Model): } self.env['sf.demand.plan.print.wizard'].sudo().create(wizard_vals) return ret + + def confirm_to_supply_method(self): + self.state = 'sale' + for line in self.order_line: + if line.product_id.auto_machining: + line.supply_method = 'automation' + + def action_view_demand_plan(self): + self.ensure_one() + demand_plan_ids = self.env['sf.production.demand.plan'].sudo().search([('sale_order_id', '=', self.id)]).ids + action = { + 'res_model': 'sf.production.demand.plan', + 'type': 'ir.actions.act_window', + } + if len(demand_plan_ids) == 1: + action.update({ + 'view_mode': 'form', + 'res_id': demand_plan_ids[0], + }) + else: + action.update({ + 'name': _("需求计划"), + 'domain': [('id', 'in', demand_plan_ids)], + 'view_mode': 'tree', + }) + return action diff --git a/sf_demand_plan/models/sf_demand_plan.py b/sf_demand_plan/models/sf_demand_plan.py index 45b60ab5..b5a2eda0 100644 --- a/sf_demand_plan/models/sf_demand_plan.py +++ b/sf_demand_plan/models/sf_demand_plan.py @@ -192,3 +192,9 @@ class SfDemandPlan(models.Model): if not line.sale_order_line_id: line.sale_order_line_id = self.sale_order_line_id return res + + def name_get(self): + result = [] + for plan in self: + result.append((plan.id, plan.sale_order_id.name)) + return result diff --git a/sf_demand_plan/views/sale_order_views.xml b/sf_demand_plan/views/sale_order_views.xml new file mode 100644 index 00000000..01908401 --- /dev/null +++ b/sf_demand_plan/views/sale_order_views.xml @@ -0,0 +1,29 @@ + + + + view.sale.order.form.inherit.plan + + sale.order + + + True + + + + True + + + + + + + +