表面工艺数据内置与数据同步调整
This commit is contained in:
@@ -2,11 +2,44 @@
|
||||
import logging
|
||||
from odoo import fields, models, api
|
||||
from odoo.exceptions import UserError
|
||||
from odoo.tools import str2bool
|
||||
|
||||
|
||||
class SfProductionProcessParameter(models.Model):
|
||||
_inherit = 'sf.production.process.parameter'
|
||||
outsourced_service_products = fields.One2many(
|
||||
'product.template', # 另一个模型的名称
|
||||
'server_product_process_parameters_id', # 对应的 Many2one 字段名称
|
||||
string='外协服务产品'
|
||||
)
|
||||
is_product_button = fields.Boolean(compute='_compute_is_product_button',default=False)
|
||||
is_delete_button = fields.Boolean(compute='_compute_is_delete_button', default=False)
|
||||
routing_id = fields.Many2one('mrp.routing.workcenter', string="工序")
|
||||
|
||||
@api.depends('outsourced_service_products')
|
||||
def _compute_is_product_button(self):
|
||||
for record in self:
|
||||
if record.outsourced_service_products:
|
||||
record.is_product_button = True
|
||||
else:
|
||||
record.is_product_button = False
|
||||
|
||||
def has_wksp_prefix(self,code):
|
||||
"""
|
||||
判断字符串是否以WKSP开头(不区分大小写)
|
||||
:param text: 要检查的字符串
|
||||
:return: True/False
|
||||
"""
|
||||
return code.upper().startswith('WKSP')
|
||||
@api.depends('outsourced_service_products','code')
|
||||
def _compute_is_delete_button(self):
|
||||
for record in self:
|
||||
if record.outsourced_service_products and self.has_wksp_prefix(record.code):
|
||||
record.is_delete_button = False
|
||||
elif record.outsourced_service_products:
|
||||
record.is_delete_button = True
|
||||
else:
|
||||
record.is_delete_button = True
|
||||
@api.model
|
||||
def _name_search(self, name, args=None, operator='ilike', limit=100, name_get_uid=None):
|
||||
if self._context.get('route_id'):
|
||||
@@ -21,3 +54,34 @@ class SfProductionProcessParameter(models.Model):
|
||||
domain = [('process_id', '=', routing.surface_technics_id.id), ('id', 'not in', parameter)]
|
||||
return self._search(domain, limit=limit, access_rights_uid=name_get_uid)
|
||||
return super()._name_search(name, args, operator, limit, name_get_uid)
|
||||
|
||||
def action_create_service_product(self):
|
||||
# 获取产品分类(服务)
|
||||
service_categ = self.env.ref('sf_manufacturing.product_category_outsource_other_process').sudo()
|
||||
default_values = {
|
||||
'detailed_type': 'service',
|
||||
'name': f"{self.process_id.name}{self.name}",
|
||||
'invoice_policy': 'delivery',
|
||||
'categ_id': service_categ.id,
|
||||
'description': f"基于{self.name}创建的服务产品",
|
||||
'sale_ok': True, # 可销售
|
||||
'purchase_ok': True, # 可采购
|
||||
'server_product_process_parameters_id': self.id,
|
||||
}
|
||||
# 创建服务产品
|
||||
# 返回打开新创建产品的表单视图
|
||||
return {
|
||||
'name': '创建服务产品',
|
||||
'type': 'ir.actions.act_window',
|
||||
'res_model': 'product.product',
|
||||
'view_mode': 'form',
|
||||
'view_id': self.env.ref('product.product_normal_form_view').id,
|
||||
'target': 'new', # 关键参数,使窗口以弹窗形式打开
|
||||
'context': {
|
||||
'default_' + k: v for k, v in default_values.items()
|
||||
},
|
||||
}
|
||||
|
||||
def action_hide_service_products(self):
|
||||
self.outsourced_service_products.active = False
|
||||
self.active = False
|
||||
|
||||
Reference in New Issue
Block a user