工艺相关展示调整
This commit is contained in:
@@ -41,7 +41,7 @@
|
|||||||
attrs="{'invisible': [('categ_type', 'not in', ['成品','坯料', '原材料'])],'readonly': [('id', '!=', False)]}"/>
|
attrs="{'invisible': [('categ_type', 'not in', ['成品','坯料', '原材料'])],'readonly': [('id', '!=', False)]}"/>
|
||||||
<field name="server_product_process_parameters_id" string="工艺参数"
|
<field name="server_product_process_parameters_id" string="工艺参数"
|
||||||
options="{'no_create': True}"
|
options="{'no_create': True}"
|
||||||
attrs="{'invisible': ['|',('detailed_type', '!=', '服务'),('detailed_type', '=', False)]}"/>
|
attrs="{'invisible': ['|',('detailed_type', '!=', 'service'),('detailed_type', '=', False)]}"/>
|
||||||
<field name="cutting_tool_material_id" class="custom_required"
|
<field name="cutting_tool_material_id" class="custom_required"
|
||||||
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)]}"
|
||||||
|
|||||||
@@ -7,6 +7,11 @@ from odoo.tools import str2bool
|
|||||||
|
|
||||||
class SfProductionProcessParameter(models.Model):
|
class SfProductionProcessParameter(models.Model):
|
||||||
_inherit = 'sf.production.process.parameter'
|
_inherit = 'sf.production.process.parameter'
|
||||||
|
service_products = fields.Many2one(
|
||||||
|
'product.template',
|
||||||
|
string='外协服务产品',compute='_compute_service_products',inverse='_inverse_service_products',
|
||||||
|
store=True
|
||||||
|
)
|
||||||
outsourced_service_products = fields.One2many(
|
outsourced_service_products = fields.One2many(
|
||||||
'product.template', # 另一个模型的名称
|
'product.template', # 另一个模型的名称
|
||||||
'server_product_process_parameters_id', # 对应的 Many2one 字段名称
|
'server_product_process_parameters_id', # 对应的 Many2one 字段名称
|
||||||
@@ -16,6 +21,25 @@ class SfProductionProcessParameter(models.Model):
|
|||||||
is_delete_button = fields.Boolean(compute='_compute_is_delete_button', default=False)
|
is_delete_button = fields.Boolean(compute='_compute_is_delete_button', default=False)
|
||||||
routing_id = fields.Many2one('mrp.routing.workcenter', string="工序")
|
routing_id = fields.Many2one('mrp.routing.workcenter', string="工序")
|
||||||
|
|
||||||
|
@api.depends('outsourced_service_products')
|
||||||
|
def _compute_service_products(self):
|
||||||
|
for record in self:
|
||||||
|
# 假设取第一条作为主明细
|
||||||
|
record.service_products = record.outsourced_service_products.id if record.outsourced_service_products else False
|
||||||
|
|
||||||
|
def _inverse_service_products(self):
|
||||||
|
for record in self:
|
||||||
|
if record.service_products:
|
||||||
|
# 确保关联关系正确
|
||||||
|
record.outsourced_service_products = record.service_products.ids if record.service_products else False
|
||||||
|
else:
|
||||||
|
record.outsourced_service_products = False
|
||||||
|
def name_get(self):
|
||||||
|
result = []
|
||||||
|
for record in self:
|
||||||
|
name = f"{record.process_id.name} - {record.name}" # 自定义显示格式
|
||||||
|
result.append((record.id, name))
|
||||||
|
return result
|
||||||
@api.constrains('outsourced_service_products')
|
@api.constrains('outsourced_service_products')
|
||||||
def _validate_partner_limit(self):
|
def _validate_partner_limit(self):
|
||||||
for record in self:
|
for record in self:
|
||||||
@@ -35,17 +59,17 @@ class SfProductionProcessParameter(models.Model):
|
|||||||
else:
|
else:
|
||||||
record.is_product_button = False
|
record.is_product_button = False
|
||||||
|
|
||||||
def has_wksp_prefix(self,code):
|
def has_wksp_prefix(self):
|
||||||
"""
|
"""
|
||||||
判断字符串是否以WKSP开头(不区分大小写)
|
判断字符串是否以WKSP开头(不区分大小写)
|
||||||
:param text: 要检查的字符串
|
:param text: 要检查的字符串
|
||||||
:return: True/False
|
:return: True/False
|
||||||
"""
|
"""
|
||||||
return code.upper().startswith('WKSP')
|
return self.code.upper().startswith('101'+self.routing_id.code)
|
||||||
@api.depends('outsourced_service_products','code')
|
@api.depends('outsourced_service_products','code')
|
||||||
def _compute_is_delete_button(self):
|
def _compute_is_delete_button(self):
|
||||||
for record in self:
|
for record in self:
|
||||||
if record.outsourced_service_products and self.has_wksp_prefix(record.code):
|
if record.outsourced_service_products and record.has_wksp_prefix():
|
||||||
record.is_delete_button = False
|
record.is_delete_button = False
|
||||||
elif record.outsourced_service_products:
|
elif record.outsourced_service_products:
|
||||||
record.is_delete_button = True
|
record.is_delete_button = True
|
||||||
|
|||||||
@@ -30,7 +30,7 @@
|
|||||||
<field name="is_delete_button" invisible="1"/>
|
<field name="is_delete_button" invisible="1"/>
|
||||||
<field name="code" attrs="{'readonly': True}"/>
|
<field name="code" attrs="{'readonly': True}"/>
|
||||||
<field name="name"/>
|
<field name="name"/>
|
||||||
<field name="outsourced_service_products" domain="[('detailed_type', '=', 'service'),('server_product_process_parameters_id', '=', False)]"/>
|
<field name="service_products" domain="[('detailed_type', '=', 'service'),('server_product_process_parameters_id', '=', False)]"/>
|
||||||
<!-- 按钮列 -->
|
<!-- 按钮列 -->
|
||||||
<button name="action_create_service_product" string="创建服务产品" type="object"
|
<button name="action_create_service_product" string="创建服务产品" type="object"
|
||||||
class="btn-primary"
|
class="btn-primary"
|
||||||
|
|||||||
Reference in New Issue
Block a user