This commit is contained in:
李鹏宇
2025-04-23 20:02:02 +08:00
parent 6585bd66b8
commit e3ecb837f7
3 changed files with 24 additions and 24 deletions
+2 -4
View File
@@ -24,7 +24,6 @@ CONDITION_CODE_TEMP = """# Available locals:
user = env.user"""
PYTHON_CODE_TEMP = """# Available locals:
# - time, date, datetime, timedelta: Python libraries.
# - env: Odoo Environement.
@@ -80,7 +79,6 @@ class SoongWorkflowNode(models.Model):
diagram_position = fields.Char(readonly=True, string="Diagram Position")
bg_color = fields.Char(default=DEFAULT_BG_COLOR, string="Background Color")
label_color = fields.Char(default=DEFAULT_LABEL_COLOR, string="Label Color")
# Custom colors
use_custom_colors = fields.Boolean(help="Select colors from the palette manually", string="Use Custom Colors")
res_bg_color = fields.Char(compute="_compute_custom_colors", readonly=True, string="Backgroung Color")
res_label_color = fields.Char(compute="_compute_custom_colors", readonly=True, string="Label Color")
@@ -347,8 +345,8 @@ class SoongWorkflowNodeButton(models.Model):
is_review_invisible = fields.Boolean(string="使用范围", default=False)
reviewer_id = fields.Many2one(comodel_name="res.users", string="Reviewer")
reviewer_group_id = fields.Many2one(comodel_name="res.groups", string="Reviewer group")
users_role_id = fields.Many2one(comodel_name="soong.user.role", string="主角色",
domain=[('user_type', '!=', 'lv_role')])
users_role_id = fields.Many2one(comodel_name="soong.user.role", string="主角色", domain=[('user_type', '!=', 'lv_role')])
users_role_group_id = fields.Many2one(comodel_name="soong.user.role.group", string="角色组")
reviewer_expression = fields.Text(
string="Review Expression",
default=CONDITION_CODE_TEMP,
@@ -170,8 +170,7 @@
<group>
<field name="is_review_invisible"/>
<field name="invisible_expression" colspan="2" invisible="is_review_invisible == False" required="is_review_invisible == True"
widget="domain"
options="{'model': 'invisible_expression_model', 'in_dialog': True,}"
widget="domain" options="{'model': 'invisible_expression_model', 'in_dialog': True,}"
nolabel="1"/>
</group>
</group>
@@ -182,17 +181,11 @@
<field name="btn_hide"/>
</group>
<group invisible="btn_hide == False">
<field name="review_type"/>
<field
name="reviewer_id"
invisible="review_type != 'individual'"
/>
<field
name="reviewer_group_id"
invisible="review_type != 'group'"
/>
<field name="users_role_id" invisible="review_type != 'user_role'"
required="review_type == 'user_role' and btn_hide"/>
<field name="review_type" string="审批类型"/>
<field name="reviewer_id" invisible="review_type != 'individual'"/>
<field name="reviewer_group_id" invisible="review_type != 'group'"/>
<field name="users_role_id" invisible="review_type != 'user_role'"/>
<field name="users_role_group_id" invisible="review_type != 'user_role'"/>
</group>
<group invisible="review_type != 'expression' or btn_hide == False">
<div class="alert alert-danger oe_edit_only" role="alert" style="width: max-content;">
@@ -88,14 +88,23 @@ class SoongWorkflowCommentWizard(models.TransientModel):
for ret in self.trans_link_id:
workflow_id = self.trans_link_id.node_button_id.workflow_id
link_users_id = workflow_id.node_ids.search([('name', '=', self.trans_link_id.name), ('workflow_id', '=', workflow_id.id)]).button_ids[0].users_role_id
link_users_group_id = workflow_id.node_ids.search([('name', '=', self.trans_link_id.name), ('workflow_id', '=', workflow_id.id)]).button_ids[0].users_role_group_id
next_is_automatic = workflow_id.node_ids.search([('name', '=', self.trans_link_id.name), ('workflow_id', '=', workflow_id.id)]).button_ids[0].is_automatic
employee_user_role_ids = self.env['hr.employee'].search(['|', ('user_role_id', '=', link_users_id.id), ('user_role_ids', 'in', link_users_id.id), ('company_id', '=', self.env.user.company_id.id)]) # 自动匹配
employee_user_role_id = self.env['hr.employee'].search(['|', ('user_role_id', '=', link_users_id.id), ('user_role_ids', 'in', link_users_id.id),
'|', ('department_id', '=', record_id.department_id.id), ('department_ids', 'in', record_id.department_id.id), ('company_id', '=', self.env.user.company_id.id)]) # 不自动匹配
if not employee_user_role_id:
employee_user_role_id = self.env['hr.employee'].search(
['|', ('user_role_id', '=', link_users_id.id), ('user_role_ids', 'in', link_users_id.id),
'|', ('department_id', '=', record_id.department_id.parent_id.id), ('department_ids', 'in', record_id.department_id.parent_id.id)])
employee_user_role_ids = employee_user_role_id = ''
if link_users_id and link_users_group_id:
raise UserError('流程配置错误,节点不允许配置两种类型')
if link_users_id:
employee_user_role_ids = self.env['hr.employee'].search(['|', ('user_role_id', '=', link_users_id.id), ('user_role_ids', 'in', link_users_id.id), ('company_id', '=', self.env.user.company_id.id)]) # 自动匹配
employee_user_role_id = self.env['hr.employee'].search(['|', ('user_role_id', '=', link_users_id.id), ('user_role_ids', 'in', link_users_id.id),
'|', ('department_id', '=', record_id.department_id.id), ('department_ids', 'in', record_id.department_id.id), ('company_id', '=', self.env.user.company_id.id)]) # 不自动匹配
elif link_users_group_id:
# 不自动匹配
employee_role_ids = self.env['hr.employee'].search(['|', ('user_role_id', 'in', link_users_group_id.user_role_ids.ids),('user_role_ids', 'in', link_users_group_id.user_role_ids.ids), ])
# 自动匹配
employee_user_role_id = self.env['hr.employee'].search([('id', 'in', employee_role_ids.ids),
'|', ('department_id', '=', record_id.department_id.id),
('department_ids', 'in', record_id.department_id.id),
('company_id', '=', self.env.user.company_id.id)]) # 自动匹配
self.employee_trans_domain_ids = employee_user_role_ids if not next_is_automatic else employee_user_role_id
self.employee_ids = employee_user_role_ids if not next_is_automatic else employee_user_role_id
if '分发' in ret.name: