From 19c4b99baec22f744b0b09db4943048eefda3372 Mon Sep 17 00:00:00 2001 From: "jinling.yang" Date: Thu, 25 Jul 2024 17:21:44 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9B=E5=BB=BA=E5=88=B6=E9=80=A0=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E5=90=8E=E7=94=9F=E6=88=90=E8=AF=A2=E4=BB=B7=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_bf_connect/models/process_status.py | 30 ++++++-------------------- sf_manufacturing/models/stock.py | 18 ++++++++++------ 2 files changed, 18 insertions(+), 30 deletions(-) diff --git a/sf_bf_connect/models/process_status.py b/sf_bf_connect/models/process_status.py index b2b8cacd..0bc99bdc 100644 --- a/sf_bf_connect/models/process_status.py +++ b/sf_bf_connect/models/process_status.py @@ -18,32 +18,14 @@ class StatusChange(models.Model): server_product_none = [] for order in self.order_line: for item in order.product_template_id.model_process_parameters_ids: - server_product = self.env['product.template'].search( - [('server_product_process_parameters_id', '=', item.id), - ('detailed_type', '=', 'service')]) - if not server_product: - server_product_none.append(item.name) + if item.gain_way == '外协': + server_product = self.env['product.template'].search( + [('server_product_process_parameters_id', '=', item.id), + ('detailed_type', '=', 'service')]) + if not server_product: + server_product_none.append(item.name) if server_product_none: raise UserError(_("请先至产品中创建表面工艺参数为%s的服务产品", ", ".join(server_product_none))) - - # if not server_product_none: - # for st_item in order.product_template_id.model_process_parameters_ids: - # server_product = self.env['product.template'].search( - # [('server_product_process_parameters_id', '=', st_item.surface_technics_parameters_id.id), - # ('detailed_type', '=', 'service')]) - # if server_product: - # order_line_ids.append((0, 0, { - # 'product_id': server_product.product_variant_id.id, - # 'product_qty': 1, - # 'product_uom': server_product.uom_id.id - # })) - # self.env['purchase.order'].sudo().create({ - # 'partner_id': server_product.seller_ids.partner_id.id, - # 'origin': record.production_id.name, - # 'state': 'draft', - # 'order_line': order_line_ids, - # }) - # 使用super()来调用原始方法(在本例中为'sale.order'模型的'action_confirm'方法) res = super(StatusChange, self).action_confirm() diff --git a/sf_manufacturing/models/stock.py b/sf_manufacturing/models/stock.py index 67829ef2..76036a54 100644 --- a/sf_manufacturing/models/stock.py +++ b/sf_manufacturing/models/stock.py @@ -272,21 +272,27 @@ class StockRule(models.Model): product_id_to_production_names[product_id] = [production.name for production in all_production] for production_item in productions: if production_item.product_id.id in product_id_to_production_names: - for st_item in production_item.product_id.model_process_parameters_ids: - purchase_order = self.env['purchase.order'].search([('state','=','draft'),('origin','ilike',production_item.name)]) - for po in purchase_order.order_line: - for pp in po.product_id.model_process_parameters_ids: + purchase_order = self.env['purchase.order'].search( + [('state', '=', 'draft'), ('origin', 'ilike', production_item.name)]) + # for po in purchase_order.order_line: + for pp in production_item.product_id.model_process_parameters_ids: + if pp.gain_way == '外协': + purchase_order_line = self.env['purchase.order.line'].search( + [('order_id', '=', po.order_id)]) + if not purchase_order_line: server_product = self.env['product.template'].search( [('server_product_process_parameters_id', '=', pp.id), ('detailed_type', '=', 'service')]) + production_process = product_id_to_production_names.get( + production_item.product_id.id) order_line_ids.append((0, 0, { 'product_id': server_product.product_variant_id.id, - 'product_qty': "同一个产品的制造订单数量", + 'product_qty': len(production_process), 'product_uom': server_product.uom_id.id })) self.env['purchase.order'].sudo().create({ 'partner_id': server_product.seller_ids.partner_id.id, - 'origin': "同一个产品的制造订单名称", + 'origin': ','.join(production_process), 'state': 'draft', 'order_line': order_line_ids, })