Merge pull request !2608 from 李鹏宇/dev
This commit is contained in:
李鹏宇
2025-04-28 02:54:11 +00:00
committed by Gitee
14 changed files with 22 additions and 106 deletions
-1
View File
@@ -10,7 +10,6 @@
"data/soong_workflow_note_data.xml",
"data/soong_workflow_inspector_code.xml",
"data/soong_workflow_time.xml",
"data/soong_user_role_data.xml",
"data/notice_template_data.xml",
"security/soong_workflow_security.xml",
"security/ir.model.access.csv",
@@ -1,15 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="soong_user_role_workflow_admin" model="soong.user.role">
<field name="name">工作流管理员</field>
</record>
<record id="soong_user_role_workflow_admin1" model="soong.user.role">
<field name="name">天河投资工作流管理员</field>
</record>
<record id="soong_user_role_workflow_admin2" model="soong.user.role">
<field name="name">天河物管工作流管理员</field>
</record>
<record id="soong_user_role_workflow_admin3" model="soong.user.role">
<field name="name">天河粮储工作流管理员</field>
</record>
</odoo>
+1 -4
View File
@@ -15,8 +15,5 @@ class IrModel(models.Model):
def _reflect_model_params(self, model):
vals = super(IrModel, self)._reflect_model_params(model)
vals["is_workflow"] = (
issubclass(type(model), self.pool["soong.workflow.mixin"])
and model._name != "soong.workflow.mixin"
)
vals["is_workflow"] = (issubclass(type(model), self.pool["soong.workflow.mixin"]) and model._name != "soong.workflow.mixin")
return vals
@@ -22,7 +22,7 @@ class SoongApprovalUsers(models.Model):
res_model = fields.Char('Workflow Ref Model', index=True, related='res_model_id.model', precompute=True, store=True, readonly=True)
res_id = fields.Many2oneReference(string='Workflow Ref.', index=True, model_field='res_model')
approval_user_id = fields.Many2one('res.users', string='审批人')
approval_user = fields.Many2one('soong.user.role', string='审批角色', domain=[('user_type', '!=', 'lv_role')])
approval_user = fields.Many2one('soong.user.role', string='审批角色',)
approval_user_datetime = fields.Datetime(string='审批时间')
approval_user_notice = fields.Char(string='审批意见')
approval_user_state = fields.Selection([('will', '待审批')], string='状态')
+2 -5
View File
@@ -3,13 +3,10 @@ from odoo import api, fields, models
class YuthonHrEmployee(models.Model):
"""
对原模型数据的隐藏,字段的开发和添加
"""
_inherit = "hr.employee"
user_role_id = fields.Many2one('soong.user.role', string="主角色", store=True, domain=[('user_type', '!=', 'lv_role')])
user_role_ids = fields.Many2many('soong.user.role', string="辅助角色", store=True, index=True, domain=[('user_type', '!=', 'lv_role'), ('name', '!=', 'user_role_id.name')])
user_role_id = fields.Many2one('soong.user.role', string="主角色", store=True,)
user_role_ids = fields.Many2many('soong.user.role', string="辅助角色", store=True, index=True)
department_ids = fields.Many2many('hr.department', string="辅助部门", store=True)
@api.onchange('user_role_id')
+11 -40
View File
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, _
from pypinyin import pinyin,lazy_pinyin
from pypinyin import pinyin, lazy_pinyin
from odoo.osv import expression
@@ -9,22 +9,18 @@ class YuthonUserRole(models.Model):
_order = 'number asc'
name = fields.Char(string="角色名称")
number = fields.Char(string="序号", store=True)
user_type = fields.Selection([("system_global_user", "系统全局角色"),
("departmental_role", "部门私有角色"),
("lv_role", "部门层级角色")], string="角色类型")
department_id = fields.Many2one('hr.department', string="所属机构部门")
number = fields.Char(string="序号")
department_id = fields.Many2one('hr.department', string="所属部门")
create_time = fields.Date(string="生效日期", default=fields.Datetime.today())
end_time = fields.Date(string="终止日期")
parent_id = fields.Many2one('soong.user.role', string='上级角色', index=True)
parent_id = fields.Many2one('soong.user.role', string='上级角色')
user_role_group_ids = fields.Many2many('soong.user.role.group', string='角色分组', index=True)
personnel_ids = fields.Many2many('hr.employee', string='在岗人员', store=True)
number_people = fields.Integer(string="在岗人数", compute='_compute_employee_ids', store=True)
personnel = fields.Text(string="在岗人员", store=True)
personnel_ids = fields.Many2many('hr.employee', string='在岗人员')
number_people = fields.Integer(string="在岗人数", compute='_compute_employee_ids')
personnel = fields.Text(string="在岗人员")
employee_ids = fields.One2many('hr.employee', 'user_role_id')
child_ids = fields.One2many('soong.user.role', 'parent_id', string='下级角色', index=True)
company_id = fields.Many2one('res.company', string="所属公司", index=True, default=lambda self: self.env.company)
pinyin_name = fields.Char(string="拼音名称", compute='_compute_pinyin', index=True, store=True)
company_id = fields.Many2one('res.company', string="公司", default=lambda self: self.env.company)
pinyin_name = fields.Char(string="拼音名称", compute='_compute_pinyin', index=True)
@api.depends('department_id')
def _compute_display_name(self):
@@ -66,32 +62,6 @@ class YuthonUserRole(models.Model):
rec.number_people = len(rec.personnel_ids)
def f5_new(self):
job_ids = self.env["soong.user.role"].browse(self._context.get('active_ids', self._context.get('active_id')))
for job in job_ids:
department_id = self.env['hr.department'].search([('name', '=', job.department_id.name)])
if department_id:
job.sudo().write({'department_id': department_id.id if len(department_id) == 1 else department_id[0].id})
def f6_new(self):
role_ids = self.env["soong.user.role"].browse(self._context.get('active_ids', self._context.get('active_id')))
for role in role_ids:
company_id = role.department_id.company_id
role.sudo().write({'company_id': company_id.id if company_id else False})
def sync_new(self):
job_ids = self.env["soong.user.role"].browse(self._context.get('active_ids', self._context.get('active_id')))
for job in job_ids:
employee_ids = self.env['hr.employee'].search([('id', 'in', job.personnel_ids.ids)])
for employee_id in employee_ids:
if employee_id.user_role_ids:
current_role_ids = employee_id.user_role_ids.ids
missing_role_ids = [child.id for child in job.child_ids if child.id not in current_role_ids]
if missing_role_ids:
employee_id.user_role_ids = [(4, role_id) for role_id in missing_role_ids]
class YuthonUserRoleGroup(models.Model):
_name = 'soong.user.role.group'
_order = 'number asc'
@@ -117,10 +87,11 @@ class YuthonUserRoleGroup(models.Model):
}
}
class YuthonRoleTree(models.Model):
_name = 'soong.role.tree'
_order = 'number asc'
name = fields.Char(string="角色名称")
department_id = fields.Many2one('hr.department', string="所属机构部门")
department_id = fields.Many2one('hr.department', string="所属部门")
company_id = fields.Many2one('res.company', string="所属公司", index=True, default=lambda self: self.env.company)
+1 -1
View File
@@ -51,7 +51,7 @@ class SoongWorkflow(models.Model):
is_enable_return_button = fields.Boolean(string="是否启用收回", default=True)
is_enable_transmitted_button = fields.Boolean(string="是否启用转交", default=True)
approvals_group_id = fields.Many2one('soong.approval.group', string="审批分组")
user_role_ids = fields.Many2many('soong.user.role', string="授权范围", store=True, domain=[('user_type', '!=', 'lv_role')],
user_role_ids = fields.Many2many('soong.user.role', string="授权范围", store=True,
default=lambda self: [(6, 0, [self.env.ref('soong_workflow.soong_user_role_workflow_admin').id])])
department_role_ids = fields.Many2many('hr.department', string="授权部门范围", store=True)
is_user_department_role = fields.Boolean(string="是否有权限查看", store=False, search="_search_is_user_department_role")
+1 -1
View File
@@ -346,7 +346,7 @@ 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="主角色",)
users_role_group_ids = fields.Many2many(comodel_name="soong.user.role.group", string="角色组")
reviewer_expression = fields.Text(
string="Review Expression",
@@ -1,28 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="all_soong_user_role_user" model="ir.actions.server">
<field name="name">刷新部门</field>
<field name="model_id" ref="soong_workflow.model_soong_user_role"/>
<field name="binding_model_id" ref="soong_workflow.model_soong_user_role"/>
<field name="state">code</field>
<field name="code">action = model._compute_employee_ids()</field>
<!-- <field name="code">action = model.f5_new()</field>-->
</record>
<record id="all_soong_user_role_company" model="ir.actions.server">
<field name="name">更新公司</field>
<field name="model_id" ref="soong_workflow.model_soong_user_role"/>
<field name="binding_model_id" ref="soong_workflow.model_soong_user_role"/>
<field name="state">code</field>
<field name="code">action = model.f6_new()</field>
</record>
<record id="sync_soong_user_role_user" model="ir.actions.server">
<field name="name">同步花名册</field>
<field name="model_id" ref="soong_workflow.model_soong_user_role"/>
<field name="binding_model_id" ref="soong_workflow.model_soong_user_role"/>
<field name="state">code</field>
<field name="code">action = model.sync_new()</field>
</record>
<record id="view_soong_user_role_tree" model="ir.ui.view">
<field name="name">soong.user.role.tree</field>
<field name="model">soong.user.role</field>
@@ -31,13 +8,10 @@
<field name="number" required="1"/>
<field name="name" required="1"/>
<field name="department_id" widget="ztree_select"/>
<field name="user_type"/>
<field name="personnel_ids" widget="many2many_tags" force_save="1"/>
<field name="number_people"/>
<field name="pinyin_name" column_invisible="1"/>
<field name="parent_id"/>
<field name="company_id" optional="show" required="1"/>
<field name="child_ids" column_invisible="1"/>
<field name="user_role_group_ids" column_invisible="1"/>
<field name="create_time" optional="hide"/>
<field name="end_time" optional="hide"/>
@@ -59,7 +33,6 @@
<group col="2">
<group>
<field name="number"/>
<field name="user_type"/>
<field name="user_role_group_ids" widget="many2many_tags"/>
<field name="company_id"/>
<field name="department_id" widget="ztree_select"/>
@@ -67,10 +40,8 @@
<field name="end_time"/>
</group>
<group>
<field name="parent_id"/>
<field name="personnel_ids" readonly='False' widget="many2many_tags"/>
<field name="number_people"/>
<field name="child_ids" widget="many2many_tags"/>
</group>
</group>
</sheet>
@@ -85,9 +56,6 @@
<field name="name"/>
<field name="department_id"/>
<field name="user_role_group_ids"/>
<group expand="0" string="部门分组">
<filter string="部门分组" name='department_id' context="{'group_by':'department_id'}"/>
</group>
</search>
</field>
</record>
@@ -97,7 +65,6 @@
<field name="name">角色配置</field>
<field name="res_model">soong.user.role</field>
<field name="view_mode">tree,search,form</field>
<field name="context">{'search_default_department_id': True}</field>
<field name="search_view_id" ref="soong_user_role_search"/>
</record>
@@ -9,7 +9,7 @@ class ResGroups(models.Model):
users_ids = fields.Many2many('res.users', string="权限用户")
employee_ids = fields.Many2many('hr.employee', string="权限员工")
department_ids = fields.Many2many("hr.department", string="权限部门")
user_role_ids = fields.Many2many("soong.user.role", string="权限主角色", domain=[('user_type', '!=', 'lv_role')])
user_role_ids = fields.Many2many("soong.user.role", string="权限主角色",)
def users_unlink(self):
users_to_unlink = self.users.filtered(lambda user: user.name != 'Administrator')
@@ -63,7 +63,7 @@ class YuthonRoleDetailLines(models.Model):
role_id = fields.Many2one('yuthon.employee.performance', string="关联员工绩效(考核任务)")
organization_id = fields.Many2one('yuthon.duty.management', string='组织绩效考核角色明细行')
in_charge_role_id = fields.Many2one('soong.user.role', string='角色', domain=[('user_type', '!=', 'lv_role')])
in_charge_role_id = fields.Many2one('soong.user.role', string='角色')
employee_ids = fields.Many2many('hr.employee', string='人员', compute='_compute_employee_ids', store=True)
weight = fields.Float(string="权重" )
@@ -62,7 +62,7 @@ class NewIndexManagement(models.Model):
('two_index', '双向指标'), ], '计算类别')
new_check_norm = fields.Char('考核标准', required=True)
new_department_ids = fields.Many2many("hr.department", string="指标来源", required=True)
new_in_charge_role_id = fields.Many2one('soong.user.role', string='角色', domain=[('user_type', '!=', 'lv_role')])
new_in_charge_role_id = fields.Many2one('soong.user.role', string='角色')
new_employee_ids = fields.Many2many('hr.employee', string="人员")
new_start_index_time = fields.Date(string='生效时间', required=True)
new_end_index_time = fields.Date(string='失效时间')
@@ -11,7 +11,7 @@ class YuthonIndexEmployee(models.Model):
score_range_on = fields.Float(string='分值范围')
score_range_off = fields.Float(string='分值范围')
description_score = fields.Text(string='分值说明')
in_charge_role_id = fields.Many2one('soong.user.role', string='角色', domain=[('user_type', '!=', 'lv_role')])
in_charge_role_id = fields.Many2one('soong.user.role', string='角色')
employee_ids = fields.Many2many('hr.employee', string='人员范围')
department_ids = fields.Many2many('hr.department', string='部门')
change_employee_library_id = fields.Many2one('yuthon.employee.approval', string='变更指标库')
@@ -19,7 +19,7 @@ class YuthonIndexManagement(models.Model):
('two_index', '双向指标'),],'计算类别')
check_norm = fields.Text('考核标准')
department_ids = fields.Many2many("hr.department", string="指标来源")
in_charge_role_id = fields.Many2one('soong.user.role', string='角色', domain=[('user_type', '!=', 'lv_role')])
in_charge_role_id = fields.Many2one('soong.user.role', string='角色')
employee_ids = fields.Many2many('hr.employee', string='人员范围')
start_index_time = fields.Date(string='生效时间', default=fields.Date.today())
end_index_time = fields.Date(string='失效时间')