Odoo事假计算错误:半日假未在薪资单中正确核算
解决Odoo半日事假未核算的问题
Hey,针对你遇到的Odoo半日事假未被薪资核算的问题,我帮你梳理几个核心排查点和解决方案,大概率和时区转换、事假时间配置以及系统计算逻辑有关:
1. 先确认时区配置是否正确
Odoo默认以UTC时间存储所有时间数据,这是很多时间类问题的根源。你提到的事假时间1/05/2018 18:30 - 1/05/2018 23:30对应IST的1pm-6pm,这说明你可能直接把IST时间填进了系统,但如果系统时区是UTC的话,这段时间在IST里其实是次日的00:00-05:00——完全不在员工9:00-18:00的工作时段内,系统自然不会识别为有效事假。
解决步骤:
- 检查系统全局时区:进入
Settings > General Settings > Timezone,确认是否设置为Asia/Kolkata(印度标准时间)。如果是UTC,建议改成IST,这样所有时间操作都会直接用IST,避免转换混乱。 - 检查员工个人时区:进入
Employees > [对应员工] > Preferences > Timezone,确保和系统时区一致,防止个人时间显示错位。
2. 修正事假申请的时间填写
根据系统时区的不同,正确的事假时间填写方式如下:
- 如果系统时区是IST:直接填写员工实际请假的IST时间:
1/05/2018 13:00 - 1/05/2018 18:00(正好覆盖工作时段的后半段,符合半日事假)。 - 如果系统时区是UTC:需要把IST时间转换成UTC(IST=UTC+5.5小时),所以填写
1/05/2018 07:30 - 1/05/2018 12:30。
填写完成后,务必确认事假申请状态为Approved(已批准),未批准的申请不会被计入薪资核算。
3. 检查事假类型的核算配置
有时候事假类型的设置会导致时长不被扣除:
- 进入
Leave Types > [你的半日事假类型],查看Duration Calculation选项:- 确保选择
Based on working hours,并关联员工对应的Working Schedule(9:00-18:00的班次),这样系统会按实际工作时段计算事假时长。 - 如果选了
Fixed duration,要确认固定时长设置为0.5天,并且勾选Deduct from Attendance,这样薪资模块才会识别并扣除该时长。
- 确保选择
4. 重新生成考勤和薪资单
做完以上调整后,需要重新触发核算:
- 删除之前生成的薪资单,避免旧数据干扰。
- 进入
Attendance > Attendance Analysis,筛选该员工和对应日期,检查当日考勤是否正确扣除了0.5天的事假时长。 - 重新生成薪资单,查看总工作日和工作时长是否更新为正确数值(比如总工作日从31变为30.5,工作时长对应减少4.5小时)。
如果以上步骤都试过还是有问题,可以去Settings > Technical > Logs里搜索相关日志,看是否有时间转换或计算的报错信息,帮助进一步定位问题。
内容的提问来源于stack exchange,提问作者HVH
相关产品推荐
相关产品推荐

