添加功能
This commit is contained in:
@@ -12,7 +12,7 @@
|
||||
'category': 'Human Resources/Attendances',
|
||||
'sequence': 240,
|
||||
'website': 'https://www.pengyuthon.com',
|
||||
'depends': ['hr_attendance', 'resource', 'base', 'hr', 'mail', 'soong_workflow','yuthon_issue','planning'],
|
||||
'depends': ['hr_attendance', 'resource', 'base', 'hr', 'mail', 'soong_workflow','yuthon_issue','planning','calendar'],
|
||||
'data': [
|
||||
'security/ir.model.access.csv',
|
||||
# 'security/approval_attendance.xml',
|
||||
@@ -20,6 +20,10 @@
|
||||
# 'views/inherit_hr_employee_views.xml',
|
||||
'views/hr_attendance_views.xml',
|
||||
'views/resource_calendar_leaves_views.xml',
|
||||
'views/yuthon_adjustments_approval_views.xml',
|
||||
'views/yuthon_duty_arrangement_views.xml',
|
||||
'views/yuthon_duty_summary_views.xml',
|
||||
'views/yuthon_duty_setting_views.xml',
|
||||
# 'views/attendance_iot_datas.xml',
|
||||
# 'views/attendance_iot_manager_views.xml',
|
||||
# 'views/attendance_iot_views.xml',
|
||||
|
||||
@@ -41,4 +41,11 @@
|
||||
<field name="prefix">ZB%(y)s%(month)s%(day)s</field>
|
||||
<field name="padding">3</field>
|
||||
</record>
|
||||
|
||||
<record id="seq_adjustments_approval" model="ir.sequence">
|
||||
<field name="name">值班调休申请序号</field>
|
||||
<field name="code">adjustments_approval</field>
|
||||
<field name="prefix">TX%(y)s%(month)s%(day)s</field>
|
||||
<field name="padding">3</field>
|
||||
</record>
|
||||
</odoo>
|
||||
|
||||
@@ -22,6 +22,9 @@ from . import card_approval
|
||||
from . import planning_template_inherit
|
||||
from . import overtime_page
|
||||
from . import inherit_planning_role
|
||||
|
||||
from . import yuthon_duty_summary
|
||||
from . import yuthon_adjustments_approval
|
||||
from . import yuthon_duty_arrangement
|
||||
from . import yuthon_duty_setting
|
||||
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ class CardApprovals(models.Model):
|
||||
code = fields.Char(string="编号",default=lambda self: self.env['ir.sequence'].next_by_code('overtime_approval'))
|
||||
users_id = fields.Many2one('res.users', string="申请人", default=lambda self: self.env.user.id)
|
||||
department_id = fields.Many2one(related='users_id.employee_id.department_id', string="部门")
|
||||
is_issues = fields.Boolean(string='是否上会', default=False)
|
||||
is_issues = fields.Boolean(string='是否上会')
|
||||
related_issues_id = fields.Many2one('issue.library', string="关联议题")
|
||||
reason_application = fields.Html(string="申请事由")
|
||||
replacement_time = fields.Datetime(string="补卡时间")
|
||||
|
||||
@@ -16,7 +16,7 @@ class DutyApprovals(models.Model):
|
||||
department_id = fields.Many2one(related='users_id.employee_id.department_id', string="部门")
|
||||
users_id = fields.Many2one('res.users', string="申请人",default=lambda self: self.env.user.id)
|
||||
duty_ids = fields.One2many('duty.approval.line','duty_id',string="值班人明细")
|
||||
is_issues = fields.Boolean(string='是否上会', default=False)
|
||||
is_issues = fields.Boolean(string='是否上会')
|
||||
reason_application = fields.Char(string="事由")
|
||||
related_issues_id = fields.Many2one('issue.library', string="关联议题")
|
||||
@api.depends('date_start', 'date_end')
|
||||
|
||||
@@ -17,7 +17,7 @@ class GoApprovals(models.Model):
|
||||
department_id = fields.Many2one(related='users_id.employee_id.department_id', string="部门")
|
||||
reason_application = fields.Char(string="事由")
|
||||
go_approval_ids = fields.One2many('go.approvals.line', 'go_approval_id', string="外出详情")
|
||||
is_issues = fields.Boolean(string='是否上会', default=False)
|
||||
is_issues = fields.Boolean(string='是否上会')
|
||||
related_issues_id = fields.Many2one('issue.library', string="关联议题")
|
||||
|
||||
@api.onchange('is_issues')
|
||||
|
||||
@@ -18,7 +18,7 @@ class OvertimeApprovals(models.Model):
|
||||
default=lambda self: self._default_user_lines())
|
||||
reason_application = fields.Char(string="事由")
|
||||
department_id = fields.Many2one(related='users_id.employee_id.department_id', string="部门")
|
||||
is_issues = fields.Boolean(string='是否上会', default=False)
|
||||
is_issues = fields.Boolean(string='是否上会')
|
||||
details = fields.Text(string="加班说明")
|
||||
related_issues_id = fields.Many2one('issue.library', string="关联议题")
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ class RemoveHolidayApprovals(models.Model):
|
||||
date_start = fields.Datetime(string="开始时间", default=fields.Datetime.now)
|
||||
date_end = fields.Datetime(string="结束时间")
|
||||
reason_application = fields.Html(string="申请事由")
|
||||
is_issues = fields.Boolean(string='是否上会', default=False)
|
||||
is_issues = fields.Boolean(string='是否上会')
|
||||
related_issues_id = fields.Many2one('issue.library', string="关联议题")
|
||||
|
||||
@api.onchange('is_issues')
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
from odoo import api, fields, models, tools, _
|
||||
from datetime import datetime, time, timedelta
|
||||
from odoo.exceptions import UserError
|
||||
|
||||
|
||||
class YuthonAdjustmentsApproval(models.Model):
|
||||
_name = 'yuthon.adjustments.approval'
|
||||
_inherit = ['soong.workflow.mixin']
|
||||
_description = '值班调休审批'
|
||||
_rec_name = 'name'
|
||||
|
||||
yuthon_company = fields.Selection(related='users_id.employee_id.yuthon_company', string="公司")
|
||||
name = fields.Char(string="标题")
|
||||
code = fields.Char(string="编号", default=lambda self: self.env['ir.sequence'].next_by_code('adjustments_approval'))
|
||||
users_id = fields.Many2one('res.users', string="申请人", default=lambda self: self.env.user.id)
|
||||
department_id = fields.Many2one(related='users_id.employee_id.department_id', string="部门")
|
||||
is_issues = fields.Boolean(string='是否上会')
|
||||
related_issues_id = fields.Many2one('issue.library', string="关联议题")
|
||||
reason_application = fields.Html(string="申请事由")
|
||||
replacement_time = fields.Datetime(string="值班时间")
|
||||
documents_ids = fields.Many2many('ir.attachment', string="附件")
|
||||
active = fields.Boolean('Active', default=True, tracking=True)
|
||||
|
||||
@api.onchange('is_issues')
|
||||
def _onchange_is_issues(self):
|
||||
if self.is_issues:
|
||||
issue_id = self.env['issue.library'].create({'name': self.name})
|
||||
self.related_issues_id = issue_id.id
|
||||
workflow_record_id = self.env["soong.workflow.record"].search(
|
||||
[("res_model", "=", self._name), ("res_id", "=", self.id)])
|
||||
self.env['issue.library.approval.line'].create({
|
||||
'issue_library_id': issue_id.id,
|
||||
'workflow_record_id': workflow_record_id.id,
|
||||
'approval_type': workflow_record_id.workflow_id.id,
|
||||
'code': self.code,
|
||||
'approval_date': fields.Datetime.now(),
|
||||
})
|
||||
elif self.related_issues_id:
|
||||
raise UserError("已经创建了相关的上会记录,不能取消勾选")
|
||||
@@ -0,0 +1,49 @@
|
||||
from odoo import api, fields, models, tools, _
|
||||
from datetime import datetime, time, timedelta
|
||||
from odoo.exceptions import UserError
|
||||
|
||||
|
||||
class YuthonDutyArrangement(models.Model):
|
||||
_name = 'yuthon.duty.arrangement'
|
||||
_description = '值班安排'
|
||||
_order = 'start_time desc'
|
||||
_rec_name = 'employee_id'
|
||||
|
||||
employee_id = fields.Many2one('hr.employee', string='员工',
|
||||
domain=lambda self: [('department_id.name', '=', '仓储组')])
|
||||
start_time = fields.Datetime(string="开始时间")
|
||||
end_time = fields.Datetime(string="结束时间")
|
||||
remind = fields.Selection([('fifteen', '提醒-15分钟'), ('thirty', '提醒-30分钟'), ('one_hour', '提醒-1小时'),
|
||||
('two_hour', '提醒-2小时')], string='提醒')
|
||||
remarks = fields.Text(string='备注')
|
||||
is_photo = fields.Boolean(string='拍照回传1', compute='_compute_is_photo')
|
||||
is_photo_two = fields.Boolean(string='拍照回传2', compute='_compute_is_photo')
|
||||
is_photo_three = fields.Boolean(string='拍照回传3', compute='_compute_is_photo')
|
||||
photo_id = fields.Many2one('documents.document', string="文件1")
|
||||
photo_id_two = fields.Many2one('documents.document', string="文件2")
|
||||
photo_id_three = fields.Many2one('documents.document', string="文件3")
|
||||
duration = fields.Datetime(string='时长1')
|
||||
duration_two = fields.Datetime(string='时长2')
|
||||
duration_three = fields.Datetime(string='时长3')
|
||||
is_abnormal = fields.Boolean(string='是否异常')
|
||||
|
||||
@api.model_create_multi
|
||||
def create(self, vals_list):
|
||||
performance_records = super().create(vals_list)
|
||||
for performance in performance_records:
|
||||
self.env['yuthon.duty.summary'].create({
|
||||
'employee_id': performance.employee_id.id,
|
||||
'duty_arrangement_id': performance.id,
|
||||
})
|
||||
return performance_records
|
||||
|
||||
@api.depends('duration', 'duration_two', 'duration_three')
|
||||
def _compute_is_photo(self):
|
||||
for record in self:
|
||||
record.is_photo = bool(record.duration)
|
||||
record.is_photo_two = bool(record.duration_two)
|
||||
record.is_photo_three = bool(record.duration_three)
|
||||
|
||||
@api.onchange('duration')
|
||||
def bottom_auto_schedule(self):
|
||||
pass
|
||||
@@ -0,0 +1,8 @@
|
||||
from odoo import api, fields, models, tools, _
|
||||
|
||||
|
||||
class YuthonDutySetting(models.Model):
|
||||
_name = 'yuthon.duty.setting'
|
||||
_description = '值班说明配置'
|
||||
|
||||
reason_application = fields.Html(string="说明")
|
||||
@@ -0,0 +1,19 @@
|
||||
from odoo import api, fields, models, tools, _
|
||||
|
||||
|
||||
class YuthonDutySummary(models.Model):
|
||||
_name = 'yuthon.duty.summary'
|
||||
_description = '值班汇总'
|
||||
|
||||
employee_id = fields.Many2one('hr.employee', string='员工')
|
||||
duty_weekdays = fields.Float(string='周一至周五值班次数')
|
||||
subtotal_weekdays = fields.Float(string='小计')
|
||||
duty_weekends = fields.Float(string='周六日值班次数(不调休)')
|
||||
subtotal_weekends = fields.Float(string='小计')
|
||||
duty_weekends_leave = fields.Float(string='周六日值班次数(调休)')
|
||||
subtotal_weekends_leave = fields.Float(string='小计')
|
||||
total_duty_shifts = fields.Float(string='值班合计')
|
||||
holidays = fields.Float(string='节假日值班费(元)')
|
||||
total = fields.Float(string='总合计')
|
||||
remake = fields.Text(string='备注')
|
||||
duty_arrangement_id = fields.Many2one('yuthon.duty.arrangement', string='关联值班安排')
|
||||
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<template id="yuthon_duty_summary_report_template">
|
||||
</template>
|
||||
</odoo>
|
||||
@@ -10,3 +10,7 @@ access_go_approvals_line,go.approvals.line,model_go_approvals_line,base.group_us
|
||||
access_overtime_user_line,overtime.user.line,model_overtime_user_line,base.group_user,1,1,1,1
|
||||
access_duty_approval_line,duty.approval.line,model_duty_approval_line,base.group_user,1,1,1,1
|
||||
access_overtime_page,overtime.page,model_overtime_page,base.group_user,1,1,1,1
|
||||
access_yuthon_duty_summary,yuthon.duty.summary,model_yuthon_duty_summary,base.group_user,1,1,1,1
|
||||
access_yuthon_adjustments_approval,yuthon.adjustments.approval,model_yuthon_adjustments_approval,base.group_user,1,1,1,1
|
||||
access_yuthon_duty_arrangement,yuthon.duty.arrangement,model_yuthon_duty_arrangement,base.group_user,1,1,1,1
|
||||
access_yuthon_duty_setting,yuthon.duty.setting,model_yuthon_duty_setting,base.group_user,1,1,1,1
|
||||
|
||||
|
@@ -12,7 +12,6 @@
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="card_approval_form" model="ir.ui.view">
|
||||
<field name="name">card.approval.actions</field>
|
||||
<field name="model">card.approval</field>
|
||||
@@ -30,6 +29,8 @@
|
||||
</group>
|
||||
<group>
|
||||
<field name="actual_punch"/>
|
||||
<field name="is_issues"/>
|
||||
<field name="related_issues_id" invisible="not is_issues"/>
|
||||
</group>
|
||||
</group>
|
||||
<group string="审批事项">
|
||||
@@ -38,14 +39,8 @@
|
||||
<field name="code"/>
|
||||
<field name="reason_application"/>
|
||||
<field name="documents_ids" widget="preview_many2many"/>
|
||||
<field name="is_issues"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="关联议题" invisible="not is_issues">
|
||||
<field name="related_issues_id"/>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
<group>
|
||||
<field name="reason_application"/>
|
||||
<field name="is_issues"/>
|
||||
<field name="related_issues_id" invisible="not is_issues"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
@@ -53,9 +54,6 @@
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
<page string="关联议题" invisible="not is_issues">
|
||||
<field name="related_issues_id"/>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
</form>
|
||||
|
||||
@@ -38,6 +38,7 @@
|
||||
<group>
|
||||
<field name="reason_application"/>
|
||||
<field name="is_issues"/>
|
||||
<field name="related_issues_id" invisible="not is_issues"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
@@ -52,9 +53,6 @@
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
<page string="关联议题" invisible="not is_issues">
|
||||
<field name="related_issues_id"/>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
</form>
|
||||
|
||||
@@ -40,6 +40,7 @@
|
||||
<field name="users_id"/>
|
||||
<field name="details"/>
|
||||
<field name="is_issues"/>
|
||||
<field name="related_issues_id" invisible="not is_issues"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
@@ -57,9 +58,6 @@
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
<page string="关联议题" invisible="not is_issues">
|
||||
<field name="related_issues_id"/>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
</form>
|
||||
|
||||
@@ -35,17 +35,13 @@
|
||||
<field name="date"/>
|
||||
<field name="code"/>
|
||||
<field name="is_issues"/>
|
||||
<field name="related_issues_id" invisible="not is_issues"/>
|
||||
</group>
|
||||
</group>
|
||||
<group string="审批事由">
|
||||
<field name="name"/>
|
||||
<field name="reason_application"/>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="关联议题" invisible="not is_issues">
|
||||
<field name="related_issues_id"/>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo>
|
||||
<record id="view_yuthon_adjustments_approval_tree" model="ir.ui.view">
|
||||
<field name="name">yuthon.adjustments.approval.tree</field>
|
||||
<field name="model">yuthon.adjustments.approval</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="值班调休审批">
|
||||
<field name="name"/>
|
||||
<field name="users_id"/>
|
||||
<field name="yuthon_company"/>
|
||||
<field name="department_id"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_yuthon_adjustments_approval_form" model="ir.ui.view">
|
||||
<field name="name">yuthon.adjustments.approval.form</field>
|
||||
<field name="model">yuthon.adjustments.approval</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="值班调休审批">
|
||||
<sheet>
|
||||
<group string="个人信息" col="2">
|
||||
<group>
|
||||
<field name="users_id"/>
|
||||
<field name="yuthon_company"/>
|
||||
<field name="is_issues"/>
|
||||
<field name="related_issues_id" invisible="not is_issues"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="replacement_time"/>
|
||||
<field name="department_id"/>
|
||||
</group>
|
||||
</group>
|
||||
<group string="审批事项">
|
||||
<group>
|
||||
<field name="name"/>
|
||||
<field name="code"/>
|
||||
<field name="reason_application"/>
|
||||
<field name="documents_ids" widget="preview_many2many"/>
|
||||
</group>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_yuthon_adjustments_approval_action" model="ir.actions.act_window">
|
||||
<field name="name">调休审批</field>
|
||||
<field name="res_model">yuthon.adjustments.approval</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
</record>
|
||||
</odoo>
|
||||
|
||||
@@ -0,0 +1,102 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo>
|
||||
<record id="view_yuthon_duty_arrangement_tree" model="ir.ui.view">
|
||||
<field name="name">yuthon.duty.arrangement.tree</field>
|
||||
<field name="model">yuthon.duty.arrangement</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="值班安排"
|
||||
decoration-danger="is_abnormal">
|
||||
<header>
|
||||
<button name="bottom_auto_schedule" type="object" string="自动排班" class="oe_highlight"/>
|
||||
</header>
|
||||
<field name="employee_id"/>
|
||||
<field name="start_time"/>
|
||||
<field name="end_time"/>
|
||||
<field name="remind"/>
|
||||
<field name="is_photo"/>
|
||||
<field name="is_photo_two"/>
|
||||
<field name="is_photo_three"/>
|
||||
<field name="is_abnormal"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_yuthon_duty_arrangement_form" model="ir.ui.view">
|
||||
<field name="name">yuthon.duty.arrangement.form</field>
|
||||
<field name="model">yuthon.duty.arrangement</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="值班安排">
|
||||
<sheet>
|
||||
<div class="oe_title">
|
||||
<label for="employee_id"/>
|
||||
<h1>
|
||||
<field name="employee_id" required='1'/>
|
||||
</h1>
|
||||
</div>
|
||||
<group col="2">
|
||||
<group>
|
||||
<field name="start_time"/>
|
||||
<field name="is_abnormal"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="end_time"/>
|
||||
<field name="remind"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<field name="remarks"/>
|
||||
</group>
|
||||
<group col="3" string="值班照片信息">
|
||||
<group>
|
||||
<field name="is_photo"/>
|
||||
<field name="is_photo_two"/>
|
||||
<field name="is_photo_three"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="photo_id"/>
|
||||
<field name="photo_id_two"/>
|
||||
<field name="photo_id_three"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="duration"/>
|
||||
<field name="duration_two"/>
|
||||
<field name="duration_three"/>
|
||||
</group>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_yuthon_duty_arrangement_search" model="ir.ui.view">
|
||||
<field name="name">yuthon.duty.arrangement.search</field>
|
||||
<field name="model">yuthon.duty.arrangement</field>
|
||||
<field name="arch" type="xml">
|
||||
<search>
|
||||
<field name="employee_id"/>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_duty_calendar_event_calendar" model="ir.ui.view">
|
||||
<field name="name">yuthon.duty.arrangement.calendar</field>
|
||||
<field name="model">yuthon.duty.arrangement</field>
|
||||
<field name="priority" eval="2"/>
|
||||
<field name="arch" type="xml">
|
||||
<calendar string="待办事项"
|
||||
date_start="start_time"
|
||||
date_stop="end_time"
|
||||
event_open_popup="true"
|
||||
event_limit="5"
|
||||
quick_create="false"
|
||||
quick_create_view_id="%(yuthon_hr_attendance.view_yuthon_duty_arrangement_form)d">
|
||||
</calendar>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_yuthon_duty_arrangement_action" model="ir.actions.act_window">
|
||||
<field name="name">值班安排</field>
|
||||
<field name="res_model">yuthon.duty.arrangement</field>
|
||||
<field name="view_mode">tree,form,calendar,search</field>
|
||||
</record>
|
||||
</odoo>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo>
|
||||
<record id="view_yuthon_duty_setting_tree" model="ir.ui.view">
|
||||
<field name="name">yuthon.duty.setting.tree</field>
|
||||
<field name="model">yuthon.duty.setting</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="值班说明">
|
||||
<field name="reason_application"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_yuthon_duty_setting_form" model="ir.ui.view">
|
||||
<field name="name">yuthon.duty.setting.form</field>
|
||||
<field name="model">yuthon.duty.setting</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="值班说明">
|
||||
<sheet>
|
||||
<group>
|
||||
<field name="reason_application"/>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="action_yuthon_duty_setting" model="ir.actions.act_window">
|
||||
<field name="name">值班说明</field>
|
||||
<field name="res_model">yuthon.duty.setting</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -0,0 +1,41 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo>
|
||||
<record id="view_yuthon_duty_summary_tree" model="ir.ui.view">
|
||||
<field name="name">yuthon.duty.summary.tree</field>
|
||||
<field name="model">yuthon.duty.summary</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="值班汇总" editable="bottom">
|
||||
<field name="employee_id" required='1'/>
|
||||
<field name="duty_weekdays"/>
|
||||
<field name="subtotal_weekdays"/>
|
||||
<field name="duty_weekends"/>
|
||||
<field name="subtotal_weekends"/>
|
||||
<field name="duty_weekends_leave"/>
|
||||
<field name="subtotal_weekends_leave"/>
|
||||
<field name="total_duty_shifts"/>
|
||||
<field name="holidays"/>
|
||||
<field name="total"/>
|
||||
<field name="remake"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="yuthon_duty_summary_report_actions" model="ir.actions.report">
|
||||
<field name="name">值班汇总打印</field>
|
||||
<field name="model">yuthon.duty.summary</field>
|
||||
<field name="report_type">qweb-pdf</field>
|
||||
<field name="report_name">yuthon_hr_attendance.yuthon_duty_summary_report_template</field>
|
||||
<field name="report_file">yuthon_hr_attendance.yuthon_duty_summary_report_template</field>
|
||||
<field name="print_report_name">'%s-值班汇总'%</field>
|
||||
<field name="binding_model_id" ref="model_yuthon_duty_summary"/>
|
||||
<field name="binding_type">report</field>
|
||||
</record>
|
||||
<record id="view_yuthon_duty_summary_action" model="ir.actions.act_window">
|
||||
<field name="name">值班汇总</field>
|
||||
<field name="res_model">yuthon.duty.summary</field>
|
||||
<field name="view_mode">tree</field>
|
||||
</record>
|
||||
</odoo>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
'data/publish_applicant_setting_data.xml',
|
||||
'security/ir.model.access.csv',
|
||||
'security/job_lv_security_group.xml',
|
||||
'security/hr_job_company_security_group.xml',
|
||||
'views/yuthon_hr_employee_views.xml',
|
||||
'views/yuthon_hr_department_views.xml',
|
||||
'views/yuthon_job_lv_views.xml',
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<record id="inherit_hr_job_views_rule" model="ir.rule">
|
||||
<field name="name">岗位编制公司过滤</field>
|
||||
<field name="model_id" ref="model_hr_job"/>
|
||||
<field name="domain_force">[('yuthon_company', '=', user.employee_id.yuthon_company)]</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_unlink" eval="True"/>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -16,7 +16,7 @@ class YuthonAppointmentApproval(models.Model):
|
||||
entrant_illustrate = fields.Text(string="录入说明")
|
||||
documents_ids = fields.Many2many('documents.document', string="附件")
|
||||
appointment_result_ids = fields.One2many('yuthon.appointment.result.line', 'appointment_result_id', string="聘任结果")
|
||||
is_issues = fields.Boolean(string='是否上会', default=False)
|
||||
is_issues = fields.Boolean(string='是否上会')
|
||||
related_issues_id = fields.Many2one('issue.library', string="关联议题")
|
||||
# 聘任结果
|
||||
judge_team_leader = fields.Many2one('hr.employee', string="评审小组组长")
|
||||
|
||||
@@ -14,7 +14,7 @@ class YuthonInterviewApproval(models.Model):
|
||||
department_id = fields.Many2one("hr.department", string="应聘职务")
|
||||
code = fields.Char(string="编号", default=lambda self: self.env['ir.sequence'].next_by_code('yuthon_interview_approval_code'))
|
||||
applicant_ids = fields.One2many('interview.approval.line', 'interview_approval_id', string='应聘面试信息')
|
||||
is_issues = fields.Boolean(string='是否上会', default=False)
|
||||
is_issues = fields.Boolean(string='是否上会')
|
||||
yuthon_company = fields.Selection([('thtz', '天河投资集团'), ('thwg', '天河物管'),
|
||||
('thlc', '天河粮储'), ('tctj', '天投城建')], string="公司")
|
||||
related_issues_id = fields.Many2one('issue.library', string="关联议题")
|
||||
|
||||
@@ -28,12 +28,12 @@ class YuthonLeavingApproval(models.Model):
|
||||
application_data = fields.Date(string="申请日期")
|
||||
notice_documents_ids= fields.Many2many('documents.document', string="辞职申请")
|
||||
resignation_reason = fields.Text(string="辞职原因")
|
||||
is_issues = fields.Boolean(string='是否上会', default=False)
|
||||
is_issues = fields.Boolean(string='是否上会')
|
||||
related_issues_id = fields.Many2one('issue.library', string="关联议题")
|
||||
is_leaving = fields.Boolean(string="同意离职", default=False)
|
||||
is_leaving = fields.Boolean(string="同意离职")
|
||||
leaving_date = fields.Date(string="工作期限")
|
||||
handover_person = fields.Many2one("hr.employee", string="交接人")
|
||||
is_handover = fields.Boolean(string="交接完成", default=False)
|
||||
is_handover = fields.Boolean(string="交接完成")
|
||||
|
||||
@api.onchange('is_issues')
|
||||
def _onchange_is_issues(self):
|
||||
|
||||
@@ -80,7 +80,7 @@ class YuthonMessageLogin(models.Model):
|
||||
driving_license_validity = fields.Date(string='有效期')
|
||||
resignation_id = fields.Many2one('documents.document', string='离职证明')
|
||||
medical_exam_cost = fields.Float(string='体检费用(含乙肝)')
|
||||
is_issues = fields.Boolean(string='是否上会', default=False)
|
||||
is_issues = fields.Boolean(string='是否上会')
|
||||
related_issues_id = fields.Many2one('issue.library', string="关联议题")
|
||||
login_document_id = fields.Many2one('ir.attachment', string="简历附件")
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@ class YuthonOnboardApproval(models.Model):
|
||||
details_personal_information_form_id = fields.Many2one('yuthon.message.login', string="个人信息表详情")
|
||||
details_recruitment_needs_form_id = fields.Many2one('yuthon.recruitment.approval', string="招聘需求详情")
|
||||
details_interview_form_id = fields.Many2many('yuthon.interview.approval', string="面试详情")
|
||||
is_issues = fields.Boolean(string='是否上会', default=False)
|
||||
is_issues = fields.Boolean(string='是否上会')
|
||||
related_issues_id = fields.Many2one('issue.library', string="关联议题")
|
||||
# 合同
|
||||
contracted_status = fields.Selection([('first', '首'
|
||||
|
||||
@@ -13,7 +13,7 @@ class YuthonPrepareApproval(models.Model):
|
||||
department_id = fields.Many2one("hr.department", string="部门",)
|
||||
name = fields.Char(string='标题')
|
||||
reason = fields.Html(string="正文")
|
||||
is_issues = fields.Boolean(string='是否上会', default=False)
|
||||
is_issues = fields.Boolean(string='是否上会')
|
||||
related_issues_id = fields.Many2one('issue.library', string="关联议题")
|
||||
notice_documents_ids = fields.Many2many('ir.attachment', string='议题附件')
|
||||
adjust_information_ids = fields.One2many('prepare.approval.line', 'prepare_approval_id', string="关联调整信息")
|
||||
|
||||
@@ -25,7 +25,7 @@ class YuthonReassignmentApproval(models.Model):
|
||||
place_of_work = fields.Char(string="工作地点")
|
||||
use_user_type = fields.Selection(related="employee_id.use_user_type", string="聘用形式")
|
||||
person_attributes = fields.Selection([('in', '编制内'), ('out', '编制外')], string="人员属性")
|
||||
is_issues = fields.Boolean(string='是否上会', default=False)
|
||||
is_issues = fields.Boolean(string='是否上会')
|
||||
related_issues_id = fields.Many2one('issue.library', string="关联议题")
|
||||
|
||||
#异动信息
|
||||
|
||||
@@ -14,7 +14,7 @@ class YuthonRecruitmentApproval(models.Model):
|
||||
code = fields.Char(string="编号", default=lambda self: self.env['ir.sequence'].next_by_code('yuthon_recruitment_approval_code'))
|
||||
reason = fields.Html(string="正文")
|
||||
recruitment_ids = fields.One2many('hr.job', 'recruitment_approval_id', string="招聘申请")
|
||||
is_issues = fields.Boolean(string='是否上会', default=False)
|
||||
is_issues = fields.Boolean(string='是否上会')
|
||||
related_issues_id = fields.Many2one('issue.library', string="关联议题")
|
||||
notice_documents_ids = fields.Many2many('ir.attachment', string='议题附件')
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ class YuthonRegularizationPrepareApproval(models.Model):
|
||||
trial_end_date = fields.Date(string="试用期结束日期")
|
||||
parent_id = fields.Many2one(related='employee_id.parent_id',string="直线上级")
|
||||
business_leader = fields.Char(string="业务线上级")
|
||||
is_issues = fields.Boolean(string='是否上会', default=False)
|
||||
is_issues = fields.Boolean(string='是否上会')
|
||||
related_issues_id = fields.Many2one('issue.library', string="关联议题")
|
||||
# 转正考核
|
||||
job_coach = fields.Char(string="工作指导人一")
|
||||
|
||||
@@ -17,7 +17,7 @@ class YuthonRewardApproval(models.Model):
|
||||
entrant_date = fields.Date(string="录入日期")
|
||||
entrant_illustrate = fields.Text(string="录入说明")
|
||||
notice_documents_ids = fields.Many2many('documents.document', string="附件")
|
||||
is_issues = fields.Boolean(string='是否上会', default=False)
|
||||
is_issues = fields.Boolean(string='是否上会')
|
||||
related_issues_id = fields.Many2one('issue.library', string="关联议题")
|
||||
reward_results_ids = fields.One2many('yuthon.reward.punishment.details', 'reward_punishment_id', string="奖罚明细")
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ class YuthonServiceApproval(models.Model):
|
||||
job_id = fields.Many2one('hr.job', string="岗位")
|
||||
reason_issuance = fields.Char(string="开证原因")
|
||||
issue_text = fields.Html(string="正文")
|
||||
is_issues = fields.Boolean(string='是否上会', default=False)
|
||||
is_issues = fields.Boolean(string='是否上会')
|
||||
related_issues_id = fields.Many2one('issue.library', string="关联议题")
|
||||
|
||||
@api.onchange('is_issues')
|
||||
|
||||
@@ -27,7 +27,7 @@ class YutransferApproval(models.Model):
|
||||
notification_change_id = fields.Many2one("hr.employee", string="告知人员")
|
||||
handover_reason = fields.Text(string="移交原因")
|
||||
notice_documents_ids = fields.Many2many('documents.document', string="附件")
|
||||
is_issues = fields.Boolean(string='是否上会', default=False)
|
||||
is_issues = fields.Boolean(string='是否上会')
|
||||
related_issues_id = fields.Many2one('issue.library', string="关联议题")
|
||||
transfer_ids = fields.One2many('yuthon.transfer.infor.detail.lines', 'transfer_id')
|
||||
|
||||
|
||||
@@ -43,8 +43,5 @@
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
|
||||
|
||||
</template>
|
||||
|
||||
</odoo>
|
||||
@@ -396,10 +396,20 @@
|
||||
parent="hr_attendance_root_board"
|
||||
action="hr_attendance.hr_attendance_action"
|
||||
sequence="4"/>
|
||||
<menuitem id="menu_hr_attendance_duty_summary_board"
|
||||
name="值班安排"
|
||||
parent="hr_attendance_root_board"
|
||||
action="yuthon_hr_attendance.view_yuthon_duty_arrangement_action"
|
||||
sequence="8"/>
|
||||
<menuitem id="menu_hr_attendance_summary_root_board"
|
||||
name="值班汇总"
|
||||
parent="hr_attendance_root_board"
|
||||
action="yuthon_hr_attendance.view_yuthon_duty_summary_action"
|
||||
sequence="12"/>
|
||||
<menuitem id="menu_hr_attendance_approval_request_board"
|
||||
name="流程"
|
||||
parent="hr_attendance_root_board"
|
||||
sequence="5"/>
|
||||
sequence="15"/>
|
||||
<menuitem id="menu_hr_attendance_scheme_request_board"
|
||||
name="考勤方案"
|
||||
parent="menu_hr_attendance_approval_request_board"
|
||||
@@ -435,10 +445,15 @@
|
||||
parent="menu_hr_attendance_approval_request_board"
|
||||
sequence="13"
|
||||
action="yuthon_hr_attendance.approval_request_card"/>
|
||||
<menuitem id="menu_adjustments_approval_board"
|
||||
name="值班调休申请"
|
||||
parent="menu_hr_attendance_approval_request_board"
|
||||
sequence="15"
|
||||
action="yuthon_hr_attendance.view_yuthon_adjustments_approval_action"/>
|
||||
<menuitem id="attendance_resources_setting_root_board"
|
||||
name="配置"
|
||||
parent="hr_attendance_root_board"
|
||||
sequence="9"/>
|
||||
sequence="99"/>
|
||||
<menuitem id="menu_hr_plan_set_role_board"
|
||||
name="班次名称"
|
||||
parent="attendance_resources_setting_root_board"
|
||||
@@ -459,6 +474,11 @@
|
||||
parent="attendance_resources_setting_root_board"
|
||||
sequence="4"
|
||||
action="yuthon_hr_attendance.view_overtime_page_action"/>
|
||||
<menuitem id="menu_yuthon_duty_setting_board"
|
||||
name="值班说明配置"
|
||||
parent="attendance_resources_setting_root_board"
|
||||
sequence="7"
|
||||
action="yuthon_hr_attendance.action_yuthon_duty_setting"/>
|
||||
<!--假期管理-->
|
||||
<menuitem id="holiday_manage_menu_root_board"
|
||||
name="假期管理"
|
||||
|
||||
Reference in New Issue
Block a user