!8543 添加功能

Merge pull request !8543 from 李鹏宇/dev_zhou
This commit is contained in:
李鹏宇
2026-02-02 03:42:53 +00:00
committed by Gitee
+40 -29
View File
@@ -5,7 +5,7 @@ from odoo.exceptions import AccessError, MissingError, ValidationError
from odoo.http import request
from ....addons.portal.controllers import portal
from datetime import datetime, date, time, timedelta
from dateutil.relativedelta import relativedelta
class CustomerPortal(portal.CustomerPortal):
@@ -76,37 +76,48 @@ class CustomerPortal(portal.CustomerPortal):
record = request.env['yuthon.vacation.reports'].sudo().search([('id', '=', kw.get('id'))])
data = {
'state': '已确认' if record.vacation_state == 'confirmed' else '待确认',
'日期': record.display_date,
'应到': record.should_attendance,
'实到': record.actual_attendance,
'迟到': record.is_late_card,
'早退': record.is_early_card,
'缺卡': record.is_no_card,
'旷工': record.is_work,
'异常': record.is_abnormal,
'年假': record.done_leave,
'加班时': record.done_working_overtime,
'调休': record.compensatory_leave,
'事假': record.leave_of_absence,
'加班时(法定假)': record.statutory_leave,
'育儿假': record.parental_leave,
'值班调休': record.duty_off_leave,
'婚假': record.marriage_leave,
'产假': record.maternity_leave,
'陪产假': record.paternity_leave,
'计生假': record.family_planning_leave,
'丧假': record.bereavement_leave,
'探亲假': record.home_visit_leave,
'家长会假': record.parents_meeting_leave,
'病假(普通)': record.general_sick_leave,
'病假(住院期)': record.hospital_sick_leave,
'病假(出院恢复期)': record.recovery_sick_leave,
'考试假': record.exam_leave,
'应到': f"{record.should_attendance}天",
'实到': f"{record.actual_attendance}天",
'迟到': f"{record.is_late_card}次",
'早退': f"{record.is_early_card}次",
'缺卡': f"{record.is_no_card}次",
'旷工': f"{record.is_work}次",
'异常': f"{record.is_abnormal}次",
'年假': f"{record.done_leave}天",
'加班时': f"{record.done_working_overtime * 8}小时",
'调休': f"{record.compensatory_leave}天",
'事假': f"{record.leave_of_absence}天",
'加班时(法定假)': f"{record.statutory_leave * 8}小时",
'育儿假': f"{record.parental_leave}天",
'值班调休': f"{record.duty_off_leave}天",
'婚假': f"{record.marriage_leave}天",
'产假': f"{record.maternity_leave}天",
'陪产假': f"{record.paternity_leave}天",
'计生假': f"{record.family_planning_leave}天",
'丧假': f"{record.bereavement_leave}天",
'探亲假': f"{record.home_visit_leave}天",
'家长会假': f"{record.parents_meeting_leave}天",
'病假(普通)': f"{record.general_sick_leave}天",
'病假(住院期)': f"{record.hospital_sick_leave}天",
'病假(出院恢复期)': f"{record.recovery_sick_leave}天",
'考试假': f"{record.exam_leave}天",
}
return json.dumps({'data': data, 'code': 200, 'message': ''})
@http.route('/phone/vacation/self/status', type='http', auth="none", csrf=False, cors='*')
def phone_vacation_self_status(self, **kw):
record_id = request.env['yuthon.vacation.reports'].sudo().search([('id', '=', kw.get('id'))])
record_id.write({'vacation_state': 'confirmed'})
return json.dumps({'code': 200, 'message': 'OK'})
month_start = record_id.vacation_date.replace(day=1)
month_end = (month_start + relativedelta(months=1) - relativedelta(days=1))
attendance_exception = self.env['hr.attendance'].search([
('employee_id', '=', record_id.employee_id.id),
('current_data', '>=', month_start),
('current_data', '<=', month_end),
('is_abnormal', '=', True)
], limit=1)
# 如果考勤异常,则不自动确认
if attendance_exception:
return json.dumps({'code': 200, 'message': '考勤异常,请先核对考勤记录'})
else:
record_id.write({'vacation_state': 'confirmed'})
return json.dumps({'code': 200, 'message': 'OK'})