刀具物料产品优化需求

This commit is contained in:
yuxianghui
2024-05-30 09:36:17 +08:00
parent caf7aaa560
commit 683e9631fa
2 changed files with 42 additions and 6 deletions

View File

@@ -31,9 +31,11 @@
options="{'no_create': True}" options="{'no_create': True}"
attrs="{'invisible': [('categ_type', '!=', '刀具')],'required': [('categ_type', '=', '刀具')],'readonly': [('id', '!=', False)]}" attrs="{'invisible': [('categ_type', '!=', '刀具')],'required': [('categ_type', '=', '刀具')],'readonly': [('id', '!=', False)]}"
placeholder="请选择"/> placeholder="请选择"/>
<field name="brand_id" options="{'no_create': True}" placeholder="请选择"
attrs="{'invisible': [('categ_type', '!=', '刀具')],'required': [('categ_type', '=', '刀具')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_model_id" placeholder="请选择" class="custom_required" <field name="cutting_tool_model_id" placeholder="请选择" class="custom_required"
options="{'no_create': True}" options="{'no_create': True}"
domain="[('cutting_tool_material_id','=',cutting_tool_material_id)]" domain="[('cutting_tool_material_id','=',cutting_tool_material_id),('brand_id', '=', brand_id)]"
context="{'default_cutting_tool_material_id': cutting_tool_material_id}" context="{'default_cutting_tool_material_id': cutting_tool_material_id}"
attrs="{'invisible': [('categ_type', '!=', '刀具')],'required': [('categ_type', '=', '刀具')],'readonly': [('id', '!=', False)]}"> attrs="{'invisible': [('categ_type', '!=', '刀具')],'required': [('categ_type', '=', '刀具')],'readonly': [('id', '!=', False)]}">
</field> </field>
@@ -47,10 +49,10 @@
<field name="fixture_material_id" <field name="fixture_material_id"
attrs="{'invisible': [('categ_type', '!=', '夹具')],'required': [('categ_type', '=', '夹具')]}" attrs="{'invisible': [('categ_type', '!=', '夹具')],'required': [('categ_type', '=', '夹具')]}"
placeholder="请选择" options="{'no_create': True}"/> placeholder="请选择" options="{'no_create': True}"/>
<field name="fixture_model_id" string="型号" placeholder="请选择" options="{'no_create': True}" <field name="fixture_model_id" string="型号名称" placeholder="请选择" options="{'no_create': True}"
attrs="{'invisible': [('categ_type', '!=', '夹具')],'required': [('categ_type', '=', '夹具')]}" attrs="{'invisible': [('categ_type', '!=', '夹具')],'required': [('categ_type', '=', '夹具')]}"
domain="[('fixture_material_id','=',fixture_material_id)]"/> domain="[('fixture_material_id','=',fixture_material_id)]"/>
<field name="specification_fixture_id" string="规格" placeholder="请选择" <field name="specification_fixture_id" string="物料号" placeholder="请选择"
options="{'no_create': True}" options="{'no_create': True}"
attrs="{'invisible': [('categ_type', '!=', '夹具')],'required': [('categ_type', '=', '夹具')]}" attrs="{'invisible': [('categ_type', '!=', '夹具')],'required': [('categ_type', '=', '夹具')]}"
domain="[('fixture_model_id','=',fixture_model_id)]"/> domain="[('fixture_model_id','=',fixture_model_id)]"/>
@@ -95,6 +97,16 @@
</group> </group>
</page> </page>
</xpath> </xpath>
<xpath expr="//field[@name='name']" position="attributes">
<attribute name="attrs">{'readonly': ['|',('id','!=',False),('categ_type', '=',
'刀具')], 'required': True}
</attribute>
</xpath>
<xpath expr="//field[@name='default_code']" position="attributes">
<attribute name="attrs">{'readonly': [('categ_type', '=', '刀具')], 'invisible':
[('product_variant_count', '>' , 1)]}
</attribute>
</xpath>
</field> </field>
</record> </record>
@@ -455,7 +467,8 @@
<tree editable="bottom"> <tree editable="bottom">
<!-- <field name="cutting_speed"--> <!-- <field name="cutting_speed"-->
<!-- attrs="{'readonly': [('materials_type_id','!=',False)]}"/>--> <!-- attrs="{'readonly': [('materials_type_id','!=',False)]}"/>-->
<field name="materials_type_id" options="{'no_create': True}" placeholder="请选择"/> <field name="materials_type_id" options="{'no_create': True}"
placeholder="请选择"/>
<field name="blade_diameter"/> <field name="blade_diameter"/>
<field name="feed_per_tooth"/> <field name="feed_per_tooth"/>
</tree> </tree>

View File

@@ -50,8 +50,8 @@ class ResProductMo(models.Model):
cutting_tool_material_id = fields.Many2one('sf.cutting.tool.material', string='刀具物料') cutting_tool_material_id = fields.Many2one('sf.cutting.tool.material', string='刀具物料')
cutting_tool_type = fields.Char(string="刀具物料类型", related='cutting_tool_material_id.name', store=True) cutting_tool_type = fields.Char(string="刀具物料类型", related='cutting_tool_material_id.name', store=True)
cutting_tool_model_id = fields.Many2one('sf.cutting_tool.standard.library', string='型号') cutting_tool_model_id = fields.Many2one('sf.cutting_tool.standard.library', string='型号名称')
specification_id = fields.Many2one('sf.tool.materials.basic.parameters', string='规格') specification_id = fields.Many2one('sf.tool.materials.basic.parameters', string='物料号')
cutting_tool_type_id = fields.Many2one('sf.cutting.tool.type', string='类型', cutting_tool_type_id = fields.Many2one('sf.cutting.tool.type', string='类型',
domain="[('cutting_tool_material_id.name', '=', cutting_tool_type)]") domain="[('cutting_tool_material_id.name', '=', cutting_tool_type)]")
@@ -104,6 +104,25 @@ class ResProductMo(models.Model):
compaction_way_id = fields.Many2one('maintenance.equipment.image', compaction_way_id = fields.Many2one('maintenance.equipment.image',
'压紧方式', domain=[('type', '=', '压紧方式')]) '压紧方式', domain=[('type', '=', '压紧方式')])
name = fields.Char('产品名称', compute='_compute_tool_name', store=True, required=False)
default_code = fields.Char('内部参考', compute='_onchange_tool_default_code', store=True)
@api.depends('cutting_tool_model_id', 'specification_id')
def _compute_tool_name(self):
for item in self:
if item.cutting_tool_model_id and item.specification_id:
name = '%s%s' % (item.cutting_tool_model_id.name, item.specification_id.name)
item.name = name
@api.depends('categ_id', 'cutting_tool_material_id', 'cutting_tool_model_id')
def _onchange_tool_default_code(self):
for item in self:
if item.categ_id and item.cutting_tool_material_id and item.cutting_tool_model_id:
if item.cutting_tool_model_id.code:
default_code = '%s-T-DJWL-%s' % (
item.cutting_tool_model_id.code.split('-')[0], item.cutting_tool_material_id.code)
item.default_code = default_code
@api.onchange('cutting_tool_model_id') @api.onchange('cutting_tool_model_id')
def _onchange_cutting_tool_model_id(self): def _onchange_cutting_tool_model_id(self):
for item in self: for item in self:
@@ -721,6 +740,10 @@ class ResProductMo(models.Model):
logging.info('create-model_file:%s' % len(vals['model_file'])) logging.info('create-model_file:%s' % len(vals['model_file']))
self._sanitize_vals(vals) self._sanitize_vals(vals)
templates = super(ResProductMo, self).create(vals_list) templates = super(ResProductMo, self).create(vals_list)
# 产品名称唯一性校验
for item in templates:
if len(self.search([('name', '=', item.name)])) > 1:
raise ValidationError('产品名称【%s】已存在' % item.name)
if "create_product_product" not in self._context: if "create_product_product" not in self._context:
templates._create_variant_ids() templates._create_variant_ids()