添加功能
This commit is contained in:
@@ -34,6 +34,7 @@
|
||||
'views/card_approval.xml',
|
||||
'views/holiday_manage.xml',
|
||||
'views/holiday_manage_balance.xml',
|
||||
'views/attendance_scheme.xml',
|
||||
'views/attendance_iot_datas.xml',
|
||||
'views/all_attendance_menu.xml',
|
||||
'wizard/attendance_iot_manager_wizard_views.xml',
|
||||
|
||||
@@ -15,4 +15,5 @@ from . import holiday_manage
|
||||
from . import holiday_manage_balance
|
||||
from . import attendance_iot_manager
|
||||
from . import attendance_iot_datas
|
||||
from . import attendance_scheme
|
||||
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
from odoo import api, fields, models, tools
|
||||
|
||||
|
||||
class AttendanceScheme(models.Model):
|
||||
_name = 'attendance.scheme'
|
||||
_description = '考勤方案'
|
||||
|
||||
|
||||
name = fields.Char(string='名称', required=True)
|
||||
employee_name = fields.Char(string='姓名', required=True)
|
||||
phone = fields.Char(string='手机号', required=True)
|
||||
form_employment = fields.Selection([('exercitation', '实习'),
|
||||
('expatriate', '外派'),
|
||||
('tryout', '试用'),
|
||||
('official', '正式'),
|
||||
], string="聘用形式")
|
||||
department_id = fields.Many2one('hr.department', string="部门")
|
||||
working_system = fields.Char(string='工时制',default='未设置')
|
||||
start_time = fields.Datetime(string="入职日期")
|
||||
shifts = fields.Char(string='排版制')
|
||||
punch_way = fields.Char(string='打卡方式')
|
||||
attendance_mode = fields.Char(string='出勤方式')
|
||||
attendance_group = fields.Char(string='考勤组')
|
||||
overtime_programs = fields.Char(string='加班方案')
|
||||
subsidy_programme = fields.Char(string='补贴方案')
|
||||
chargeback_schemes = fields.Char(string='扣款方案')
|
||||
remarks = fields.Char(string='备注')
|
||||
@@ -10,17 +10,21 @@ class CardApprovals(models.Model):
|
||||
_inherit = ['mail.thread.main.attachment', 'mail.activity.mixin']
|
||||
_rec_name = 'name'
|
||||
|
||||
name = fields.Char(string="名称", default=lambda self: self.env['ir.sequence'].next_by_code('card_approval'))
|
||||
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="申请事由")
|
||||
|
||||
company_page = fields.Selection([('tz', '天河投资'), ('wg', '天河物管'), ('lc', '天河粮储')], string="公司")
|
||||
name = fields.Char(string="名称", default=lambda self: self.env['ir.sequence'].next_by_code('overtime_approval'))
|
||||
users_ids = fields.Many2one('res.users', string="申请人",default=lambda self: self.env.user.id)
|
||||
card_ids = fields.One2many('card.approvals.line', 'card_id', string="补卡人明细")
|
||||
department_id = fields.Many2one('hr.department', string="部门")
|
||||
def card_approval(self):
|
||||
pass
|
||||
|
||||
class CardApprovalsLine(models.Model):
|
||||
_name = 'card.approvals.line'
|
||||
_description = "补卡人明细"
|
||||
|
||||
card_id = fields.Many2one('card.approval', string="补卡审批")
|
||||
overtime_people = fields.Char( string="补卡人")
|
||||
replacement_time = fields.Datetime(string="补卡时间")
|
||||
actual_punch = fields.Datetime(string="实际打卡")
|
||||
reason = fields.Char(string="补卡原因")
|
||||
documents_ids = fields.Many2many('documents.document', string="附件")
|
||||
@@ -10,12 +10,29 @@ class DutyApprovals(models.Model):
|
||||
_inherit = ['mail.thread.main.attachment', 'mail.activity.mixin']
|
||||
_rec_name = 'name'
|
||||
|
||||
company_page = fields.Selection([('tz', '天河投资'), ('wg', '天河物管'), ('lc', '天河粮储')], string="公司")
|
||||
name = fields.Char(string="名称", default=lambda self: self.env['ir.sequence'].next_by_code('duty_approval'))
|
||||
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')
|
||||
department_id = fields.Many2one('hr.department', string="部门")
|
||||
users_id = fields.Many2one('res.users', string="申请人",default=lambda self: self.env.user.id)
|
||||
duty_ids = fields.Many2many('duty.approval.line','duty_id',string="值班人明细")
|
||||
@api.depends('date_start', 'date_end')
|
||||
def _compute_duration(self):
|
||||
for rec in self:
|
||||
if rec.date_start and rec.date_end:
|
||||
rec.duration = (rec.date_end - rec.date_start).total_seconds() / 3600
|
||||
|
||||
def duty_approval(self):
|
||||
pass
|
||||
pass
|
||||
|
||||
class DutyApprovalsLine(models.Model):
|
||||
_name = 'duty.approval.line'
|
||||
_description = "值班人明细行"
|
||||
|
||||
duty_id = fields.Many2one('duty.approval', string="值班审批")
|
||||
duty_user_id = fields.Many2one('res.users', string="值班人员")
|
||||
reason_application = fields.Char(string="事由")
|
||||
date_start = fields.Datetime(string="开始时间", default=fields.Datetime.now)
|
||||
date_end = fields.Datetime(string="结束时间")
|
||||
duration = fields.Float(string="时长")
|
||||
validity = fields.Char(string="有效期")
|
||||
documents_ids = fields.Many2many('documents.document', string="附件")
|
||||
@@ -10,30 +10,32 @@ class GoApprovals(models.Model):
|
||||
_inherit = ['mail.thread.main.attachment', 'mail.activity.mixin']
|
||||
_rec_name = 'name'
|
||||
|
||||
name = fields.Char(string="名称", default=lambda self: self.env['ir.sequence'].next_by_code('go_approval'))
|
||||
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="性别")
|
||||
job_id = fields.Many2one('hr.job', 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="申请单位")
|
||||
company_page = fields.Selection([('tz', '天河投资'), ('wg', '天河物管'), ('lc', '天河粮储')], string="公司")
|
||||
name = 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('hr.department', string="部门")
|
||||
go_approval_ids = fields.One2many('go.approvals.line', 'go_approval_id', 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
|
||||
|
||||
@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
|
||||
class GoApprovalsLine(models.Model):
|
||||
_name = 'go.approvals.line'
|
||||
_description = "外出人明细"
|
||||
|
||||
def go_approval(self):
|
||||
pass
|
||||
go_approval_id = fields.Many2one('go.approval', string="关联外出申请")
|
||||
overtime_people = fields.Char(string="外出人")
|
||||
reason_application = fields.Char(string="事由")
|
||||
documents_ids = fields.Many2many('documents.document', string="附件")
|
||||
date_start = fields.Datetime(string="开始时间")
|
||||
date_end = fields.Datetime(string="结束时间")
|
||||
@@ -10,19 +10,29 @@ class HolidaysApprovals(models.Model):
|
||||
_inherit = ['mail.thread.main.attachment', 'mail.activity.mixin']
|
||||
_rec_name = 'name'
|
||||
|
||||
company_page = fields.Selection([('tz', '天河投资'), ('wg', '天河物管'), ('lc', '天河粮储')], string="公司")
|
||||
applicant_id = fields.Many2one('hr.employee', string="申请人",default=lambda self: self.env.user.id)
|
||||
name = fields.Char(string="名称", default=lambda self: self.env['ir.sequence'].next_by_code('holidays_approval'))
|
||||
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')
|
||||
department_id = fields.Many2one('hr.department', string="部门")
|
||||
documents_ids = fields.Many2many('documents.document', string="附件")
|
||||
approvals_ids = fields.One2many('holidays.approvals.line', 'approvals_id', string="请假审批行")
|
||||
def holiday_approval(self):
|
||||
pass
|
||||
|
||||
class HolidaysApprovalsLine(models.Model):
|
||||
_name = 'holidays.approvals.line'
|
||||
_description = '请假审批行'
|
||||
|
||||
leave_absence_id = fields.Many2one('hr.employee', string="请假人")
|
||||
main_text = fields.Text(string='事由')
|
||||
approvals_id = fields.Many2one('holidays.approval', string="管理请假审批")
|
||||
leave_category = fields.Char( string="请假类型")
|
||||
days_available = fields.Char(string="可用天数")
|
||||
applicants = fields.Selection([('hours', '按小时'),('days', '按天')], string="申请单位")
|
||||
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='申请事由')
|
||||
|
||||
surplus_days = fields.Float(string="剩余天数")
|
||||
@api.depends('date_start', 'date_end')
|
||||
def _compute_leave_days(self):
|
||||
for record in self:
|
||||
@@ -33,6 +43,3 @@ class HolidaysApprovals(models.Model):
|
||||
record.leave_days = duration.days
|
||||
else:
|
||||
record.leave_days = 0
|
||||
|
||||
def holiday_approval(self):
|
||||
pass
|
||||
@@ -10,18 +10,11 @@ class OvertimeApprovals(models.Model):
|
||||
_inherit = ['mail.thread.main.attachment', 'mail.activity.mixin']
|
||||
_rec_name = 'name'
|
||||
|
||||
company_page = fields.Selection([('tz', '天河投资'), ('wg', '天河物管'), ('lc', '天河粮储')], string="公司")
|
||||
name = 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)
|
||||
overtime_department_id = fields.Many2one('hr.department', 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_user_ids = fields.One2many('overtime.user.line', 'overtime_approval_id', string="加班明细行")
|
||||
|
||||
users_id = fields.Many2one('res.users', string="申请人",default=lambda self: self.env.user.id)
|
||||
overtime_approval_ids = fields.One2many('overtime.users.line', 'overtime_approval_id', string="加班审批行")
|
||||
department_id = fields.Many2one('hr.department', string="部门")
|
||||
@api.onchange('overtime_department_id')
|
||||
def onchange_overtime_users(self):
|
||||
users_data_list = []
|
||||
@@ -54,30 +47,26 @@ class OvertimeApprovals(models.Model):
|
||||
over.overtime_user_ids = users_data_list
|
||||
|
||||
|
||||
class OvertimeUserLine(models.Model):
|
||||
_name = 'overtime.user.line'
|
||||
class OvertimeUsersLine(models.Model):
|
||||
_name = 'overtime.users.line'
|
||||
_rec_name = 'overtime_approval_id'
|
||||
_description = "加班明细行"
|
||||
|
||||
default_date = datetime.combine(datetime.now().date(), time(hour=17, minute=30))
|
||||
overtime_approval_id = fields.Many2one('overtime.approval', string="关联加班单")
|
||||
user_id = fields.Many2one('res.users', string="加班人员")
|
||||
start_time = fields.Datetime(string="开始时间", default=default_date)
|
||||
end_time = fields.Datetime(string="结束时间")
|
||||
overtime_hours = fields.Float(string="加班时长")
|
||||
type_overtime = fields.Selection([('work', '工作日',), ('rest', '休息日',), ('holiday', '节假日')],
|
||||
string="加班类型", default="work")
|
||||
compensation_mode = fields.Selection([('salary', '薪资',), ('rest', '调休',)], string="补偿方式", default="salary")
|
||||
is_male_pay = fields.Boolean(string="加班餐费")
|
||||
overtime_approval_id = fields.Many2one('overtime.approval', string="加班单号")
|
||||
overtime_people = fields.Char(string="加班人员")
|
||||
reason_application = fields.Char(string="事由")
|
||||
department_id = fields.Many2one('hr.department', string="部门")
|
||||
overtime_hours = fields.Float(string="本月加班时长")
|
||||
documents_ids = fields.Many2many('documents.document', string="附件")
|
||||
|
||||
def attendance_button(self):
|
||||
return {
|
||||
'type': 'ir.actions.client',
|
||||
'tag': 'display_notification',
|
||||
'target': 'new',
|
||||
'params': {
|
||||
'title': '考勤信息',
|
||||
'message': _(self.user_id.name + "的签到时间:2024-7-12 8:00:00 签出时间:2024-7-12 20:00:00"),
|
||||
'sticky': True
|
||||
}
|
||||
}
|
||||
# def attendance_button(self):
|
||||
# return {
|
||||
# 'type': 'ir.actions.client',
|
||||
# 'tag': 'display_notification',
|
||||
# 'target': 'new',
|
||||
# 'params': {
|
||||
# 'title': '考勤信息',
|
||||
# 'message': _(self.user_id.name + "的签到时间:2024-7-12 8:00:00 签出时间:2024-7-12 20:00:00"),
|
||||
# 'sticky': True
|
||||
# }
|
||||
# }
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||
access_resource_calendar_holiday,resource.calendar.holiday,model_resource_calendar_holiday,base.group_user,1,1,1,1
|
||||
access_overtime_approval,overtime.approval,model_overtime_approval,base.group_user,1,1,1,1
|
||||
access_overtime_user_line,overtime_user_line,model_overtime_user_line,base.group_user,1,1,1,1
|
||||
access_go_approval,go.approval,model_go_approval,base.group_user,1,1,1,1
|
||||
access_duty_approval,duty.approval,model_duty_approval,base.group_user,1,1,1,1
|
||||
access_leave_approval,leave.approval,model_leave_approval,base.group_user,1,1,1,1
|
||||
@@ -14,6 +13,10 @@ access_attendance_iot_manager,attendance_iot_manager,model_attendance_iot_manage
|
||||
access_attendance_iot_manager_wizard,attendance_iot_manager_wizard,model_attendance_iot_manager_wizard,base.group_user,1,1,1,1
|
||||
access_holiday_manage_balance,holiday_manage_balance,model_holiday_manage_balance,base.group_user,1,1,1,1
|
||||
access_attendance_iot_datas,attendance_iot_datas,model_attendance_iot_datas,base.group_user,1,1,1,1
|
||||
|
||||
|
||||
|
||||
access_attendance_scheme,attendance_scheme,model_attendance_scheme,base.group_user,1,1,1,1
|
||||
access_holidays_approvals_line,holidays.approvals.line,model_holidays_approvals_line,base.group_user,1,1,1,1
|
||||
access_card_approvals_line,card.approval.line,model_card_approvals_line,base.group_user,1,1,1,1
|
||||
access_holidays_approvals_line,holidays.approvals.line,model_holidays_approvals_line,base.group_user,1,1,1,1
|
||||
access_go_approvals_line,go.approvals.line,model_go_approvals_line,base.group_user,1,1,1,1
|
||||
access_overtime_users_line,overtime.users.line,model_overtime_users_line,base.group_user,1,1
|
||||
access_duty_approval_line,duty.approval.line,model_duty_approval_line,base.group_user,1,1,1,1
|
||||
|
||||
|
@@ -0,0 +1,72 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo>
|
||||
<record id="view_attendance_scheme_tree" model="ir.ui.view">
|
||||
<field name="name">attendance.scheme.tree</field>
|
||||
<field name="model">attendance.scheme</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="考勤方案">
|
||||
<field name="name"/>
|
||||
<field name="employee_name" optional="show"/>
|
||||
<field name="phone" optional="show"/>
|
||||
<field name="form_employment" optional="show"/>
|
||||
<field name="department_id" optional="show"/>
|
||||
<field name="working_system" optional="hide"/>
|
||||
<field name="start_time" optional="show"/>
|
||||
<field name="shifts" optional="hide"/>
|
||||
<field name="punch_way" optional="hide"/>
|
||||
<field name="attendance_mode" optional="hide"/>
|
||||
<field name="attendance_group" optional="hide"/>
|
||||
<field name="overtime_programs" optional="hide"/>
|
||||
<field name="subsidy_programme" optional="hide"/>
|
||||
<field name="chargeback_schemes" optional="hide"/>
|
||||
<field name="remarks" optional="hide"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_attendance_scheme_form" model="ir.ui.view">
|
||||
<field name="name">attendance.scheme.form</field>
|
||||
<field name="model">attendance.scheme</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<sheet>
|
||||
<div class="oe_title">
|
||||
<label for="name"/>
|
||||
<h1>
|
||||
<field name="name" required="1"/>
|
||||
</h1>
|
||||
</div>
|
||||
<group col="4">
|
||||
<group>
|
||||
<field name="employee_name"/>
|
||||
<field name="phone"/>
|
||||
<field name="form_employment"/>
|
||||
<field name="department_id"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="working_system"/>
|
||||
<field name="start_time"/>
|
||||
<field name="shifts"/>
|
||||
<field name="punch_way"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="attendance_mode"/>
|
||||
<field name="attendance_group"/>
|
||||
<field name="overtime_programs"/>
|
||||
<field name="subsidy_programme"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="chargeback_schemes"/>
|
||||
<field name="remarks"/>
|
||||
</group>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="attendance_scheme_action" model="ir.actions.act_window">
|
||||
<field name="name">考勤方案</field>
|
||||
<field name="res_model">attendance.scheme</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -6,10 +6,9 @@
|
||||
<field name="arch" type="xml">
|
||||
<tree>
|
||||
<field name="name"/>
|
||||
<field name="users_ids"/>
|
||||
<field name="company_page"/>
|
||||
<field name="department_id"/>
|
||||
<field name="partner_id"/>
|
||||
<field name="date"/>
|
||||
<field name="statu"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
@@ -19,12 +18,7 @@
|
||||
<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>
|
||||
<sheet>
|
||||
<div class="oe_title">
|
||||
<label for="name"/>
|
||||
<h1>
|
||||
@@ -33,42 +27,34 @@
|
||||
</div>
|
||||
<group>
|
||||
<group>
|
||||
<field name="department_id"/>
|
||||
<field name="partner_id"/>
|
||||
<field name="replacement_time"/>
|
||||
<field name="type_of_exception"/>
|
||||
<field name="company_page"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="real_go_work_time"/>
|
||||
<field name="real_get_off_work_time"/>
|
||||
<field name="reason_application"/>
|
||||
<field name="date"/>
|
||||
<field name="department_id"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="users_ids"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="补卡人明细">
|
||||
<field name="card_ids" string="">
|
||||
<tree editable="bottom">
|
||||
<field name="card_id" column_invisible="1"/>
|
||||
<field name="overtime_people"/>
|
||||
<field name="replacement_time"/>
|
||||
<field name="actual_punch"/>
|
||||
<field name="reason"/>
|
||||
<field name="documents_ids" widget="many2many_tags"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
<div class="o_attachment_preview"/>
|
||||
<div class="oe_chatter">
|
||||
<field name="message_follower_ids" groups="base.group_user"/>
|
||||
<field name="activity_ids"/>
|
||||
<field name="message_ids"/>
|
||||
</div>
|
||||
</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>
|
||||
|
||||
@@ -7,24 +7,17 @@
|
||||
<field name="arch" type="xml">
|
||||
<tree>
|
||||
<field name="name"/>
|
||||
<field name="company_page"/>
|
||||
<field name="department_id"/>
|
||||
<field name="partner_id"/>
|
||||
<field name="date"/>
|
||||
<field name="statu"/>
|
||||
<field name="users_id"/>
|
||||
</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"/>
|
||||
@@ -34,37 +27,36 @@
|
||||
</div>
|
||||
<group>
|
||||
<group>
|
||||
<field name="department_id"/>
|
||||
<field name="partner_id"/>
|
||||
<field name="company_page"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="date"/>
|
||||
<field name="department_id"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="users_id"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="请假人明细">
|
||||
<field name="duty_ids" string=" ">
|
||||
<tree editable="bottom">
|
||||
<field name="duty_id" column_invisible="1"/>
|
||||
<field name="duty_user_id"/>
|
||||
<field name="reason_application"/>
|
||||
<field name="documents_ids" widget="many2many_tags"/>
|
||||
<field name="date_start"/>
|
||||
<field name="date_end"/>
|
||||
<field name="duration"/>
|
||||
<field name="validity"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
<div class="o_attachment_preview"/>
|
||||
<div class="oe_chatter">
|
||||
<field name="message_follower_ids" groups="base.group_user"/>
|
||||
<field name="activity_ids"/>
|
||||
<field name="message_ids"/>
|
||||
</div>
|
||||
</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>
|
||||
|
||||
@@ -6,11 +6,10 @@
|
||||
<field name="model">go.approval</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree>
|
||||
<field name="name"/>
|
||||
<field name="name"/>
|
||||
<field name="company_page"/>
|
||||
<field name="department_id"/>
|
||||
<field name="partner_id"/>
|
||||
<field name="date"/>
|
||||
<field name="statu"/>
|
||||
<field name="users_id"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
@@ -19,12 +18,7 @@
|
||||
<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>
|
||||
<form>
|
||||
<sheet>
|
||||
<div class="oe_title">
|
||||
<label for="name"/>
|
||||
@@ -34,44 +28,34 @@
|
||||
</div>
|
||||
<group>
|
||||
<group>
|
||||
<field name="department_id"/>
|
||||
<field name="partner_id"/>
|
||||
<field name="apply_unit"/>
|
||||
<field name="date_start"/>
|
||||
<field name="date_end"/>
|
||||
<field name="company_page"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="job_id"/>
|
||||
<field name="missed_meal_charges"/>
|
||||
<field name="user_sex"/>
|
||||
<field name="leave_time"/>
|
||||
<field name="date"/>
|
||||
<field name="department_id"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="users_id"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="外出人明细">
|
||||
<field name="go_approval_ids" string="">
|
||||
<tree editable="bottom">
|
||||
<field name="go_approval_id" column_invisible="1"/>
|
||||
<field name="overtime_people"/>
|
||||
<field name="reason_application"/>
|
||||
<field name="documents_ids" widget="many2many_tags"/>
|
||||
<field name="date_start"/>
|
||||
<field name="date_end"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
<div class="o_attachment_preview"/>
|
||||
<div class="oe_chatter">
|
||||
<field name="message_follower_ids" groups="base.group_user"/>
|
||||
<field name="activity_ids"/>
|
||||
<field name="message_ids"/>
|
||||
</div>
|
||||
</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>
|
||||
|
||||
@@ -7,10 +7,9 @@
|
||||
<field name="arch" type="xml">
|
||||
<tree>
|
||||
<field name="name"/>
|
||||
<field name="company_page"/>
|
||||
<field name="applicant_id"/>
|
||||
<field name="department_id"/>
|
||||
<field name="partner_id"/>
|
||||
<field name="date"/>
|
||||
<field name="statu"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
@@ -20,11 +19,9 @@
|
||||
<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>
|
||||
<!-- <header>-->
|
||||
<!-- <button name="holiday_approval" string="发起申请" type="object" class="oe_highlight"/>-->
|
||||
<!-- </header>-->
|
||||
<sheet>
|
||||
<div class="oe_title">
|
||||
<label for="name"/>
|
||||
@@ -34,44 +31,39 @@
|
||||
</div>
|
||||
<group>
|
||||
<group>
|
||||
<field name="department_id"/>
|
||||
<field name="partner_id"/>
|
||||
<field name="date_start"/>
|
||||
<field name="date_end"/>
|
||||
<field name="company_page"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="leave_category" widget="many2many_tags"/>
|
||||
<field name="leave_days"/>
|
||||
<field name="date"/>
|
||||
<field name="department_id"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="applicant_id"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<field name="main_text"/>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="请假详情">
|
||||
<field name="approvals_ids" string=" ">
|
||||
<tree editable="bottom">
|
||||
<field name="approvals_id" column_invisible="1"/>
|
||||
<field name="leave_absence_id"/>
|
||||
<field name="leave_category"/>
|
||||
<field name="days_available"/>
|
||||
<field name="applicants"/>
|
||||
<field name="date_start"/>
|
||||
<field name="date_end"/>
|
||||
<field name="leave_days"/>
|
||||
<field name="surplus_days"/>
|
||||
<field name="main_text"/>
|
||||
</tree>
|
||||
</field>
|
||||
<field name="documents_ids" widget="many2many_tags"/>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
<div class="o_attachment_preview"/>
|
||||
<div class="oe_chatter">
|
||||
<field name="message_follower_ids" groups="base.group_user"/>
|
||||
<field name="activity_ids"/>
|
||||
<field name="message_ids"/>
|
||||
</div>
|
||||
</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>
|
||||
|
||||
@@ -7,14 +7,12 @@
|
||||
<field name="arch" type="xml">
|
||||
<tree>
|
||||
<field name="name"/>
|
||||
<field name="users_id"/>
|
||||
<field name="company_page"/>
|
||||
<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>
|
||||
@@ -29,53 +27,32 @@
|
||||
</div>
|
||||
<group>
|
||||
<group>
|
||||
<field name="department_id"/>
|
||||
<field name="overtime_department_id"/>
|
||||
<field name="partner_id"/>
|
||||
<field name="company_page"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="date"/>
|
||||
<field name="reason_application"/>
|
||||
<field name="department_id"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="users_id"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="加班人员明细">
|
||||
<field name="overtime_user_ids">
|
||||
<page string="加班人明细行">
|
||||
<field name="overtime_approval_ids">
|
||||
<tree editable="bottom">
|
||||
<field name="user_id"/>
|
||||
<field name="start_time"/>
|
||||
<field name="end_time"/>
|
||||
<field name="overtime_approval_id" column_invisible="1"/>
|
||||
<field name="overtime_people"/>
|
||||
<field name="reason_application"/>
|
||||
<field name="documents_ids" widget="many2many_tags"/>
|
||||
<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>
|
||||
<div class="o_attachment_preview"/>
|
||||
<div class="oe_chatter">
|
||||
<field name="message_follower_ids" groups="base.group_user"/>
|
||||
<field name="activity_ids"/>
|
||||
<field name="message_ids"/>
|
||||
</div>
|
||||
</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>
|
||||
|
||||
@@ -104,10 +104,4 @@
|
||||
<field name="padding">3</field>
|
||||
</record>
|
||||
|
||||
<record id="yuthon_prepare_approval_code" model="ir.sequence">
|
||||
<field name="name">编制调整需求表-编号</field>
|
||||
<field name="code">yuthon_prepare_approval_code</field>
|
||||
<field name="prefix">BZ%(y)s%(month)s%(day)s</field>
|
||||
<field name="padding">3</field>
|
||||
</record>
|
||||
</odoo>
|
||||
|
||||
@@ -9,4 +9,4 @@ class YuthonEnrollmentApproval(models.Model):
|
||||
|
||||
name = fields.Char(string='名称')
|
||||
code = fields.Char(string="编号",
|
||||
default=lambda self: self.env['ir.sequence'].next_by_code('yuthon_enrollment_approval'))
|
||||
default=lambda self: self.env['ir.sequence'].next_by_code('yuthon_enrollment_approval_code'))
|
||||
@@ -10,7 +10,7 @@ class YuthonRewardApproval(models.Model):
|
||||
|
||||
name = fields.Char(string='名称')
|
||||
code = fields.Char(string="编号",
|
||||
default=lambda self: self.env['ir.sequence'].next_by_code('yuthon_prepare_approval_code'))
|
||||
default=lambda self: self.env['ir.sequence'].next_by_code('yuthon_salary_approval_code'))
|
||||
company_id = fields.Many2one("res.company", string="单位")
|
||||
entrant = fields.Many2one('hr.employee', string="录入人")
|
||||
entrant_date = fields.Date(string="录入日期")
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
|
||||
|
||||
<record id="yuthon_interview_approval_action" model="ir.actions.act_window">
|
||||
<field name="name">面试申请表</field>
|
||||
<field name="name">面试信息表</field>
|
||||
<field name="res_model">yuthon.interview.approval</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
</record>
|
||||
|
||||
@@ -7,12 +7,7 @@
|
||||
<menuitem id="executive_manage_approval"
|
||||
name="审批"
|
||||
parent="yuthon_work_brand.executive_manage_union_root_board"
|
||||
sequence="7"/>
|
||||
<menuitem id="executive_manage_expenses"
|
||||
name="费用"
|
||||
parent="executive_manage_approval"
|
||||
action="yuthon_trade_none_tree_action"
|
||||
sequence="7"/>
|
||||
sequence="11"/>
|
||||
|
||||
<menuitem id="executive_personal_condolences"
|
||||
name="个人慰问"
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
'stock',
|
||||
'resource',
|
||||
'yuthon_hr_employee_approval',
|
||||
'yuthon_hr_attendance',
|
||||
'planning',
|
||||
],
|
||||
'data': [
|
||||
|
||||
@@ -331,7 +331,7 @@
|
||||
<menuitem id="menu_hr_attendance_scheme_request_board"
|
||||
name="考勤方案"
|
||||
parent="hr_attendance_root_board"
|
||||
action="yuthon_none_action"
|
||||
action="yuthon_hr_attendance.attendance_scheme_action"
|
||||
sequence="1"/>
|
||||
<menuitem id="menu_hr_attendance_plan_request_board"
|
||||
name="考勤计划"
|
||||
|
||||
Reference in New Issue
Block a user