1、功能刀具组装单添加物料校验标签字段、新增扫描校验功能、优化相关计算方法;2、添加新旧、粗中精字段值根据所选物料自动计算方法,伸出长自动计算方法;3、去除部分字段的校验方法;4、组装单form、tree视图布局调整,tree视图状态字段添加背景颜色,变更筛选条件;
This commit is contained in:
@@ -349,9 +349,42 @@ class CAMWorkOrderProgramKnifePlan(models.Model):
|
|||||||
|
|
||||||
class FunctionalToolAssembly(models.Model):
|
class FunctionalToolAssembly(models.Model):
|
||||||
_name = 'sf.functional.tool.assembly'
|
_name = 'sf.functional.tool.assembly'
|
||||||
_inherit = ['mail.thread']
|
_inherit = ['mail.thread', 'barcodes.barcode_events_mixin']
|
||||||
_description = '功能刀具组装'
|
_description = '功能刀具组装'
|
||||||
_order = 'assemble_status, use_tool_time asc'
|
_order = 'tool_loading_time desc, use_tool_time asc'
|
||||||
|
|
||||||
|
def on_barcode_scanned(self, barcode):
|
||||||
|
"""
|
||||||
|
智能工厂组装单处扫码校验刀具物料
|
||||||
|
"""
|
||||||
|
for record in self:
|
||||||
|
lot_ids = self.env['stock.lot'].sudo().search([('rfid', '=', barcode)])
|
||||||
|
if lot_ids:
|
||||||
|
for lot_id in lot_ids:
|
||||||
|
if lot_id.tool_material_status != '可用':
|
||||||
|
raise ValidationError(f'Rfid为【{barcode}】的刀柄已被占用,请重新扫描!!')
|
||||||
|
if lot_id.product_id == record.handle_product_id:
|
||||||
|
record.handle_code_id = lot_id.id
|
||||||
|
record.handle_verify = True
|
||||||
|
else:
|
||||||
|
raise ValidationError('刀具选择错误,请重新确认!!!')
|
||||||
|
else:
|
||||||
|
location = self.env['sf.shelf.location'].sudo().search([('barcode', '=', barcode)])
|
||||||
|
if location:
|
||||||
|
if location == record.integral_freight_barcode_id:
|
||||||
|
record.integral_verify = True
|
||||||
|
elif location == record.blade_freight_barcode_id:
|
||||||
|
record.blade_verify = True
|
||||||
|
elif location == record.bar_freight_barcode_id:
|
||||||
|
record.bar_verify = True
|
||||||
|
elif location == record.pad_freight_barcode_id:
|
||||||
|
record.pad_verify = True
|
||||||
|
elif location == record.chuck_freight_barcode_id:
|
||||||
|
record.chuck_verify = True
|
||||||
|
else:
|
||||||
|
raise ValidationError('刀具选择错误,请重新确认!')
|
||||||
|
else:
|
||||||
|
raise ValidationError(f'扫描为【{barcode}】的刀具不存在,请重新扫描!')
|
||||||
|
|
||||||
@api.depends('functional_tool_name')
|
@api.depends('functional_tool_name')
|
||||||
def _compute_name(self):
|
def _compute_name(self):
|
||||||
@@ -390,6 +423,8 @@ class FunctionalToolAssembly(models.Model):
|
|||||||
'tool_inventory_id.extension', 'tool_inventory_id.life_span')
|
'tool_inventory_id.extension', 'tool_inventory_id.life_span')
|
||||||
def _compute_inventory_num(self):
|
def _compute_inventory_num(self):
|
||||||
for item in self:
|
for item in self:
|
||||||
|
if item.assemble_status != '01':
|
||||||
|
return True
|
||||||
if item.tool_inventory_id:
|
if item.tool_inventory_id:
|
||||||
item.functional_tool_type_id = item.tool_inventory_id.functional_cutting_tool_model_id.id
|
item.functional_tool_type_id = item.tool_inventory_id.functional_cutting_tool_model_id.id
|
||||||
item.tool_groups_id = item.tool_inventory_id.tool_groups_id.id # 刀具组
|
item.tool_groups_id = item.tool_inventory_id.tool_groups_id.id # 刀具组
|
||||||
@@ -397,7 +432,6 @@ class FunctionalToolAssembly(models.Model):
|
|||||||
item.after_assembly_functional_tool_diameter = item.tool_inventory_id.diameter # 直径
|
item.after_assembly_functional_tool_diameter = item.tool_inventory_id.diameter # 直径
|
||||||
item.after_assembly_knife_tip_r_angle = item.tool_inventory_id.angle # R角
|
item.after_assembly_knife_tip_r_angle = item.tool_inventory_id.angle # R角
|
||||||
item.after_assembly_tool_loading_length = item.tool_inventory_id.tool_length # 总长度
|
item.after_assembly_tool_loading_length = item.tool_inventory_id.tool_length # 总长度
|
||||||
item.after_assembly_functional_tool_length = item.tool_inventory_id.extension # 伸出长度
|
|
||||||
item.after_assembly_max_lifetime_value = item.tool_inventory_id.life_span # 最大寿命
|
item.after_assembly_max_lifetime_value = item.tool_inventory_id.life_span # 最大寿命
|
||||||
|
|
||||||
functional_tool_type_id = fields.Many2one('sf.functional.cutting.tool.model', string='功能刀具类型',
|
functional_tool_type_id = fields.Many2one('sf.functional.cutting.tool.model', string='功能刀具类型',
|
||||||
@@ -451,6 +485,7 @@ class FunctionalToolAssembly(models.Model):
|
|||||||
related='integral_product_id.specification_id')
|
related='integral_product_id.specification_id')
|
||||||
sf_tool_brand_id_1 = fields.Many2one('sf.machine.brand', string='整体式刀具品牌',
|
sf_tool_brand_id_1 = fields.Many2one('sf.machine.brand', string='整体式刀具品牌',
|
||||||
related='integral_product_id.brand_id')
|
related='integral_product_id.brand_id')
|
||||||
|
integral_verify = fields.Boolean('整体刀校验', default=False)
|
||||||
|
|
||||||
@api.onchange('integral_freight_barcode_id')
|
@api.onchange('integral_freight_barcode_id')
|
||||||
def _onchange_integral_freight_barcode_id(self):
|
def _onchange_integral_freight_barcode_id(self):
|
||||||
@@ -478,6 +513,7 @@ class FunctionalToolAssembly(models.Model):
|
|||||||
blade_specification_id = fields.Many2one('sf.tool.materials.basic.parameters', string='刀片规格',
|
blade_specification_id = fields.Many2one('sf.tool.materials.basic.parameters', string='刀片规格',
|
||||||
related='blade_product_id.specification_id')
|
related='blade_product_id.specification_id')
|
||||||
sf_tool_brand_id_2 = fields.Many2one('sf.machine.brand', '刀片品牌', related='blade_product_id.brand_id')
|
sf_tool_brand_id_2 = fields.Many2one('sf.machine.brand', '刀片品牌', related='blade_product_id.brand_id')
|
||||||
|
blade_verify = fields.Boolean('刀片校验', default=False)
|
||||||
|
|
||||||
@api.onchange('blade_freight_barcode_id')
|
@api.onchange('blade_freight_barcode_id')
|
||||||
def _onchange_blade_freight_barcode_id(self):
|
def _onchange_blade_freight_barcode_id(self):
|
||||||
@@ -505,6 +541,7 @@ class FunctionalToolAssembly(models.Model):
|
|||||||
bar_specification_id = fields.Many2one('sf.tool.materials.basic.parameters', string='刀杆规格',
|
bar_specification_id = fields.Many2one('sf.tool.materials.basic.parameters', string='刀杆规格',
|
||||||
related='bar_product_id.specification_id')
|
related='bar_product_id.specification_id')
|
||||||
sf_tool_brand_id_3 = fields.Many2one('sf.machine.brand', '刀杆品牌', related='bar_product_id.brand_id')
|
sf_tool_brand_id_3 = fields.Many2one('sf.machine.brand', '刀杆品牌', related='bar_product_id.brand_id')
|
||||||
|
brand_verify = fields.Boolean('刀杆校验', default=False)
|
||||||
|
|
||||||
@api.onchange('bar_freight_barcode_id')
|
@api.onchange('bar_freight_barcode_id')
|
||||||
def _onchange_bar_freight_barcode_id(self):
|
def _onchange_bar_freight_barcode_id(self):
|
||||||
@@ -532,6 +569,7 @@ class FunctionalToolAssembly(models.Model):
|
|||||||
pad_specification_id = fields.Many2one('sf.tool.materials.basic.parameters', string='刀盘规格',
|
pad_specification_id = fields.Many2one('sf.tool.materials.basic.parameters', string='刀盘规格',
|
||||||
related='pad_product_id.specification_id')
|
related='pad_product_id.specification_id')
|
||||||
sf_tool_brand_id_4 = fields.Many2one('sf.machine.brand', '刀盘品牌', related='pad_product_id.brand_id')
|
sf_tool_brand_id_4 = fields.Many2one('sf.machine.brand', '刀盘品牌', related='pad_product_id.brand_id')
|
||||||
|
pad_verify = fields.Boolean('刀盘校验', default=False)
|
||||||
|
|
||||||
@api.onchange('pad_freight_barcode_id')
|
@api.onchange('pad_freight_barcode_id')
|
||||||
def _onchange_pad_freight_barcode_id(self):
|
def _onchange_pad_freight_barcode_id(self):
|
||||||
@@ -558,6 +596,7 @@ class FunctionalToolAssembly(models.Model):
|
|||||||
handle_specification_id = fields.Many2one('sf.tool.materials.basic.parameters', string='刀柄规格',
|
handle_specification_id = fields.Many2one('sf.tool.materials.basic.parameters', string='刀柄规格',
|
||||||
related='handle_product_id.specification_id')
|
related='handle_product_id.specification_id')
|
||||||
sf_tool_brand_id_5 = fields.Many2one('sf.machine.brand', '刀柄品牌', related='handle_product_id.brand_id')
|
sf_tool_brand_id_5 = fields.Many2one('sf.machine.brand', '刀柄品牌', related='handle_product_id.brand_id')
|
||||||
|
handle_verify = fields.Boolean('刀柄校验', default=False)
|
||||||
|
|
||||||
@api.depends('handle_code_id')
|
@api.depends('handle_code_id')
|
||||||
def _compute_handle_product_id(self):
|
def _compute_handle_product_id(self):
|
||||||
@@ -584,6 +623,7 @@ class FunctionalToolAssembly(models.Model):
|
|||||||
chuck_specification_id = fields.Many2one('sf.tool.materials.basic.parameters', string='夹头规格',
|
chuck_specification_id = fields.Many2one('sf.tool.materials.basic.parameters', string='夹头规格',
|
||||||
related='chuck_product_id.specification_id')
|
related='chuck_product_id.specification_id')
|
||||||
sf_tool_brand_id_6 = fields.Many2one('sf.machine.brand', '夹头品牌', related='chuck_product_id.brand_id')
|
sf_tool_brand_id_6 = fields.Many2one('sf.machine.brand', '夹头品牌', related='chuck_product_id.brand_id')
|
||||||
|
chuck_verify = fields.Boolean('夹头校验', default=False)
|
||||||
|
|
||||||
@api.onchange('chuck_freight_barcode_id')
|
@api.onchange('chuck_freight_barcode_id')
|
||||||
def _onchange_chuck_freight_barcode_id(self):
|
def _onchange_chuck_freight_barcode_id(self):
|
||||||
@@ -630,14 +670,16 @@ class FunctionalToolAssembly(models.Model):
|
|||||||
compute='_compute_inventory_num')
|
compute='_compute_inventory_num')
|
||||||
after_assembly_knife_tip_r_angle = fields.Float(string='组装后刀尖R角(mm)', digits=(10, 3), store=True,
|
after_assembly_knife_tip_r_angle = fields.Float(string='组装后刀尖R角(mm)', digits=(10, 3), store=True,
|
||||||
compute='_compute_inventory_num')
|
compute='_compute_inventory_num')
|
||||||
after_assembly_new_former = fields.Selection([('0', '新'), ('1', '旧')], string='组装后新/旧', default='0')
|
after_assembly_new_former = fields.Selection([('0', '新'), ('1', '旧')], string='组装后新/旧', default='0',
|
||||||
|
store=True, compute='_compute_rota_tive')
|
||||||
cut_time = fields.Integer(string='已切削时间(min)', readonly=True)
|
cut_time = fields.Integer(string='已切削时间(min)', readonly=True)
|
||||||
cut_length = fields.Float(string='已切削长度(mm)', readonly=True)
|
cut_length = fields.Float(string='已切削长度(mm)', readonly=True)
|
||||||
cut_number = fields.Integer(string='已切削次数', readonly=True)
|
cut_number = fields.Integer(string='已切削次数', readonly=True)
|
||||||
|
|
||||||
after_assembly_whether_standard_knife = fields.Boolean(string='组装后是否标准刀', default=True, readonly=True)
|
after_assembly_whether_standard_knife = fields.Boolean(string='组装后是否标准刀', default=True, readonly=True)
|
||||||
after_assembly_coarse_middle_thin = fields.Selection([("1", "粗"), ('2', '中'), ('3', '精')],
|
after_assembly_coarse_middle_thin = fields.Selection([("1", "粗"), ('2', '中'), ('3', '精')], store=True,
|
||||||
string='组装后粗/中/精', default='3')
|
string='组装后粗/中/精', default='3',
|
||||||
|
compute='_compute_rota_tive')
|
||||||
after_assembly_max_lifetime_value = fields.Integer(string='组装后最大寿命值(min)', store=True,
|
after_assembly_max_lifetime_value = fields.Integer(string='组装后最大寿命值(min)', store=True,
|
||||||
compute='_compute_inventory_num')
|
compute='_compute_inventory_num')
|
||||||
after_assembly_alarm_value = fields.Integer(string='组装后报警值(min)')
|
after_assembly_alarm_value = fields.Integer(string='组装后报警值(min)')
|
||||||
@@ -645,7 +687,7 @@ class FunctionalToolAssembly(models.Model):
|
|||||||
compute='_compute_inventory_num')
|
compute='_compute_inventory_num')
|
||||||
after_assembly_handle_length = fields.Float(string='组装后刀柄长度(mm)', digits=(10, 3))
|
after_assembly_handle_length = fields.Float(string='组装后刀柄长度(mm)', digits=(10, 3))
|
||||||
after_assembly_functional_tool_length = fields.Float(string='组装后伸出长(mm)', digits=(10, 3), store=True,
|
after_assembly_functional_tool_length = fields.Float(string='组装后伸出长(mm)', digits=(10, 3), store=True,
|
||||||
compute='_compute_inventory_num')
|
compute='_compute_length')
|
||||||
after_assembly_effective_length = fields.Float(string='组装后有效长(mm)', readonly=True)
|
after_assembly_effective_length = fields.Float(string='组装后有效长(mm)', readonly=True)
|
||||||
L_D_number = fields.Float(string='L/D值(mm)', readonly=True)
|
L_D_number = fields.Float(string='L/D值(mm)', readonly=True)
|
||||||
hiding_length = fields.Float(string='避空长(mm)', readonly=True)
|
hiding_length = fields.Float(string='避空长(mm)', readonly=True)
|
||||||
@@ -659,12 +701,44 @@ class FunctionalToolAssembly(models.Model):
|
|||||||
sf_machine_table_tool_changing_apply_id = fields.Many2one('sf.machine.table.tool.changing.apply', '机床换刀申请',
|
sf_machine_table_tool_changing_apply_id = fields.Many2one('sf.machine.table.tool.changing.apply', '机床换刀申请',
|
||||||
readonly=True)
|
readonly=True)
|
||||||
sf_cam_work_order_program_knife_plan_id = fields.Many2one('sf.cam.work.order.program.knife.plan',
|
sf_cam_work_order_program_knife_plan_id = fields.Many2one('sf.cam.work.order.program.knife.plan',
|
||||||
'CAM工单程序用刀计划', readonly=True, )
|
'CAM工单程序用刀计划', readonly=True)
|
||||||
|
|
||||||
active = fields.Boolean(string='已归档', default=True)
|
active = fields.Boolean(string='已归档', default=True)
|
||||||
|
|
||||||
code = fields.Char('功能刀具编码', compute='_compute_code')
|
code = fields.Char('功能刀具编码', compute='_compute_code')
|
||||||
|
|
||||||
|
@api.depends('after_assembly_tool_loading_length', 'after_assembly_handle_length')
|
||||||
|
def _compute_length(self):
|
||||||
|
for item in self:
|
||||||
|
if item.assemble_status != '01':
|
||||||
|
return True
|
||||||
|
if item.after_assembly_tool_loading_length == 0:
|
||||||
|
raise ValidationError('【总长度】值为0,请重新测量!')
|
||||||
|
elif item.after_assembly_tool_loading_length > item.after_assembly_handle_length:
|
||||||
|
item.after_assembly_functional_tool_length = (
|
||||||
|
item.after_assembly_tool_loading_length - item.after_assembly_handle_length)
|
||||||
|
elif item.after_assembly_tool_loading_length < item.after_assembly_handle_length:
|
||||||
|
raise ValidationError('【总长度】不能小于【刀柄长度】')
|
||||||
|
|
||||||
|
@api.depends('integral_freight_barcode_id', 'blade_freight_barcode_id')
|
||||||
|
def _compute_rota_tive(self):
|
||||||
|
for item in self:
|
||||||
|
rota_tive_boolean = False
|
||||||
|
if item.integral_freight_barcode_id:
|
||||||
|
# 整体刀
|
||||||
|
if item.integral_freight_barcode_id.rotative_Boolean:
|
||||||
|
rota_tive_boolean = True
|
||||||
|
elif item.blade_freight_barcode_id:
|
||||||
|
# 刀片
|
||||||
|
if item.blade_freight_barcode_id.rotative_Boolean:
|
||||||
|
rota_tive_boolean = True
|
||||||
|
if rota_tive_boolean:
|
||||||
|
item.after_assembly_coarse_middle_thin = '1'
|
||||||
|
item.after_assembly_new_former = '1'
|
||||||
|
else:
|
||||||
|
item.after_assembly_coarse_middle_thin = '3'
|
||||||
|
item.after_assembly_new_former = '0'
|
||||||
|
|
||||||
@api.onchange('handle_product_id')
|
@api.onchange('handle_product_id')
|
||||||
def _onchange_after_assembly_handle_length(self):
|
def _onchange_after_assembly_handle_length(self):
|
||||||
for item in self:
|
for item in self:
|
||||||
@@ -724,7 +798,7 @@ class FunctionalToolAssembly(models.Model):
|
|||||||
|
|
||||||
def functional_tool_assembly(self):
|
def functional_tool_assembly(self):
|
||||||
"""
|
"""
|
||||||
功能刀具组装
|
功能刀具确认组装
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
logging.info('功能刀具开始组装!')
|
logging.info('功能刀具开始组装!')
|
||||||
@@ -777,6 +851,8 @@ class FunctionalToolAssembly(models.Model):
|
|||||||
"""
|
"""
|
||||||
功能刀具组装必填判断
|
功能刀具组装必填判断
|
||||||
"""
|
"""
|
||||||
|
# 物料准确性校验
|
||||||
|
|
||||||
# 物料必填校验
|
# 物料必填校验
|
||||||
if not self.handle_code_id:
|
if not self.handle_code_id:
|
||||||
raise ValidationError('缺少【刀柄】物料信息!')
|
raise ValidationError('缺少【刀柄】物料信息!')
|
||||||
@@ -790,8 +866,8 @@ class FunctionalToolAssembly(models.Model):
|
|||||||
raise ValidationError('组装参数信息【伸出长】不能为0!')
|
raise ValidationError('组装参数信息【伸出长】不能为0!')
|
||||||
if self.after_assembly_max_lifetime_value == 0:
|
if self.after_assembly_max_lifetime_value == 0:
|
||||||
raise ValidationError('组装参数信息【最大寿命值】不能为0!')
|
raise ValidationError('组装参数信息【最大寿命值】不能为0!')
|
||||||
if self.after_assembly_alarm_value == 0:
|
# if self.after_assembly_alarm_value == 0:
|
||||||
raise ValidationError('组装参数信息【报警值】不能为0!')
|
# raise ValidationError('组装参数信息【报警值】不能为0!')
|
||||||
# if self.after_assembly_effective_length == 0:
|
# if self.after_assembly_effective_length == 0:
|
||||||
# raise ValidationError('组装参数信息【有效长】不能为0!!!')
|
# raise ValidationError('组装参数信息【有效长】不能为0!!!')
|
||||||
# if self.hiding_length == 0:
|
# if self.hiding_length == 0:
|
||||||
|
|||||||
@@ -448,7 +448,11 @@
|
|||||||
<field name="machine_tool_name_id" optional="hide"/>
|
<field name="machine_tool_name_id" optional="hide"/>
|
||||||
<field name="applicant" optional="hide"/>
|
<field name="applicant" optional="hide"/>
|
||||||
<field name="apply_time"/>
|
<field name="apply_time"/>
|
||||||
<field name="assemble_status"/>
|
<field name="assemble_status" widget='badge'
|
||||||
|
decoration-info="assemble_status == '0'"
|
||||||
|
decoration-warning="assemble_status == '01'"
|
||||||
|
decoration-success="assemble_status == '1'"
|
||||||
|
/>
|
||||||
|
|
||||||
<!-- <field name="name" invisible="True"/>-->
|
<!-- <field name="name" invisible="True"/>-->
|
||||||
<!-- <field name="machine_tool_code" invisible="True"/>-->
|
<!-- <field name="machine_tool_code" invisible="True"/>-->
|
||||||
@@ -513,54 +517,7 @@
|
|||||||
</group>
|
</group>
|
||||||
<notebook>
|
<notebook>
|
||||||
<page string="组装信息">
|
<page string="组装信息">
|
||||||
<group col="1" attrs="{'invisible': [('assemble_status', '=', '0')]}">
|
<field name="_barcode_scanned" widget="barcode_handler"/>
|
||||||
<group col="1">
|
|
||||||
<group>
|
|
||||||
<group>
|
|
||||||
<field name="barcode_id" invisible="True"/>
|
|
||||||
<field name="rfid" string="功能刀具rfid"/>
|
|
||||||
<field name="code"/>
|
|
||||||
<field name="after_assembly_functional_tool_name"
|
|
||||||
string="功能刀具名称"/>
|
|
||||||
<field name="after_assembly_functional_tool_type_id"
|
|
||||||
string="功能刀具类型"/>
|
|
||||||
<field name="tool_groups_id"/>
|
|
||||||
<field name="after_assembly_whether_standard_knife"
|
|
||||||
string="是否标准刀"/>
|
|
||||||
<field name="after_assembly_coarse_middle_thin" string="粗/中/精"
|
|
||||||
attrs="{'readonly': [('assemble_status', 'in', ['1','2'])]}"/>
|
|
||||||
<field name="after_assembly_new_former" string="新/旧"
|
|
||||||
attrs="{'readonly': [('assemble_status', 'in', ['1','2'])]}"/>
|
|
||||||
<field name="cut_time"
|
|
||||||
attrs="{'invisible': [('after_assembly_new_former', '=', '0')]}"/>
|
|
||||||
<field name="cut_length"
|
|
||||||
attrs="{'invisible': [('after_assembly_new_former', '=', '0')]}"/>
|
|
||||||
<field name="cut_number"
|
|
||||||
attrs="{'invisible': [('after_assembly_new_former', '=', '0')]}"/>
|
|
||||||
</group>
|
|
||||||
<group>
|
|
||||||
<field name="after_assembly_functional_tool_diameter"
|
|
||||||
string="刀具直径(mm)"/>
|
|
||||||
<field name="after_assembly_knife_tip_r_angle" string="刀尖R角(mm)"/>
|
|
||||||
<field name="after_assembly_tool_loading_length" string="总长度(mm)"/>
|
|
||||||
<field name="after_assembly_handle_length" string="刀柄长度(mm)"
|
|
||||||
attrs="{'readonly': [('assemble_status', 'in', ['1','2'])]}"/>
|
|
||||||
<field name="after_assembly_functional_tool_length"
|
|
||||||
string="伸出长(mm)"/>
|
|
||||||
<field name="after_assembly_max_lifetime_value"
|
|
||||||
string="最大寿命值(min)"/>
|
|
||||||
<field name="after_assembly_alarm_value" string="报警值(min)"
|
|
||||||
attrs="{'readonly': [('assemble_status', 'in', ['1','2'])]}"/>
|
|
||||||
<field name="after_assembly_used_value" string="已使用值(min)"
|
|
||||||
invisible="1"/>
|
|
||||||
<field name="after_assembly_effective_length" string="有效长(mm)"
|
|
||||||
invisible="1"/>
|
|
||||||
<field name="L_D_number" invisible="1"/>
|
|
||||||
<field name="hiding_length" invisible="1"/>
|
|
||||||
</group>
|
|
||||||
</group>
|
|
||||||
</group>
|
|
||||||
</group>
|
|
||||||
<group attrs="{'invisible': [('assemble_status', '=', '0')]}">
|
<group attrs="{'invisible': [('assemble_status', '=', '0')]}">
|
||||||
<group col="1">
|
<group col="1">
|
||||||
<div>
|
<div>
|
||||||
@@ -641,17 +598,15 @@
|
|||||||
<separator string="刀杆:" style="font-size: 13px;"/>
|
<separator string="刀杆:" style="font-size: 13px;"/>
|
||||||
</div>
|
</div>
|
||||||
<group>
|
<group>
|
||||||
<group>
|
<field name="bar_freight_barcode_id" string="货位"
|
||||||
<field name="bar_freight_barcode_id" string="货位"
|
attrs="{'readonly': [('assemble_status', 'in', ['1','2'])]}"/>
|
||||||
attrs="{'readonly': [('assemble_status', 'in', ['1','2'])]}"/>
|
<field name="bar_freight_lot_id" string="批次"
|
||||||
<field name="bar_freight_lot_id" string="批次"
|
attrs="{'readonly': [('assemble_status', 'in', ['1','2'])]}"/>
|
||||||
attrs="{'readonly': [('assemble_status', 'in', ['1','2'])]}"/>
|
<field name="bar_lot_id" invisible="1"/>
|
||||||
<field name="bar_lot_id" invisible="1"/>
|
<field name="bar_product_id" string="名称"/>
|
||||||
<field name="bar_product_id" string="名称"/>
|
<field name="cutting_tool_cutterbar_model_id" string="型号"/>
|
||||||
<field name="cutting_tool_cutterbar_model_id" string="型号"/>
|
<field name="bar_specification_id" string="规格"/>
|
||||||
<field name="bar_specification_id" string="规格"/>
|
<field name="sf_tool_brand_id_3" string="品牌"/>
|
||||||
<field name="sf_tool_brand_id_3" string="品牌"/>
|
|
||||||
</group>
|
|
||||||
</group>
|
</group>
|
||||||
</group>
|
</group>
|
||||||
<group col="1"
|
<group col="1"
|
||||||
@@ -675,6 +630,59 @@
|
|||||||
</group>
|
</group>
|
||||||
</group>
|
</group>
|
||||||
</group>
|
</group>
|
||||||
|
<group col="1" attrs="{'invisible': [('assemble_status', '=', '0')]}">
|
||||||
|
<group col="1">
|
||||||
|
<group string="组装参数信息">
|
||||||
|
<group>
|
||||||
|
<field name="barcode_id" invisible="True"/>
|
||||||
|
<field name="rfid" string="功能刀具rfid"/>
|
||||||
|
<field name="code"/>
|
||||||
|
<field name="after_assembly_functional_tool_name"
|
||||||
|
string="功能刀具名称"/>
|
||||||
|
<field name="after_assembly_functional_tool_type_id"
|
||||||
|
string="功能刀具类型"/>
|
||||||
|
<field name="tool_groups_id"/>
|
||||||
|
<field name="after_assembly_whether_standard_knife"
|
||||||
|
string="是否标准刀" invisible="1"/>
|
||||||
|
<field name="after_assembly_coarse_middle_thin" string="粗/中/精"
|
||||||
|
attrs="{'readonly': [('assemble_status', 'in', ['1','2'])]}"/>
|
||||||
|
<field name="after_assembly_new_former" string="新/旧"
|
||||||
|
attrs="{'readonly': [('assemble_status', 'in', ['1','2'])]}"/>
|
||||||
|
<field name="cut_time"
|
||||||
|
attrs="{'invisible': [('after_assembly_new_former', '=', '0')]}"/>
|
||||||
|
<field name="cut_length"
|
||||||
|
attrs="{'invisible': [('after_assembly_new_former', '=', '0')]}"/>
|
||||||
|
<field name="cut_number"
|
||||||
|
attrs="{'invisible': [('after_assembly_new_former', '=', '0')]}"/>
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
|
<field name="after_assembly_functional_tool_diameter" readonly="0"
|
||||||
|
string="刀具直径(mm)"
|
||||||
|
attrs="{'readonly': [('assemble_status', 'in', ['1','2'])]}"/>
|
||||||
|
<field name="after_assembly_knife_tip_r_angle" readonly="0"
|
||||||
|
string="刀尖R角(mm)"
|
||||||
|
attrs="{'readonly': [('assemble_status', 'in', ['1','2'])]}"/>
|
||||||
|
<field name="after_assembly_tool_loading_length" readonly="0"
|
||||||
|
string="总长度(mm)"
|
||||||
|
attrs="{'readonly': [('assemble_status', 'in', ['1','2'])]}"/>
|
||||||
|
<field name="after_assembly_handle_length" string="刀柄长度(mm)"
|
||||||
|
attrs="{'readonly': [('assemble_status', 'in', ['1','2'])]}"/>
|
||||||
|
<field name="after_assembly_functional_tool_length"
|
||||||
|
string="伸出长(mm)"/>
|
||||||
|
<field name="after_assembly_max_lifetime_value"
|
||||||
|
string="最大寿命值(min)"/>
|
||||||
|
<field name="after_assembly_alarm_value" string="报警值(min)"
|
||||||
|
invisible="1"/>
|
||||||
|
<field name="after_assembly_used_value" string="已使用值(min)"
|
||||||
|
invisible="1"/>
|
||||||
|
<field name="after_assembly_effective_length" string="有效长(mm)"
|
||||||
|
invisible="1"/>
|
||||||
|
<field name="L_D_number" invisible="1"/>
|
||||||
|
<field name="hiding_length" invisible="1"/>
|
||||||
|
</group>
|
||||||
|
</group>
|
||||||
|
</group>
|
||||||
|
</group>
|
||||||
</page>
|
</page>
|
||||||
<page string="装刀信息">
|
<page string="装刀信息">
|
||||||
<group>
|
<group>
|
||||||
@@ -734,10 +742,8 @@
|
|||||||
<field name="code" string="功能刀具编码"/>
|
<field name="code" string="功能刀具编码"/>
|
||||||
<field name="barcode_id"/>
|
<field name="barcode_id"/>
|
||||||
|
|
||||||
<filter name="no_assemble_status" string="未组装"
|
<filter name="no_assemble_status" string="未组装" domain="[('assemble_status', 'in', ['0','01'])]"/>
|
||||||
domain="[('assemble_status', 'in', ['0', '01'])]"/>
|
|
||||||
<filter name="yes_assemble_status" string="已组装" domain="[('assemble_status', '=', '1')]"/>
|
<filter name="yes_assemble_status" string="已组装" domain="[('assemble_status', '=', '1')]"/>
|
||||||
<filter name="cancel_assemble_status" string="已取消" domain="[('assemble_status', '=', '3')]"/>
|
|
||||||
<separator/>
|
<separator/>
|
||||||
<filter string="已归档" name="inactive" domain="[('active', '=', False)]"/>
|
<filter string="已归档" name="inactive" domain="[('active', '=', False)]"/>
|
||||||
<searchpanel>
|
<searchpanel>
|
||||||
|
|||||||
Reference in New Issue
Block a user