Merge branch 'feature/修改刀具标准库部分字段类型' into develop

This commit is contained in:
jinling.yang
2023-11-28 17:14:51 +08:00
11 changed files with 91 additions and 87 deletions

View File

@@ -76,21 +76,20 @@ class CuttingToolModel(models.Model):
integral_run_out_accuracy_max = fields.Char('整体式刀具端跳精度max') integral_run_out_accuracy_max = fields.Char('整体式刀具端跳精度max')
integral_run_out_accuracy_min = fields.Char('整体式刀具端跳精度min') integral_run_out_accuracy_min = fields.Char('整体式刀具端跳精度min')
fit_blade_shape_id = fields.Many2many('maintenance.equipment.image', 'fit_blade_shape_library_rel', fit_blade_shape_id = fields.Many2one('maintenance.equipment.image',
'适配刀片形状', domain=[('type', '=', '刀片形状')]) '适配刀片形状', domain=[('type', '=', '刀片形状')])
suitable_machining_method_ids = fields.Many2many('maintenance.equipment.image', suitable_machining_method_ids = fields.Many2many('maintenance.equipment.image',
'suitable_machining_method_library_rel', 'suitable_machining_method_library_rel',
'适合加工方式', domain=[('type', '=', '加工能力')]) '适合加工方式', domain=[('type', '=', '加工能力')])
blade_tip_characteristics_id = fields.Many2many('maintenance.equipment.image', blade_tip_characteristics_id = fields.Many2one('maintenance.equipment.image',
'blade_tip_character_library_rel',
'刀尖特征', domain=[('type', '=', '刀尖特征')]) '刀尖特征', domain=[('type', '=', '刀尖特征')])
handle_type_ids = fields.Many2many('maintenance.equipment.image', 'handle_type_library_rel', handle_type_id = fields.Many2one('maintenance.equipment.image',
'柄部类型', domain=[('type', '=', '柄部类型')]) '柄部类型', domain=[('type', '=', '柄部类型')])
cutting_direction_ids = fields.Many2many('maintenance.equipment.image', 'cutting_direction_library_rel', cutting_direction_ids = fields.Many2many('maintenance.equipment.image', 'cutting_direction_library_rel',
'走刀方向', domain=[('type', '=', '走刀方向')]) '走刀方向', domain=[('type', '=', '走刀方向')])
suitable_coolant_ids = fields.Many2many('maintenance.equipment.image', 'suitable_coolant_library_rel', suitable_coolant_ids = fields.Many2many('maintenance.equipment.image', 'suitable_coolant_library_rel',
'适合冷却液', domain=[('type', '=', '冷却液')]) '适合冷却液', domain=[('type', '=', '冷却液')])
compaction_way_ids = fields.Many2many('maintenance.equipment.image', 'compaction_way_library_rel', compaction_way_id = fields.Many2one('maintenance.equipment.image',
'压紧方式', domain=[('type', '=', '压紧方式')]) '压紧方式', domain=[('type', '=', '压紧方式')])
integral_tool_basic_parameters_ids = fields.One2many('sf.tool.materials.basic.parameters', integral_tool_basic_parameters_ids = fields.One2many('sf.tool.materials.basic.parameters',
'standard_library_id', string='整体式刀具基本参数') 'standard_library_id', string='整体式刀具基本参数')
@@ -218,3 +217,16 @@ class MaintenanceStandardImage(models.Model):
new_res.append([id, name, data_uri]) new_res.append([id, name, data_uri])
# 返回新的结果列表 # 返回新的结果列表
return new_res return new_res
@api.model
def search_read(self, domain=None, fields=None, offset=0, limit=None, order=None):
# 调用原生的search_read方法获取记录
records = super(MaintenanceStandardImage, self).search_read(domain, fields, offset, limit, order)
# 遍历每条记录添加image数据
for record in records:
image_field = self.browse(record['id']).image
if image_field:
record['image'] = f"data:image/png;base64,{image_field.decode('utf-8')}"
else:
record['image'] = ""
return records

View File

