diff --git a/sf_sale/models/sale_order.py b/sf_sale/models/sale_order.py index e063b742..d87a0a93 100644 --- a/sf_sale/models/sale_order.py +++ b/sf_sale/models/sale_order.py @@ -196,8 +196,7 @@ class ReSaleOrder(models.Model): for order in self: order.purchase_order_count = len(order._get_purchase_orders().filtered( lambda po: po.purchase_type not in ['outsourcing'])) - order.consignment_purchase_order_count = len(order._get_purchase_orders().filtered( - lambda po: po.purchase_type in ['outsourcing'])) + order.consignment_purchase_order_count = len(self._get_sale_to_purchase('outsourcing')) def action_view_purchase_orders(self): """ @@ -228,8 +227,7 @@ class ReSaleOrder(models.Model): 委外加工 """ self.ensure_one() - outsourcing_purchase_order_ids = self._get_purchase_orders().filtered( - lambda po: po.purchase_type in ['outsourcing']).ids + outsourcing_purchase_order_ids = self._get_sale_to_purchase('outsourcing') action = { 'res_model': 'purchase.order', 'type': 'ir.actions.act_window', @@ -247,6 +245,14 @@ class ReSaleOrder(models.Model): }) return action + def _get_sale_to_purchase(self, purchase_type): + """查询满足条件的采购订单""" + purchase_order_ids = self._get_purchase_orders().filtered( + lambda po: po.purchase_type == purchase_type).ids + order_ids = self.env['purchase.order'].sudo().search( + [('origin', '=', self.name), ('purchase_type', '=', purchase_type)]).ids + return list(set(purchase_order_ids) | set(order_ids)) + class ResaleOrderLine(models.Model): _inherit = 'sale.order.line'