公文1.3 考勤1.0

This commit is contained in:
ONION
2024-07-14 18:52:42 +08:00
parent 147f3311bc
commit 83c32bb212
37 changed files with 824 additions and 272 deletions
+4 -5
View File
@@ -13,8 +13,7 @@
'security/ir.model.access.csv',
'data/approval_category_type_data.xml',
'data/approval_group_data.xml',
'views/generic_forms_overtime.xml',
'views/wuguan_leave_registration_approval.xml',
# 'views/generic_forms_overtime.xml',
# 'views/tianhe_dsh_issues_declarations.xml',
# 'views/tianhe_construction_business_approval.xml',
# 'views/tianhe_management_declare_approval.xml',
@@ -26,9 +25,9 @@
# 'views/tianhe_property_submission_approval.xml',
# 'views/tianhe_rental_receipt_approval.xml',
# 'views/tianhe_meeting_file.xml',
# 'views/generic_forms_replacement_card.xml',
# 'views/generic_forms_outing.xml',
# 'views/generic_forms_remove_holiday.xml',
# 'views/tianhe_dimission_approval.xml',
# 'views/tianhe_tryout_official_approval.xml',
# 'views/tianhe_exercitation_tryout_approval.xml',
@@ -62,26 +62,6 @@
<field name="name">天河投资租赁合同收款单</field>
<field name="approval_type">rental_receipt</field>
</record>
<!-- 公司通用表单- 补卡 -->
<record id="approval_category_data_generic_forms_replacement_card" model="approval.category">
<field name="name">补卡</field>
<field name="approval_type">card_approval</field>
</record>
<!-- 公司通用表单- 加班 -->
<record id="approval_category_data_generic_forms_overtime" model="approval.category">
<field name="name">加班</field>
<field name="approval_type">overtime_approval</field>
</record>
<!-- 公司通用表单- 外出 -->
<record id="approval_category_data_generic_forms_outing" model="approval.category">
<field name="name">外出</field>
<field name="approval_type">go_approval</field>
</record>
<!-- 公司通用表单- 销假 -->
<record id="approval_category_data_generic_forms_remove_holiday" model="approval.category">
<field name="name">销假</field>
<field name="approval_type">remove_holiday_approval</field>
</record>
<!-- 公司通用表单 - 通用离职表 -->
<record id="approval_category_data_tianhe_dimission_approval" model="approval.category">
<field name="name">离职表</field>
@@ -167,11 +147,6 @@
<field name="name">产权变更表申请表</field>
<field name="approval_type">property_right_alter</field>
</record>
<!-- 天河物管 - 请假登记单 -->
<record id="approval_category_data_wuguan_leave_registration_approval" model="approval.category">
<field name="name">请假</field>
<field name="approval_type">leave_registration</field>
</record>
<!-- 天河物管 - 物业管理变更申请表 -->
<record id="approval_category_data_wuguan_property_management_application" model="approval.category">
<field name="name">物业管理变更申请表</field>
-4
View File
@@ -1,8 +1,6 @@
# -*- coding: utf-8 -*-
from . import inherit_approval_category
from . import inherit_approval_request
from . import overtime_approval
from . import holiday_approval
# from . import tianhe_construction_business_approval
# from . import tianhe_process_change_approval
# from . import tianhe_contentious_matter_approval
@@ -15,8 +13,6 @@ from . import holiday_approval
# from . import tianhe_exercitation_tryout_approval
# from . import tianhe_shift_registration_form
# from . import tianhe_meeting_minutes_approval
# from . import generic_forms_outing
# from . import generic_forms_remove_holiday
# from . import tianhe_dimission_approval
# from . import tianhe_tryout_official_approval
# from . import tianhe_exercitation_tryout_approval
@@ -1,13 +0,0 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, tools
from odoo.exceptions import ValidationError
class GenericFormsOuting(models.Model):
_inherit = "approval.request"
_description = '公司通用表单——外出'
missed_meal_charges = fields.Char(string="误餐费")
apply_unit = fields.Char(string="申请单位")
@@ -1,13 +0,0 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, tools
from odoo.exceptions import ValidationError
class GenericFormsRemoveHoliday(models.Model):
_inherit = "approval.request"
_description = '公司通用表单——销假'
entry_time = fields.Datetime(string="入职时间")
type_remove_holiday = fields.Char(string="销假类型")
@@ -1,23 +0,0 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, tools
from odoo.exceptions import ValidationError
class GenericFormsReplacementCard(models.Model):
_inherit = "approval.request"
_description = '公司通用表单——补卡'
type_application = fields.Selection([
('replacement_card', '补卡'),
('overtime', '加班'),
('outing', '外出'),
('cancellation_of_fakes', '销假'),
('Reassignment', '调岗'),
('dimission', '离职'),
('onboarding', '入职'),
('regularization', '转正'),
], string="申请类型")
replacement_time = fields.Datetime(string="补卡时间")
real_go_work_time = fields.Datetime(string="全天上班")
real_get_off_work_time = fields.Datetime(string="全天下班")
type_of_exception = fields.Char(string="异常类型")
@@ -1,24 +0,0 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, tools, _
from odoo.exceptions import ValidationError
class WuguanLeaveRegistrationApproval(models.Model):
_inherit = "approval.request"
_description = '请假'
leave_category = fields.Many2many('holiday.setting', string="请假类别")
leave_time = fields.Char(string="请假时间")
leave_days = fields.Float(string='请假天数', compute='_compute_leave_days', store=True)
@api.depends('date_start', 'date_end')
def _compute_leave_days(self):
for record in self:
if record.date_start and record.date_end:
start_date = fields.Datetime.from_string(record.date_start)
end_date = fields.Datetime.from_string(record.date_end)
duration = end_date - start_date
record.leave_days = duration.days
else:
record.leave_days = 0
@@ -20,12 +20,6 @@ class ApprovalCategory(models.Model):
('document_processing', '文件处理表'),
('property_submission', '物业部业务呈批表'),
('rental_receipt', '租赁合同收款单'),
('card_approval', '补卡审批'),
('overtime_approval', '加班审批'),
('go_approval', '外出审批'),
('duty_approval', '值班审批'),
('leave_approval', '调休审批'),
('remove_holiday_approval', '销假审批'),
('exit_form', '离职表'),
('tryout_official', '试用期转正式员工'),
('exercitation_tryout', '实习期转试用期'),
@@ -34,7 +28,6 @@ class ApprovalCategory(models.Model):
('meeting_minutes', '会议纪要'),
('engineering', '工程立项'),
('property_right_alter', '产权变更表申请表'),
('leave_registration', '请假'),
('tianhe_property_management_reporting', '物业经营报表管理'),
('tianhe_fire_safety_management', '消防安全管理'),
('tianhe_information_ublish_approval_form', '信息发布呈批表'),
@@ -1,4 +1,2 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_approval_request_line,approval_request_line,model_approval_request_line,base.group_user,1,1,1,1
access_overtime_user_line,approval_overtime_user_line,model_overtime_user_line,base.group_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_approval_request_line approval_request_line model_approval_request_line base.group_user 1 1 1 1
access_overtime_user_line approval_overtime_user_line model_overtime_user_line base.group_user 1 1 1 1
@@ -1,24 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="approvals_category_type_code_generic_forms_outing" model="ir.ui.view">
<field name="name">approvals.category.type.code.generic.forms.outing</field>
<field name="model">approval.request</field>
<field name="inherit_id" ref="approvals.approval_request_view_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='date_confirmed']" position="after">
<!-- <field name="type_application" widget="radio" options="{'horizontal': true}" invisible="approval_category_name != 'generic_forms_outing'"/>-->
<field name="date_start" invisible="approval_category_name != 'generic_forms_outing'"/>
<field name="date_end" invisible="approval_category_name != 'generic_forms_outing'"/>
<field name="approval_sex" widget="radio" options="{'horizontal': true}" invisible="approval_category_name != 'generic_forms_outing'"/>
</xpath>
<xpath expr="//field[@name='company_id']" position="after">
<field name="job_id" invisible="approval_category_name != 'generic_forms_outing'"/>
<field name="apply_unit" invisible="approval_category_name != 'generic_forms_outing'"/>
<field name="missed_meal_charges" invisible="approval_category_name != 'generic_forms_outing'"/>
<field name="reason_application" string="申请事由" invisible="approval_category_name != 'generic_forms_outing'"/>
<field name="duration" string="外出申请时长" invisible="approval_category_name != 'generic_forms_outing'"/>
</xpath>
</field>
</record>
</odoo>
@@ -1,31 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="approvals_category_type_code_overtime_approval" model="ir.ui.view">
<field name="name">approvals.category.type.code.generic.forms.overtime</field>
<field name="model">approval.request</field>
<field name="inherit_id" ref="approvals.approval_request_view_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='date_confirmed']" position="after">
<field name="department_id" invisible="approval_category_name != 'overtime_approval'"/>
<field name="overtime_department_id" invisible="approval_category_name != 'overtime_approval'"/>
<field name="reason_application" string="申请事由" invisible="approval_category_name != 'overtime_approval'"/>
</xpath>
<xpath expr="//page[@name='approvers']" position="before">
<page string="加班人员明细" invisible="approval_category_name != 'overtime_approval'">
<field name="overtime_user_ids">
<tree editable="bottom">
<field name="user_id"/>
<field name="start_time"/>
<field name="end_time"/>
<field name="overtime_hours"/>
<field name="type_overtime"/>
<field name="compensation_mode"/>
<field name="is_male_pay"/>
<button name="attendance_button" string="考勤信息" type="object" class="btn-primary"/>
</tree>
</field>
</page>
</xpath>
</field>
</record>
</odoo>
@@ -1,24 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="approvals_category_type_code_generic_forms_remove_holiday" model="ir.ui.view">
<field name="name">approvals.category.type.code.generic_forms_remove_holiday</field>
<field name="model">approval.request</field>
<field name="inherit_id" ref="approvals.approval_request_view_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='date_confirmed']" position="after">
<!-- <field name="type_application" widget="radio" options="{'horizontal': true}" invisible="approval_category_name != 'generic_forms_remove_holiday'"/>-->
<field name="date_start" invisible="approval_category_name != 'generic_forms_remove_holiday'"/>
<field name="date_end" invisible="approval_category_name != 'generic_forms_remove_holiday'"/>
<field name="approval_sex" widget="radio" options="{'horizontal': true}" invisible="approval_category_name != 'generic_forms_remove_holiday'"/>
</xpath>
<xpath expr="//field[@name='company_id']" position="after">
<field name="job_id" invisible="approval_category_name != 'generic_forms_remove_holiday'"/>
<field name="entry_time" invisible="approval_category_name != 'generic_forms_remove_holiday'"/>
<field name="type_remove_holiday" invisible="approval_category_name != 'generic_forms_remove_holiday'"/>
<field name="reason_application" string="销假原因" invisible="approval_category_name != 'generic_forms_remove_holiday'"/>
<field name="duration" string="销假时长" invisible="approval_category_name != 'generic_forms_remove_holiday'"/>
</xpath>
</field>
</record>
</odoo>
@@ -1,20 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="approvals_category_type_code_generic_forms_replacement_card" model="ir.ui.view">
<field name="name">approvals.category.type.code.generic.forms.replacement.card</field>
<field name="model">approval.request</field>
<field name="inherit_id" ref="approvals.approval_request_view_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='date_confirmed']" position="after">
<!-- <field name="type_application" widget="radio" options="{'horizontal': true}" invisible="approval_category_name != 'generic_forms_replacement_card'"/>-->
<field name="replacement_time" invisible="approval_category_name != 'generic_forms_replacement_card'"/>
</xpath>
<xpath expr="//field[@name='company_id']" position="after">
<field name="reason_application" invisible="approval_category_name != 'generic_forms_replacement_card'"/>
<field name="type_of_exception" invisible="approval_category_name != 'generic_forms_replacement_card'"/>
<field name="real_go_work_time" invisible="approval_category_name != 'generic_forms_replacement_card'"/>
<field name="real_get_off_work_time" invisible="approval_category_name != 'generic_forms_replacement_card'"/>
</xpath>
</field>
</record>
</odoo>
@@ -1,22 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="approvals_category_type_code_leave_registration" model="ir.ui.view">
<field name="name">approvals.category.type.code.leave.registration</field>
<field name="model">approval.request</field>
<field name="inherit_id" ref="approvals.approval_request_view_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='date_confirmed']" position="after">
<field name="leave_category" widget="many2many_tags" invisible="approval_category_name != 'leave_registration'"/>
<field name="date_start" string="请假开始时间" invisible="approval_category_name != 'leave_registration'"/>
<field name="date_end" string="请假结束时间" invisible="approval_category_name != 'leave_registration'"/>
<field name="leave_days" invisible="approval_category_name != 'leave_registration'"/>
</xpath>
<xpath expr="//field[@name='company_id']" position="after">
<field name="department_id" invisible="approval_category_name != 'leave_registration'"/>
<field name="creation_time" invisible="approval_category_name != 'leave_registration'"/>
<field name="main_text" string="申请事由" invisible="approval_category_name != 'leave_registration'"/>
</xpath>
</field>
</record>
</odoo>
+9 -1
View File
@@ -12,13 +12,21 @@
'category': 'Human Resources/Attendances',
'sequence': 240,
'website': 'https://www.pengyuthon.com',
'depends': ['hr_attendance', 'resource', 'approvals', 'base', 'hr'],
'depends': ['hr_attendance', 'resource', 'approvals', 'base', 'hr', 'mail'],
'data': [
'security/ir.model.access.csv',
'security/approval_attendance.xml',
'views/inherit_hr_employee_views.xml',
'views/hr_attendance_views.xml',
'views/resource_calendar_leaves_views.xml',
'views/overtime_approval.xml',
'views/go_approval.xml',
'views/duty_approval.xml',
'views/leave_approval.xml',
'views/holidays_approval.xml',
'views/remove_holiday_approval.xml',
'views/card_approval.xml',
'views/all_attendance_menu.xml',
],
'installable': True,
'application': True,
@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<date noupdate="1">
<!-- 公司通用表单- 加班 -->
<record id="approval_overtime_data" model="overtime.approval">
<field name="name">加班申请</field>
</record>
<!-- 公司通用表单- 外出 -->
<record id="go_approval_data" model="go.approval">
<field name="name">外出申请</field>
</record>
<!-- 公司通用表单- 调休 -->
<record id="approval_approval_data" model="go.approval">
<field name="name">调休申请</field>
</record>
<!-- 公司通用表单- 请假 -->
<record id="approval_approval_holidays" model="holidays.approval">
<field name="name">请假申请</field>
</record>
<!-- 公司通用表单- 销假 -->
<record id="approval_approval_remove_holidays" model="remove.holidays.approval">
<field name="name">销假申请</field>
</record>
<!-- 公司通用表单- 补卡 -->
<record id="approval_approval_card" model="card.approval">
<field name="name">补卡申请</field>
</record>
</date>
</odoo>
+8
View File
@@ -2,5 +2,13 @@
from . import hr_attendance
from . import resource_calendar_leaves
from . import attendance_category
from . import hr_employee
from . import overtime_approval
from . import go_approval
from . import duty_approval
from . import leave_approval
from . import holidays_approval
from . import remove_holiday_approval
from . import card_approval
@@ -0,0 +1,17 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, tools
from odoo.exceptions import ValidationError, UserError
class ApprovalCategory(models.Model):
_inherit = 'approval.category'
_description = '考勤审批'
approval_type = fields.Selection(selection_add=[
('card_approval', '补卡审批'),
('overtime_approval', '加班审批'),
('go_approval', '外出审批'),
('duty_approval', '值班审批'),
('leave_approval', '调休审批'),
('leave_registration', '请假'),
('remove_holiday_approval', '销假审批')])
@@ -0,0 +1,25 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, tools, _
from datetime import datetime, time, timedelta
class CardApprovals(models.Model):
_name = 'card.approval'
_description = "补卡审批"
_inherit = ['mail.thread.main.attachment', 'mail.activity.mixin']
_rec_name = 'name'
name = fields.Char('名称')
date = fields.Datetime(string="日期", default=fields.Datetime.now)
department_id = fields.Many2one('hr.department', string="申请人部门")
partner_id = fields.Many2one('res.partner', string="来文单位")
statu = fields.Selection([('drft', '草稿'), ('going', '执行中'), ('cancel', '已取消'), ('done', '已完成')], string="状态",
default='drft')
replacement_time = fields.Datetime(string="补卡时间")
real_go_work_time = fields.Datetime(string="全天上班")
real_get_off_work_time = fields.Datetime(string="全天下班")
type_of_exception = fields.Char(string="异常类型")
reason_application = fields.Char(string="申请事由")
def card_approval(self):
pass
@@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, tools, _
from datetime import datetime, time, timedelta
class DutyApprovals(models.Model):
_name = 'duty.approval'
_description = "值班审批"
_inherit = ['mail.thread.main.attachment', 'mail.activity.mixin']
_rec_name = 'name'
name = fields.Char('名称')
date = fields.Datetime(string="日期", default=fields.Datetime.now)
department_id = fields.Many2one('hr.department', string="申请人部门")
partner_id = fields.Many2one('res.partner', string="来文单位")
statu = fields.Selection([('drft', '草稿'), ('going', '执行中'), ('cancel', '已取消'), ('done', '已完成')], string="状态",
default='drft')
def duty_approval(self):
pass
@@ -0,0 +1,38 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, tools, _
from datetime import datetime, time, timedelta
class GoApprovals(models.Model):
_name = 'go.approval'
_description = "外出审批"
_inherit = ['mail.thread.main.attachment', 'mail.activity.mixin']
_rec_name = 'name'
name = fields.Char('名称')
date = fields.Datetime(string="日期", default=fields.Datetime.now)
department_id = fields.Many2one('hr.department', string="申请人部门")
partner_id = fields.Many2one('res.partner', string="来文单位")
statu = fields.Selection([('drft', '草稿'), ('going', '执行中'), ('cancel', '已取消'), ('done', '已完成')], string="状态",
default='drft')
user_sex = fields.Selection([('girl', '女'), ('boy', '男')], string="性别")
role_id = fields.Many2one('yuthon.user.role', string="岗位")
date_start = fields.Datetime(string="开始时间", default=fields.Datetime.now)
date_end = fields.Datetime(string="结束时间")
leave_time = fields.Char(string="申请时长")
missed_meal_charges = fields.Char(string="误餐费")
apply_unit = fields.Char(string="申请单位")
@api.depends('date_start', 'date_end')
def _compute_leave_days(self):
for record in self:
if record.date_start and record.date_end:
start_date = fields.Datetime.from_string(record.date_start)
end_date = fields.Datetime.from_string(record.date_end)
duration = end_date - start_date
record.leave_days = duration.days
else:
record.leave_days = 0
def go_approval(self):
pass
@@ -0,0 +1,37 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, tools, _
from datetime import datetime, time, timedelta
class HolidaysApprovals(models.Model):
_name = 'holidays.approval'
_description = "请假审批"
_inherit = ['mail.thread.main.attachment', 'mail.activity.mixin']
_rec_name = 'name'
name = fields.Char('名称')
date = fields.Date(string="日期", default=fields.Date.today())
department_id = fields.Many2one('hr.department', string="申请人部门")
partner_id = fields.Many2one('res.partner', string="来文单位")
statu = fields.Selection([('drft', '草稿'), ('going', '执行中'), ('cancel', '已取消'), ('done', '已完成')], string="状态",
default='drft')
date_start = fields.Datetime(string="开始时间", default=fields.Datetime.now)
date_end = fields.Datetime(string="结束时间")
leave_category = fields.Many2many('holiday.setting', string="请假类别")
leave_time = fields.Char(string="请假时间")
leave_days = fields.Float(string='请假天数', compute='_compute_leave_days', store=True)
main_text = fields.Text(string='申请事由')
@api.depends('date_start', 'date_end')
def _compute_leave_days(self):
for record in self:
if record.date_start and record.date_end:
start_date = fields.Datetime.from_string(record.date_start)
end_date = fields.Datetime.from_string(record.date_end)
duration = end_date - start_date
record.leave_days = duration.days
else:
record.leave_days = 0
def holiday_approval(self):
pass
@@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, tools, _
from datetime import datetime, time, timedelta
class LeaveApprovals(models.Model):
_name = 'leave.approval'
_description = "调休审批"
_inherit = ['mail.thread.main.attachment', 'mail.activity.mixin']
_rec_name = 'name'
name = fields.Char('名称')
date = fields.Datetime(string="日期", default=fields.Datetime.now)
department_id = fields.Many2one('hr.department', string="申请人部门")
partner_id = fields.Many2one('res.partner', string="来文单位")
statu = fields.Selection([('drft', '草稿'), ('going', '执行中'), ('cancel', '已取消'), ('done', '已完成')], string="状态",
default='drft')
def leave_approval(self):
pass
@@ -4,15 +4,25 @@ from datetime import datetime, time, timedelta
class OvertimeApprovals(models.Model):
_inherit = 'approval.request'
_name = 'overtime.approval'
_description = "加班审批"
_inherit = ['mail.thread.main.attachment', 'mail.activity.mixin']
_rec_name = 'name'
name = fields.Char(string="名称", default="加班申请")
overtime_department_id = fields.Many2one('hr.department', string="加班部门")
overtime_user_ids = fields.One2many('overtime.user.line', 'approval_request_id', string="审批明细行")
reason_application = fields.Char(string="申请事由")
date = fields.Datetime(string="日期", default=fields.Datetime.now)
department_id = fields.Many2one('hr.department', string="申请人部门")
partner_id = fields.Many2one('res.partner', string="来文单位")
statu = fields.Selection([('drft', '草稿'), ('going', '执行中'), ('cancel', '已取消'), ('done', '已完成')], string="状态",
default='drft')
overtime_approval_ids = fields.Many2one('approval.request', string='关联审批')
@api.onchange('overtime_department_id')
def onchange_overtime_users(self):
if self.approval_category_name == 'overtime_approval':
if self.overtime_approval_ids.approval_category_name == 'overtime_approval':
users_data_list = []
default_datetime = datetime.combine(datetime.now().date(), time(hour=17, minute=30)) - timedelta(hours=8),
users_list = []
@@ -42,6 +52,9 @@ class OvertimeApprovals(models.Model):
}))
over.overtime_user_ids = users_data_list
def go_overtime_approval(self):
pass
class OvertimeUserLine(models.Model):
_name = 'overtime.user.line'
@@ -0,0 +1,27 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, tools, _
from datetime import datetime, time, timedelta
class RemoveHolidayApprovals(models.Model):
_name = 'remove.holiday.approval'
_description = "销假审批"
_inherit = ['mail.thread.main.attachment', 'mail.activity.mixin']
_rec_name = 'name'
name = fields.Char('名称')
date = fields.Datetime(string="日期", default=fields.Datetime.now)
department_id = fields.Many2one('hr.department', string="申请人部门")
partner_id = fields.Many2one('res.partner', string="来文单位")
statu = fields.Selection([('drft', '草稿'), ('going', '执行中'), ('cancel', '已取消'), ('done', '已完成')], string="状态",
default='drft')
entry_time = fields.Datetime(string="入职时间")
type_remove_holiday = fields.Char(string="销假类型")
user_sex = fields.Selection([('girl', '女'), ('boy', '男')], string="性别")
role_id = fields.Many2one('yuthon.user.role', string="岗位")
date_start = fields.Datetime(string="开始时间", default=fields.Datetime.now)
date_end = fields.Datetime(string="结束时间")
reason_application = fields.Char(string="申请事由")
def remove_holiday_approval(self):
pass
@@ -1,3 +1,10 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_resource_calendar_holiday,access.resource.calendar.holiday,model_resource_calendar_holiday,base.group_user,1,1,1,1
access_overtime_approval,access.overtime.approval,model_overtime_approval,base.group_user,1,1,1,1
access_go_approval,access.go.approval,model_go_approval,base.group_user,1,1,1,1
access_duty_approval,access.duty.approval,model_duty_approval,base.group_user,1,1,1,1
access_leave_approval,access.leave.approval,model_leave_approval,base.group_user,1,1,1,1
access_holidays_approval,access.holidays.approval,model_holidays_approval,base.group_user,1,1,1,1
access_remove_holiday_approval,access.remove.holiday.approval,model_remove_holiday_approval,base.group_user,1,1,1,1
access_card_approval,access.card.approval,model_card_approval,base.group_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_resource_calendar_holiday access.resource.calendar.holiday model_resource_calendar_holiday base.group_user 1 1 1 1
3 access_overtime_approval access.overtime.approval model_overtime_approval base.group_user 1 1 1 1
4 access_go_approval access.go.approval model_go_approval base.group_user 1 1 1 1
5 access_duty_approval access.duty.approval model_duty_approval base.group_user 1 1 1 1
6 access_leave_approval access.leave.approval model_leave_approval base.group_user 1 1 1 1
7 access_holidays_approval access.holidays.approval model_holidays_approval base.group_user 1 1 1 1
8 access_remove_holiday_approval access.remove.holiday.approval model_remove_holiday_approval base.group_user 1 1 1 1
9 access_card_approval access.card.approval model_card_approval base.group_user 1 1 1 1
10
@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<menuitem id="menu_hr_attendance_manager" name="经理" parent="hr_attendance.menu_hr_attendance_root" sequence="14"/>
<menuitem id="menu_hr_attendance_manager_going" name="出勤" parent="menu_hr_attendance_manager" sequence="1"
action="view_attendance_going_action"/>
<!-- !!!!! -->
<menuitem id="menu_hr_attendance_approval_request" name="考勤审批记录"
parent="hr_attendance.menu_hr_attendance_root" sequence="13"/>
<menuitem id="menu_hr_attendance_overtime" name="加班申请"
parent="menu_hr_attendance_approval_request" sequence="3" action="approval_request_overtime"/>
<menuitem id="menu_hr_attendance_going" name="外出申请"
parent="menu_hr_attendance_approval_request" sequence="4" action="approval_request_going"/>
<menuitem id="menu_hr_attendance_duty" name="值班申请" parent="menu_hr_attendance_approval_request"
sequence="5" action="approval_request_duty"/>
<menuitem id="menu_hr_attendance_leave" name="调休申请"
parent="menu_hr_attendance_approval_request" sequence="6" action="approval_request_leave"/>
<menuitem id="menu_hr_attendance_holiday" name="请假申请"
parent="menu_hr_attendance_approval_request" sequence="8" action="approval_request_holiday"/>
<menuitem id="menu_hr_attendance_remove_holiday" name="销假申请"
parent="menu_hr_attendance_approval_request" sequence="10" action="approval_request_remove_holiday"/>
<menuitem id="menu_hr_attendance_remove_card" name="补卡申请"
parent="menu_hr_attendance_approval_request" sequence="12" action="approval_request_card"/>
<!-- &lt;!&ndash; !!!!! &ndash;&gt;-->
<menuitem id="menu_hr_attendance_work" name="考勤时间表配置" parent="hr_attendance.menu_hr_attendance_root"
sequence="18" action="resource.action_resource_calendar_form"/>
</odoo>
@@ -0,0 +1,72 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="card_approval_tree" model="ir.ui.view">
<field name="name">card.approval.tree</field>
<field name="model">card.approval</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="department_id"/>
<field name="partner_id"/>
<field name="date"/>
<field name="statu"/>
</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>
<field name="arch" type="xml">
<form>
<header>
<widget name="attach_document" string="附加文档" action="message_post"/>
<button name="card_approval" string="发起申请" type="object" class="oe_highlight"/>
<field name="statu" widget="statusbar"/>
</header>
<sheet>
<div class="oe_title">
<label for="name"/>
<h1>
<field name="name" required="1"/>
</h1>
</div>
<group>
<group>
<field name="department_id"/>
<field name="partner_id"/>
<field name="replacement_time"/>
<field name="type_of_exception"/>
</group>
<group>
<field name="real_go_work_time"/>
<field name="real_get_off_work_time"/>
<field name="reason_application"/>
<field name="date"/>
</group>
</group>
</sheet>
</form>
</field>
</record>
<record id="card_approval_search" model="ir.ui.view">
<field name="name">card.approval.search</field>
<field name="model">card.approval</field>
<field name="arch" type="xml">
<search string="考勤审批状态">
<filter string="草稿" name="Drft " domain="[('statu', '=', 'drft')]"/>
<filter string="执行中" name="Going " domain="[('statu', '=', 'going')]"/>
<filter string="已取消" name="Cancel " domain="[('statu', '=', 'cancel')]"/>
<filter string="已完成" name="Done " domain="[('statu', '=', 'done')]"/>
</search>
</field>
</record>
<record id="approval_request_card" model="ir.actions.act_window">
<field name="name">补卡</field>
<field name="res_model">card.approval</field>
<field name="view_mode">tree,form</field>
</record>
</odoo>
@@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="duty_approval_tree" model="ir.ui.view">
<field name="name">duty.approval.tree</field>
<field name="model">duty.approval</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="department_id"/>
<field name="partner_id"/>
<field name="date"/>
<field name="statu"/>
</tree>
</field>
</record>
<record id="duty_approval_form" model="ir.ui.view">
<field name="name">duty.approval.actions</field>
<field name="model">duty.approval</field>
<field name="arch" type="xml">
<form>
<header>
<widget name="attach_document" string="附加文档" action="message_post"/>
<button name="duty_approval" string="发起申请" type="object" class="oe_highlight"/>
<field name="statu" widget="statusbar"/>
</header>
<sheet>
<div class="oe_title">
<label for="name"/>
<h1>
<field name="name" required="1"/>
</h1>
</div>
<group>
<group>
<field name="department_id"/>
<field name="partner_id"/>
</group>
<group>
<field name="date"/>
</group>
</group>
</sheet>
</form>
</field>
</record>
<record id="duty_approval_search" model="ir.ui.view">
<field name="name">duty.approval.search</field>
<field name="model">duty.approval</field>
<field name="arch" type="xml">
<search string="考勤审批状态">
<filter string="草稿" name="Drft " domain="[('statu', '=', 'drft')]"/>
<filter string="执行中" name="Going " domain="[('statu', '=', 'going')]"/>
<filter string="已取消" name="Cancel " domain="[('statu', '=', 'cancel')]"/>
<filter string="已完成" name="Done " domain="[('statu', '=', 'done')]"/>
</search>
</field>
</record>
<record id="approval_request_duty" model="ir.actions.act_window">
<field name="name">值班</field>
<field name="res_model">duty.approval</field>
<field name="view_mode">tree,form</field>
</record>
</odoo>
@@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="go_approval_tree" model="ir.ui.view">
<field name="name">go.approval.tree</field>
<field name="model">go.approval</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="department_id"/>
<field name="partner_id"/>
<field name="date"/>
<field name="statu"/>
</tree>
</field>
</record>
<record id="go_approval_form" model="ir.ui.view">
<field name="name">go.approval.actions</field>
<field name="model">go.approval</field>
<field name="arch" type="xml">
<form>
<header>
<widget name="attach_document" string="附加文档" action="message_post"/>
<button name="go_approval" string="发起申请" type="object" class="oe_highlight"/>
<field name="statu" widget="statusbar"/>
</header>
<sheet>
<div class="oe_title">
<label for="name"/>
<h1>
<field name="name" required="1"/>
</h1>
</div>
<group>
<group>
<field name="department_id"/>
<field name="partner_id"/>
<field name="apply_unit"/>
<field name="date_start"/>
<field name="date_end"/>
</group>
<group>
<field name="role_id"/>
<field name="missed_meal_charges"/>
<field name="user_sex"/>
<field name="leave_time"/>
<field name="date"/>
</group>
</group>
</sheet>
</form>
</field>
</record>
<record id="go_approval_search" model="ir.ui.view">
<field name="name">go.approval.search</field>
<field name="model">go.approval</field>
<field name="arch" type="xml">
<search string="考勤审批状态">
<filter string="草稿" name="Drft " domain="[('statu', '=', 'drft')]"/>
<filter string="执行中" name="Going " domain="[('statu', '=', 'going')]"/>
<filter string="已取消" name="Cancel " domain="[('statu', '=', 'cancel')]"/>
<filter string="已完成" name="Done " domain="[('statu', '=', 'done')]"/>
</search>
</field>
</record>
<record id="approval_request_going" model="ir.actions.act_window">
<field name="name">外出</field>
<field name="res_model">go.approval</field>
<field name="view_mode">tree,form</field>
</record>
</odoo>
@@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="holiday_approval_tree" model="ir.ui.view">
<field name="name">holiday.approval.tree</field>
<field name="model">holidays.approval</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="department_id"/>
<field name="partner_id"/>
<field name="date"/>
<field name="statu"/>
</tree>
</field>
</record>
<record id="holiday_approval_form" model="ir.ui.view">
<field name="name">holiday.approval.actions</field>
<field name="model">holidays.approval</field>
<field name="arch" type="xml">
<form>
<header>
<widget name="attach_document" string="附加文档" action="message_post"/>
<button name="holiday_approval" string="发起申请" type="object" class="oe_highlight"/>
<field name="statu" widget="statusbar"/>
</header>
<sheet>
<div class="oe_title">
<label for="name"/>
<h1>
<field name="name" required="1"/>
</h1>
</div>
<group>
<group>
<field name="department_id"/>
<field name="partner_id"/>
<field name="date_start"/>
<field name="date_end"/>
</group>
<group>
<field name="leave_category" widget="many2many_tags"/>
<field name="leave_days"/>
<field name="date"/>
</group>
</group>
<group>
<field name="main_text"/>
</group>
</sheet>
</form>
</field>
</record>
<record id="holiday_approval_search" model="ir.ui.view">
<field name="name">holiday.approval.search</field>
<field name="model">holidays.approval</field>
<field name="arch" type="xml">
<search string="考勤审批状态">
<filter string="草稿" name="Drft " domain="[('statu', '=', 'drft')]"/>
<filter string="执行中" name="Going " domain="[('statu', '=', 'going')]"/>
<filter string="已取消" name="Cancel " domain="[('statu', '=', 'cancel')]"/>
<filter string="已完成" name="Done " domain="[('statu', '=', 'done')]"/>
</search>
</field>
</record>
<record id="approval_request_holiday" model="ir.actions.act_window">
<field name="name">请假</field>
<field name="res_model">holidays.approval</field>
<field name="view_mode">tree,form</field>
</record>
</odoo>
@@ -33,25 +33,4 @@
<field name="res_model">hr.attendance</field>
<field name="view_mode">tree,form</field>
</record>
<!-- Menus -->
<menuitem id="menu_hr_attendance_manager" name="经理" parent="hr_attendance.menu_hr_attendance_root" sequence="12"/>
<menuitem id="menu_hr_attendance_manager_going" name="出勤" parent="menu_hr_attendance_manager" sequence="1"
action="view_attendance_going_action"/>
<!-- !!!!! -->
<menuitem id="menu_hr_attendance_approval_request" name="考勤审批记录"
parent="hr_attendance.menu_hr_attendance_root" sequence="13"/>
<menuitem id="menu_hr_attendance_overtime" name="加班申请"
parent="menu_hr_attendance_approval_request" sequence="3" action="approval_request_overtime"/>
<menuitem id="menu_hr_attendance_going" name="外出申请"
parent="menu_hr_attendance_approval_request" sequence="4" action="approval_request_going"/>
<menuitem id="menu_hr_attendance_duty" name="值班申请" parent="menu_hr_attendance_approval_request"
sequence="5" action="approval_request_duty"/>
<menuitem id="menu_hr_attendance_leave" name="调休申请"
parent="menu_hr_attendance_approval_request" sequence="6" action="approval_request_leave"/>
<menuitem id="menu_hr_attendance_holiday" name="请假申请"
parent="menu_hr_attendance_approval_request" sequence="8" action="approval_request_holiday"/>
<!-- !!!!! -->
<menuitem id="menu_hr_attendance_work" name="考勤时间表配置" parent="hr_attendance.menu_hr_attendance_root"
sequence="18" action="resource.action_resource_calendar_form"/>
</odoo>
@@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="leave_approval_tree" model="ir.ui.view">
<field name="name">leave.approval.tree</field>
<field name="model">leave.approval</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="department_id"/>
<field name="partner_id"/>
<field name="date"/>
<field name="statu"/>
</tree>
</field>
</record>
<record id="leave_approval_form" model="ir.ui.view">
<field name="name">leave.approval.actions</field>
<field name="model">leave.approval</field>
<field name="arch" type="xml">
<form>
<header>
<widget name="attach_document" string="附加文档" action="message_post"/>
<button name="leave_approval" string="发起申请" type="object" class="oe_highlight"/>
<field name="statu" widget="statusbar"/>
</header>
<sheet>
<div class="oe_title">
<label for="name"/>
<h1>
<field name="name" required="1"/>
</h1>
</div>
<group>
<group>
<field name="department_id"/>
<field name="partner_id"/>
</group>
<group>
<field name="date"/>
</group>
</group>
</sheet>
</form>
</field>
</record>
<record id="leave_approval_search" model="ir.ui.view">
<field name="name">leave.approval.search</field>
<field name="model">leave.approval</field>
<field name="arch" type="xml">
<search string="考勤审批状态">
<filter string="草稿" name="Drft " domain="[('statu', '=', 'drft')]"/>
<filter string="执行中" name="Going " domain="[('statu', '=', 'going')]"/>
<filter string="已取消" name="Cancel " domain="[('statu', '=', 'cancel')]"/>
<filter string="已完成" name="Done " domain="[('statu', '=', 'done')]"/>
</search>
</field>
</record>
<record id="approval_request_leave" model="ir.actions.act_window">
<field name="name">调休</field>
<field name="res_model">leave.approval</field>
<field name="view_mode">tree,form</field>
</record>
</odoo>
@@ -0,0 +1,84 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="overtime_approval_tree" model="ir.ui.view">
<field name="name">overtime.approval.tree</field>
<field name="model">overtime.approval</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="department_id"/>
<field name="partner_id"/>
<field name="date"/>
<field name="statu"/>
</tree>
</field>
</record>
<record id="overtime_approval_form" model="ir.ui.view">
<field name="name">overtime.approval.actions</field>
<field name="model">overtime.approval</field>
<field name="arch" type="xml">
<form>
<header>
<widget name="attach_document" string="附加文档" action="message_post"/>
<button name="go_overtime_approval" string="发起申请" type="object" class="oe_highlight"/>
<field name="statu" widget="statusbar"/>
</header>
<sheet>
<div class="oe_title">
<label for="name"/>
<h1>
<field name="name" required="1"/>
</h1>
</div>
<group>
<group>
<field name="department_id"/>
<field name="overtime_department_id"/>
<field name="partner_id"/>
</group>
<group>
<field name="date"/>
<field name="reason_application"/>
</group>
</group>
<notebook>
<page string="加班人员明细">
<field name="overtime_user_ids">
<tree editable="bottom">
<field name="user_id"/>
<field name="start_time"/>
<field name="end_time"/>
<field name="overtime_hours"/>
<field name="type_overtime"/>
<field name="compensation_mode"/>
<field name="is_male_pay"/>
<button name="attendance_button" string="考勤信息" type="object" class="btn-primary"/>
</tree>
</field>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
<record id="overtime_approval_search" model="ir.ui.view">
<field name="name">overtime.approval.search</field>
<field name="model">overtime.approval</field>
<field name="arch" type="xml">
<search string="考勤审批状态">
<filter string="草稿" name="Drft " domain="[('statu', '=', 'drft')]"/>
<filter string="执行中" name="Going " domain="[('statu', '=', 'going')]"/>
<filter string="已取消" name="Cancel " domain="[('statu', '=', 'cancel')]"/>
<filter string="已完成" name="Done " domain="[('statu', '=', 'done')]"/>
</search>
</field>
</record>
<record id="approval_request_overtime" model="ir.actions.act_window">
<field name="name">加班</field>
<field name="res_model">overtime.approval</field>
<field name="view_mode">tree,form</field>
</record>
</odoo>
@@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="remove_holiday_approval_tree" model="ir.ui.view">
<field name="name">remove.holiday.approval.tree</field>
<field name="model">remove.holiday.approval</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="department_id"/>
<field name="partner_id"/>
<field name="date"/>
<field name="statu"/>
</tree>
</field>
</record>
<record id="remove_holiday_approval_form" model="ir.ui.view">
<field name="name">remove.holiday.approval.actions</field>
<field name="model">remove.holiday.approval</field>
<field name="arch" type="xml">
<form>
<header>
<widget name="attach_document" string="附加文档" action="message_post"/>
<button name="remove_holiday_approval" string="发起申请" type="object" class="oe_highlight"/>
<field name="statu" widget="statusbar"/>
</header>
<sheet>
<div class="oe_title">
<label for="name"/>
<h1>
<field name="name" required="1"/>
</h1>
</div>
<group>
<group>
<field name="department_id"/>
<field name="partner_id"/>
<field name="entry_time"/>
<field name="type_remove_holiday"/>
<field name="user_sex"/>
</group>
<group>
<field name="date_start"/>
<field name="date_end"/>
<field name="date"/>
</group>
</group>
<group>
<field name="reason_application"/>
</group>
</sheet>
</form>
</field>
</record>
<record id="remove_holiday_approval_search" model="ir.ui.view">
<field name="name">remove.holiday.approval.search</field>
<field name="model">remove.holiday.approval</field>
<field name="arch" type="xml">
<search string="考勤审批状态">
<filter string="草稿" name="Drft " domain="[('statu', '=', 'drft')]"/>
<filter string="执行中" name="Going " domain="[('statu', '=', 'going')]"/>
<filter string="已取消" name="Cancel " domain="[('statu', '=', 'cancel')]"/>
<filter string="已完成" name="Done " domain="[('statu', '=', 'done')]"/>
</search>
</field>
</record>
<record id="approval_request_remove_holiday" model="ir.actions.act_window">
<field name="name">销假</field>
<field name="res_model">remove.holiday.approval</field>
<field name="view_mode">tree,form</field>
</record>
</odoo>
+7 -4
View File
@@ -19,7 +19,8 @@ class YuthonOfficial(models.Model):
('financing_post', '投融资发文'),
('official_account_cloud_sms_post_submission', '公众号/云短信发文呈批'),
('post_submission', '发文呈批'),
], default='official_issues', string="发文类型")
('official_receipt', '公文收文'),
], default='official_issues', string="公文类型")
official_type = fields.Selection([('receipt', '收文'), ('post', '发文')], string="公文类型")
reference_cold = fields.Integer(string="公文字号")
major_event_category = fields.Integer(string="重大事项所属类别")
@@ -31,10 +32,12 @@ class YuthonOfficial(models.Model):
main_flats = fields.Char(string="主送")
servings_number = fields.Integer(string="份数")
urgency = fields.Selection([('normal', '一般'), ('urgent', '紧急'), ('extra_urgent', '特急')], string="紧急程度")
secret_level = fields.Selection([('normal', '一般'), ('urgent', '秘密'), ('secret', '机密'), ('so_secret', '绝密')], string="密级")
date = fields.Datetime(string="日期")
secret_level = fields.Selection([('normal', '一般'), ('urgent', '秘密'), ('secret', '机密'), ('so_secret', '绝密')],
string="密级")
date = fields.Datetime(string="日期", default=fields.Datetime.now)
department_id = fields.Many2one('hr.department', string="申请人部门")
statu = fields.Selection([('drft', '草稿'), ('going', '执行中'), ('cancel', '已取消'), ('done', '已完成')], string="状态")
statu = fields.Selection([('drft', '草稿'), ('going', '执行中'), ('cancel', '已取消'), ('done', '已完成')], string="状态",
default='drft')
def go_official_approval(self):
pass
@@ -42,22 +42,20 @@
<field name="official_ids" invisible="1"/>
<field name="document_number"
invisible="send_type not in ['general_party_branch_post','party_branch_committee_post','financing_post']"/>
<field name="partner_id" invisible="send_type != 'official_issues_for_son'"/>
<field name="partner_id" invisible="send_type not in ['official_issues_for_son','official_receipt']"/>
<field name="reference_cold" invisible="send_type != 'post_submission'"/>
<field name="major_event_category" invisible="send_type != 'post_submission'"/>
<field name="urgency"
invisible="send_type in ['official_account_cloud_sms_post_submission','post_submission']"/>
<field name="secret_level"
invisible="send_type in ['official_account_cloud_sms_post_submission','post_submission']"/>
<field name="date"
invisible="send_type in ['official_account_cloud_sms_post_submission','post_submission']"/>
<field name="date"/>
<field name="send_type"/>
</group>
<group>
<field name="department_id"
invisible="send_type in ['official_account_cloud_sms_post_submission','post_submission','official_issues']"/>
<field name="department_id"/>
<field name="come_file_id"
invisible="send_type not in ['official_issues','official_issues_for_son']"/>
invisible="send_type not in ['official_issues','official_issues_for_son','official_receipt']"/>
<field name="main_flats"
invisible="send_type in ['official_account_cloud_sms_post_submission','official_issues_for_son']"/>
<field name="servings_number"
@@ -66,7 +64,7 @@
</group>
<group>
<field name="main_text"
invisible="send_type in ['post_submission','official_account_cloud_sms_post_submission']"/>
invisible="send_type in ['post_submission','official_account_cloud_sms_post_submission','official_receipt']"/>
<field name="remarks"
invisible="send_type not in ['official_account_cloud_sms_post_submission','post_submission']"/>
</group>
@@ -81,4 +79,17 @@
</field>
</record>
<record id="send_receive_messages_management_search" model="ir.ui.view">
<field name="name">send.receive.messages.management.search</field>
<field name="model">yuthon.official</field>
<field name="arch" type="xml">
<search string="考勤审批状态">
<filter string="草稿" name="Drft " domain="[('statu', '=', 'drft')]"/>
<filter string="执行中" name="Going " domain="[('statu', '=', 'going')]"/>
<filter string="已取消" name="Cancel " domain="[('statu', '=', 'cancel')]"/>
<filter string="已完成" name="Done " domain="[('statu', '=', 'done')]"/>
</search>
</field>
</record>
</odoo>