diff --git a/sf_dlm/data/product_data.xml b/sf_dlm/data/product_data.xml index 15cfc8b5..528c6ec2 100644 --- a/sf_dlm/data/product_data.xml +++ b/sf_dlm/data/product_data.xml @@ -35,10 +35,8 @@ 功能刀具 - - 功能刀具模板 - + 功能刀具 @@ -49,9 +47,8 @@ - true + false serial - false diff --git a/sf_manufacturing/data/stock_data.xml b/sf_manufacturing/data/stock_data.xml index 15ad1a55..4e1841e2 100644 --- a/sf_manufacturing/data/stock_data.xml +++ b/sf_manufacturing/data/stock_data.xml @@ -59,8 +59,6 @@ 刀具组装入库 internal true - - ZR diff --git a/sf_tool_management/models/base.py b/sf_tool_management/models/base.py index a55f4f17..ff3f1bed 100644 --- a/sf_tool_management/models/base.py +++ b/sf_tool_management/models/base.py @@ -895,27 +895,27 @@ class FunctionalToolAssembly(models.Model): ('assemble_status', '=', '1') ]).write({ 'cutting_tool_integral_model_id': None, - 'integral_code': None, + 'integral_code_id': None, 'integral_name': None, 'sf_tool_brand_id_1': None, 'cutting_tool_blade_model_id': None, - 'blade_code': None, + 'blade_code_id': None, 'blade_name': None, 'sf_tool_brand_id_2': None, 'cutting_tool_cutterbar_model_id': None, - 'bar_code': None, + 'bar_code_id': None, 'bar_name': None, 'sf_tool_brand_id_3': None, 'cutting_tool_cutterpad_model_id': None, - 'pad_code': None, + 'pad_code_id': None, 'pad_name': None, 'sf_tool_brand_id_4': None, 'cutting_tool_cutterhandle_model_id': None, - 'handle_code': None, + 'handle_code_id': None, 'handle_name': None, 'sf_tool_brand_id_5': None, 'cutting_tool_cutterhead_model_id': None, - 'chuck_code': None, + 'chuck_code_id': None, 'chuck_name': None, 'sf_tool_brand_id_6': None, 'coarse_middle_thin': None, diff --git a/sf_tool_management/views/tool_base_views.xml b/sf_tool_management/views/tool_base_views.xml index 0e9f7386..077cb027 100644 --- a/sf_tool_management/views/tool_base_views.xml +++ b/sf_tool_management/views/tool_base_views.xml @@ -1127,7 +1127,7 @@ - +
@@ -1165,7 +1165,7 @@
- +
@@ -1208,35 +1208,6 @@
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
diff --git a/sf_tool_management/wizard/wizard.py b/sf_tool_management/wizard/wizard.py index c9dd4eb9..7218bd1f 100644 --- a/sf_tool_management/wizard/wizard.py +++ b/sf_tool_management/wizard/wizard.py @@ -392,9 +392,71 @@ class FunctionalToolAssemblyOrder(models.TransientModel): self.env['sf.functional.cutting.tool.entity'].search([('code', '=', self.code)]).write(desc_2) # 修改功能刀具组装信息 functional_tool_assembly.write(desc_1) + + # 创建组装入库单 + # 创建功能刀具批次/序列号记录 + stock_lot = self.create_assemble_warehouse_receipt() + # 创建刀具组装入库单 + self.create_stocking_picking(stock_lot) + # 关闭弹出窗口 return {'type': 'ir.actions.act_window_close'} + def create_stocking_picking(self, stock_lot): + """ + 创建刀具组装入库单 + """ + # 获取名称为刀具组装入库的作业类型 + picking_type_id = self.env['stock.picking.type'].sudo().search([('name', '=', '刀具组装入库')]) + # 创建刀具组装入库单 + picking_id = self.env['stock.picking'].create({ + 'picking_type_id': picking_type_id.id + }) + # 创建作业详情对象记录,并绑定到刀具组装入库单 + self.env['stock.move.line'].create({ + 'picking_id': picking_id.id, + 'product_id': stock_lot.product_id.id, + 'lot_id': stock_lot.id + }) + # 将刀具组装入库单的状态更改为就绪 + picking_id.action_confirm() + + def create_assemble_warehouse_receipt(self): + """ + 创建功能刀具批次/序列号记录 + """ + product_id = self.env['product.product'].search([('name', '=', '功能刀具')]) + + stock_lot = self.env['stock.lot'].create({ + 'name': self.get_stock_lot_name(), + 'product_id': product_id.id, + 'product_qty': 1.00, + 'company_id': self.env.company.id + }) + + return stock_lot + + def get_stock_lot_name(self): + """ + 生成功能刀具序列号 + """ + code = 'JKM-T-' + str(self.code) + '-' + str(self.functional_tool_diameter) + '-' + new_time = fields.Date.today() + code += str(new_time) + '-' + stock_lot_id = self.env['stock.lot'].sudo().search( + [('name', 'like', new_time), ('product_id.name', '=', '功能刀具')], + limit=1, + order="id desc" + ) + print(stock_lot_id) + if not stock_lot_id: + num = "%03d" % 1 + else: + m = int(stock_lot_id.name[-3:]) + 1 + num = "%03d" % m + print(num) + return code + str(num) + class DeliveryOfCargoFromStorage(models.TransientModel): _name = 'sf.delivery.of.cargo.from.storage'