@@ -58,6 +58,7 @@
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='department_id']" position="attributes">
|
||||
<attribute name="string">所属部门</attribute>
|
||||
<attribute name="required">1</attribute>
|
||||
</xpath>
|
||||
<xpath expr="//div[@class='oe_chatter']" position="attributes">
|
||||
<attribute name="invisible">1</attribute>
|
||||
|
||||
@@ -36,10 +36,10 @@ class YuthonAppointmentResultIsDetailed(models.Model):
|
||||
|
||||
date_of_appointment = fields.Date(string="聘任时间")
|
||||
appointment_name = fields.Char(string="聘任职称")
|
||||
grade = fields.Char(string="等级")
|
||||
grade = fields.Char(string="职称等级")
|
||||
professional_title = fields.Char(string="职称专业")
|
||||
is_other = fields.Boolean(string="新增其他专业职称")
|
||||
|
||||
cert_code = fields.Char(string="证书编号")
|
||||
notice_documents_ids = fields.Many2many('documents.document', string="相关文档")
|
||||
notice_documents_ids = fields.Many2many('documents.document', string="附件")
|
||||
remarks = fields.Char(string="备注")
|
||||
@@ -53,30 +53,11 @@
|
||||
<field name="appointment_result_ids">
|
||||
<tree editable="bottom">
|
||||
<field name="name"/>
|
||||
<field name="appointment_result_content"/>
|
||||
<field name="department_id"/>
|
||||
<field name="appointment_result_id"/>
|
||||
<field name="job_id"/>
|
||||
<field name="title"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
<page string="本次聘任职称情况">
|
||||
<field name="appointment_result_ids">
|
||||
<tree editable="bottom">
|
||||
<field name="date_of_appointment"/>
|
||||
<field name="appointment_name"/>
|
||||
<field name="grade"/>
|
||||
<field name="professional_title"/>
|
||||
<field name="is_other"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
<page string="证书信息">
|
||||
<field name="appointment_result_ids">
|
||||
<tree editable="bottom">
|
||||
<field name="cert_code"/>
|
||||
<field name="notice_documents_ids"/>
|
||||
<field name="remarks"/>
|
||||
<field name="notice_documents_ids"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
|
||||
@@ -75,8 +75,8 @@
|
||||
<field name="model">yuthon.notice</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="公告查询">
|
||||
<filter string="标题" name="name"/>
|
||||
<filter string="发布人" name="user_id"/>
|
||||
<field string="标题" name="name"/>
|
||||
<field string="发布人" name="user_id"/>
|
||||
<filter string="未发布" name="no " domain="[('notice_state', '=', 'no')]"/>
|
||||
<filter string="已发布" name="done " domain="[('notice_state', '=', 'done')]"/>
|
||||
<group expand="0">
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
'category': 'Human Resources/Attendances',
|
||||
'version': '0.1',
|
||||
'license': 'LGPL-3',
|
||||
'depends': ['hr', 'soong_workflow'],
|
||||
'depends': ['hr', 'soong_workflow',],
|
||||
'data': [
|
||||
'security/ir.model.access.csv',
|
||||
'views/yuthon_Index_management.xml',
|
||||
@@ -19,7 +19,13 @@
|
||||
'views/yuthon_plan_management.xml',
|
||||
'views/yuthon_Index_approval.xml',
|
||||
'views/yuthon_duty_approval.xml',
|
||||
'views/yuthon_index_employee.xml',
|
||||
'views/yuthon_employee_approval.xml',
|
||||
'views/yuthon_plan_approval.xml',
|
||||
'views/yuthon_employee_performance.xml',
|
||||
'views/yuthon_assessment_tasks.xml',
|
||||
'views/yuthon_grading_tasks.xml',
|
||||
'views/yuthon_kpi_tasks.xml',
|
||||
],
|
||||
'installable': True,
|
||||
'application': True,
|
||||
|
||||
@@ -1,8 +1,13 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from . import yuthon_employee_approval
|
||||
from . import yuthon_Index_management
|
||||
from . import yuthon_duty_management
|
||||
from . import yuthon_plan_management
|
||||
from . import yuthon_Index_approval
|
||||
from . import yuthon_duty_approval
|
||||
from . import yuthon_index_employee
|
||||
from . import yuthon_plan_approval
|
||||
from . import yuthon_assessment_tasks
|
||||
from . import yuthon_employee_performance
|
||||
from . import yuthon_grading_tasks
|
||||
from . import yuthon_kpi_tasks
|
||||
@@ -1,7 +1,7 @@
|
||||
from odoo import models, fields, api, exceptions, _
|
||||
class YuthonIndexApproval(models.Model):
|
||||
_name = 'yuthon.index.approval'
|
||||
_description = "指标库变更管理"
|
||||
_description = "组织指标库变更管理"
|
||||
_rec_name = 'name'
|
||||
|
||||
name = fields.Char('标题')
|
||||
@@ -9,4 +9,4 @@ class YuthonIndexApproval(models.Model):
|
||||
job_id = fields.Many2one('hr.job', string="岗位")
|
||||
reason_text = fields.Html(string='申请事由')
|
||||
|
||||
change_index_library_ids = fields.One2many("yuthon.index.management",'change_index_library_id',string="指标库变更明细")
|
||||
change_index_library_ids = fields.One2many("yuthon.index.management",'change_index_library_id',string="组织指标库变更明细")
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
|
||||
from odoo import models, fields, api, exceptions, _
|
||||
|
||||
|
||||
class YuthonIndexManagement(models.Model):
|
||||
_name = 'yuthon.index.management'
|
||||
_description = "指标库"
|
||||
_description = "组织绩效标准库"
|
||||
|
||||
name = fields.Char('指标库', required=True)
|
||||
dimension = fields.Char('维度', required=True)
|
||||
development_goals = fields.Char('发展目标', required=True)
|
||||
index_name = fields.Char('指标名称', required=True)
|
||||
@@ -18,20 +20,48 @@ class YuthonIndexManagement(models.Model):
|
||||
check_norm = fields.Char('考核标准', required=True)
|
||||
department_ids = fields.Many2many("hr.department", string="指标来源", required=True)
|
||||
in_charge_role = fields.Many2one('soong.user.role', string='角色')
|
||||
employee_id = fields.Many2one('hr.employee', string="员工")
|
||||
start_index_time = fields.Date(string='指标生效时间', required=True)
|
||||
end_index_time = fields.Date(string='指标失效时间')
|
||||
employee_id = fields.Many2one('hr.employee', string="人员")
|
||||
start_index_time = fields.Date(string='生效时间', required=True)
|
||||
end_index_time = fields.Date(string='失效时间')
|
||||
unit_compute = fields.Char('计算单位')
|
||||
weight = fields.Char(string="权重%")
|
||||
compute_method = fields.Char(string="计算方法")
|
||||
compute_act = fields.Char(string="计划安排及具体措施/行动")
|
||||
|
||||
|
||||
|
||||
change_index_library_id = fields.Many2one("yuthon.index.approval", string="指标库变更明细")
|
||||
index_duty_id = fields.Many2one('yuthon.duty.management', string="绩效明细")
|
||||
index_duty_approval_id = fields.Many2one('yuthon.duty.approval', string="部门责任变更明细")
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def put_adjustment_approval(self):
|
||||
index_applicant_ids = self.env["yuthon.index.management"].browse(
|
||||
self._context.get('active_ids', self._context.get('active_id')))
|
||||
index_applicant_data = [(6, 0,index_applicant_ids.ids)]
|
||||
form_id = self.env.ref('yuthon_performance.yuthon_index_approval_form').id
|
||||
return {
|
||||
'name': '指标库变更明细',
|
||||
'type': 'ir.actions.act_window',
|
||||
'view_mode': 'form',
|
||||
'res_model': 'yuthon.index.approval',
|
||||
'views': [(form_id, 'form')],
|
||||
'context': {'default_change_index_library_ids': index_applicant_data}
|
||||
}
|
||||
def put_assessment_tasks_approval(self):
|
||||
pass
|
||||
# index_applicant_ids = self.env["yuthon.index.management"].browse(
|
||||
# self._context.get('active_ids', self._context.get('active_id')))
|
||||
# index_applicant_data = [(6, 0,index_applicant_ids.ids)]
|
||||
# form_id = self.env.ref('yuthon_performance.yuthon_duty_management_form').id
|
||||
# if self.index_type == 'kpi':
|
||||
# context = {'default_performance_kpi_ids': index_applicant_data}
|
||||
# else:
|
||||
# context = {'default_performance_gs_ids': index_applicant_data}
|
||||
# return{
|
||||
# 'name': '计划安排及具体措施/行动',
|
||||
# 'type': 'ir.actions.act_window',
|
||||
# 'view_mode': 'form',
|
||||
# 'res_model': 'yuthon.duty.management',
|
||||
# 'views': [(form_id, 'form')],
|
||||
# 'context': context
|
||||
# }
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
from odoo import models, fields, api, exceptions, _
|
||||
|
||||
|
||||
class YuthonAssessmentTasks(models.Model):
|
||||
_name = 'yuthon.assessment.tasks'
|
||||
_description = '考核任务总汇'
|
||||
|
||||
|
||||
name = fields.Char(string='考核任务名称')
|
||||
index_statu = fields.Selection([('work', '生效'), ('void', '作废')], string='状态')
|
||||
performance_type = fields.Selection([('organize', '组织绩效'), ('employs', '员工绩效')], stroing='考核类型')
|
||||
performance_id = fields.Many2one(
|
||||
'yuthon.employee.performance',
|
||||
string='Performance Record',
|
||||
ondelete='cascade'
|
||||
)
|
||||
organization_id = fields.Many2one(
|
||||
'yuthon.duty.management',
|
||||
string='Organization',
|
||||
ondelete='cascade'
|
||||
)
|
||||
|
||||
def buttn_appraisal_ids(self):
|
||||
if self.performance_type == 'organize':
|
||||
res_model = 'yuthon.duty.management'
|
||||
id = self.organization_id.id#
|
||||
else:
|
||||
res_model = 'yuthon.employee.performance'
|
||||
id = self.performance_id.id#
|
||||
self.ensure_one()
|
||||
return {
|
||||
'type': 'ir.actions.act_window',
|
||||
'res_model': res_model,
|
||||
'res_id': id,
|
||||
'view_mode': 'form',
|
||||
'target': 'current',
|
||||
}
|
||||
def button_clone_task(self):
|
||||
pass
|
||||
|
||||
def button_calculate_score(self):
|
||||
pass
|
||||
@@ -1,4 +1,6 @@
|
||||
from odoo import models, fields, api, exceptions, _
|
||||
|
||||
|
||||
class YuthonDutyApproval(models.Model):
|
||||
_name = 'yuthon.duty.approval'
|
||||
_description = "部门责任书变更管理"
|
||||
@@ -10,6 +12,8 @@ class YuthonDutyApproval(models.Model):
|
||||
reason_text = fields.Html(string='申请事由')
|
||||
|
||||
# 指标变更
|
||||
# change_duty_kpi_ids = fields.One2many('yuthon.kpi.line', 'change_duty_kpi_id', string="KPI变更明细")
|
||||
# change_duty_gs_ids = fields.One2many('yuthon.gs.line', 'change_duty_gs_id', string="GS变更明细")
|
||||
change_duty_kpi_ids = fields.One2many('yuthon.kpi.line', 'change_duty_kpi_id', string="KPI变更明细")
|
||||
change_duty_gs_ids = fields.One2many('yuthon.gs.line', 'change_duty_gs_id', string="GS变更明细")
|
||||
index_duty_approval_ids = fields.One2many('yuthon.index.management', 'index_duty_approval_id', string="部门责任变更明细")
|
||||
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ from odoo import models, fields, api, exceptions, _
|
||||
|
||||
class YuthonDutyManagement(models.Model):
|
||||
_name = 'yuthon.duty.management'
|
||||
_description = "部门责任书"
|
||||
_description = "组织绩效"
|
||||
_rec_name = 'name'
|
||||
|
||||
name = fields.Char('标题')
|
||||
@@ -13,16 +13,16 @@ class YuthonDutyManagement(models.Model):
|
||||
('up_half', '上半年'),
|
||||
('down_half', '下半年'),
|
||||
('year', '年度'), ], '周期', required=True)
|
||||
|
||||
department_id = fields.Many2one("hr.department", string="部门", required=True)
|
||||
start_index_time = fields.Date('指标生效时间')
|
||||
end_index_time = fields.Date('指标失效时间')
|
||||
assessment_department_id = fields.Many2one("hr.department", string="被考核部门")
|
||||
index_statu = fields.Selection([('work', '生效'), ('void', '作废')], '状态', required=True)
|
||||
# 绩效考核
|
||||
# performance_kpi_ids = fields.One2many('yuthon.kpi.line', 'performance_kpi_id', string="KPI")
|
||||
# performance_gs_ids = fields.One2many('yuthon.gs.line', 'performance_gs_id', string="GS")
|
||||
performance_kpi_ids = fields.One2many('yuthon.kpi.line', 'performance_kpi_id', string="KPI")
|
||||
performance_gs_ids = fields.One2many('yuthon.gs.line', 'performance_gs_id', string="GS")
|
||||
|
||||
index_duty_ids = fields.One2many('yuthon.index.management', 'index_duty_id', string="绩效明细")
|
||||
# index_duty_ids = fields.One2many('yuthon.index.management', 'index_duty_id', string="绩效明细")
|
||||
|
||||
@api.onchange('assessment_time', 'cycle', 'department_id')
|
||||
def _onchange_year_department(self):
|
||||
@@ -30,24 +30,48 @@ class YuthonDutyManagement(models.Model):
|
||||
cycle_dict = {'monthly': '月度', 'quarter': '季度', 'up_half': '上半年', 'down_half': '下半年',
|
||||
'year': '年度'}
|
||||
cycle_display = cycle_dict.get(self.cycle, self.cycle)
|
||||
self.name = f"{self.assessment_time}{cycle_display}{self.department_id.name}责任书"
|
||||
self.name = f"{self.assessment_time}{cycle_display}{self.department_id.name}绩效考核"
|
||||
|
||||
@api.model_create_multi
|
||||
def create(self, vals_list):
|
||||
performance_records = super().create(vals_list)
|
||||
for performance in performance_records:
|
||||
self.env['yuthon.assessment.tasks'].create({
|
||||
'name': performance.name, # 使用创建的 performance 记录的 name
|
||||
'organization_id': performance.id, # 建立关联关系
|
||||
'index_statu': performance.index_statu,
|
||||
'performance_type':'organize'
|
||||
})
|
||||
return performance_records
|
||||
|
||||
# class YuthonKpiLine(models.Model):
|
||||
# _name = 'yuthon.kpi.line'
|
||||
# _description = "KPI明细行"
|
||||
#
|
||||
# # 链接部门责任书和变更菜单
|
||||
# performance_kpi_id = fields.Many2one('yuthon.duty.management', string="KPI")
|
||||
# change_duty_kpi_id = fields.Many2one('yuthon.duty.approval', string="KPI变更明细")
|
||||
@api.model
|
||||
def write(self, vals):
|
||||
result = super().write(vals)
|
||||
if result:
|
||||
# 只更新被修改的记录
|
||||
for performance in self:
|
||||
tasks = self.env['yuthon.assessment.tasks'].search([('organization_id', '=', performance.id)])
|
||||
tasks.write({
|
||||
'name': performance.name,
|
||||
'index_statu': performance.index_statu
|
||||
})
|
||||
return result
|
||||
|
||||
class YuthonKpiLine(models.Model):
|
||||
_name = 'yuthon.kpi.line'
|
||||
_description = "KPI明细行"
|
||||
|
||||
# 链接部门责任书和变更菜单
|
||||
performance_kpi_id = fields.Many2one('yuthon.duty.management', string="KPI")
|
||||
change_duty_kpi_id = fields.Many2one('yuthon.duty.approval', string="KPI变更明细")
|
||||
#
|
||||
# KPI
|
||||
# 指标名称
|
||||
# index_name_id = fields.Many2one('yuthon.index.management')
|
||||
# duty_index_name = fields.Char(related='index_name_id.index_name', string='考核任务名称', store=True)
|
||||
index_name_id = fields.Many2one('yuthon.index.management')
|
||||
duty_index_name = fields.Char(related='index_name_id.index_name', string='指标名称', store=True)#
|
||||
|
||||
# index_definition_id = fields.Many2one('yuthon.index.management')
|
||||
# duty_index_definition = fields.Char(related='index_definition_id.index_definition', string="指标定义")
|
||||
index_definition_id = fields.Many2one('yuthon.index.management')
|
||||
duty_index_definition = fields.Char(related='index_definition_id.index_definition', string="指标定义")
|
||||
#
|
||||
# index_id = fields.Many2one('yuthon.index.management')
|
||||
# duty_index_type = fields.Selection(related='index_id.compute_type', string='计算类别', store=True)
|
||||
@@ -58,25 +82,30 @@ class YuthonDutyManagement(models.Model):
|
||||
# duty_employee_id = fields.Many2one('yuthon.index.management')
|
||||
# employee_id = fields.Many2one('hr.employee', related='duty_employee_id.employee_id', string="员工", store=True)
|
||||
#
|
||||
# unit_compute = fields.Char('计算单位')
|
||||
# weight = fields.Char(string="权重%")
|
||||
unit_compute = fields.Char('计算单位')
|
||||
weight = fields.Char(string="权重%")
|
||||
# compute_method = fields.Char(string="计算方法")
|
||||
#
|
||||
#
|
||||
# class YuthonGsLine(models.Model):
|
||||
# _name = 'yuthon.gs.line'
|
||||
# _description = "GS明细行"
|
||||
class YuthonGsLine(models.Model):
|
||||
_name = 'yuthon.gs.line'
|
||||
_description = "GS明细行"
|
||||
#
|
||||
# # 链接部门责任书和变更菜单
|
||||
# performance_gs_id = fields.Many2one('yuthon.duty.management', string="GS")
|
||||
# change_duty_gs_id = fields.Many2one('yuthon.duty.approval', string="GS变更明细")
|
||||
performance_gs_id = fields.Many2one('yuthon.duty.management', string="GS")
|
||||
change_duty_gs_id = fields.Many2one('yuthon.duty.approval', string="GS变更明细")
|
||||
# # index_duty_gs_id = fields.Many2one('yuthon.index.management', string="GS变更明细")
|
||||
# # 指标名称
|
||||
# index_name_id = fields.Many2one('yuthon.index.management')
|
||||
# work_task = fields.Char(related='index_name_id.index_name', string="工作任务")
|
||||
#
|
||||
# compute_act = fields.Char(string="计划安排及具体措施/行动")
|
||||
index_name_id = fields.Many2one('yuthon.index.management')
|
||||
work_task = fields.Char(related='index_name_id.index_name', string="工作任务")
|
||||
#
|
||||
compute_act = fields.Char(string="计划安排及具体措施/行动")
|
||||
node_target = fields.Char(string="节点目标")
|
||||
quality_objectives = fields.Char(string="质量目标")
|
||||
node_target1 = fields.Char(string="节点目标")
|
||||
quality_objectives1 = fields.Char(string="质量目标")
|
||||
node_target2 = fields.Char(string="节点目标")
|
||||
quality_objectives2 = fields.Char(string="质量目标")
|
||||
# index_id = fields.Many2one('yuthon.index.management', string='Index')
|
||||
# duty_index_type = fields.Selection(related='index_id.compute_type', string='计算类别', store=True)
|
||||
#
|
||||
@@ -86,4 +115,4 @@ class YuthonDutyManagement(models.Model):
|
||||
# duty_employee_id = fields.Many2one('yuthon.index.management')
|
||||
# employee_id = fields.Many2one('hr.employee', string="员工", related='duty_employee_id.employee_id', store=True)
|
||||
#
|
||||
# weight = fields.Char(string="权重%")
|
||||
weight = fields.Char(string="权重%")
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
from odoo import models, fields, api, exceptions, _
|
||||
|
||||
|
||||
class YuthonEmployeeApproval(models.Model):
|
||||
_name = 'yuthon.employee.approval'
|
||||
_description = "员工指标库变更管理"
|
||||
_rec_name = 'name'
|
||||
|
||||
name = fields.Char('标题')
|
||||
creation_time = fields.Datetime(string='申请日期', default=lambda self: fields.Datetime.now())
|
||||
job_id = fields.Many2one('hr.job', string="岗位")
|
||||
reason_text = fields.Html(string='申请事由')
|
||||
|
||||
change_employee_library_ids = fields.One2many("yuthon.index.employee",'change_employee_library_id',string="员工指标库库变更明细")
|
||||
@@ -0,0 +1,53 @@
|
||||
from odoo import models, fields, api, exceptions, _
|
||||
|
||||
|
||||
class YuthonEmployeePerformance(models.Model):
|
||||
_name = 'yuthon.employee.performance'
|
||||
_description = '员工绩效'
|
||||
|
||||
name = fields.Char('标题')
|
||||
assessment_time = fields.Char('考核时间', required=True)
|
||||
cycle = fields.Selection([('monthly', '月度'),
|
||||
('quarter', '季度'),
|
||||
('up_half', '上半年'),
|
||||
('down_half', '下半年'),
|
||||
('year', '年度'), ], '周期', required=True)
|
||||
assessment_type = fields.Char('考核类型', required=True)
|
||||
department_id = fields.Many2one("hr.department", string="部门", required=True)
|
||||
start_index_time = fields.Date('指标生效时间')
|
||||
end_index_time = fields.Date('指标失效时间')
|
||||
examiners = fields.Selection([('middle', '中层'),('staff', '普通员工')],string='被考核人')
|
||||
index_statu = fields.Selection([('work', '生效'), ('void', '作废')], '状态', required=True)
|
||||
|
||||
@api.onchange('assessment_time', 'cycle', 'department_id')
|
||||
def _onchange_year_department(self):
|
||||
if self.cycle and self.department_id and self.assessment_time:
|
||||
cycle_dict = {'monthly': '月度', 'quarter': '季度', 'up_half': '上半年', 'down_half': '下半年',
|
||||
'year': '年度'}
|
||||
cycle_display = cycle_dict.get(self.cycle, self.cycle)
|
||||
self.name = f"{self.assessment_time}{cycle_display}{self.department_id.name}绩效考核"
|
||||
|
||||
@api.model_create_multi
|
||||
def create(self, vals_list):
|
||||
performance_records = super().create(vals_list)
|
||||
for performance in performance_records:
|
||||
self.env['yuthon.assessment.tasks'].create({
|
||||
'name': performance.name, # 使用创建的 performance 记录的 name
|
||||
'performance_id': performance.id, # 建立关联关系
|
||||
'index_statu': performance.index_statu,
|
||||
'performance_type': 'employs'
|
||||
})
|
||||
return performance_records
|
||||
|
||||
@api.model
|
||||
def write(self, vals):
|
||||
result = super().write(vals)
|
||||
if result:
|
||||
# 只更新被修改的记录
|
||||
for performance in self:
|
||||
tasks = self.env['yuthon.assessment.tasks'].search([('performance_id', '=', performance.id)])
|
||||
tasks.write({
|
||||
'name': performance.name,
|
||||
'index_statu': performance.index_statu
|
||||
})
|
||||
return result
|
||||
@@ -0,0 +1,30 @@
|
||||
from odoo import models, fields, api, exceptions, _
|
||||
|
||||
|
||||
class YuthonGradingTasks(models.Model):
|
||||
_name = 'yuthon.grading.tasks'
|
||||
_description = 'GS评分表'
|
||||
|
||||
name = fields.Char(string='名称', required=True)
|
||||
department_id = fields.Many2one("hr.department", string="部门", required=True)
|
||||
index_time = fields.Date(string='时间')
|
||||
gs_ids = fields.One2many("yuthon.gs.detail.lines", "gs_id", string="GS评分表明细行")
|
||||
|
||||
|
||||
|
||||
class YuthonGSDetailLines(models.Model):
|
||||
_name = 'yuthon.gs.detail.lines'
|
||||
_description = 'GS评分表明细行'
|
||||
#gs指标
|
||||
gs_id = fields.Many2one("yuthon.grading.tasks", string="关联GS评分表")
|
||||
gst_name = fields.Char(string='GS指标名称')
|
||||
weight = fields.Float(string='权重')
|
||||
assessment_tasks = fields.Char(string='上半年考核任务')
|
||||
quality_instructions = fields.Char(string='完成质量说明')
|
||||
node_description = fields.Char(string='完成节点说明')
|
||||
fact_sheet = fields.Char(string='组织绩效办公室核实情况说明')
|
||||
quality_score = fields.Float(string='质量得分')
|
||||
node_score = fields.Float(string='节点得分')
|
||||
total_scores = fields.Float(string='合计得分')
|
||||
score = fields.Float(string='总分')
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
from odoo import models, fields, api, exceptions, _
|
||||
|
||||
|
||||
class YuthonIndexEmployee(models.Model):
|
||||
_name = 'yuthon.index.employee'
|
||||
_description = '员工绩效标准库'
|
||||
|
||||
name = fields.Char('指标库', required=True)
|
||||
dimension = fields.Char('维度', required=True)
|
||||
grading_criteria = fields.Char('评分标准', required=True)
|
||||
start_index_time = fields.Date(string='生效时间', required=True)
|
||||
end_index_time = fields.Date(string='失效时间')
|
||||
in_charge_role = fields.Many2one('soong.user.role', string='角色')
|
||||
department_ids = fields.Many2many('hr.department', string='部门')
|
||||
employee_id = fields.Many2one('hr.employee', string="人员")
|
||||
|
||||
change_employee_library_id = fields.Many2one('yuthon.employee.approval', string='变更指标库')
|
||||
|
||||
def put_employees_approval(self):
|
||||
form_id = self.env.ref('yuthon_performance.yuthon_employee_approval_form').id
|
||||
index_applicant_ids = self.env["yuthon.index.employee"].browse(
|
||||
self._context.get('active_ids', self._context.get('active_id')))
|
||||
index_applicant_data = [(6, 0, index_applicant_ids.ids)]
|
||||
return {
|
||||
'name': '员工责任变更明细',
|
||||
'type': 'ir.actions.act_window',
|
||||
'view_mode': 'form',
|
||||
'res_model': 'yuthon.employee.approval',
|
||||
'views': [(form_id,'form')],
|
||||
'context': {'default_change_employee_library_ids':index_applicant_data
|
||||
}}
|
||||
def put_assessment_tasks1_approval(self):
|
||||
pass
|
||||
@@ -0,0 +1,35 @@
|
||||
from odoo import models, fields, api, exceptions, _
|
||||
|
||||
|
||||
class YuthonKpiTasks(models.Model):
|
||||
_name = 'yuthon.kpi.tasks'
|
||||
_description = 'KPI Tasks'
|
||||
|
||||
|
||||
name = fields.Char(string='名称', required=True)
|
||||
department_id = fields.Many2one("hr.department", string="部门", required=True)
|
||||
index_time = fields.Date(string='时间')
|
||||
kpi_ids = fields.One2many('yuthon.kpi.detail.lines', 'kpi_id', string='KPI明细')
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
class YuthonKpiDetailLines(models.Model):
|
||||
_name = 'yuthon.kpi.detail.lines'
|
||||
_description = 'KPI明细行'
|
||||
|
||||
|
||||
kpi_id = fields.Many2one('yuthon.kpi.tasks', string='KPI任务')
|
||||
weight = fields.Float(string='权重')
|
||||
kpl_name = fields.Char(string='kpl指标')
|
||||
baseline_value = fields.Float(string='底线值')
|
||||
datum_value = fields.Float(string='基准值')
|
||||
efforts_value = fields.Float(string='努力值')
|
||||
calculation_method = fields.Char(string='计算方法')
|
||||
unit = fields.Char(string='计算单位')
|
||||
current_value = fields.Float(string='当前完成值')
|
||||
complete_sheet = fields.Text(string='完成情况说明')
|
||||
score = fields.Float(string='得分')
|
||||
total_score = fields.Float(string='总分')
|
||||
@@ -4,7 +4,15 @@ access_yuthon_duty_management,yuthon_duty_management,model_yuthon_duty_managemen
|
||||
access_yuthon_plan_management,yuthon_plan_management,model_yuthon_plan_management,base.group_user,1,1,1,1
|
||||
access_yuthon_plan_management_line,yuthon_plan_management_line,model_yuthon_plan_management_line,base.group_user,1,1,1,1
|
||||
access_yuthon_index_approval,yuthon_index_approval,model_yuthon_index_approval,base.group_user,1,1,1,1
|
||||
access_yuthon_kpi_line,yuthon_kpi_line,model_yuthon_kpi_line,base.group_user,1,1,1,1
|
||||
access_yuthon_gs_line,yuthon_gs_line,model_yuthon_gs_line,base.group_user,1,1,1,1
|
||||
access_yuthon_duty_approval,yuthon_duty_approval,model_yuthon_duty_approval,base.group_user,1,1,1,1
|
||||
access_yuthon_plan_approval,yuthon_plan_approval,model_yuthon_plan_approval,base.group_user,1,1,1,1
|
||||
|
||||
|
||||
access_yuthon_index_employee,yuthon_index_employee,model_yuthon_index_employee,base.group_user,1,1,1,1
|
||||
access_yuthon_employee_approval,yuthon_employee_approval,model_yuthon_employee_approval,base.group_user,1,1,1,1
|
||||
access_yuthon_assessment_tasks,yuthon_assessment_tasks,model_yuthon_assessment_tasks,base.group_user,1,1,1,1
|
||||
access_yuthon_employee_performance,yuthon_employee_performance,model_yuthon_employee_performance,base.group_user,1,1,1,1
|
||||
access_yuthon_grading_tasks,yuthon_grading_tasks,model_yuthon_grading_tasks,base.group_user,1,1,1,1
|
||||
access_yuthon_gs_detail_lines,yuthon_gs_detail_lines,model_yuthon_gs_detail_lines,base.group_user,1,1,1,1
|
||||
access_yuthon_kpi_detail_lines,yuthon_kpi_detail_lines,model_yuthon_kpi_detail_lines,base.group_user,1,1,1,1
|
||||
access_yuthon_kpi_tasks,yuthon_kpi_tasks,model_yuthon_kpi_tasks,base.group_user,1,1,1,1
|
||||
|
||||
|
@@ -34,7 +34,7 @@
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="更改明细">
|
||||
<page string="组织绩效">
|
||||
<field name="change_index_library_ids">
|
||||
<tree editable="bottom">
|
||||
<field name="dimension"/>
|
||||
@@ -70,7 +70,7 @@
|
||||
</record>
|
||||
<!-- Action-->
|
||||
<record id="yuthon_index_approval_action" model="ir.actions.act_window">
|
||||
<field name="name">指标库变更</field>
|
||||
<field name="name">组织指标库变更</field>
|
||||
<field name="res_model">yuthon.index.approval</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
</record>
|
||||
|
||||
@@ -6,6 +6,10 @@
|
||||
<field name="model">yuthon.index.management</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree>
|
||||
<header>
|
||||
<button name="put_adjustment_approval" type="object" string="提交组织指标变更申请"/>
|
||||
<button name="put_assessment_tasks_approval" type="object" string="提交考核任务"/>
|
||||
</header>
|
||||
<field name="dimension"/>
|
||||
<field name="development_goals"/>
|
||||
<field name="index_name"/>
|
||||
@@ -22,11 +26,49 @@
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="yuthon_index_management_form" model="ir.ui.view">
|
||||
<field name="name">yuthon.index.management.form</field>
|
||||
<field name="model">yuthon.index.management</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<sheet>
|
||||
<div class="col-12 text-center">
|
||||
<h1>
|
||||
<field name="name" required="1"/>
|
||||
</h1>
|
||||
</div>
|
||||
<group col="4">
|
||||
<group>
|
||||
<field name="dimension"/>
|
||||
<field name="development_goals"/>
|
||||
<field name="index_type"/>
|
||||
<field name="index_compute"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="compute_type"/>
|
||||
<field name="check_norm"/>
|
||||
<field name="department_ids" widget="many2many_tags"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="in_charge_role"/>
|
||||
<field name="employee_id"/>
|
||||
<field name="start_index_time"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="index_name"/>
|
||||
<field name="index_definition"/>
|
||||
<field name="end_index_time"/>
|
||||
</group>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<!-- Action-->
|
||||
<record id="yuthon_index_management_action" model="ir.actions.act_window">
|
||||
<field name="name">指标库</field>
|
||||
<field name="name">组织绩效</field>
|
||||
<field name="res_model">yuthon.index.management</field>
|
||||
<field name="view_mode">tree</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
@@ -0,0 +1,32 @@
|
||||
<odoo>
|
||||
<!-- Views -->
|
||||
<record id="yuthon_assessment_tasks_tree" model="ir.ui.view">
|
||||
<field name="name">yuthon.assessment.tasks.tree</field>
|
||||
<field name="model">yuthon.assessment.tasks</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="责任书">
|
||||
<field name="name"/>
|
||||
<field name="index_statu"/>
|
||||
<field name="performance_type" string="绩效类型"/>
|
||||
<button name="buttn_appraisal_ids" type="object" string="考核详情"/>
|
||||
<button name="button_clone_task" type="object" string="克隆"/>
|
||||
<button name="button_calculate_score" type="object" string="计算分数"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="yuthon_assessment_tasks_search" model="ir.ui.view">
|
||||
<field name="name">yuthon.assessment.tasks.search</field>
|
||||
<field name="model">yuthon.assessment.tasks</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="考核任务">
|
||||
<filter name="performance_type" string="绩效类型" context="{'group_by':'performance_type'}"/>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
<record id="yuthon_assessment_tasks_action" model="ir.actions.act_window">
|
||||
<field name="name">考核任务</field>
|
||||
<field name="res_model">yuthon.assessment.tasks</field>
|
||||
<field name="view_mode">tree</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
@@ -32,6 +32,7 @@
|
||||
<group>
|
||||
<field name="department_id"/>
|
||||
<field name="index_statu"/>
|
||||
<field name="assessment_department_id"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="assessment_time"/>
|
||||
@@ -39,44 +40,51 @@
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="绩效明细">
|
||||
<group>
|
||||
<group string="KPI">
|
||||
<field name="index_duty_ids">
|
||||
<tree editable="bottom">
|
||||
<field name="index_name" string="考核任务名称"/>
|
||||
<field name="index_definition" string="指标定义"/>
|
||||
<field name="compute_type" string="计算类别"/>
|
||||
<field name="weight"/>
|
||||
<field name="compute_method"/>
|
||||
<field name="unit_compute"/>
|
||||
<field name="employee_id"/>
|
||||
<field name="in_charge_role"/>
|
||||
</tree>
|
||||
</field>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<group string="GS">
|
||||
<field name="index_duty_ids">
|
||||
<tree editable="bottom">
|
||||
<field name="index_name" string="工作任务"/>
|
||||
<field name="compute_type" string="计算类别"/>
|
||||
<field name="compute_act"/>
|
||||
<field name="weight"/>
|
||||
<field name="employee_id"/>
|
||||
<field name="in_charge_role"/>
|
||||
</tree>
|
||||
</field>
|
||||
</group>
|
||||
</group>
|
||||
<page string="组织绩效(KPI)">
|
||||
<field name="performance_kpi_ids" string=" ">
|
||||
<tree editable="bottom">
|
||||
<field name="performance_kpi_id" column_invisible="1"/>
|
||||
<field name="duty_index_name"/>
|
||||
<field name="duty_index_definition"/>
|
||||
<field name="weight"/>
|
||||
<field name="duty_index_definition"/>
|
||||
<field name="unit_compute"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
<page string="组织绩效(GS)">
|
||||
<field name="performance_gs_ids" string=" ">
|
||||
<tree editable="bottom">
|
||||
<field name="performance_gs_id" column_invisible="1"/>
|
||||
<field name="work_task"/>
|
||||
<field name="weight"/>
|
||||
<field name="compute_act"/>
|
||||
<field name="node_target"/>
|
||||
<field name="quality_objectives"/>
|
||||
<field name="node_target1"/>
|
||||
<field name="quality_objectives1"/>
|
||||
<field name="node_target2"/>
|
||||
<field name="quality_objectives2"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Tree-->
|
||||
<record id="yuthon_duty_management_tree2" model="ir.ui.view">
|
||||
<field name="name">yuthon.duty.management.tree2</field>
|
||||
<field name="model">yuthon.duty.management</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree>
|
||||
<field name="name"/>
|
||||
<field name="start_index_time"/>
|
||||
<field name="end_index_time"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<!-- Action-->
|
||||
<record id="yuthon_duty_management_action" model="ir.actions.act_window">
|
||||
<field name="name">部门责任书</field>
|
||||
|
||||
@@ -0,0 +1,72 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo>
|
||||
<!-- Views -->
|
||||
<record id="yuthon_employee_approval_tree" model="ir.ui.view">
|
||||
<field name="name">yuthon.employee.approval.tree</field>
|
||||
<field name="model">yuthon.employee.approval</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree>
|
||||
<field name="name"/>
|
||||
<field name="creation_time"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<!-- Form-->
|
||||
<record id="yuthon_employee_approval_form" model="ir.ui.view">
|
||||
<field name="name">yuthon.employee.approval.form</field>
|
||||
<field name="model">yuthon.employee.approval</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<sheet>
|
||||
<div class="oe_title">
|
||||
<label for="name"/>
|
||||
<h1>
|
||||
<field name="name"/>
|
||||
</h1>
|
||||
</div>
|
||||
<group>
|
||||
<group>
|
||||
<field name="creation_time"/>
|
||||
<field name="reason_text"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="job_id"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="员工绩效">
|
||||
<field name="change_employee_library_ids">
|
||||
<tree editable="bottom">
|
||||
<field name="dimension"/>
|
||||
<field name="grading_criteria"/>
|
||||
<field name="department_ids" widget="many2many_tags"/>
|
||||
<field name="in_charge_role"/>
|
||||
<field name="employee_id"/>
|
||||
<field name="start_index_time"/>
|
||||
<field name="end_index_time"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="yuthon_employee_approval_search" model="ir.ui.view">
|
||||
<field name="name">yuthon.employee.approval.search</field>
|
||||
<field name="model">yuthon.employee.approval</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="指标库变更查询">
|
||||
<field name="name"/>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
<!-- Action-->
|
||||
<record id="yuthon_employee_approval_action" model="ir.actions.act_window">
|
||||
<field name="name">员工指标库变更</field>
|
||||
<field name="res_model">yuthon.employee.approval</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
@@ -0,0 +1,50 @@
|
||||
<odoo>
|
||||
<!-- Views -->
|
||||
<record id="yuthon_employee_performance_tree" model="ir.ui.view">
|
||||
<field name="name">yuthon.employee.performance.tree</field>
|
||||
<field name="model">yuthon.employee.performance</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="责任书"
|
||||
decoration-danger="index_statu == 'void'"
|
||||
decoration-success="index_statu == 'work'">
|
||||
<field name="department_id"/>
|
||||
<field name="name"/>
|
||||
<field name="start_index_time"/>
|
||||
<field name="end_index_time"/>
|
||||
<field name="index_statu"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="yuthon_employee_performance_form" model="ir.ui.view">
|
||||
<field name="name">yuthon.employee.performance.form</field>
|
||||
<field name="model">yuthon.employee.performance</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="责任书">
|
||||
<sheet>
|
||||
<div class="oe_title">
|
||||
<label for="name"/>
|
||||
<h1>
|
||||
<field name="name"/>
|
||||
</h1>
|
||||
</div>
|
||||
<group>
|
||||
<group>
|
||||
<field name="department_id"/>
|
||||
<field name="index_statu"/>
|
||||
<field name="examiners"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="assessment_time"/>
|
||||
<field name="cycle"/>
|
||||
</group>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="yuthon_employee_performance_action" model="ir.actions.act_window">
|
||||
<field name="name">员工绩效</field>
|
||||
<field name="res_model">yuthon.employee.performance</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -0,0 +1,62 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo>
|
||||
<!-- Views -->
|
||||
<record id="yuthon_grading_tasks_tree" model="ir.ui.view">
|
||||
<field name="name">yuthon.grading.tasks.tree</field>
|
||||
<field name="model">yuthon.grading.tasks</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree>
|
||||
<field name="name"/>
|
||||
<field name="department_id"/>
|
||||
<field name="index_time"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="yuthon_grading_tasks_form" model="ir.ui.view">
|
||||
<field name="name">yuthon.grading.tasks.form</field>
|
||||
<field name="model">yuthon.grading.tasks</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<sheet>
|
||||
<div class="col-12 text-center">
|
||||
<h1>
|
||||
<field name="name" required="1"/>
|
||||
</h1>
|
||||
</div>
|
||||
<group col="2">
|
||||
<group>
|
||||
<field name="department_id"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="index_time"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="GS评分表">
|
||||
<field name="gs_ids">
|
||||
<tree editable="bottom">
|
||||
<field name="gs_id" column_invisible="1"/>
|
||||
<field name="gst_name" required="1"/>
|
||||
<field name="weight" required="1"/>
|
||||
<field name="assessment_tasks" required="1"/>
|
||||
<field name="quality_instructions" required="1"/>
|
||||
<field name="node_description" required="1"/>
|
||||
<field name="fact_sheet" required="1"/>
|
||||
<field name="quality_score" required="1"/>
|
||||
<field name="total_scores" required="1"/>
|
||||
<field name="score" required="1"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<!-- Action-->
|
||||
<record id="yuthon_grading_tasks_action" model="ir.actions.act_window">
|
||||
<field name="name">GS评分表</field>
|
||||
<field name="res_model">yuthon.grading.tasks</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -0,0 +1,59 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<record id="view_yuthon_index_employee_tree2" model="ir.ui.view">
|
||||
<field name="name">yuthon.index.employee.tree</field>
|
||||
<field name="model">yuthon.index.employee</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree>
|
||||
<header>
|
||||
<button name="put_employees_approval" type="object" string="提交员工指标变更申请"/>
|
||||
<button name="put_assessment_tasks1_approval" type="object" string="提交考核任务"/>
|
||||
</header>
|
||||
<field name="dimension"/>
|
||||
<field name="grading_criteria"/>
|
||||
<field name="department_ids" widget="many2many_tags"/>
|
||||
<field name="in_charge_role"/>
|
||||
<field name="employee_id"/>
|
||||
<field name="start_index_time"/>
|
||||
<field name="end_index_time"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_yuthon_index_employee_form" model="ir.ui.view">
|
||||
<field name="name">yuthon.index.employee.form</field>
|
||||
<field name="model">yuthon.index.employee</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<sheet>
|
||||
<div class="col-12 text-center">
|
||||
<h1>
|
||||
<field name="name" required="1"/>
|
||||
</h1>
|
||||
</div>
|
||||
<group col="4">
|
||||
<group>
|
||||
<field name="dimension"/>
|
||||
<field name="grading_criteria"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="department_ids" widget="many2many_tags"/>
|
||||
<field name="in_charge_role"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="employee_id"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="start_index_time"/>
|
||||
<field name="end_index_time"/>
|
||||
</group>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="yuthon_index_employee_action" model="ir.actions.act_window">
|
||||
<field name="name">员工绩效</field>
|
||||
<field name="res_model">yuthon.index.employee</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -0,0 +1,64 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo>
|
||||
<!-- Views -->
|
||||
<record id="yuthon_kpi_tasks_tree" model="ir.ui.view">
|
||||
<field name="name">yuthon.kpi.tasks.tree</field>
|
||||
<field name="model">yuthon.kpi.tasks</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree>
|
||||
<field name="name"/>
|
||||
<field name="department_id"/>
|
||||
<field name="index_time"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="yuthon_kpi_tasks_form" model="ir.ui.view">
|
||||
<field name="name">yuthon.kpi.tasks.form</field>
|
||||
<field name="model">yuthon.kpi.tasks</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<sheet>
|
||||
<div class="col-12 text-center">
|
||||
<h1>
|
||||
<field name="name" required="1"/>
|
||||
</h1>
|
||||
</div>
|
||||
<group col="2">
|
||||
<group>
|
||||
<field name="department_id"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="index_time"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="KPI评分表">
|
||||
<field name="kpi_ids">
|
||||
<tree editable="bottom">
|
||||
<field name="kpi_id" coulmn_invisible="1"/>
|
||||
<field name="weight"/>
|
||||
<field name="kpl_name"/>
|
||||
<field name="baseline_value"/>
|
||||
<field name="datum_value"/>
|
||||
<field name="efforts_value"/>
|
||||
<field name="calculation_method"/>
|
||||
<field name="unit"/>
|
||||
<field name="current_value"/>
|
||||
<field name="complete_sheet"/>
|
||||
<field name="score"/>
|
||||
<field name="total_score"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<!-- Action-->
|
||||
<record id="yuthon_kpi_tasks_action" model="ir.actions.act_window">
|
||||
<field name="name">KPI评分表</field>
|
||||
<field name="res_model">yuthon.kpi.tasks</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -33,6 +33,12 @@
|
||||
name="员工绩效指标库"
|
||||
sequence="3"
|
||||
action="yuthon_index_management_action"/>
|
||||
<!-- <menuitem id="yuthon_performance_approval_management_menu"-->
|
||||
<!-- parent="yuthon_performance_menu_config_root"-->
|
||||
<!-- name="指标变更申请表"-->
|
||||
<!-- action="yuthon_index_approval_action"-->
|
||||
<!-- sequence="5"/>-->
|
||||
|
||||
<!-- <menuitem id="yuthon_plan_management_menu"-->
|
||||
<!-- parent="yuthon_performance_menu_config_root"-->
|
||||
<!-- name="计划管理"-->
|
||||
|
||||
@@ -133,7 +133,7 @@
|
||||
<menuitem id="hr_contract_menu_root_board"
|
||||
name="合同管理"
|
||||
parent="hr_employee_menu_root_board"
|
||||
action="hr.open_view_employee_list_my"
|
||||
action="hr_contract.action_hr_contract"
|
||||
sequence="9"/>
|
||||
<menuitem id="hr_set_process_menu_root_board"
|
||||
name="流程"
|
||||
@@ -402,7 +402,7 @@
|
||||
<menuitem id="human_social_files_root_board"
|
||||
name="社保档案"
|
||||
parent="human_resources_salary_root_board"
|
||||
action="yuthon_none_action"
|
||||
action="yuthon_hr_employee_approval.yuthon_social_files_approval_action"
|
||||
sequence="1"/>
|
||||
<menuitem id="human_social_compute_root_board"
|
||||
name="社保计算"
|
||||
@@ -447,21 +447,36 @@
|
||||
parent="yuthon_index_management_menu_board"
|
||||
name="员工绩效指标库"
|
||||
sequence="3"
|
||||
action="yuthon_performance.yuthon_index_management_action"/>
|
||||
action="yuthon_performance.yuthon_index_employee_action"/>
|
||||
<menuitem id="yuthon_performance_approval_management_menu_board"
|
||||
parent="yuthon_index_management_menu_board"
|
||||
name="组织指标变更申请表"
|
||||
action="yuthon_performance.yuthon_index_approval_action"
|
||||
sequence="5"/>
|
||||
<menuitem id="yuthon_performance_employee_management_menu_board"
|
||||
parent="yuthon_index_management_menu_board"
|
||||
name="员工指标变更申请表"
|
||||
action="yuthon_performance.yuthon_employee_approval_action"
|
||||
sequence="7"/>
|
||||
<menuitem id="yuthon_performance_duty_menu_board"
|
||||
parent="yuthon_performance_menu_config_root_board"
|
||||
name="考核任务"
|
||||
sequence="3"/>
|
||||
<menuitem id="yuthon_performance_duty_management_menu_board"
|
||||
parent="yuthon_performance_duty_menu_board"
|
||||
name="考核任务"
|
||||
action="yuthon_performance.yuthon_assessment_tasks_action"
|
||||
sequence="1"/>
|
||||
<menuitem id="yuthon_organization_performance_menu_board"
|
||||
parent="yuthon_performance_duty_menu_board"
|
||||
name="组织绩效"
|
||||
sequence="1"
|
||||
sequence="3"
|
||||
action="yuthon_performance.yuthon_duty_management_action"/>
|
||||
<menuitem id="yuthon_employee_performance_menu_board"
|
||||
parent="yuthon_performance_duty_menu_board"
|
||||
name="员工绩效"
|
||||
sequence="3"
|
||||
action="yuthon_performance.yuthon_duty_management_action"/>
|
||||
sequence="5"
|
||||
action="yuthon_performance.yuthon_employee_performance_action"/>
|
||||
<menuitem id="yuthon_plan_management_board"
|
||||
parent="yuthon_performance_menu_config_root_board"
|
||||
name="个人工作任务"
|
||||
@@ -470,8 +485,17 @@
|
||||
<menuitem id="yuthon_score_root_board"
|
||||
parent="yuthon_performance_menu_config_root_board"
|
||||
name="评分"
|
||||
sequence="7"
|
||||
action="yuthon_none_action"/>
|
||||
sequence="7"/>
|
||||
<menuitem id="yuthon_gs_tasks_menu_board"
|
||||
parent="yuthon_score_root_board"
|
||||
name="GS评分表"
|
||||
sequence="1"
|
||||
action="yuthon_performance.yuthon_grading_tasks_action"/>
|
||||
<menuitem id="yuthon_kpi_tasks_menu_board"
|
||||
parent="yuthon_score_root_board"
|
||||
name="KPI评分表"
|
||||
sequence="3"
|
||||
action="yuthon_performance.yuthon_kpi_tasks_action"/>
|
||||
|
||||
<!-- 培训管理 -->
|
||||
<menuitem id="training_manager_root_board"
|
||||
|
||||
Reference in New Issue
Block a user