@@ -170,7 +170,7 @@
</group> </group>
<group string="适配刀片形状" <group string="适配刀片形状"
attrs="{'invisible': [('cutting_tool_type', 'in', ('刀柄','夹头','整体式刀具',False))]}"> attrs="{'invisible': [('cutting_tool_type', 'in', ('刀柄','夹头','整体式刀具',False))]}">
<field name="fit_blade_shape_id" string="" widget="custom_many2many_checkboxes"/> <field name="fit_blade_shape_id" string="" widget="many2one_radio"/>
</group> </group>
<group string="适合加工方式" <group string="适合加工方式"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀杆','刀盘','刀片'))]}"> attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀杆','刀盘','刀片'))]}">
@@ -180,15 +180,15 @@
<group string="刀尖特征" <group string="刀尖特征"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀杆','刀盘','刀片'))]}"> attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀杆','刀盘','刀片'))]}">
<field name="blade_tip_characteristics_id" string="" <field name="blade_tip_characteristics_id" string=""
widget="custom_many2many_checkboxes"/> widget="many2one_radio"/>
</group> </group>
<group attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀杆','刀盘','刀片'))]}"> <group attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀杆','刀盘','刀片'))]}">
<group string="柄部类型" attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')]}"> <group string="柄部类型" attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')]}">
<field name="handle_type_ids" string="" widget="custom_many2many_checkboxes"/> <field name="handle_type_id" string="" widget="many2one_radio"/>
</group> </group>
<group string="压紧方式" <group string="压紧方式"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀杆','刀盘'))]}"> attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀杆','刀盘'))]}">
<field name="compaction_way_ids" string="" widget="custom_many2many_checkboxes"/> <field name="compaction_way_id" string="" widget="many2one_radio"/>
</group> </group>
</group> </group>
<group attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀杆','刀盘','刀片'))]}"> <group attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀杆','刀盘','刀片'))]}">

View File

@@ -390,7 +390,7 @@
</group> </group>
<group string="适配刀片形状" <group string="适配刀片形状"
attrs="{'invisible': [('cutting_tool_type', 'in', ('刀柄','夹头','整体式刀具',False))]}"> attrs="{'invisible': [('cutting_tool_type', 'in', ('刀柄','夹头','整体式刀具',False))]}">
<field name="fit_blade_shape_id" string="" widget="custom_many2many_checkboxes"/> <field name="fit_blade_shape_id" string="" widget="many2one_radio"/>
</group> </group>
<group string="适合加工方式" <group string="适合加工方式"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀杆','刀盘','刀片'))]}"> attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀杆','刀盘','刀片'))]}">
@@ -400,16 +400,16 @@
<group string="刀尖特征" <group string="刀尖特征"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀杆','刀盘','刀片'))]}"> attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀杆','刀盘','刀片'))]}">
<field name="blade_tip_characteristics_id" string="" <field name="blade_tip_characteristics_id" string=""
widget="custom_many2many_checkboxes"/> widget="many2one_radio"/>
</group> </group>
<group attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀杆','刀盘','刀片'))]}"> <group attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀杆','刀盘','刀片'))]}">
<group string="柄部类型" <group string="柄部类型"
attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')]}"> attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')]}">
<field name="handle_type_ids" string="" widget="custom_many2many_checkboxes"/> <field name="handle_type_id" string="" widget="many2one_radio"/>
</group> </group>
<group string="压紧方式" <group string="压紧方式"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀杆','刀盘'))]}"> attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀杆','刀盘'))]}">
<field name="compaction_way_ids" string="" widget="custom_many2many_checkboxes"/> <field name="compaction_way_id" string="" widget="many2one_radio"/>
</group> </group>
</group> </group>
<group attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀杆','刀盘','刀片'))]}"> <group attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀杆','刀盘','刀片'))]}">

View File

