diff --git a/sf_manufacturing/models/mrp_production.py b/sf_manufacturing/models/mrp_production.py index b7c8fe91..ae523bd9 100644 --- a/sf_manufacturing/models/mrp_production.py +++ b/sf_manufacturing/models/mrp_production.py @@ -204,7 +204,7 @@ class MrpProduction(models.Model): if rp.programming_no == item['programming_no']: rp.write({'programming_state': '已编程未下发' if item[ 'programming_state'] == '已编程' else '编程中'}) - logging.info('rp:' % rp.name) + logging.info('rp:%s' % rp.name) else: return item @@ -792,6 +792,8 @@ class MrpProduction(models.Model): program_to_production_names[programming_no] = [production.name for production in program_production] for production in self: if production.programming_no in program_to_production_names: + productions_not_delivered = self.env['mrp.production'].search( + [('programming_no', '=', production.programming_no), ('programming_state', '=', '已编程未下发')]) rework_workorder = production.workorder_ids.filtered(lambda m: m.state == 'rework') if rework_workorder: for rework_item in rework_workorder: @@ -801,6 +803,7 @@ class MrpProduction(models.Model): if not pending_workorder.cnc_ids: production.get_new_program(rework_item.processing_panel) production.write({'state': 'progress', 'programming_state': '已编程', 'is_rework': False}) + productions_not_delivered.write({'programming_state': '已编程', 'is_rework': False}) # 从cloud获取重新编程过的最新程序 def get_new_program(self, processing_panel): @@ -814,17 +817,17 @@ class MrpProduction(models.Model): r = r.json() result = json.loads(r['result']) if result['status'] == 1: - program_path_tmp_panel = os.path.join('/tmp', result['folder_name'], 'return', processing_panel) - if os.path.exists(program_path_tmp_panel): - files_r = os.listdir(program_path_tmp_panel) - if files_r: - for file_name in files_r: - file_path = os.path.join(program_path_tmp_panel, file_name) - os.remove(file_path) - download_state = self.env['sf.cnc.processing'].download_file_tmp(result['folder_name'], - processing_panel) - if download_state is False: - raise UserError('编程单号为%s的CNC程序文件从FTP拉取失败' % (self.programming_no)) + # program_path_tmp_panel = os.path.join('/tmp', result['folder_name'], 'return', processing_panel) + # if os.path.exists(program_path_tmp_panel): + # files_r = os.listdir(program_path_tmp_panel) + # if files_r: + # for file_name in files_r: + # file_path = os.path.join(program_path_tmp_panel, file_name) + # os.remove(file_path) + # download_state = self.env['sf.cnc.processing'].download_file_tmp(result['folder_name'], + # processing_panel) + # if download_state is False: + # raise UserError('编程单号为%s的CNC程序文件从FTP拉取失败' % (self.programming_no)) productions = self.env['mrp.production'].search( [('programming_no', '=', self.programming_no), ('state', 'not in', ('cancel', 'done'))]) if productions: @@ -838,8 +841,8 @@ class MrpProduction(models.Model): panel_workorder.cnc_ids.sudo().unlink() self.env['sf.cam.work.order.program.knife.plan'].sudo().unlink_cam_plan( productions) - # program_path_tmp_panel = os.path.join('C://Users//43484//Desktop//fsdownload//test', - # processing_panel) + program_path_tmp_panel = os.path.join('C://Users//43484//Desktop//fsdownload//test', + processing_panel) logging.info('program_path_tmp_panel:%s' % program_path_tmp_panel) files_panel = os.listdir(program_path_tmp_panel) if files_panel: diff --git a/sf_manufacturing/models/mrp_workorder.py b/sf_manufacturing/models/mrp_workorder.py index a4b0527c..6ffdb0cb 100644 --- a/sf_manufacturing/models/mrp_workorder.py +++ b/sf_manufacturing/models/mrp_workorder.py @@ -726,6 +726,11 @@ class ResMrpWorkOrder(models.Model): re_work = self.env['mrp.workorder'].search([('production_id', '=', workorder.production_id.id), ('processing_panel', '=', workorder.processing_panel), ('is_rework', '=', True), ('state', 'in', ['done', 'rework'])]) + cnc_workorder = self.env['mrp.workorder'].search( + [('production_id', '=', workorder.production_id.id), + ('processing_panel', '=', workorder.processing_panel), + ('routing_type', '=', 'CNC加工'), ('state', '=', 'done'), + ('test_results', '=', '返工')]) if workorder.state not in ['cancel', 'progress', 'rework']: if workorder.production_id.state == 'rework': logging.info('len(re_work):%s' % len(re_work)) @@ -736,29 +741,34 @@ class ResMrpWorkOrder(models.Model): logging.info('面:%s' % workorder.processing_panel) logging.info('编程状态:%s' % workorder.production_id.programming_state) logging.info('制造状态:%s' % workorder.production_id.state) - if re_work: - if workorder.routing_type == '装夹预调' and workorder.state not in ['done', 'rework', - 'cancel'] and workorder.is_rework is False: - if workorder.production_id.programming_state == '已编程': - workorder.state = 'ready' + if workorder.routing_type == '装夹预调' and workorder.state not in ['done', 'rework', + 'cancel']: + # # 有返工工单 + # if re_work: + # 新工单 + if workorder.is_rework is False: + if workorder.production_id.programming_state == '已编程' and workorder.production_id.is_rework is False: + if re_work: + workorder.state = 'ready' else: if workorder.production_id.is_rework is True: - workorder.state = 'waiting' - if workorder.routing_type == 'CNC加工' and workorder.state not in ['done', 'rework', 'cancel']: - pre_workorder = self.env['mrp.workorder'].search( - [('production_id', '=', workorder.production_id.id), - ('processing_panel', '=', workorder.processing_panel), - ('routing_type', '=', '装夹预调'), ('state', '=', 'done')]) - if pre_workorder: - workorder.state = 'waiting' - if workorder.routing_type == '解除装夹' and workorder.state not in ['done', 'rework', 'cancel']: - cnc_workorder = self.env['mrp.workorder'].search( - [('production_id', '=', workorder.production_id.id), - ('processing_panel', '=', workorder.processing_panel), - ('routing_type', '=', 'CNC加工'), ('state', '=', 'done'), - ('test_results', '=', '返工')]) - if cnc_workorder: + if re_work or cnc_workorder: + workorder.state = 'waiting' + + elif workorder.routing_type == 'CNC加工' and workorder.state not in ['done', 'rework', 'cancel']: + pre_workorder = self.env['mrp.workorder'].search( + [('production_id', '=', workorder.production_id.id), + ('processing_panel', '=', workorder.processing_panel), + ('routing_type', '=', '装夹预调'), ('state', '=', 'done')]) + if pre_workorder: + if re_work: workorder.state = 'waiting' + elif workorder.routing_type == '解除装夹' and workorder.state not in ['done', 'rework', 'cancel']: + if cnc_workorder: + workorder.state = 'waiting' + # else: + # if workorder.production_id.is_rework is True: + # workorder.state = 'waiting' elif workorder.production_id.state == 'progress': logging.info('len(re_work):%s' % len(re_work)) logging.info('工序:%s' % workorder.routing_type) diff --git a/sf_manufacturing/models/product_template.py b/sf_manufacturing/models/product_template.py index 4d05de81..f292d694 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 e3bf3002..11acc06f 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 3ae65db3..92f6cda2 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