diff --git a/sf_demand_plan/models/purchase_order.py b/sf_demand_plan/models/purchase_order.py index 9ee48bc0..5bc07313 100644 --- a/sf_demand_plan/models/purchase_order.py +++ b/sf_demand_plan/models/purchase_order.py @@ -8,6 +8,14 @@ class PurchaseOrder(models.Model): demand_plan_line_id = fields.Many2one(comodel_name="sf.production.demand.plan", string="需求计划明细", readonly=True) + def button_confirm(self): + if self.demand_plan_line_id: + self = self.with_context( + demand_plan_line_id=self.demand_plan_line_id.id + ) + res = super(PurchaseOrder, self).button_confirm() + return res + @api.depends('origin', 'demand_plan_line_id') def _compute_purchase_type(self): for purchase in self: @@ -20,3 +28,17 @@ class PurchaseOrder(models.Model): elif purchase.demand_plan_line_id.supply_method == 'purchase': purchase.purchase_type = 'outside' + + @api.model + def create(self, vals): + res = super(PurchaseOrder, self).create(vals) + if not res.demand_plan_line_id: + origin = [origin.replace(' ', '') for origin in res.origin.split(',')] + if self.env.context.get('demand_plan_line_id'): + res.demand_plan_line_id = self.env.context.get('demand_plan_line_id') + elif 'MO' in res.origin: + # 原单据是制造订单 + mp_ids = self.env['mrp.production'].sudo().search([('name', 'in', origin)]) + if mp_ids: + res.demand_plan_line_id = mp_ids[0].demand_plan_line_id.id + return res