diff --git a/sf_manufacturing/models/purchase_order.py b/sf_manufacturing/models/purchase_order.py index 607f64d1..3b1a54f1 100644 --- a/sf_manufacturing/models/purchase_order.py +++ b/sf_manufacturing/models/purchase_order.py @@ -10,6 +10,39 @@ from odoo.tools import OrderedSet # _get_surface_technics_purchase_ids class PurchaseOrder(models.Model): _inherit = 'purchase.order' + production_count = fields.Integer( + "关联制造订单", + compute='_compute_workorder_count', + ) + + def action_view_production(self): + origins = [order.name for order in self.picking_ids] + production_id = self.env['mrp.production'].search([('origin', 'in', origins)]) + if not production_id: + return + action = { + 'res_model': 'mrp.production', + 'type': 'ir.actions.act_window', + } + if len(production_id) == 1: + action.update({ + 'view_mode': 'form', + 'res_id': production_id.id, + }) + else: + action.update({ + 'name': _("制造订单列表"), + 'domain': [('id', 'in', production_id.ids)], + 'view_mode': 'tree,form', + }) + return action + + + def _compute_workorder_count(self): + for purchase in self: + origins = [order.name for order in purchase.picking_ids] + production_id = self.env['mrp.production'].search([('origin', 'in', origins)]) + purchase.production_count = len(production_id) def button_confirm(self): super().button_confirm() workorders = self.env['mrp.workorder'].search([('purchase_id', '=', self.id)]) diff --git a/sf_manufacturing/views/purchase_order_view.xml b/sf_manufacturing/views/purchase_order_view.xml index af1efcfc..83562f2c 100644 --- a/sf_manufacturing/views/purchase_order_view.xml +++ b/sf_manufacturing/views/purchase_order_view.xml @@ -10,6 +10,18 @@ + + +