From 8a103a7555ff6263d5c0b2a869c6eaf7daf3f5f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=83=A1=E5=B0=A7?= Date: Mon, 25 Nov 2024 10:43:34 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BA=BA=E5=B7=A5=E7=BC=96=E7=A8=8B?= =?UTF-8?q?=E4=B8=8D=E8=83=BD=E9=80=89=E6=8B=A9=E8=87=AA=E5=8A=A8=E5=8C=96?= =?UTF-8?q?=E4=BA=A7=E7=BA=BF=E5=8A=A0=E5=B7=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jikimo_sale_multiple_supply_methods/models/sale_order.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/jikimo_sale_multiple_supply_methods/models/sale_order.py b/jikimo_sale_multiple_supply_methods/models/sale_order.py index a1920a50..b7e25835 100644 --- a/jikimo_sale_multiple_supply_methods/models/sale_order.py +++ b/jikimo_sale_multiple_supply_methods/models/sale_order.py @@ -155,3 +155,10 @@ class SaleOrderLine(models.Model): ('purchase', "外购"), ('outsourcing', "委外加工"), ], string='供货方式') + + def write(self, vals): + if 'supply_method' in vals: + for line in self: + if vals['supply_method'] == 'automation' and line.manual_quotation: + raise UserError('当前(%s)产品为人工编程产品,不能选择自动化产线加工' % ','.join(line.mapped('product_id.name'))) + return super(SaleOrderLine, self).write(vals) From 84ebce078613fcb26cbe3e793f6b73b6da531e00 Mon Sep 17 00:00:00 2001 From: liaodanlong Date: Mon, 25 Nov 2024 11:40:01 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=99=BA=E8=83=BD=E5=B7=A5=E5=8E=82?= =?UTF-8?q?=E7=A9=BA=E6=A8=A1=E5=9E=8B=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jikimo_sale_multiple_supply_methods/controllers/main.py | 5 ++++- sf_bf_connect/controllers/controllers.py | 5 ++++- sf_manufacturing/models/product_template.py | 6 ++++-- sf_sale/models/sale_order.py | 2 +- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/jikimo_sale_multiple_supply_methods/controllers/main.py b/jikimo_sale_multiple_supply_methods/controllers/main.py index b5a25749..cb8dd44a 100644 --- a/jikimo_sale_multiple_supply_methods/controllers/main.py +++ b/jikimo_sale_multiple_supply_methods/controllers/main.py @@ -1,5 +1,7 @@ import logging import json +import traceback + from odoo import http from odoo.http import request from odoo.addons.sf_bf_connect.controllers.controllers import Sf_Bf_Connect @@ -43,7 +45,8 @@ class JikimoSaleRoutePicking(Sf_Bf_Connect): i += 1 res['factory_order_no'] = order_id.name except Exception as e: - _logger.info('get_bfm_process_order_list error:%s' % e) + traceback_error = traceback.format_exc() + logging.error('get_bfm_process_order_list error: %s' % traceback_error) res['status'] = -1 res['message'] = '工厂创建销售订单和产品失败,请联系管理员' request.cr.rollback() diff --git a/sf_bf_connect/controllers/controllers.py b/sf_bf_connect/controllers/controllers.py index 90c7e6c5..70a8d68f 100644 --- a/sf_bf_connect/controllers/controllers.py +++ b/sf_bf_connect/controllers/controllers.py @@ -1,6 +1,8 @@ # -*- coding: utf-8 -*- import json import logging +import traceback + from odoo import http from odoo.http import request @@ -123,7 +125,8 @@ class Sf_Bf_Connect(http.Controller): res['factory_order_no'] = order_id.name return json.JSONEncoder().encode(res) except Exception as e: - logging.info('get_bfm_process_order_list error:%s' % e) + traceback_error = traceback.format_exc() + logging.error('get_bfm_process_order_list error: %s' % traceback_error) res['status'] = -1 res['message'] = '工厂创建销售订单和产品失败,请联系管理员' request.cr.rollback() diff --git a/sf_manufacturing/models/product_template.py b/sf_manufacturing/models/product_template.py index b01cc465..f5f685aa 100644 --- a/sf_manufacturing/models/product_template.py +++ b/sf_manufacturing/models/product_template.py @@ -874,8 +874,8 @@ class ResProductMo(models.Model): 'height': item['model_height'], 'volume': item['model_long'] * item['model_width'] * item['model_height'], 'model_file': '' if not item['model_file'] else base64.b64decode(item['model_file']), - 'model_name': attachment.name, - 'upload_model_file': [(6, 0, [attachment.id])], + 'model_name': attachment.name if attachment else None, + 'upload_model_file': [(6, 0, [attachment.id])] if attachment else None, 'list_price': item['price'], 'materials_id': self.env['sf.production.materials'].search( [('materials_no', '=', item['texture_code'])]).id, @@ -924,6 +924,8 @@ class ResProductMo(models.Model): return [(6, 0, process_parameters_ids)] def attachment_create(self, name, data): + if not data: + return None attachment = self.env['ir.attachment'].create({ 'datas': base64.b64decode(data), 'type': 'binary', diff --git a/sf_sale/models/sale_order.py b/sf_sale/models/sale_order.py index 5cc826eb..929e30cc 100644 --- a/sf_sale/models/sale_order.py +++ b/sf_sale/models/sale_order.py @@ -131,7 +131,7 @@ class ReSaleOrder(models.Model): product.materials_id.name), 'price_unit': product.list_price, 'product_uom_qty': item['number'], - 'model_glb_file': base64.b64decode(item['model_file']), + 'model_glb_file': base64.b64decode(item['model_file']) if item['model_file'] else None, 'remark': item.get('remark'), 'embryo_redundancy_id': item.get('embryo_redundancy_id'), 'manual_quotation': item.get('manual_quotation')