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'