diff --git a/yuthon_base/__manifest__.py b/yuthon_base/__manifest__.py index bd165c8cd..3a8ecbd2b 100644 --- a/yuthon_base/__manifest__.py +++ b/yuthon_base/__manifest__.py @@ -9,6 +9,7 @@ 'data': [ 'security/ir.model.access.csv', 'views/system_version_views.xml', + 'views/ir_cron_act_views.xml', 'views/menu.xml', ], 'assets': { diff --git a/yuthon_base/data/ir_cron_type_data.xml b/yuthon_base/data/ir_cron_type_data.xml new file mode 100644 index 000000000..967b1d63f --- /dev/null +++ b/yuthon_base/data/ir_cron_type_data.xml @@ -0,0 +1,9 @@ + + + + 出勤 + + + 其他 + + diff --git a/yuthon_base/models/__init__.py b/yuthon_base/models/__init__.py index f2a92dd06..024efa1ca 100644 --- a/yuthon_base/models/__init__.py +++ b/yuthon_base/models/__init__.py @@ -2,4 +2,5 @@ from . import ir_model from . import inherit_ir_attachment from . import system_version from . import fields_piyin +from . import ir_cron_act # from . import res_partner \ No newline at end of file diff --git a/yuthon_base/models/ir_cron_act.py b/yuthon_base/models/ir_cron_act.py new file mode 100644 index 000000000..681e3a4d4 --- /dev/null +++ b/yuthon_base/models/ir_cron_act.py @@ -0,0 +1,18 @@ +from odoo import fields, models, api + + +class InheritCronAct(models.Model): + _inherit = 'ir.cron' + _description = '定时任务' + + is_corn_customer = fields.Boolean(string='是否用户', default=True) + cron_type_id = fields.Many2one('ir.cron.type', string='类型') + + +class InheritCronType(models.Model): + _name = 'ir.cron.type' + _description = '定时任务类型' + + name = fields.Char(string='名称') + + diff --git a/yuthon_base/security/ir.model.access.csv b/yuthon_base/security/ir.model.access.csv index 507510627..318f27c43 100644 --- a/yuthon_base/security/ir.model.access.csv +++ b/yuthon_base/security/ir.model.access.csv @@ -1,3 +1,3 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_system_version,system_version,model_system_version,base.group_system,1,1,1,1 - +access_ir_cron_type,ir.cron.type,model_ir_cron_type,base.group_system,1,1,1,1 diff --git a/yuthon_base/views/ir_cron_act_views.xml b/yuthon_base/views/ir_cron_act_views.xml new file mode 100644 index 000000000..dd9fcc395 --- /dev/null +++ b/yuthon_base/views/ir_cron_act_views.xml @@ -0,0 +1,40 @@ + + + + ir.cron.tree.inherit + ir.cron + + + + + + + + + + ir.cron.form.inherit + ir.cron + + + + + + + + + + ir.cron.type.tree + ir.cron.type + + + + + + + + 定时任务类型 + ir.cron.type + tree + + + diff --git a/yuthon_base/views/menu.xml b/yuthon_base/views/menu.xml index 5e62aff44..1f176ca23 100644 --- a/yuthon_base/views/menu.xml +++ b/yuthon_base/views/menu.xml @@ -9,4 +9,18 @@ parent="system_version_menu_root_board" action="action_system_version" sequence="1"/> + + + \ No newline at end of file diff --git a/yuthon_hr_attendance/__manifest__.py b/yuthon_hr_attendance/__manifest__.py index bbc8548b0..6fcc14b2b 100644 --- a/yuthon_hr_attendance/__manifest__.py +++ b/yuthon_hr_attendance/__manifest__.py @@ -12,7 +12,7 @@ 'category': 'Human Resources/Attendances', 'sequence': 240, 'website': 'https://www.pengyuthon.com', - 'depends': ['hr_attendance', 'resource', 'base', 'hr', 'mail', + 'depends': ['hr_attendance', 'resource', 'base', 'hr', 'mail', 'yuthon_base', 'soong_workflow', 'yuthon_issue', 'planning', 'calendar', 'web_gantt', 'yuthon_wechat', 'yuthon_hr_employee','planning'], 'data': [ 'security/ir.model.access.csv', @@ -31,6 +31,7 @@ 'views/inherit_hr_employee.xml', 'views/inherit_planning_role_views.xml', 'views/inherit_planning_slot_views.xml', + 'views/attendance_message_log.xml', 'views/inherit_planning_slot_template_views.xml', 'views/yuthon_customer_approval_views.xml', 'views/yuthon_shift_planning_views.xml', diff --git a/yuthon_hr_attendance/models/hr_attendance.py b/yuthon_hr_attendance/models/hr_attendance.py index bf64dc7c8..2efe0d12c 100644 --- a/yuthon_hr_attendance/models/hr_attendance.py +++ b/yuthon_hr_attendance/models/hr_attendance.py @@ -831,11 +831,6 @@ class HrAttendance(models.Model): [('role_id.name', '=', '保安部'), ('template_id.planning_name', '=', '早班')]) for user in ba_up_users: if user.start_datetime.date() == fields.date.today(): - self.env['card.remind.form'].create({ - 'name': user.resource_id.employee_id.name, - 'start_time': datetime.now(), - 'shift': user.template_id.planning_name, - 'department': user.department_id.name, }) self.card_in_comment(user.resource_id.employee_id,user.template_id.planning_name) def ba_card_white_down(self): @@ -843,11 +838,6 @@ class HrAttendance(models.Model): [('role_id.name', '=', '保安部'), ('template_id.planning_name', '=', '早班')]) for user in ba_up_users: if user.start_datetime.date() == fields.date.today(): - self.env['card.remind.form'].create({ - 'name': user.resource_id.employee_id.name, - 'start_time': datetime.now(), - 'shift': user.template_id.planning_name, - 'department': user.department_id.name, }) self.card_out_comment(user.resource_id.employee_id,user.template_id.planning_name) # 保安部 - 中班 @@ -856,11 +846,6 @@ class HrAttendance(models.Model): [('role_id.name', '=', '保安部'), ('template_id.planning_name', '=', '中班')]) for user in ba_up_users: if user.start_datetime.date() == fields.date.today(): - self.env['card.remind.form'].create({ - 'name': user.resource_id.employee_id.name, - 'start_time': datetime.now(), - 'shift': user.template_id.planning_name, - 'department': user.department_id.name, }) self.card_in_comment(user.resource_id.employee_id,user.template_id.planning_name) def ba_card_mid_down(self): @@ -868,11 +853,6 @@ class HrAttendance(models.Model): [('role_id.name', '=', '保安部'), ('template_id.planning_name', '=', '中班')]) for user in ba_up_users: if user.start_datetime.date() == fields.date.today(): - self.env['card.remind.form'].create({ - 'name': user.resource_id.employee_id.name, - 'start_time': datetime.now(), - 'shift': user.template_id.planning_name, - 'department': user.department_id.name, }) self.card_out_comment(user.resource_id.employee_id,user.template_id.planning_name) # 保安部 - 夜班 @@ -881,11 +861,6 @@ class HrAttendance(models.Model): [('role_id.name', '=', '保安部'), ('template_id.planning_name', '=', '夜班')]) for user in ba_up_users: if user.start_datetime.date() == fields.date.today(): - self.env['card.remind.form'].create({ - 'name': user.resource_id.employee_id.name, - 'start_time': datetime.now(), - 'shift': user.template_id.planning_name, - 'department': user.department_id.name, }) self.card_in_comment(user.resource_id.employee_id,user.template_id.planning_name) def ba_card_night_down(self): @@ -893,11 +868,6 @@ class HrAttendance(models.Model): [('role_id.name', '=', '保安部'), ('template_id.planning_name', '=', '夜班')]) for user in ba_up_users: if user.end_datetime.date() == fields.date.today(): - self.env['card.remind.form'].create({ - 'name': user.resource_id.employee_id.name, - 'start_time': datetime.now(), - 'shift': user.template_id.planning_name, - 'department': user.department_id.name, }) self.card_out_comment(user.resource_id.employee_id,user.template_id.planning_name) # 工程部 - 白班 @@ -906,11 +876,6 @@ class HrAttendance(models.Model): [('role_id.name', '=', '工程部'), ('template_id.planning_name', '=', '白班')]) for user in ba_up_users: if user.start_datetime.date() == fields.date.today(): - self.env['card.remind.form'].create({ - 'name': user.resource_id.employee_id.name, - 'start_time': datetime.now(), - 'shift': user.template_id.planning_name, - 'department': user.department_id.name, }) self.card_in_comment(user.resource_id.employee_id,user.template_id.planning_name) def gc_white_shift_remind(self): @@ -918,11 +883,6 @@ class HrAttendance(models.Model): [('role_id.name', '=', '工程部'), ('template_id.planning_name', '=', '白值')]) for user in ba_up_users: if user.start_datetime.date() == fields.date.today(): - self.env['card.remind.form'].create({ - 'name': user.resource_id.employee_id.name, - 'start_time': datetime.now(), - 'shift': user.template_id.planning_name, - 'department': user.department_id.name, }) self.card_duty_remind(user.resource_id.employee_id) def gc_white_out_remind(self): @@ -930,11 +890,6 @@ class HrAttendance(models.Model): [('role_id.name', '=', '工程部'), ('template_id.planning_name', '=', '白班')]) for user in ba_up_users: if user.start_datetime.date() == fields.date.today(): - self.env['card.remind.form'].create({ - 'name': user.resource_id.employee_id.name, - 'start_time': datetime.now(), - 'shift': user.template_id.planning_name, - 'department': user.department_id.name, }) self.card_out_comment(user.resource_id.employee_id,user.template_id.planning_name) # 工程部 - 白值 @@ -943,11 +898,6 @@ class HrAttendance(models.Model): [('role_id.name', '=', '工程部'), ('template_id.planning_name', '=', '白值')]) for user in ba_up_users: if user.start_datetime.date() == fields.date.today(): - self.env['card.remind.form'].create({ - 'name': user.resource_id.employee_id.name, - 'start_time': datetime.now(), - 'shift': user.template_id.planning_name, - 'department': user.department_id.name, }) self.card_in_comment(user.resource_id.employee_id, user.template_id.planning_name) def gc_white_remind_out(self): @@ -955,11 +905,6 @@ class HrAttendance(models.Model): [('role_id.name', '=', '工程部'), ('template_id.planning_name', '=', '白值')]) for user in ba_up_users: if user.start_datetime.date() == fields.date.today(): - self.env['card.remind.form'].create({ - 'name': user.resource_id.employee_id.name, - 'start_time': datetime.now(), - 'shift': user.template_id.planning_name, - 'department': user.department_id.name, }) self.card_out_comment(user.resource_id.employee_id, user.template_id.planning_name) # 工程部-中值夜 @@ -968,11 +913,6 @@ class HrAttendance(models.Model): [('role_id.name', '=', '工程部'), ('template_id.planning_name', '=', '中夜')]) for user in ba_up_users: if user.start_datetime.date() == fields.date.today(): - self.env['card.remind.form'].create({ - 'name': user.resource_id.employee_id.name, - 'start_time': datetime.now(), - 'shift': user.template_id.planning_name, - 'department': user.department_id.name, }) self.card_in_comment(user.resource_id.employee_id,user.template_id.planning_name) def gc_night_remind_shift(self): @@ -980,11 +920,6 @@ class HrAttendance(models.Model): [('role_id.name', '=', '工程部'), ('template_id.planning_name', '=', '中夜')]) for user in ba_up_users: if user.end_datetime.date() == fields.date.today(): - self.env['card.remind.form'].create({ - 'name': user.resource_id.employee_id.name, - 'start_time': datetime.now(), - 'shift': user.template_id.planning_name, - 'department': user.department_id.name, }) self.card_duty_remind(user.resource_id.employee_id) def gc_night_remind_out(self): @@ -992,11 +927,6 @@ class HrAttendance(models.Model): [('role_id.name', '=', '工程部'), ('template_id.planning_name', '=', '中夜')]) for user in ba_up_users: if user.end_datetime.date() == fields.date.today(): - self.env['card.remind.form'].create({ - 'name': user.resource_id.employee_id.name, - 'start_time': datetime.now(), - 'shift': user.template_id.planning_name, - 'department': user.department_id.name, }) self.card_out_comment(user.resource_id.employee_id,user.template_id.planning_name) # 粮储-白班 @@ -1005,11 +935,6 @@ class HrAttendance(models.Model): [('role_id.name', '=', '联安粮库'), ('template_id.planning_name', '=', '白班')]) for user in ba_up_users: if user.start_datetime.date() == fields.date.today(): - self.env['card.remind.form'].create({ - 'name': user.resource_id.employee_id.name, - 'start_time': datetime.now(), - 'shift': user.template_id.planning_name, - 'department': user.department_id.name, }) self.card_in_comment(user.resource_id.employee_id,user.template_id.planning_name) def card_lc_remind_out(self): @@ -1030,11 +955,6 @@ class HrAttendance(models.Model): [('role_id.name', '=', '联安粮库'), ('template_id.planning_name', '=', '白值')]) for user in ba_up_users: if user.start_datetime.date() == fields.date.today(): - self.env['card.remind.form'].create({ - 'name': user.resource_id.employee_id.name, - 'start_time': datetime.now(), - 'shift': user.template_id.planning_name, - 'department': user.department_id.name, }) self.card_in_comment(user.resource_id.employee_id, user.template_id.planning_name) def card_lc_shift_remind(self): @@ -1042,44 +962,24 @@ class HrAttendance(models.Model): [('role_id.name', '=', '联安粮库'), ('template_id.planning_name', '=', '白值')]) for user in ba_up_users: if user.start_datetime.date() == fields.date.today(): - self.env['card.remind.form'].create({ - 'name': user.resource_id.employee_id.name, - 'start_time': datetime.now(), - 'shift': user.template_id.planning_name, - 'department': user.department_id.name, }) self.card_duty_remind(user.resource_id.employee_id) def card_lc_shift_remind_out(self): ba_up_users = self.env['planning.slot'].search([('role_id.name', '=', '联安粮库'), ('template_id.planning_name', '=', '白值')]) for user in ba_up_users: if user.start_datetime.date() == fields.date.today(): - self.env['card.remind.form'].create({ - 'name': user.resource_id.employee_id.name, - 'start_time': datetime.now(), - 'shift': user.template_id.planning_name, - 'department': user.department_id.name, }) self.card_out_comment(user.resource_id.employee_id,user.template_id.planning_name) def card_lc_shift_remind_on_administrative(self): ba_up_users = self.env['planning.slot'].search([('template_id.planning_name', '=', '保安计划行政')]) for user in ba_up_users: if user.start_datetime.date() == fields.date.today(): - self.env['card.remind.form'].create({ - 'name': user.resource_id.employee_id.name, - 'start_time': datetime.now(), - 'shift': user.template_id.planning_name, - 'department': user.department_id.name, }) self.card_in_comment(user.resource_id.employee_id, user.template_id.planning_name) def card_lc_shift_remind_out_administrative(self): ba_up_users = self.env['planning.slot'].search([('template_id.planning_name', '=', '保安计划行政')]) for user in ba_up_users: if user.start_datetime.date() == fields.date.today(): - self.env['card.remind.form'].create({ - 'name': user.resource_id.employee_id.name, - 'start_time': datetime.now(), - 'shift': user.template_id.planning_name, - 'department': user.department_id.name, }) self.card_out_comment(user.resource_id.employee_id, user.template_id.planning_name) # 客服上班消息提醒 @@ -1087,11 +987,6 @@ class HrAttendance(models.Model): ba_up_users = self.env['planning.slot'].search([('role_id.name', '=', '客服中心'), ('template_id.planning_name', '=', '白班')]) for user in ba_up_users: if user.start_datetime.date() == fields.date.today(): - self.env['card.remind.form'].create({ - 'name': user.resource_id.employee_id.name, - 'start_time': datetime.now(), - 'shift': user.template_id.planning_name, - 'department': user.department_id.name, }) self.card_in_comment(user.resource_id.employee_id, user.template_id.planning_name) # 客服下班消息提醒 @@ -1099,11 +994,6 @@ class HrAttendance(models.Model): ba_up_users = self.env['planning.slot'].search([('role_id.name', '=', '客服中心'), ('template_id.planning_name', '=', '白班')]) for user in ba_up_users: if user.start_datetime.date() == fields.date.today(): - self.env['card.remind.form'].create({ - 'name': user.resource_id.employee_id.name, - 'start_time': datetime.now(), - 'shift': user.template_id.planning_name, - 'department': user.department_id.name, }) self.card_out_comment(user.resource_id.employee_id, user.template_id.planning_name) # 客服值班消息提醒 @@ -1111,11 +1001,6 @@ class HrAttendance(models.Model): ba_up_users = self.env['planning.slot'].search([('role_id.name', '=', '客服中心'), ('template_id.planning_name', '=', '值班')]) for user in ba_up_users: if user.start_datetime.date() == fields.date.today(): - self.env['card.remind.form'].create({ - 'name': user.resource_id.employee_id.name, - 'start_time': datetime.now(), - 'shift': user.template_id.planning_name, - 'department': user.department_id.name, }) self.card_duty_remind(user.resource_id.employee_id) def _create_message_log(self, employee_id, message_type, url): diff --git a/yuthon_hr_attendance/models/yuthon_vacation_reports.py b/yuthon_hr_attendance/models/yuthon_vacation_reports.py index 63796ce0d..bcdb3381a 100644 --- a/yuthon_hr_attendance/models/yuthon_vacation_reports.py +++ b/yuthon_hr_attendance/models/yuthon_vacation_reports.py @@ -1,5 +1,7 @@ from datetime import datetime, timedelta, time from email.policy import default +from operator import index + from odoo import models, fields, api, _ from odoo.exceptions import ValidationError import calendar @@ -1057,8 +1059,13 @@ class AttendanceMessageLog(models.Model): vacation_id = fields.Many2one('yuthon.vacation.reports', string='关联假期额度记录') employee_id = fields.Many2one('hr.employee', string='员工') - update_date = fields.Datetime(string='更新时间') - message_type = fields.Selection([('1', '上班'), ('2', '下班'), ('3', '异常'), ('4', '考勤确认'), ('5', '薪资')], string="类型") + department_id = fields.Many2one(related='employee_id.department_id', string="部门", index=True) + company_id = fields.Many2one(related='employee_id.company_id', string="公司") + update_date = fields.Datetime(string='提醒时间') + shift_id = fields.Many2one('planning.slot', string="班次", store=True) + content = fields.Text(string='内容') + notice_type = fields.Selection([('attendance', '出勤'), ('schedule', '日程'), ('announcement', '公告'), ('attendance_confirmation', '考勤确认单'), ('salary_slip', '薪资条'), + ('process', '流程'), ('other', '其他')], string='类型') message_url = fields.Char(string="url") diff --git a/yuthon_hr_attendance/views/attendance_message_log.xml b/yuthon_hr_attendance/views/attendance_message_log.xml new file mode 100644 index 000000000..e3387894f --- /dev/null +++ b/yuthon_hr_attendance/views/attendance_message_log.xml @@ -0,0 +1,41 @@ + + + attendance.message.log.tree + attendance.message.log + + + + + + + + + + + + + + + attendance.message.log.search + attendance.message.log + + + + + + + + + 消息提醒日志 + attendance.message.log + tree,search + + + + diff --git a/yuthon_hr_attendance/views/yuthon_vacation_reports_views.xml b/yuthon_hr_attendance/views/yuthon_vacation_reports_views.xml index 4cf871344..1885cc740 100644 --- a/yuthon_hr_attendance/views/yuthon_vacation_reports_views.xml +++ b/yuthon_hr_attendance/views/yuthon_vacation_reports_views.xml @@ -230,18 +230,18 @@ - - - - - - - - -