From ff12a8640656b6382fef659b586087a87bba5a9e Mon Sep 17 00:00:00 2001 From: "jinling.yang" Date: Wed, 22 May 2024 17:35:57 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E4=BC=98=E5=8C=96cnc=E5=B7=A5=E5=8D=95?= =?UTF-8?q?=E8=BF=94=E5=B7=A5=EF=BC=9A=E5=9C=A8=E5=8E=9F=E6=9C=89=E7=9A=84?= =?UTF-8?q?cnc=E5=B7=A5=E5=8D=95=E5=90=8E=E6=96=B0=E5=A2=9E=E8=BF=94?= =?UTF-8?q?=E5=B7=A5=E6=A0=87=E5=BF=97=E7=9A=84cnc=E5=B7=A5=E5=8D=95?= =?UTF-8?q?=EF=BC=8C=E4=B8=94=E5=B7=A5=E5=BA=8F=E7=B4=AF=E5=8A=A0=EF=BC=8C?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E4=B8=BA=E5=B0=B1=E7=BB=AA=EF=BC=8C=E8=A7=A3?= =?UTF-8?q?=E9=99=A4=E8=A3=85=E5=A4=B9=E5=B7=A5=E5=8D=95=E7=9A=84=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E4=B8=BA=E7=AD=89=E5=BE=85=E5=85=B6=E4=BB=96=E5=B7=A5?= =?UTF-8?q?=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_manufacturing/models/mrp_production.py | 30 ++++++++----------- sf_manufacturing/models/mrp_workorder.py | 2 ++ sf_manufacturing/models/product_template.py | 4 +-- sf_manufacturing/views/mrp_workorder_view.xml | 4 +-- sf_mrs_connect/models/ftp_operate.py | 3 ++ sf_sale/models/quick_easy_order.py | 4 +-- sf_sale/models/quick_easy_order_old.py | 4 +-- 7 files changed, 25 insertions(+), 26 deletions(-) diff --git a/sf_manufacturing/models/mrp_production.py b/sf_manufacturing/models/mrp_production.py index fc4ccbeb..4470235c 100644 --- a/sf_manufacturing/models/mrp_production.py +++ b/sf_manufacturing/models/mrp_production.py @@ -406,20 +406,20 @@ class MrpProduction(models.Model): # 工单排序 def _reset_work_order_sequence1(self, k): - sequen = 0 for rec in self: - current_sequence = 10 + cnc_workorder = rec.workorder_ids.filtered(lambda wo: wo.name == "CNC加工") + cnc_back_workorder = rec.workorder_ids.filtered(lambda wo: wo.name == "CNC加工(返工)") for work in rec.workorder_ids: - work.sequence = current_sequence - current_sequence += 10 - if work.name == '后置三元质量检测' and work.processing_panel == k: - sequen = work.sequence - - for work in rec.workorder_ids: - if work.name == '后置三元质量检测(返工)' and work.processing_panel == k: - work.sequence = sequen + 2 - if work.name == 'CNC加工(返工)' and work.processing_panel == k: - work.sequence = sequen + 1 + if work.name == cnc_workorder.name and work.processing_panel == k: + cnc_back_workorder.write({'sequence': work.sequence + 1, 'state': 'ready', 'cnc_ids': work.cnc_ids, + 'cmm_ids': work.cmm_ids}) + print(cnc_back_workorder.sequence) + elif work.routing_type not in ['装夹预调'] and work != cnc_back_workorder: + work.sequence += 1 + print(work.sequence) + if work.routing_type == '解除装夹': + work.write({'state': 'pending'}) + print(work.state) # 在制造订单上新增工单 def _create_workorder1(self, k): @@ -459,13 +459,7 @@ class MrpProduction(models.Model): order='sequence asc' ) i += 1 - for route in routingworkcenter: - - # if route.routing_type == '后置三元质量检测': - # workorders_values.append( - # self.env['mrp.workorder'].json_workorder_str1(k, production, route) - # ) if route.routing_type == 'CNC加工': workorders_values.append( self.env['mrp.workorder'].json_workorder_str1(k, production, route)) diff --git a/sf_manufacturing/models/mrp_workorder.py b/sf_manufacturing/models/mrp_workorder.py index 522c8c02..6b92fe25 100644 --- a/sf_manufacturing/models/mrp_workorder.py +++ b/sf_manufacturing/models/mrp_workorder.py @@ -895,6 +895,8 @@ class ResMrpWorkOrder(models.Model): record.write({ 'date_planned_finished': tem_date_planned_finished # 保持原值 }) + if record.routing_type == 'CNC加工' and record.test_results in ['返工', '报废']: + record.recreateManufacturingOrWorkerOrder() is_production_id = True for workorder in record.production_id.workorder_ids: if workorder.state != 'done': diff --git a/sf_manufacturing/models/product_template.py b/sf_manufacturing/models/product_template.py index 7d9bbac5..49a7e483 100644 --- a/sf_manufacturing/models/product_template.py +++ b/sf_manufacturing/models/product_template.py @@ -7,8 +7,8 @@ import os from odoo import models, fields, api, _ from odoo.exceptions import ValidationError from odoo.modules import get_resource_path -from OCC.Extend.DataExchange import read_step_file -from OCC.Extend.DataExchange import write_stl_file +# from OCC.Extend.DataExchange import read_step_file +# from OCC.Extend.DataExchange import write_stl_file class ResProductMo(models.Model): diff --git a/sf_manufacturing/views/mrp_workorder_view.xml b/sf_manufacturing/views/mrp_workorder_view.xml index 94f469ea..30801086 100644 --- a/sf_manufacturing/views/mrp_workorder_view.xml +++ b/sf_manufacturing/views/mrp_workorder_view.xml @@ -80,7 +80,7 @@ tree,form - + current [('state', '!=', 'cancel'),('schedule_state', '=', '已排')] @@ -477,7 +477,7 @@ - + diff --git a/sf_mrs_connect/models/ftp_operate.py b/sf_mrs_connect/models/ftp_operate.py index 3a09a305..8b547bb3 100644 --- a/sf_mrs_connect/models/ftp_operate.py +++ b/sf_mrs_connect/models/ftp_operate.py @@ -32,6 +32,9 @@ class FtpController(): logging.error(f"Error checking file: {e}") return False + + + # # 检测字符串的编码 # def detect_encoding(self, s): # result = chardet.detect(s) diff --git a/sf_sale/models/quick_easy_order.py b/sf_sale/models/quick_easy_order.py index 259655ee..775b901a 100644 --- a/sf_sale/models/quick_easy_order.py +++ b/sf_sale/models/quick_easy_order.py @@ -8,8 +8,8 @@ from datetime import datetime import requests from odoo import http from odoo.http import request -from OCC.Extend.DataExchange import read_step_file -from OCC.Extend.DataExchange import write_stl_file +# from OCC.Extend.DataExchange import read_step_file +# from OCC.Extend.DataExchange import write_stl_file from odoo import models, fields, api from odoo.modules import get_resource_path from odoo.exceptions import ValidationError, UserError diff --git a/sf_sale/models/quick_easy_order_old.py b/sf_sale/models/quick_easy_order_old.py index dc4c588f..f26b6f4a 100644 --- a/sf_sale/models/quick_easy_order_old.py +++ b/sf_sale/models/quick_easy_order_old.py @@ -6,8 +6,8 @@ import os from datetime import datetime from stl import mesh # from OCC.Core.GProp import GProp_GProps -from OCC.Extend.DataExchange import read_step_file -from OCC.Extend.DataExchange import write_stl_file +# from OCC.Extend.DataExchange import read_step_file +# from OCC.Extend.DataExchange import write_stl_file from odoo.addons.sf_base.commons.common import Common from odoo import models, fields, api from odoo.modules import get_resource_path From 5f42b5d0561e9e589ea0fccc18d81aca0611d639 Mon Sep 17 00:00:00 2001 From: "jinling.yang" Date: Thu, 23 May 2024 11:46:09 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=88=B6=E9=80=A0?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E6=8A=A5=E5=BA=9F=E6=B5=81=E7=A8=8B=EF=BC=8C?= =?UTF-8?q?=E8=BF=94=E5=B7=A5=E6=B5=81=E7=A8=8B=E6=9A=82=E5=81=9C=EF=BC=88?= =?UTF-8?q?=E9=9C=80=E6=B1=82=E9=9C=80=E9=87=8D=E6=96=B0=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_manufacturing/models/mrp_production.py | 9 +- sf_manufacturing/models/mrp_workorder.py | 101 +++++++++++++++++++- sf_manufacturing/models/product_template.py | 4 +- sf_sale/models/quick_easy_order.py | 4 +- sf_sale/models/quick_easy_order_old.py | 4 +- 5 files changed, 106 insertions(+), 16 deletions(-) diff --git a/sf_manufacturing/models/mrp_production.py b/sf_manufacturing/models/mrp_production.py index 4470235c..45808521 100644 --- a/sf_manufacturing/models/mrp_production.py +++ b/sf_manufacturing/models/mrp_production.py @@ -315,7 +315,7 @@ class MrpProduction(models.Model): production.fetchCNC(', '.join(product_id_to_production_names[production.product_id.id])) else: production.write({'programming_no': production_programming.programming_no, - 'programming_state': '编程中'}) + 'programming_state': '已编程' if production_programming.programming_state == '已编程' else '编程中'}) # # 根据加工面板的面数及对应的工序模板生成工单 i = 0 processing_panel_len = len(production.product_id.model_processing_panel.split(',')) @@ -411,15 +411,10 @@ class MrpProduction(models.Model): cnc_back_workorder = rec.workorder_ids.filtered(lambda wo: wo.name == "CNC加工(返工)") for work in rec.workorder_ids: if work.name == cnc_workorder.name and work.processing_panel == k: - cnc_back_workorder.write({'sequence': work.sequence + 1, 'state': 'ready', 'cnc_ids': work.cnc_ids, - 'cmm_ids': work.cmm_ids}) + cnc_back_workorder.write({'sequence': work.sequence + 1}) print(cnc_back_workorder.sequence) elif work.routing_type not in ['装夹预调'] and work != cnc_back_workorder: work.sequence += 1 - print(work.sequence) - if work.routing_type == '解除装夹': - work.write({'state': 'pending'}) - print(work.state) # 在制造订单上新增工单 def _create_workorder1(self, k): diff --git a/sf_manufacturing/models/mrp_workorder.py b/sf_manufacturing/models/mrp_workorder.py index 6b92fe25..d389ba80 100644 --- a/sf_manufacturing/models/mrp_workorder.py +++ b/sf_manufacturing/models/mrp_workorder.py @@ -677,13 +677,59 @@ class ResMrpWorkOrder(models.Model): productions = self.env['mrp.production'].with_user(SUPERUSER_ID).sudo().with_company( self.production_id.company_id).create( values) - self.env['stock.move'].sudo().create(productions._get_moves_raw_values()) + # self.env['stock.move'].sudo().create(productions._get_moves_raw_values()) self.env['stock.move'].sudo().create(productions._get_moves_finished_values()) productions._create_workorder() productions.filtered(lambda p: (not p.orderpoint_id and p.move_raw_ids) or \ ( p.move_dest_ids.procure_method != 'make_to_order' and not p.move_raw_ids and not p.workorder_ids)).action_confirm() + for production_item in productions: + process_parameter_workorder = self.env['mrp.workorder'].search( + [('surface_technics_parameters_id', '!=', False), ('production_id', '=', production_item.id), + ('is_subcontract', '=', True)]) + if process_parameter_workorder: + is_pick = False + consecutive_workorders = [] + m = 0 + sorted_workorders = sorted(process_parameter_workorder, key=lambda w: w.id) + for i in range(len(sorted_workorders) - 1): + if m == 0: + is_pick = False + if sorted_workorders[i].supplier_id.id == sorted_workorders[i + 1].supplier_id.id and \ + sorted_workorders[i].is_subcontract == sorted_workorders[i + 1].is_subcontract and \ + sorted_workorders[i].id == sorted_workorders[i + 1].id - 1: + if sorted_workorders[i] not in consecutive_workorders: + consecutive_workorders.append(sorted_workorders[i]) + consecutive_workorders.append(sorted_workorders[i + 1]) + m += 1 + continue + else: + if m == len(consecutive_workorders) - 1 and m != 0: + self.env['stock.picking'].create_outcontract_picking(consecutive_workorders, + production_item) + if sorted_workorders[i] in consecutive_workorders: + is_pick = True + consecutive_workorders = [] + m = 0 + # 当前面的连续工序生成对应的外协出入库单再生成当前工序的外协出入库单 + if is_pick is False: + self.env['stock.picking'].create_outcontract_picking(sorted_workorders[i], + production_item) + if m == len(consecutive_workorders) - 1 and m != 0: + self.env['stock.picking'].create_outcontract_picking(consecutive_workorders, + production_item) + if sorted_workorders[i] in consecutive_workorders: + is_pick = True + consecutive_workorders = [] + m = 0 + if m == len(consecutive_workorders) - 1 and m != 0: + self.env['stock.picking'].create_outcontract_picking(consecutive_workorders, production_item) + if is_pick is False and m == 0: + if len(sorted_workorders) == 1: + self.env['stock.picking'].create_outcontract_picking(sorted_workorders, production_item) + else: + self.env['stock.picking'].create_outcontract_picking(sorted_workorders[i], production_item) for production in productions: origin_production = production.move_dest_ids and production.move_dest_ids[ @@ -704,6 +750,28 @@ class ResMrpWorkOrder(models.Model): 'mail.message_origin_link', values={'self': production, 'origin': origin_production}, subtype_id=self.env.ref('mail.mt_note').id) + + ''' + 创建生产计划 + ''' + # 工单耗时 + workorder_duration = 0 + for workorder in productions.workorder_ids: + workorder_duration += workorder.duration_expected + + sale_order = self.env['sale.order'].sudo().search([('name', '=', productions.origin)]) + if sale_order: + # sale_order.write({'schedule_status': 'to schedule'}) + self.env['sf.production.plan'].sudo().with_company(self.production_id.company_id).create({ + 'name': productions.name, + 'order_deadline': sale_order.deadline_of_delivery, + 'production_id': productions.id, + 'date_planned_start': productions.date_planned_start, + 'origin': productions.origin, + 'product_qty': productions.product_qty, + 'product_id': productions.product_id.id, + 'state': 'draft', + }) if self.test_results == '返工': productions = self.production_id # self.env['stock.move'].sudo().create(productions._get_moves_raw_values()) @@ -720,7 +788,6 @@ class ResMrpWorkOrder(models.Model): 'name': '%s(返工)' % route.route_workcenter_id.name, 'processing_panel': k, 'routing_type': route.routing_type, - 'work_state': '' if not route.routing_type == '获取CNC加工程序' else '待发起', 'workcenter_id': self.env['mrp.routing.workcenter'].get_workcenter(route.workcenter_ids.ids, route.routing_type, production.product_id), @@ -728,10 +795,38 @@ class ResMrpWorkOrder(models.Model): 'date_planned_finished': datetime.now() + timedelta(days=1), 'duration_expected': 60, 'duration': 0, - + 'manual_quotation': production.workorder_ids.filtered( + lambda t: t.routing_type == 'CNC加工').manual_quotation, + 'rfid_code': production.workorder_ids.filtered(lambda t: t.routing_type == 'CNC加工').rfid_code, + 'cnc_ids': production.workorder_ids.filtered(lambda t: t.routing_type == 'CNC加工').cnc_ids, + 'cmm_ids': production.workorder_ids.filtered(lambda t: t.routing_type == 'CNC加工').cmm_ids, }] return workorders_values_str + @api.depends('production_availability', 'blocked_by_workorder_ids', 'blocked_by_workorder_ids.state') + def _compute_state(self): + super(ResMrpWorkOrder, self)._compute_state() + for item in self: + scrap_workorder = self.env['mrp.workorder'].search( + [('production_id', '=', item.production_id.id), ('routing_type', '=', 'CNC加工'), + ('state', '=', 'done'), ('is_remanufacture', '=', True)]) + print(item.name) + print(item.state) + if item.name == 'CNC加工(返工)' and item.state not in ['ready', 'progress', 'done']: + item.state = 'ready' + if item.routing_type == '解除装夹': + last_workorder = self.env['mrp.workorder'].search( + [('production_id', '=', item.production_id.id), ('name', '=', 'CNC加工(返工)'), + ('state', '!=', 'done')]) + if item.state != 'pending': + if last_workorder: + item.state = 'pending' + if scrap_workorder: + item.state = 'cancel' + elif item.routing_type == '表面工艺': + if scrap_workorder: + item.state = 'cancel' + # 重写工单开始按钮方法 def button_start(self): if self.routing_type == '装夹预调': diff --git a/sf_manufacturing/models/product_template.py b/sf_manufacturing/models/product_template.py index 49a7e483..7d9bbac5 100644 --- a/sf_manufacturing/models/product_template.py +++ b/sf_manufacturing/models/product_template.py @@ -7,8 +7,8 @@ import os from odoo import models, fields, api, _ from odoo.exceptions import ValidationError from odoo.modules import get_resource_path -# from OCC.Extend.DataExchange import read_step_file -# from OCC.Extend.DataExchange import write_stl_file +from OCC.Extend.DataExchange import read_step_file +from OCC.Extend.DataExchange import write_stl_file class ResProductMo(models.Model): diff --git a/sf_sale/models/quick_easy_order.py b/sf_sale/models/quick_easy_order.py index 775b901a..259655ee 100644 --- a/sf_sale/models/quick_easy_order.py +++ b/sf_sale/models/quick_easy_order.py @@ -8,8 +8,8 @@ from datetime import datetime import requests from odoo import http from odoo.http import request -# from OCC.Extend.DataExchange import read_step_file -# from OCC.Extend.DataExchange import write_stl_file +from OCC.Extend.DataExchange import read_step_file +from OCC.Extend.DataExchange import write_stl_file from odoo import models, fields, api from odoo.modules import get_resource_path from odoo.exceptions import ValidationError, UserError diff --git a/sf_sale/models/quick_easy_order_old.py b/sf_sale/models/quick_easy_order_old.py index f26b6f4a..dc4c588f 100644 --- a/sf_sale/models/quick_easy_order_old.py +++ b/sf_sale/models/quick_easy_order_old.py @@ -6,8 +6,8 @@ import os from datetime import datetime from stl import mesh # from OCC.Core.GProp import GProp_GProps -# from OCC.Extend.DataExchange import read_step_file -# from OCC.Extend.DataExchange import write_stl_file +from OCC.Extend.DataExchange import read_step_file +from OCC.Extend.DataExchange import write_stl_file from odoo.addons.sf_base.commons.common import Common from odoo import models, fields, api from odoo.modules import get_resource_path From decfd2740125cc787f58f62157ca61e426087119 Mon Sep 17 00:00:00 2001 From: "jinling.yang" Date: Wed, 29 May 2024 12:41:55 +0800 Subject: [PATCH 3/6] =?UTF-8?q?1.=E4=BF=AE=E5=A4=8Dcnc=E5=B7=A5=E5=8D=95?= =?UTF-8?q?=E6=B2=A1=E6=9C=89=E7=A8=8B=E5=BA=8F=E6=96=87=E4=BB=B6=E8=B7=AF?= =?UTF-8?q?=E5=BE=84=202.=E4=BF=AE=E5=A4=8D=E7=BC=96=E7=A8=8B=E5=8D=95?= =?UTF-8?q?=E5=B7=B2=E4=B8=8B=E5=8F=91=EF=BC=8C=E5=9C=A8=E5=B7=A5=E4=BB=B6?= =?UTF-8?q?=E9=85=8D=E9=80=81=E6=97=B6=EF=BC=8C=E6=8F=90=E7=A4=BA=E6=9C=AA?= =?UTF-8?q?=E4=B8=8B=E5=8F=91nc=E7=A8=8B=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_manufacturing/models/mrp_workorder.py | 6 ++++-- sf_mrs_connect/controllers/controllers.py | 14 +++++++++----- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/sf_manufacturing/models/mrp_workorder.py b/sf_manufacturing/models/mrp_workorder.py index 522c8c02..0f37c8f0 100644 --- a/sf_manufacturing/models/mrp_workorder.py +++ b/sf_manufacturing/models/mrp_workorder.py @@ -964,7 +964,7 @@ class CNCprocessing(models.Model): _order = 'sequence_number,id' cnc_id = fields.Many2one('ir.attachment') - sequence_number = fields.Char('序号') + sequence_number = fields.Integer('序号') program_name = fields.Char('程序名') functional_tool_type_id = fields.Many2one('sf.functional.cutting.tool.model', string='功能刀具类型') cutting_tool_name = fields.Char('刀具名称') @@ -1026,6 +1026,8 @@ class CNCprocessing(models.Model): 'cutting_tool_extension_length': obj['cutting_tool_extension_length'], 'cutting_tool_handle_type': obj['cutting_tool_handle_type'], 'estimated_processing_time': obj['estimated_processing_time'], + 'program_path': obj['program_path'], + 'cnc_id': obj['cnc_id'].id, 'remark': obj['remark'] }) return cnc_processing_str @@ -1416,7 +1418,7 @@ class WorkPieceDelivery(models.Model): 'task_delivery_time': fields.Datetime.now(), 'status': '待配送' }) - if delivery_item == "上产线": + if delivery_item.type == "上产线": delivery_item.workorder_id.write({'is_delivery': True}) else: raise UserError(ret['message']) diff --git a/sf_mrs_connect/controllers/controllers.py b/sf_mrs_connect/controllers/controllers.py index 98c2d59e..08d6d9b4 100644 --- a/sf_mrs_connect/controllers/controllers.py +++ b/sf_mrs_connect/controllers/controllers.py @@ -63,12 +63,16 @@ class Sf_Mrs_Connect(http.Controller): logging.info('cnc_processing111:%s' % cnc_processing) if cnc_processing: cnc_processing_arr.append(cnc_processing._json_cnc_processing(cnc_processing)) - if cnc_program and cnc_processing_arr: + if (cnc_program and cnc_processing_arr) or (not cnc_program and cnc_processing_arr): logging.info('cnc_processing_arr:%s' % cnc_processing_arr) - cnc_program.write({'programming_state': '已编程', 'work_state': '已编程'}) - cnc_program.workorder_ids.filtered(lambda b: b.routing_type == 'CNC加工').write( - {'cnc_ids': cnc_processing_arr, 'cnc_worksheet': cnc_production.workorder_ids.filtered( - lambda b: b.routing_type == 'CNC加工').cnc_worksheet}) + if cnc_program and cnc_processing_arr: + cnc_program.write({'programming_state': '已编程', 'work_state': '已编程'}) + cnc_program.workorder_ids.filtered(lambda b: b.routing_type == 'CNC加工').write( + {'cnc_ids': cnc_processing_arr, 'cnc_worksheet': cnc_production.workorder_ids.filtered( + lambda b: b.routing_type == 'CNC加工').cnc_worksheet}) + cnc_program |= cnc_production + if not cnc_program and cnc_processing_arr: + cnc_program = cnc_production cnc_program_ids = [item.id for item in cnc_program] workpiece_delivery = request.env['sf.workpiece.delivery'].sudo().search( [('production_id', 'in', cnc_program_ids)]) From 65d2593db951058132b7a6627b10adf714c7cd86 Mon Sep 17 00:00:00 2001 From: "jinling.yang" Date: Wed, 29 May 2024 15:03:08 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E9=85=8D=E9=80=81=E7=A9=BA=E6=96=99?= =?UTF-8?q?=E6=9E=B6=E5=BC=80=E6=94=BE=E6=96=B0=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_manufacturing/models/mrp_workorder.py | 2 ++ sf_manufacturing/models/product_template.py | 4 ++-- sf_manufacturing/views/agv_setting_views.xml | 2 +- sf_manufacturing/views/mrp_workorder_view.xml | 14 +++++++++----- sf_sale/models/quick_easy_order_old.py | 4 ++-- 5 files changed, 16 insertions(+), 10 deletions(-) diff --git a/sf_manufacturing/models/mrp_workorder.py b/sf_manufacturing/models/mrp_workorder.py index c3342744..743f060c 100644 --- a/sf_manufacturing/models/mrp_workorder.py +++ b/sf_manufacturing/models/mrp_workorder.py @@ -1332,6 +1332,8 @@ class WorkPieceDelivery(models.Model): def create(self, vals): if vals.get('name', '/') == '/' or vals.get('name', '/') is False: vals['name'] = self.env['ir.sequence'].next_by_code('sf.workpiece.delivery') or '/' + else: + vals['type'] = '运送空料架' obj = super(WorkPieceDelivery, self).create(vals) return obj diff --git a/sf_manufacturing/models/product_template.py b/sf_manufacturing/models/product_template.py index 7d9bbac5..49a7e483 100644 --- a/sf_manufacturing/models/product_template.py +++ b/sf_manufacturing/models/product_template.py @@ -7,8 +7,8 @@ import os from odoo import models, fields, api, _ from odoo.exceptions import ValidationError from odoo.modules import get_resource_path -from OCC.Extend.DataExchange import read_step_file -from OCC.Extend.DataExchange import write_stl_file +# from OCC.Extend.DataExchange import read_step_file +# from OCC.Extend.DataExchange import write_stl_file class ResProductMo(models.Model): diff --git a/sf_manufacturing/views/agv_setting_views.xml b/sf_manufacturing/views/agv_setting_views.xml index 42662e2c..9a4bf25e 100644 --- a/sf_manufacturing/views/agv_setting_views.xml +++ b/sf_manufacturing/views/agv_setting_views.xml @@ -36,7 +36,7 @@ - + diff --git a/sf_manufacturing/views/mrp_workorder_view.xml b/sf_manufacturing/views/mrp_workorder_view.xml index 30801086..36739742 100644 --- a/sf_manufacturing/views/mrp_workorder_view.xml +++ b/sf_manufacturing/views/mrp_workorder_view.xml @@ -668,14 +668,18 @@ 空料架配送 sf.workpiece.delivery - +
- - - - + + + + +