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 + + + + + + + +