@@ -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>
|
||||
@@ -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='状态')
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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)
|
||||
@@ -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")
|
||||
|
||||
@@ -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='失效时间')
|
||||
|
||||
Reference in New Issue
Block a user