Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/修改设备模块
This commit is contained in:
@@ -24,8 +24,21 @@
|
|||||||
'views/production_line_view.xml',
|
'views/production_line_view.xml',
|
||||||
'views/tray_view.xml',
|
'views/tray_view.xml',
|
||||||
'views/model_type_view.xml',
|
'views/model_type_view.xml',
|
||||||
|
# 'views/kanban_change.xml'
|
||||||
|
|
||||||
],
|
],
|
||||||
|
'assets': {
|
||||||
|
|
||||||
|
'web.assets_qweb': [
|
||||||
|
],
|
||||||
|
|
||||||
|
'web.assets_backend': [
|
||||||
|
'sf_manufacturing/static/src/xml/kanban_change.xml',
|
||||||
|
'sf_manufacturing/static/src/js/kanban_change.js',
|
||||||
|
'sf_manufacturing/static/src/scss/kanban_change.scss'
|
||||||
|
]
|
||||||
|
|
||||||
|
},
|
||||||
'demo': [
|
'demo': [
|
||||||
],
|
],
|
||||||
'qweb': [
|
'qweb': [
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
<!-- <t t-foreach="env['mrp.workcenter'].get_dynamic_data()" t-as="i" t-key="i"> -->
|
<!-- <t t-foreach="env['mrp.workcenter'].get_dynamic_data()" t-as="i" t-key="i"> -->
|
||||||
<t t-foreach="workOrders" t-as="i" t-key="i">
|
<t t-foreach="workOrders" t-as="i" t-key="i">
|
||||||
<div>
|
<div>
|
||||||
产线<t t-esc="i"></t>
|
<t t-esc="i.name"></t>
|
||||||
</div>
|
</div>
|
||||||
</t>
|
</t>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -68,6 +68,59 @@ class FunctionalCuttingToolEntity(models.Model):
|
|||||||
return [(6, 0, functional_tool_model_ids)]
|
return [(6, 0, functional_tool_model_ids)]
|
||||||
|
|
||||||
|
|
||||||
|
class FunctionalCuttingToolEntityCache(models.Model):
|
||||||
|
_name = 'sf.functional.cutting.tool.entity.cache'
|
||||||
|
_description = '功能刀具列表缓存'
|
||||||
|
|
||||||
|
code = fields.Char('编码')
|
||||||
|
name = fields.Char('名称')
|
||||||
|
mrs_cutting_tool_type_id = fields.Many2one('sf.functional.cutting.tool.model', string='功能刀具类型')
|
||||||
|
mrs_cutting_tool_model_id = fields.Many2one('sf.cutting.tool.model', string='刀具型号')
|
||||||
|
|
||||||
|
# 整体式刀具型号
|
||||||
|
mrs_cutting_tool_integral_model_ids = fields.Many2many('sf.cutting.tool.model',
|
||||||
|
'sf_functional_cutting_tool_entity_cache_id',
|
||||||
|
string='整体式刀具型号', domain=
|
||||||
|
[('mrs_cutting_tool_material_name', '=', '整体式刀具')])
|
||||||
|
# 刀片型号
|
||||||
|
mrs_cutting_tool_blade_model_ids = fields.Many2many('sf.cutting.tool.model', 'sf_functional_cutting_tool_entity_cache_id',
|
||||||
|
string='刀片型号', domain=
|
||||||
|
[('mrs_cutting_tool_material_name', '=', '刀片')])
|
||||||
|
# 刀杆型号
|
||||||
|
mrs_cutting_tool_cutterbar_model_ids = fields.Many2many('sf.cutting.tool.model',
|
||||||
|
'sf_functional_cutting_tool_entity_cache_id',
|
||||||
|
string='刀杆型号', domain=
|
||||||
|
[('mrs_cutting_tool_material_name', '=', '刀杆')])
|
||||||
|
# 刀盘型号
|
||||||
|
mrs_cutting_tool_cutterpad_model_ids = fields.Many2many('sf.cutting.tool.model',
|
||||||
|
'sf_functional_cutting_tool_entity_cache_id',
|
||||||
|
string='刀盘型号', domain=
|
||||||
|
[('mrs_cutting_tool_material_name', '=', '刀盘')])
|
||||||
|
# 刀柄型号
|
||||||
|
mrs_cutting_tool_cutterhandle_model_ids = fields.Many2many('sf.cutting.tool.model',
|
||||||
|
'sf_functional_cutting_tool_entity_cache_id',
|
||||||
|
string='刀柄型号', domain=
|
||||||
|
[('mrs_cutting_tool_material_name', '=', '刀柄')])
|
||||||
|
# 夹头型号
|
||||||
|
mrs_cutting_tool_cutterhead_model_ids = fields.Many2many('sf.cutting.tool.model',
|
||||||
|
'sf_functional_cutting_tool_entity_cache_id',
|
||||||
|
string='夹头型号', domain=
|
||||||
|
[('mrs_cutting_tool_material_name', '=', '夹头')])
|
||||||
|
|
||||||
|
diameter = fields.Float('直径(mm)')
|
||||||
|
tool_grade = fields.Selection([('1', 'P1'), ('2', 'P2'), ('3', 'P3'), ('4', 'P4'), ('5', 'P5'), ('6', 'P6')],
|
||||||
|
string='刀具等级')
|
||||||
|
machining_accuracy = fields.Float('加工精度(mm)')
|
||||||
|
tool_length = fields.Float('装刀长')
|
||||||
|
blade_number = fields.Integer('刃数')
|
||||||
|
integral_blade_length = fields.Float('整体刃长(mm)')
|
||||||
|
effective_blade_length = fields.Float('有效刃长(mm)')
|
||||||
|
max_life = fields.Float('最大寿命值')
|
||||||
|
is_standard = fields.Boolean('是否标准刀')
|
||||||
|
applicable_range = fields.Char('适用范围')
|
||||||
|
image = fields.Binary('图片')
|
||||||
|
|
||||||
|
|
||||||
class FunctionalToolWarning(models.Model):
|
class FunctionalToolWarning(models.Model):
|
||||||
_name = 'sf.functional.tool.warning'
|
_name = 'sf.functional.tool.warning'
|
||||||
_description = '功能刀具预警'
|
_description = '功能刀具预警'
|
||||||
@@ -591,9 +644,59 @@ class FunctionalToolAssembly(models.Model):
|
|||||||
取消功能刀具组装
|
取消功能刀具组装
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
|
if self.new_former == '0':
|
||||||
|
# 如果是新刀,则删除功能刀具列表、
|
||||||
|
self.env['sf.functional.cutting.tool.entity'].search([
|
||||||
|
('code', '=', self.functional_tool_code)]).unlink()
|
||||||
|
else:
|
||||||
|
# 获取功能刀具缓存信息
|
||||||
|
record = self.env['sf.functional.cutting.tool.entity.cache'].search([
|
||||||
|
('code', '=', self.functional_tool_code)], limit=1)
|
||||||
|
# 删除现有功能刀具列表记录
|
||||||
|
self.env['sf.functional.cutting.tool.entity'].search([
|
||||||
|
('code', '=', self.functional_tool_code)]).unlink()
|
||||||
|
# 创建新的功能刀具列表信息
|
||||||
|
self.env['sf.functional.cutting.tool.entity'].create({
|
||||||
|
'code': record.code,
|
||||||
|
'name': record.name,
|
||||||
|
'mrs_cutting_tool_type_id': record.mrs_cutting_tool_type_id.id,
|
||||||
|
'mrs_cutting_tool_model_id': record.mrs_cutting_tool_model_id.id,
|
||||||
|
'mrs_cutting_tool_integral_model_ids': record.mrs_cutting_tool_integral_model_ids.ids,
|
||||||
|
'mrs_cutting_tool_blade_model_ids': record.mrs_cutting_tool_blade_model_ids.ids,
|
||||||
|
'mrs_cutting_tool_cutterbar_model_ids': record.mrs_cutting_tool_cutterbar_model_ids.ids,
|
||||||
|
'mrs_cutting_tool_cutterpad_model_ids': record.mrs_cutting_tool_cutterpad_model_ids.ids,
|
||||||
|
'mrs_cutting_tool_cutterhandle_model_ids': record.mrs_cutting_tool_cutterhandle_model_ids.ids,
|
||||||
|
'mrs_cutting_tool_cutterhead_model_ids': record.mrs_cutting_tool_cutterhead_model_ids.ids,
|
||||||
|
'diameter': record.diameter,
|
||||||
|
'tool_grade': record.tool_grade,
|
||||||
|
'machining_accuracy': record.machining_accuracy,
|
||||||
|
'tool_length': record.tool_length,
|
||||||
|
'blade_number': record.blade_number,
|
||||||
|
'integral_blade_length': record.integral_blade_length,
|
||||||
|
'effective_blade_length': record.effective_blade_length,
|
||||||
|
'max_life': record.max_life,
|
||||||
|
'is_standard': record.is_standard,
|
||||||
|
'applicable_range': record.applicable_range,
|
||||||
|
'image': record.image,
|
||||||
|
})
|
||||||
|
# 删除缓存信息
|
||||||
|
self.env['sf.functional.cutting.tool.entity.cache'].search([
|
||||||
|
('code', '=', self.functional_tool_code)]).unlink()
|
||||||
|
|
||||||
|
|
||||||
|
# # 删除功能刀具预警、实时分布、出入库记录的新记录
|
||||||
|
# self.env['sf.functional.tool.warning'].search([
|
||||||
|
# ('code', '=', self.functional_tool_code)]).unlink()
|
||||||
|
# self.env['sf.real.time.distribution.of.functional.tools'].search([
|
||||||
|
# ('code', '=', self.functional_tool_code)]).unlink()
|
||||||
|
# self.env['sf.inbound.and.outbound.records.of.functional.tools'].search([
|
||||||
|
# ('code', '=', self.functional_tool_code)]).unlink()
|
||||||
|
|
||||||
|
# 修改功能刀具组装的组装信息
|
||||||
self.env['sf.functional.tool.assembly'].search([
|
self.env['sf.functional.tool.assembly'].search([
|
||||||
('machine_tool_name_id', '=', self.machine_tool_name_id.id),
|
('machine_tool_name_id', '=', self.machine_tool_name_id.id),
|
||||||
('cutter_spacing_code', '=', self.cutter_spacing_code)
|
('cutter_spacing_code', '=', self.cutter_spacing_code),
|
||||||
|
('assemble_status', '=', '1')
|
||||||
]).write({
|
]).write({
|
||||||
'mrs_cutting_tool_integral_model_ids': None,
|
'mrs_cutting_tool_integral_model_ids': None,
|
||||||
'integral_code': None,
|
'integral_code': None,
|
||||||
@@ -643,24 +746,22 @@ class FunctionalToolAssembly(models.Model):
|
|||||||
if vals:
|
if vals:
|
||||||
for val in vals:
|
for val in vals:
|
||||||
self.env['sf.delivery.of.cargo.from.storage'].create({
|
self.env['sf.delivery.of.cargo.from.storage'].create({
|
||||||
'functional_tool_code': val.functional_tool_code,
|
'functional_tool_code': val.functional_tool_code,
|
||||||
'name': val.name.id,
|
'name': val.name.id,
|
||||||
'functional_tool_type_id': val.functional_tool_type_id.id,
|
'functional_tool_type_id': val.functional_tool_type_id.id,
|
||||||
'production_line_name_id': val.production_line_name_id.id,
|
'production_line_name_id': val.production_line_name_id.id,
|
||||||
'machine_tool_code': val.machine_tool_code,
|
'machine_tool_code': val.machine_tool_code,
|
||||||
'receive_person': val.receive_person,
|
'receive_person': val.receive_person,
|
||||||
'receive_time': val.receive_time
|
'receive_time': val.receive_time})
|
||||||
})
|
|
||||||
else:
|
else:
|
||||||
self.env['sf.delivery.of.cargo.from.storage'].create({
|
self.env['sf.delivery.of.cargo.from.storage'].create({
|
||||||
'functional_tool_code': self.functional_tool_code,
|
'functional_tool_code': self.functional_tool_code,
|
||||||
'name': self.name.id,
|
'name': self.name.id,
|
||||||
'functional_tool_type_id': self.functional_tool_type_id.id,
|
'functional_tool_type_id': self.functional_tool_type_id.id,
|
||||||
'production_line_name_id': self.production_line_name_id.id,
|
'production_line_name_id': self.production_line_name_id.id,
|
||||||
'machine_tool_code': self.machine_tool_code,
|
'machine_tool_code': self.machine_tool_code,
|
||||||
'receive_person': self.receive_person,
|
'receive_person': self.receive_person,
|
||||||
'receive_time': self.receive_time
|
'receive_time': self.receive_time})
|
||||||
})
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'type': 'ir.actions.act_window',
|
'type': 'ir.actions.act_window',
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||||
access_sf_functional_cutting_tool_entity,sf.functional.cutting.tool.entity,model_sf_functional_cutting_tool_entity,base.group_user,1,1,1,1
|
access_sf_functional_cutting_tool_entity,sf.functional.cutting.tool.entity,model_sf_functional_cutting_tool_entity,base.group_user,1,1,1,1
|
||||||
access_sf.functional.tool.warning,sf.functional.tool.warning,model_sf_functional_tool_warning,base.group_user,1,0,1,0
|
access_sf_functional_cutting_tool_entity_cache,sf.functional.cutting.tool.entity.cache,model_sf_functional_cutting_tool_entity_cache,base.group_user,1,1,1,1
|
||||||
access_sf.real.time.distribution.of.functional.tools,sf.real.time.distribution.of.functional.tools,model_sf_real_time_distribution_of_functional_tools,base.group_user,1,0,1,0
|
access_sf.functional.tool.warning,sf.functional.tool.warning,model_sf_functional_tool_warning,base.group_user,1,1,1,1
|
||||||
access_sf.inbound.and.outbound.records.of.functional.tools,sf.inbound.and.outbound.records.of.functional.tools,model_sf_inbound_and_outbound_records_of_functional_tools,base.group_user,1,0,1,0
|
access_sf.real.time.distribution.of.functional.tools,sf.real.time.distribution.of.functional.tools,model_sf_real_time_distribution_of_functional_tools,base.group_user,1,1,1,1
|
||||||
|
access_sf.inbound.and.outbound.records.of.functional.tools,sf.inbound.and.outbound.records.of.functional.tools,model_sf_inbound_and_outbound_records_of_functional_tools,base.group_user,1,1,1,1
|
||||||
|
|
||||||
access_sf_cam_work_order_program_knife_plan,sf.cam.work.order.program.knife.plan,model_sf_cam_work_order_program_knife_plan,base.group_user,1,1,1,1
|
access_sf_cam_work_order_program_knife_plan,sf.cam.work.order.program.knife.plan,model_sf_cam_work_order_program_knife_plan,base.group_user,1,1,1,1
|
||||||
access_sf_machine_table_tool_changing_apply,sf.machine.table.tool.changing.apply,model_sf_machine_table_tool_changing_apply,base.group_user,1,1,1,1
|
access_sf_machine_table_tool_changing_apply,sf.machine.table.tool.changing.apply,model_sf_machine_table_tool_changing_apply,base.group_user,1,1,1,1
|
||||||
|
|||||||
|
@@ -176,10 +176,7 @@ class FunctionalToolAssemblyOrder(models.TransientModel):
|
|||||||
功能刀具组装
|
功能刀具组装
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
self.env['sf.functional.tool.assembly'].search([
|
desc_1 = {
|
||||||
('machine_tool_name_id', '=', self.machine_tool_name_id.id),
|
|
||||||
('cutter_spacing_code', '=', self.cutter_spacing_code)
|
|
||||||
]).write({
|
|
||||||
'mrs_cutting_tool_integral_model_ids': self.mrs_cutting_tool_integral_model_ids.ids,
|
'mrs_cutting_tool_integral_model_ids': self.mrs_cutting_tool_integral_model_ids.ids,
|
||||||
'integral_code': self.integral_code,
|
'integral_code': self.integral_code,
|
||||||
'integral_name': self.integral_name,
|
'integral_name': self.integral_name,
|
||||||
@@ -214,10 +211,15 @@ class FunctionalToolAssemblyOrder(models.TransientModel):
|
|||||||
'assemble_status': '1',
|
'assemble_status': '1',
|
||||||
'tool_loading_person': self.env.user.name,
|
'tool_loading_person': self.env.user.name,
|
||||||
'tool_loading_time': fields.Datetime.now()
|
'tool_loading_time': fields.Datetime.now()
|
||||||
})
|
}
|
||||||
|
self.env['sf.functional.tool.assembly'].search([
|
||||||
|
('machine_tool_name_id', '=', self.machine_tool_name_id.id),
|
||||||
|
('cutter_spacing_code', '=', self.cutter_spacing_code),
|
||||||
|
('assemble_status', '=', '0'),
|
||||||
|
]).write(desc_1)
|
||||||
|
|
||||||
# 封装功能刀具数据
|
# 封装功能刀具数据
|
||||||
desc = {
|
desc_2 = {
|
||||||
'code': self.code,
|
'code': self.code,
|
||||||
'name': self.functional_tool_name_id.name,
|
'name': self.functional_tool_name_id.name,
|
||||||
'mrs_cutting_tool_type_id': self.functional_tool_type_id.id,
|
'mrs_cutting_tool_type_id': self.functional_tool_type_id.id,
|
||||||
@@ -239,14 +241,43 @@ class FunctionalToolAssemblyOrder(models.TransientModel):
|
|||||||
'applicable_range': None,
|
'applicable_range': None,
|
||||||
'image': None,
|
'image': None,
|
||||||
}
|
}
|
||||||
|
|
||||||
if self.new_former == '0':
|
if self.new_former == '0':
|
||||||
# 如果是新刀,则创建功能刀具列表、
|
# 如果是新刀,则创建功能刀具列表、
|
||||||
self.env['sf.functional.cutting.tool.entity'].create(desc)
|
self.env['sf.functional.cutting.tool.entity'].create(desc_2)
|
||||||
# 创建功能刀具预警、实时分布、出入库记录的新记录
|
else:
|
||||||
self.env['sf.functional.tool.warning'].create(desc)
|
record = self.env['sf.functional.cutting.tool.entity'].search([('code', '=', self.code)])
|
||||||
self.env['sf.real.time.distribution.of.functional.tools'].create(desc)
|
# 创建功能刀具缓存信息
|
||||||
self.env['sf.inbound.and.outbound.records.of.functional.tools'].create(desc)
|
self.env['sf.functional.cutting.tool.entity.cache'].create({
|
||||||
|
'code': record.code,
|
||||||
|
'name': record.name,
|
||||||
|
'mrs_cutting_tool_type_id': record.mrs_cutting_tool_type_id.id,
|
||||||
|
'mrs_cutting_tool_model_id': record.mrs_cutting_tool_model_id.id,
|
||||||
|
'mrs_cutting_tool_integral_model_ids': record.mrs_cutting_tool_integral_model_ids.ids,
|
||||||
|
'mrs_cutting_tool_blade_model_ids': record.mrs_cutting_tool_blade_model_ids.ids,
|
||||||
|
'mrs_cutting_tool_cutterbar_model_ids': record.mrs_cutting_tool_cutterbar_model_ids.ids,
|
||||||
|
'mrs_cutting_tool_cutterpad_model_ids': record.mrs_cutting_tool_cutterpad_model_ids.ids,
|
||||||
|
'mrs_cutting_tool_cutterhandle_model_ids': record.mrs_cutting_tool_cutterhandle_model_ids.ids,
|
||||||
|
'mrs_cutting_tool_cutterhead_model_ids': record.mrs_cutting_tool_cutterhead_model_ids.ids,
|
||||||
|
'diameter': record.diameter,
|
||||||
|
'tool_grade': record.tool_grade,
|
||||||
|
'machining_accuracy': record.machining_accuracy,
|
||||||
|
'tool_length': record.tool_length,
|
||||||
|
'blade_number': record.blade_number,
|
||||||
|
'integral_blade_length': record.integral_blade_length,
|
||||||
|
'effective_blade_length': record.effective_blade_length,
|
||||||
|
'max_life': record.max_life,
|
||||||
|
'is_standard': record.is_standard,
|
||||||
|
'applicable_range': record.applicable_range,
|
||||||
|
'image': record.image,
|
||||||
|
})
|
||||||
|
# 删除功能刀具列表信息
|
||||||
|
self.env['sf.functional.cutting.tool.entity'].search([('code', '=', self.code)]).unlink()
|
||||||
|
# 创建功能刀具列表信息
|
||||||
|
self.env['sf.functional.cutting.tool.entity'].search([('code', '=', self.code)]).create(desc_2)
|
||||||
|
# # 创建功能刀具预警、实时分布、出入库记录的新记录
|
||||||
|
# self.env['sf.functional.tool.warning'].create(desc)
|
||||||
|
# self.env['sf.real.time.distribution.of.functional.tools'].create(desc)
|
||||||
|
# self.env['sf.inbound.and.outbound.records.of.functional.tools'].create(desc)
|
||||||
|
|
||||||
# 关闭弹出窗口
|
# 关闭弹出窗口
|
||||||
return {'type': 'ir.actions.act_window_close'}
|
return {'type': 'ir.actions.act_window_close'}
|
||||||
@@ -271,29 +302,30 @@ class DeliveryOfCargoFromStorage(models.TransientModel):
|
|||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
vals = self.env['sf.delivery.of.cargo.from.storage'].search([])
|
vals = self.env['sf.delivery.of.cargo.from.storage'].search([])
|
||||||
print(vals)
|
|
||||||
if vals:
|
if vals:
|
||||||
for val in vals:
|
for val in vals:
|
||||||
self.env['sf.functional.tool.assembly'].search([
|
# 删除功能刀具列表缓存的数据
|
||||||
('functional_tool_code', '=', val.functional_tool_code),
|
self.env['sf.functional.cutting.tool.entity.cache'].search([
|
||||||
('machine_tool_code', '=', val.machine_tool_code),
|
('code', '=', self.functional_tool_code)]).unlink()
|
||||||
('name', '=', val.name.id),
|
|
||||||
('production_line_name_id', '=', val.production_line_name_id.id)
|
|
||||||
]).write({
|
|
||||||
'assemble_status': '2',
|
|
||||||
'receive_person': self.env.user.name,
|
|
||||||
'receive_time': fields.Datetime.now()
|
|
||||||
})
|
|
||||||
|
|
||||||
tool_assembly = self.env['sf.functional.tool.assembly'].search([
|
record = self.env['sf.functional.tool.assembly'].search([
|
||||||
('functional_tool_code', '=', val.functional_tool_code),
|
('functional_tool_code', '=', val.functional_tool_code),
|
||||||
('name', '=', val.name.id)
|
('assemble_status', '=', '1')
|
||||||
])
|
])
|
||||||
# 判断装刀任务来源,如果来源于CAM装刀,则修改CAM装刀的计划执行状态
|
# 判断装刀任务来源,如果来源于CAM装刀,则修改CAM装刀的计划执行状态
|
||||||
if tool_assembly.loading_task_source == '0':
|
if record.loading_task_source == '0':
|
||||||
self.env['sf.cam.work.order.program.knife.plan'].search([
|
self.env['sf.cam.work.order.program.knife.plan'].search([
|
||||||
('functional_tool_code', '=', val.functional_tool_code),
|
('functional_tool_code', '=', val.functional_tool_code),
|
||||||
('functional_tool_name_id', '=', val.name.id)
|
('functional_tool_name_id', '=', val.name.id)
|
||||||
]).write({
|
]).write({
|
||||||
'plan_execute_status': '2'
|
'plan_execute_status': '2'
|
||||||
})
|
})
|
||||||
|
|
||||||
|
record.write({
|
||||||
|
'assemble_status': '2',
|
||||||
|
'receive_person': self.env.user.name,
|
||||||
|
'receive_time': fields.Datetime.now()
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -189,7 +189,8 @@
|
|||||||
<group string="组装物料信息">
|
<group string="组装物料信息">
|
||||||
<group>
|
<group>
|
||||||
<field name="integral_code"/>
|
<field name="integral_code"/>
|
||||||
<field name="mrs_cutting_tool_integral_model_ids" options="{'no_create': True, 'no_quick_create': True}" widget="many2many_tags"/>
|
<field name="mrs_cutting_tool_integral_model_ids" options="{'no_create': True, 'no_quick_create': True}"
|
||||||
|
widget="many2many_tags" placeholder="选择整体式刀具型号"/>
|
||||||
<field name="blade_code"/>
|
<field name="blade_code"/>
|
||||||
<field name="mrs_cutting_tool_blade_model_ids" options="{'no_create': True, 'no_quick_create': True}" widget="many2many_tags"/>
|
<field name="mrs_cutting_tool_blade_model_ids" options="{'no_create': True, 'no_quick_create': True}" widget="many2many_tags"/>
|
||||||
<field name="bar_code"/>
|
<field name="bar_code"/>
|
||||||
|
|||||||
@@ -466,6 +466,7 @@ tour.register('test_receipt_reserved_1', {test: true}, [
|
|||||||
trigger: '.o_field_widget[name="product_id"]',
|
trigger: '.o_field_widget[name="product_id"]',
|
||||||
run: function() {
|
run: function() {
|
||||||
helper.assertFormLocationDest('WH/Stock');
|
helper.assertFormLocationDest('WH/Stock');
|
||||||
|
console.log('123')
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
...tour.stepUtils.discardBarcodeForm(),
|
...tour.stepUtils.discardBarcodeForm(),
|
||||||
|
|||||||
Reference in New Issue
Block a user