@@ -87,21 +87,19 @@ class ResProductMo(models.Model):
cutting_tool_run_out_accuracy_max = fields.Float('端跳精度max', digits=(6, 1)) cutting_tool_run_out_accuracy_max = fields.Float('端跳精度max', digits=(6, 1))
cutting_tool_run_out_accuracy_min = fields.Float('端跳精度min', digits=(6, 1)) cutting_tool_run_out_accuracy_min = fields.Float('端跳精度min', digits=(6, 1))
cutting_tool_blade_tip_working_size = fields.Char('刀尖处理尺寸(R半径mm/倒角)', size=20) cutting_tool_blade_tip_working_size = fields.Char('刀尖处理尺寸(R半径mm/倒角)', size=20)
fit_blade_shape_id = fields.Many2many('maintenance.equipment.image', 'rel_fit_blade_shape_product_template', fit_blade_shape_id = fields.Many2one('maintenance.equipment.image',
'适配刀片形状', domain=[('type', '=', '刀片形状')]) '适配刀片形状', domain=[('type', '=', '刀片形状')])
suitable_machining_method_ids = fields.Many2many('maintenance.equipment.image', suitable_machining_method_ids = fields.Many2many('maintenance.equipment.image',
'rel_machining_product_template', '适合加工方式', 'rel_machining_product_template', '适合加工方式',
domain=[('type', '=', '加工能力')]) domain=[('type', '=', '加工能力')])
blade_tip_characteristics_id = fields.Many2many('maintenance.equipment.image', blade_tip_characteristics_id = fields.Many2one('maintenance.equipment.image', '刀尖特征',
'rel_blade_tip_product_template', '刀尖特征',
domain=[('type', '=', '刀尖特征')]) domain=[('type', '=', '刀尖特征')])
handle_type_ids = fields.Many2many('maintenance.equipment.image', 'rel_handle_product_template', '柄部类型', handle_type_id = fields.Many2one('maintenance.equipment.image', '柄部类型',domain=[('type', '=', '柄部类型')])
domain=[('type', '=', '柄部类型')])
cutting_direction_ids = fields.Many2many('maintenance.equipment.image', 'rel_cutting_product_template', cutting_direction_ids = fields.Many2many('maintenance.equipment.image', 'rel_cutting_product_template',
'走刀方向', domain=[('type', '=', '走刀方向')]) '走刀方向', domain=[('type', '=', '走刀方向')])
suitable_coolant_ids = fields.Many2many('maintenance.equipment.image', 'rel_coolant_product_template', suitable_coolant_ids = fields.Many2many('maintenance.equipment.image', 'rel_coolant_product_template',
'适合冷却液', domain=[('type', '=', '冷却液')]) '适合冷却液', domain=[('type', '=', '冷却液')])
compaction_way_ids = fields.Many2many('maintenance.equipment.image', 'rel_compaction_product_template', compaction_way_id = fields.Many2one('maintenance.equipment.image',
'压紧方式', domain=[('type', '=', '压紧方式')]) '压紧方式', domain=[('type', '=', '压紧方式')])
@api.onchange('cutting_tool_material_id') @api.onchange('cutting_tool_material_id')
@@ -141,10 +139,10 @@ class ResProductMo(models.Model):
item.fit_blade_shape_id = False item.fit_blade_shape_id = False
item.suitable_machining_method_ids = False item.suitable_machining_method_ids = False
item.blade_tip_characteristics_id = False item.blade_tip_characteristics_id = False
item.handle_type_ids = False item.handle_type_id = False
item.cutting_direction_ids = False item.cutting_direction_ids = False
item.suitable_coolant_ids = False item.suitable_coolant_ids = False
item.compaction_way_ids = False item.compaction_way_id = False
item.cutting_speed_ids = False item.cutting_speed_ids = False
item.feed_per_tooth_ids = False item.feed_per_tooth_ids = False
@@ -288,13 +286,9 @@ class ResProductMo(models.Model):
self.suitable_machining_method_ids = [(6, 0, [])] if not \ self.suitable_machining_method_ids = [(6, 0, [])] if not \
self.cutting_tool_model_id.suitable_machining_method_ids \ self.cutting_tool_model_id.suitable_machining_method_ids \
else [(6, 0, self.cutting_tool_model_id.suitable_machining_method_ids.ids)] else [(6, 0, self.cutting_tool_model_id.suitable_machining_method_ids.ids)]
self.blade_tip_characteristics_id = [(6, 0, [])] if not \ self.blade_tip_characteristics_id = self.cutting_tool_model_id.blade_tip_characteristics_id.id
self.cutting_tool_model_id.blade_tip_characteristics_id \
else [(6, 0, self.cutting_tool_model_id.blade_tip_characteristics_id.ids)]
self.handle_type_ids = [(6, 0, self.handle_type_id = self.cutting_tool_model_id.handle_type_id.id
[])] if not self.cutting_tool_model_id.handle_type_ids else [
(6, 0, self.cutting_tool_model_id.handle_type_ids.ids)]
self.cutting_direction_ids = [(6, 0, self.cutting_direction_ids = [(6, 0,
[])] if not self.cutting_tool_model_id.cutting_direction_ids else [ [])] if not self.cutting_tool_model_id.cutting_direction_ids else [
@@ -303,9 +297,8 @@ class ResProductMo(models.Model):
self.suitable_coolant_ids = [(6, 0, self.suitable_coolant_ids = [(6, 0,
[])] if not self.cutting_tool_model_id.suitable_coolant_ids else [ [])] if not self.cutting_tool_model_id.suitable_coolant_ids else [
(6, 0, self.cutting_tool_model_id.suitable_coolant_ids.ids)] (6, 0, self.cutting_tool_model_id.suitable_coolant_ids.ids)]
self.compaction_way_ids = [(6, 0, self.compaction_way_id = self.cutting_tool_model_id.compaction_way_id.id
[])] if not self.cutting_tool_model_id.compaction_way_ids else [ self.fit_blade_shape_id = self.cutting_tool_model_id.fit_blade_shape_id.id
(6, 0, self.cutting_tool_model_id.compaction_way_ids.ids)]
else: else:
self.cutting_tool_type_id = False self.cutting_tool_type_id = False
self.brand_id = False self.brand_id = False
@@ -338,28 +331,28 @@ class ResProductMo(models.Model):
self.fit_blade_shape_id = False self.fit_blade_shape_id = False
self.suitable_machining_method_ids = False self.suitable_machining_method_ids = False
self.blade_tip_characteristics_id = False self.blade_tip_characteristics_id = False
self.handle_type_ids = False self.handle_type_id = False
self.cutting_direction_ids = False self.cutting_direction_ids = False
self.suitable_coolant_ids = False self.suitable_coolant_ids = False
self.compaction_way_ids = False self.compaction_way_id = False
self.cutting_speed_ids = False self.cutting_speed_ids = False
self.feed_per_tooth_ids = False self.feed_per_tooth_ids = False
@api.constrains('fit_blade_shape_id', 'suitable_machining_method_ids', 'blade_tip_characteristics_id', @api.constrains('fit_blade_shape_id', 'suitable_machining_method_ids', 'blade_tip_characteristics_id',
'handle_type_ids', 'cutting_direction_ids', 'suitable_coolant_ids', 'compaction_way_ids') 'handle_type_id', 'cutting_direction_ids', 'suitable_coolant_ids', 'compaction_way_id')
def _check_cutting_tool_ability(self): def _check_cutting_tool_ability(self):
if self.cutting_tool_type in ['整体式刀具', '刀片', '刀杆', '刀盘']: if self.cutting_tool_type in ['整体式刀具', '刀片', '刀杆', '刀盘']:
if self.cutting_tool_type in ['刀片', '刀杆', '刀盘']: if self.cutting_tool_type in ['刀片', '刀杆', '刀盘']:
if not self.fit_blade_shape_id: if not self.fit_blade_shape_id:
raise ValidationError("请选择适配刀片形状") raise ValidationError("请选择适配刀片形状")
if self.cutting_tool_type in ['刀杆', '刀盘']: if self.cutting_tool_type in ['刀杆', '刀盘']:
if not self.compaction_way_ids: if not self.compaction_way_id:
raise ValidationError("请选择压紧方式") raise ValidationError("请选择压紧方式")
if self.cutting_tool_type == '刀片': if self.cutting_tool_type == '刀片':
if not self.suitable_coolant_ids: if not self.suitable_coolant_ids:
raise ValidationError("请选择适合冷却液") raise ValidationError("请选择适合冷却液")
elif self.cutting_tool_type == '整体式刀具': elif self.cutting_tool_type == '整体式刀具':
if not self.handle_type_ids: if not self.handle_type_id:
raise ValidationError("请选择柄部类型") raise ValidationError("请选择柄部类型")
if not self.suitable_coolant_ids: if not self.suitable_coolant_ids:
raise ValidationError("请选择适合冷却液") raise ValidationError("请选择适合冷却液")

View File

@@ -1,9 +1,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import logging
import json import json
import base64 import base64
import logging
import os
from datetime import date, timedelta
from odoo import http from odoo import http
from odoo.http import request from odoo.http import request

View File

@@ -1800,6 +1800,7 @@ class Cutting_tool_standard_library(models.Model):
for feed_per_tooth_4_item in item['feed_per_tooth_4']: for feed_per_tooth_4_item in item['feed_per_tooth_4']:
feed_per_tooth_4_list.append( feed_per_tooth_4_list.append(
self.env['sf.feed.per.tooth']._json_feed_per_tooth(feed_per_tooth_4_item)) self.env['sf.feed.per.tooth']._json_feed_per_tooth(feed_per_tooth_4_item))
if not cutting_tool_standard_library: if not cutting_tool_standard_library:
self.create({ self.create({
"code": item['code'].replace("JKM", result['factory_short_name']), "code": item['code'].replace("JKM", result['factory_short_name']),
@@ -1820,21 +1821,22 @@ class Cutting_tool_standard_library(models.Model):
"cutter_pad_ids": [(6, 0, [])] if not item.get('cutter_pad_codes') else self.env[ "cutter_pad_ids": [(6, 0, [])] if not item.get('cutter_pad_codes') else self.env[
'sf.cutting_tool.standard.library']._get_ids(item['cutter_pad_codes'], 'sf.cutting_tool.standard.library']._get_ids(item['cutter_pad_codes'],
result['factory_short_name']), result['factory_short_name']),
"fit_blade_shape_id": [(6, 0, [])] if not item.get('fit_blade_shape') else self.env[ "fit_blade_shape_id": False if not item['fit_blade_shape'] else self.env[
'maintenance.equipment.image']._get_ids(item['fit_blade_shape']), 'maintenance.equipment.image'].search(
[('name', '=', item['fit_blade_shape'])]).id,
"suitable_machining_method_ids": [(6, 0, [])] if not item.get( "suitable_machining_method_ids": [(6, 0, [])] if not item.get(
'suitable_machining_methods') else self.env['maintenance.equipment.image']._get_ids( 'suitable_machining_methods') else self.env['maintenance.equipment.image']._get_ids(
item['suitable_machining_methods']), item['suitable_machining_methods']),
"blade_tip_characteristics_id": [(6, 0, [])] if not item.get('blade_tip_characteristics') else "blade_tip_characteristics_id": self.env['maintenance.equipment.image'].search(
self.env['maintenance.equipment.image']._get_ids(item['blade_tip_characteristics']), [('name', '=', item['blade_tip_characteristics'])]).id,
"handle_type_ids": [(6, 0, [])] if not item.get('handle_type') else self.env[ "handle_type_id": self.env['maintenance.equipment.image'].search(
'maintenance.equipment.image']._get_ids(item['handle_type']), [('name', '=', item['handle_type'])]).id,
"cutting_direction_ids": [(6, 0, [])] if not item.get('cutting_direction') else self.env[ "cutting_direction_ids": [(6, 0, [])] if not item.get('cutting_direction') else self.env[
'maintenance.equipment.image']._get_ids(item['cutting_direction']), 'maintenance.equipment.image']._get_ids(item['cutting_direction']),
"suitable_coolant_ids": [(6, 0, [])] if not item.get('suitable_coolant') else self.env[ "suitable_coolant_ids": [(6, 0, [])] if not item.get('suitable_coolant') else self.env[
'maintenance.equipment.image']._get_ids(item['suitable_coolant']), 'maintenance.equipment.image']._get_ids(item['suitable_coolant']),
"compaction_way_ids": [(6, 0, [])] if not item.get('compaction_way') else self.env[ "compaction_way_id": self.env['maintenance.equipment.image'].search(
'maintenance.equipment.image']._get_ids(item['compaction_way']), [('name', '=', item['compaction_way'])]).id,
"integral_tool_basic_parameters_ids": integral_tool_basic_param_list, "integral_tool_basic_parameters_ids": integral_tool_basic_param_list,
"blade_basic_parameters_ids": blade_basic_param_list, "blade_basic_parameters_ids": blade_basic_param_list,
"cutter_bar_basic_parameters_ids": cutter_arbor_basic_param_list, "cutter_bar_basic_parameters_ids": cutter_arbor_basic_param_list,
@@ -1868,21 +1870,22 @@ class Cutting_tool_standard_library(models.Model):
"cutter_pad_ids": [(6, 0, [])] if not item.get('cutter_pad_codes') else self.env[ "cutter_pad_ids": [(6, 0, [])] if not item.get('cutter_pad_codes') else self.env[
'sf.cutting_tool.standard.library']._get_ids(item['cutter_pad_codes'], 'sf.cutting_tool.standard.library']._get_ids(item['cutter_pad_codes'],
result['factory_short_name']), result['factory_short_name']),
"fit_blade_shape_id": [(6, 0, [])] if not item.get('fit_blade_shape') else self.env[ "fit_blade_shape_id": False if not item['fit_blade_shape'] else self.env[
'maintenance.equipment.image']._get_ids(item['fit_blade_shape']), 'maintenance.equipment.image'].search(
[('name', '=', item['fit_blade_shape'])]).id,
"suitable_machining_method_ids": [(6, 0, [])] if not item.get( "suitable_machining_method_ids": [(6, 0, [])] if not item.get(
'suitable_machining_methods') else self.env['maintenance.equipment.image']._get_ids( 'suitable_machining_methods') else self.env['maintenance.equipment.image']._get_ids(
item['suitable_machining_methods']), item['suitable_machining_methods']),
"blade_tip_characteristics_id": [(6, 0, [])] if not item.get('blade_tip_characteristics') else "blade_tip_characteristics_id": self.env['maintenance.equipment.image'].search(
self.env['maintenance.equipment.image']._get_ids(item['blade_tip_characteristics']), [('name', '=', item['blade_tip_characteristics'])]).id,
"handle_type_ids": [(6, 0, [])] if not item.get('handle_type') else self.env[ "handle_type_id": self.env['maintenance.equipment.image'].search(
'maintenance.equipment.image']._get_ids(item['handle_type']), [('name', '=', item['handle_type'])]).id,
"cutting_direction_ids": [(6, 0, [])] if not item.get('cutting_direction') else self.env[ "cutting_direction_ids": [(6, 0, [])] if not item.get('cutting_direction') else self.env[
'maintenance.equipment.image']._get_ids(item['cutting_direction']), 'maintenance.equipment.image']._get_ids(item['cutting_direction']),
"suitable_coolant_ids": [(6, 0, [])] if not item.get('suitable_coolant') else self.env[ "suitable_coolant_ids": [(6, 0, [])] if not item.get('suitable_coolant') else self.env[
'maintenance.equipment.image']._get_ids(item['suitable_coolant']), 'maintenance.equipment.image']._get_ids(item['suitable_coolant']),
"compaction_way_ids": [(6, 0, [])] if not item.get('compaction_way') else self.env[ "compaction_way_id": self.env['maintenance.equipment.image'].search(
'maintenance.equipment.image']._get_ids(item['compaction_way']), [('name', '=', item['compaction_way'])]).id,
"integral_tool_basic_parameters_ids": integral_tool_basic_param_list, "integral_tool_basic_parameters_ids": integral_tool_basic_param_list,
"blade_basic_parameters_ids": blade_basic_param_list, "blade_basic_parameters_ids": blade_basic_param_list,
"cutter_bar_basic_parameters_ids": cutter_arbor_basic_param_list, "cutter_bar_basic_parameters_ids": cutter_arbor_basic_param_list,
@@ -1985,21 +1988,22 @@ class Cutting_tool_standard_library(models.Model):
"cutter_pad_ids": [(6, 0, [])] if not item.get('cutter_pad_codes') else self.env[ "cutter_pad_ids": [(6, 0, [])] if not item.get('cutter_pad_codes') else self.env[
'sf.cutting_tool.standard.library']._get_ids(item['cutter_pad_codes'], 'sf.cutting_tool.standard.library']._get_ids(item['cutter_pad_codes'],
result['factory_short_name']), result['factory_short_name']),
"fit_blade_shape_id": [(6, 0, [])] if not item.get('fit_blade_shape') else self.env[ "fit_blade_shape_id": False if not item['fit_blade_shape'] else self.env[
'maintenance.equipment.image']._get_ids(item['fit_blade_shape']), 'maintenance.equipment.image'].search(
[('name', '=', item['fit_blade_shape'])]).id,
"suitable_machining_method_ids": [(6, 0, [])] if not item.get( "suitable_machining_method_ids": [(6, 0, [])] if not item.get(
'suitable_machining_method') else self.env['maintenance.equipment.image']._get_ids( 'suitable_machining_method') else self.env['maintenance.equipment.image']._get_ids(
item['suitable_machining_method']), item['suitable_machining_method']),
"blade_tip_characteristics_id": [(6, 0, [])] if not item.get('blade_tip_characteristics') else "blade_tip_characteristics_id": self.env['maintenance.equipment.image'].search(
self.env['maintenance.equipment.image']._get_ids(item['blade_tip_characteristics']), [('name', '=', item['blade_tip_characteristics'])]).id,
"handle_type_ids": [(6, 0, [])] if not item.get('handle_type') else self.env[ "handle_type_id": self.env['maintenance.equipment.image'].search(
'maintenance.equipment.image']._get_ids(item['handle_type']), [('name', '=', item['handle_type'])]).id,
"cutting_direction_ids": [(6, 0, [])] if not item.get('cutting_direction') else self.env[ "cutting_direction_ids": [(6, 0, [])] if not item.get('cutting_direction') else self.env[
'maintenance.equipment.image']._get_ids(item['cutting_direction']), 'maintenance.equipment.image']._get_ids(item['cutting_direction']),
"suitable_coolant_ids": [(6, 0, [])] if not item.get('suitable_coolant') else self.env[ "suitable_coolant_ids": [(6, 0, [])] if not item.get('suitable_coolant') else self.env[
'maintenance.equipment.image']._get_ids(item['suitable_coolant']), 'maintenance.equipment.image']._get_ids(item['suitable_coolant']),
"compaction_way_ids": [(6, 0, [])] if not item.get('compaction_way') else self.env[ "compaction_way_id": self.env['maintenance.equipment.image'].search(
'maintenance.equipment.image']._get_ids(item['compaction_way']), [('name', '=', item['compaction_way'])]).id,
"integral_tool_basic_parameters_ids": integral_tool_basic_param_list, "integral_tool_basic_parameters_ids": integral_tool_basic_param_list,
"blade_basic_parameters_ids": blade_basic_param_list, "blade_basic_parameters_ids": blade_basic_param_list,
"cutter_bar_basic_parameters_ids": cutter_arbor_basic_param_list, "cutter_bar_basic_parameters_ids": cutter_arbor_basic_param_list,
@@ -2033,21 +2037,22 @@ class Cutting_tool_standard_library(models.Model):
"cutter_pad_ids": [(6, 0, [])] if not item.get('cutter_pad_codes') else self.env[ "cutter_pad_ids": [(6, 0, [])] if not item.get('cutter_pad_codes') else self.env[
'sf.cutting_tool.standard.library']._get_ids(item['cutter_pad_codes'], 'sf.cutting_tool.standard.library']._get_ids(item['cutter_pad_codes'],
result['factory_short_name']), result['factory_short_name']),
"fit_blade_shape_id": [(6, 0, [])] if not item.get('fit_blade_shape') else self.env[ "fit_blade_shape_id": False if not item['fit_blade_shape'] else self.env[
'maintenance.equipment.image']._get_ids(item['fit_blade_shape']), 'maintenance.equipment.image'].search(
[('name', '=', item['fit_blade_shape'])]).id,
"suitable_machining_method_ids": [(6, 0, [])] if not item.get( "suitable_machining_method_ids": [(6, 0, [])] if not item.get(
'suitable_machining_methods') else self.env['maintenance.equipment.image']._get_ids( 'suitable_machining_methods') else self.env['maintenance.equipment.image']._get_ids(
item['suitable_machining_methods']), item['suitable_machining_methods']),
"blade_tip_characteristics_id": [(6, 0, [])] if not item.get('blade_tip_characteristics') else "blade_tip_characteristics_id": self.env['maintenance.equipment.image'].search(
self.env['maintenance.equipment.image']._get_ids(item['blade_tip_characteristics']), [('name', '=', item['blade_tip_characteristics'])]).id,
"handle_type_ids": [(6, 0, [])] if not item.get('handle_type') else self.env[ "handle_type_id": self.env['maintenance.equipment.image'].search(
'maintenance.equipment.image']._get_ids(item['handle_type']), [('name', '=', item['handle_type'])]).id,
"cutting_direction_ids": [(6, 0, [])] if not item.get('cutting_direction') else self.env[ "cutting_direction_ids": [(6, 0, [])] if not item.get('cutting_direction') else self.env[
'maintenance.equipment.image']._get_ids(item['cutting_direction']), 'maintenance.equipment.image']._get_ids(item['cutting_direction']),
"suitable_coolant_ids": [(6, 0, [])] if not item.get('suitable_coolant') else self.env[ "suitable_coolant_ids": [(6, 0, [])] if not item.get('suitable_coolant') else self.env[
'maintenance.equipment.image']._get_ids(item['suitable_coolant']), 'maintenance.equipment.image']._get_ids(item['suitable_coolant']),
"compaction_way_ids": [(6, 0, [])] if not item.get('compaction_way') else self.env[ "compaction_way_id": self.env['maintenance.equipment.image'].search(
'maintenance.equipment.image']._get_ids(item['compaction_way']), [('name', '=', item['compaction_way'])]).id,
"integral_tool_basic_parameters_ids": integral_tool_basic_param_list, "integral_tool_basic_parameters_ids": integral_tool_basic_param_list,
"blade_basic_parameters_ids": blade_basic_param_list, "blade_basic_parameters_ids": blade_basic_param_list,
"cutter_bar_basic_parameters_ids": cutter_arbor_basic_param_list, "cutter_bar_basic_parameters_ids": cutter_arbor_basic_param_list,

View File

@@ -2,7 +2,7 @@
<data noupdate="1"> <data noupdate="1">
<record model="ir.rule" id="crm_team_rule_salemanager"> <record model="ir.rule" id="crm_team_rule_salemanager">
<field name="name">销售经理只可以查看本人所在的团队</field> <field name="name">销售经理只可以查看本人所在的团队</field>
<field name="model_id" ref="model_crm_team"/> <field name="model_id" ref="sales_team.model_crm_team"/>
<field name="domain_force">[('crm_team_member_ids.user_id','=',user.id)]</field> <field name="domain_force">[('crm_team_member_ids.user_id','=',user.id)]</field>
<field name="groups" eval="[(4, ref('sf_base.group_sale_salemanager'))]"/> <field name="groups" eval="[(4, ref('sf_base.group_sale_salemanager'))]"/>
<field name="perm_read" eval="1"/> <field name="perm_read" eval="1"/>
@@ -12,7 +12,7 @@
<record model="ir.rule" id="crm_team_rule_director"> <record model="ir.rule" id="crm_team_rule_director">
<field name="name">销售总监</field> <field name="name">销售总监</field>
<field name="model_id" ref="model_crm_team"/> <field name="model_id" ref="sales_team.model_crm_team"/>
<field name="domain_force">[(1,'=',1)]</field> <field name="domain_force">[(1,'=',1)]</field>
<field name="groups" eval="[(4, ref('sf_base.group_sale_director'))]"/> <field name="groups" eval="[(4, ref('sf_base.group_sale_director'))]"/>
<field name="perm_read" eval="1"/> <field name="perm_read" eval="1"/>

View File

@@ -81,12 +81,11 @@ class FunctionalCuttingToolEntity(models.Model):
suitable_machining_method_ids = fields.Many2many( suitable_machining_method_ids = fields.Many2many(
'maintenance.equipment.image', 'rel_machining_product_template_tool_entity', '适合加工方式', 'maintenance.equipment.image', 'rel_machining_product_template_tool_entity', '适合加工方式',
domain=[('type', '=', '加工能力')], related='cutting_tool_integral_model_id.suitable_machining_method_ids') domain=[('type', '=', '加工能力')], related='cutting_tool_integral_model_id.suitable_machining_method_ids')
blade_tip_characteristics_id = fields.Many2many( blade_tip_characteristics_id = fields.Many2one('maintenance.equipment.image', '刀尖特征',
'maintenance.equipment.image', 'rel_blade_tip_product_template_tool_entity', '刀尖特征',
domain=[('type', '=', '刀尖特征')], related='cutting_tool_integral_model_id.blade_tip_characteristics_id') domain=[('type', '=', '刀尖特征')], related='cutting_tool_integral_model_id.blade_tip_characteristics_id')
handle_type_ids = fields.Many2many( handle_type_id = fields.Many2one(
'maintenance.equipment.image', 'rel_handle_product_template_tool_entity', '柄部类型', 'maintenance.equipment.image', '柄部类型',
domain=[('type', '=', '柄部类型')], related='cutting_tool_integral_model_id.handle_type_ids') domain=[('type', '=', '柄部类型')], related='cutting_tool_integral_model_id.handle_type_id')
cutting_direction_ids = fields.Many2many( cutting_direction_ids = fields.Many2many(
'maintenance.equipment.image', 'rel_cutting_product_template_tool_entity', '走刀方向', 'maintenance.equipment.image', 'rel_cutting_product_template_tool_entity', '走刀方向',
domain=[('type', '=', '走刀方向')], related='cutting_tool_integral_model_id.cutting_direction_ids') domain=[('type', '=', '走刀方向')], related='cutting_tool_integral_model_id.cutting_direction_ids')

View File

@@ -99,12 +99,9 @@ class SfToolMaterialSearch(models.Model):
suitable_machining_method_ids = fields.Many2many('maintenance.equipment.image', suitable_machining_method_ids = fields.Many2many('maintenance.equipment.image',
'rel_machining_product_template_material_search', '适合加工方式', 'rel_machining_product_template_material_search', '适合加工方式',
domain=[('type', '=', '加工能力')]) domain=[('type', '=', '加工能力')])
blade_tip_characteristics_id = fields.Many2many('maintenance.equipment.image', blade_tip_characteristics_id = fields.Many2one('maintenance.equipment.image', '刀尖特征',
'rel_blade_tip_product_template_material_search', '刀尖特征',
domain=[('type', '=', '刀尖特征')]) domain=[('type', '=', '刀尖特征')])
handle_type_ids = fields.Many2many('maintenance.equipment.image', handle_type_id = fields.Many2many('maintenance.equipment.image', '柄部类型',domain=[('type', '=', '柄部类型')])
'rel_handle_product_template_material_search', '柄部类型',
domain=[('type', '=', '柄部类型')])
cutting_direction_ids = fields.Many2many('maintenance.equipment.image', cutting_direction_ids = fields.Many2many('maintenance.equipment.image',
'rel_cutting_product_template_material_search', '走刀方向', 'rel_cutting_product_template_material_search', '走刀方向',
domain=[('type', '=', '走刀方向')]) domain=[('type', '=', '走刀方向')])

View File

@@ -116,12 +116,12 @@
<group> <group>
<group string="刀尖特征"> <group string="刀尖特征">
<field name="blade_tip_characteristics_id" string="" <field name="blade_tip_characteristics_id" string=""
widget="custom_many2many_checkboxes" widget="many2one_radio"
domain="[('id','in',blade_tip_characteristics_id)]"/> domain="[('id','in',blade_tip_characteristics_id)]"/>
</group> </group>
<group string="柄部类型"> <group string="柄部类型">
<field name="handle_type_ids" string="" widget="custom_many2many_checkboxes" <field name="handle_type_id" string="" widget="many2one_radio"
domain="[('id','in',handle_type_ids)]"/> domain="[('id','in',handle_type_id)]"/>
</group> </group>
</group> </group>
<group> <group>

View File

@@ -231,10 +231,10 @@
</group> </group>
<group> <group>
<group string="刀尖特征"> <group string="刀尖特征">
<field name="blade_tip_characteristics_id" string="" widget="custom_many2many_checkboxes"/> <field name="blade_tip_characteristics_id" string="" widget="many2one_radio"/>
</group> </group>
<group string="柄部类型"> <group string="柄部类型">
<field name="handle_type_ids" string="" widget="custom_many2many_checkboxes"/> <field name="handle_type_id" string="" widget="many2one_radio"/>
</group> </group>
</group> </group>
<group> <group>