外协流程更改

This commit is contained in:
liaodanlong
2025-04-17 14:29:06 +08:00
parent 0db31f7936
commit 962931bc9d
17 changed files with 281 additions and 58 deletions

View File

@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
import logging
from odoo import fields, models, api
from odoo.exceptions import UserError
from odoo.exceptions import UserError, ValidationError
from odoo.tools import str2bool
@@ -16,6 +16,11 @@ class SfProductionProcessParameter(models.Model):
is_delete_button = fields.Boolean(compute='_compute_is_delete_button', default=False)
routing_id = fields.Many2one('mrp.routing.workcenter', string="工序")
@api.constrains('outsourced_service_products')
def _validate_partner_limit(self):
for record in self:
if len(record.outsourced_service_products) > 1:
raise ValidationError("工艺参数不能与多个产品关联")
@api.depends('outsourced_service_products')
def _compute_is_product_button(self):
for record in self:
@@ -56,32 +61,31 @@ class SfProductionProcessParameter(models.Model):
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,
}
# 创建服务产品
# 返回打开新创建产品的表单视图
if self.id: # 如果是已存在的记录
self.write({}) # 空写入会触发保存
else: # 如果是新记录
self = self.create(self._convert_to_write(self.read()[0]))
return {
'name': '创建服务产品',
'type': 'ir.actions.act_window',
'res_model': 'product.product',
'name': '向导名称',
'res_model': 'product.creation.wizard',
'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()
},
'target': 'new',
'context': {'default_process_parameter_id': self.id}, # 传递当前记录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.outsourced_service_products.active = False
self.active = False