diff --git a/sf_manufacturing/controllers/main.py b/sf_manufacturing/controllers/main.py index 3dd73017..8a289e75 100644 --- a/sf_manufacturing/controllers/main.py +++ b/sf_manufacturing/controllers/main.py @@ -45,6 +45,8 @@ class JikimoSaleRoutePicking(Sf_Bf_Connect): product.product_tmpl_id.is_customer_provided = True if item['embryo_redundancy_id'] else False order_id.with_user(request.env.ref("base.user_admin")).sale_order_create_line(product, item) i += 1 + if kw.get('contract_file_name') and kw.get('contract_file'): + order_id.create_sale_documents(kw.get('contract_file_name'), kw.get('contract_file')) res['factory_order_no'] = order_id.name order_id.confirm_to_supply_method() except Exception as e: diff --git a/sf_manufacturing/models/sale_order.py b/sf_manufacturing/models/sale_order.py index cb214bc9..84afa4c6 100644 --- a/sf_manufacturing/models/sale_order.py +++ b/sf_manufacturing/models/sale_order.py @@ -190,7 +190,29 @@ class SaleOrder(models.Model): 'target': 'new', 'res_id': wizard.id, } + def create_sale_documents(self, contract_file_name, contract_file): + # 创建ir.attachment记录 + attachment = self.env['ir.attachment'].sudo().create({ + 'name': contract_file_name, + 'type': 'binary', + 'datas': contract_file, + 'res_model': 'sale.order', + }) + # 获取默认的文档文件夹 + workspace = self.env.ref('sf_sale.documents_sales_contracts_folder_1').id + + # 创建 documents.document 记录 + document = self.env['documents.document'].sudo().create({ + 'name': contract_file_name, + 'attachment_id': attachment.id, + 'folder_id': workspace, + 'res_model': 'sale.order' + }) + + self.write({ + 'contract_document_id': document.id + }) class SaleOrderLine(models.Model): _inherit = 'sale.order.line' diff --git a/sf_manufacturing/wizard/rework_wizard.py b/sf_manufacturing/wizard/rework_wizard.py index 7fc935a0..8ddc353b 100644 --- a/sf_manufacturing/wizard/rework_wizard.py +++ b/sf_manufacturing/wizard/rework_wizard.py @@ -125,12 +125,16 @@ class ReworkWizard(models.TransientModel): # 1、单独返工CNC工单则不解绑托盘RFID,如单独返工装夹预调工单,则自动解绑托盘RFID; # 2、返工CNC工单和装夹预调工单则自动解绑RFID clamp_workorder_ids = rework_workorder_ids.filtered(lambda rp: rp.routing_type == '装夹预调') + + vals_list = [{ + 'id': order.id, + 'rfid_code_old': order.rfid_code, + 'rfid_code': False + } for order in rework_workorder_ids] + rework_workorder_ids.write(vals_list) if clamp_workorder_ids: for clamp_workorder_id in clamp_workorder_ids: - rfid_code = clamp_workorder_id.rfid_code - clamp_workorder_id.write({'rfid_code_old': rfid_code, 'rfid_code': False}) self.production_id.workorder_ids.filtered(lambda wk: ( - wk.routing_type != '装夹预调' and wk.processing_panel == clamp_workorder_id.processing_panel)).write({'rfid_code': None}) # 返工工单状态设置为【返工】 rework_workorder_ids.write({'state': 'rework'}) diff --git a/sf_sale/__manifest__.py b/sf_sale/__manifest__.py index c12f94fd..94c97825 100644 --- a/sf_sale/__manifest__.py +++ b/sf_sale/__manifest__.py @@ -17,6 +17,7 @@ 'wizard/sale_order_wizard_views.xml', 'wizard/purchase_order_wizard_views.xml', 'data/cron_data.xml', + 'data/documents_data.xml', 'views/sale_team.xml', 'views/sale_order_view.xml', 'views/res_partner_view.xml', diff --git a/sf_sale/data/documents_data.xml b/sf_sale/data/documents_data.xml new file mode 100644 index 00000000..d8182c75 --- /dev/null +++ b/sf_sale/data/documents_data.xml @@ -0,0 +1,15 @@ + + + + + + 销售合同 + 存放销售合同相关文件 + 8 + + + 下单凭证 + + + + \ No newline at end of file diff --git a/sf_sale/models/sale_order.py b/sf_sale/models/sale_order.py index 487bfd53..1366500d 100644 --- a/sf_sale/models/sale_order.py +++ b/sf_sale/models/sale_order.py @@ -63,6 +63,10 @@ class ReSaleOrder(models.Model): model_display_version = fields.Char('模型展示版本', default="v1") + contract_document_id = fields.Many2one('documents.document', string='合同文件') + contract_file = fields.Binary(related='contract_document_id.datas', string='合同文件内容') + contract_file_name = fields.Char(related='contract_document_id.attachment_id.name', string='文件名') + # 业务平台分配工厂后在智能工厂先创建销售订单 def sale_order_create(self, company_id, delivery_name, delivery_telephone, delivery_address, deadline_of_delivery, payments_way, pay_way, order_number, state='sale', diff --git a/sf_sale/views/sale_order_view.xml b/sf_sale/views/sale_order_view.xml index 0574f5d5..05460a61 100644 --- a/sf_sale/views/sale_order_view.xml +++ b/sf_sale/views/sale_order_view.xml @@ -198,7 +198,20 @@ - + + + + + + + + + + +