@@ -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'})
|
||||
|
||||
Reference in New Issue
Block a user