From 2deaffb4eb87a0543aa3190d55011e371ed2d02a Mon Sep 17 00:00:00 2001 From: "jinling.yang" Date: Thu, 25 Jul 2024 14:07:36 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=A1=A8=E9=9D=A2=E5=B7=A5?= =?UTF-8?q?=E8=89=BA=E4=BA=A7=E5=93=81=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_bf_connect/models/process_status.py | 11 ++++++----- sf_manufacturing/models/stock.py | 19 +++++++++++++++++++ 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/sf_bf_connect/models/process_status.py b/sf_bf_connect/models/process_status.py index 5ef558f0..b2b8cacd 100644 --- a/sf_bf_connect/models/process_status.py +++ b/sf_bf_connect/models/process_status.py @@ -1,7 +1,8 @@ from datetime import datetime import logging import requests -from odoo import fields, models +from odoo.exceptions import UserError +from odoo import fields, models, _ _logger = logging.getLogger(__name__) @@ -15,15 +16,15 @@ class StatusChange(models.Model): # 在原有方法执行前记录日志和执行其他操作 logging.info('函数已经执行=============') server_product_none = [] - for order in self.order_lines: + 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.surface_technics_parameters_id.id), + [('server_product_process_parameters_id', '=', item.id), ('detailed_type', '=', 'service')]) if not server_product: - server_product_none.append(item.surface_technics_parameters_id.name) + server_product_none.append(item.name) if server_product_none: - raise UserError(_("请先至产品中创建表面工艺为%s的服务产品", ", ".join(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: diff --git a/sf_manufacturing/models/stock.py b/sf_manufacturing/models/stock.py index 4bf7cc72..67829ef2 100644 --- a/sf_manufacturing/models/stock.py +++ b/sf_manufacturing/models/stock.py @@ -272,6 +272,25 @@ 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: + server_product = self.env['product.template'].search( + [('server_product_process_parameters_id', '=', pp.id), + ('detailed_type', '=', 'service')]) + order_line_ids.append((0, 0, { + 'product_id': server_product.product_variant_id.id, + 'product_qty': "同一个产品的制造订单数量", + 'product_uom': server_product.uom_id.id + })) + self.env['purchase.order'].sudo().create({ + 'partner_id': server_product.seller_ids.partner_id.id, + 'origin': "同一个产品的制造订单名称", + 'state': 'draft', + 'order_line': order_line_ids, + }) + # # 同一个产品多个制造订单对应一个编程单和模型库 # # 只调用一次fetchCNC,并将所有生产订单的名称作为字符串传递 if not production_item.programming_no: