一、全局判断(延迟)补填天数限制(表 ent_sys_setting setting_key=wwdl)
二、调班---数据验证
1.验证原上班时间(data_7),调班后上班时间(data_8)--为空或者是不是相同
2.验证申请人的工作日信息 // 申请要休息时间 - 申请人是上班日, 申请要上班时间 - 申请人需要是休息日<strong>验证申请人是否工作日</strong> -- 全局工作日和个人工作日合并查询
3.验证调班对象的工作日信息 //申请人要休息时间 - 对象是休息日, 申请人要上班时间 - 调整对象需要是工作日
<strong>验证调班对象是否工作日</strong> -- 全局工作日和个人工作日合并查询
三、加班/调休/请假/出差
1.验证开始时间(data_7)是否大于结束时间(data_8)
2.删除流程对应的使用记录(表 oa_attendance_used 和 表 oa_attendance)-->流程id
3.根据系统设置的工作时长(表 ent_sys_setting setting_key=wdh 默认8小时)计算累计小时
4.调休、请假、特别休假最小额限制(表 ent_sys_setting setting_key=shml)<strong>调休</strong>
①.累计时间不能为0
②.计算申请人的加班剩余时间 判断是否还剩时间可以调休部门加班有效期-月 (表 ent_sys_setting setting_key=sovd)
单位加班有效期-月 (表 ent_sys_setting setting_key=sovt)
基础(全局)加班有效期-月 (表 ent_sys_setting setting_key=bovt)
设置的是自然月或非自然月 (表 ent_sys_setting setting_key=ovmt)
有效时间 = 申请时间开始 (非自然月)/ 当月1日开始 (自然月)
从表(oa_attendance)查出有效时间内的加班数据,判断剩余可用加班时间
③.更新自定义表单数据(data_15 日期使用记录 数据用 ` 隔开 ,第一值代表使用 日期, 第二个值代表加班时间, 第三值代表 可使用时间 第四值代表 使用时间)
④.重新生成加班日期使用记录 (表 oa_attendance_used)
条件一 调休时间不能大于可用时间
条件二 使用时间不能大于可用时间
<strong>请假</strong>
①.年假
获取年假是否开启 (表 ent_sys_setting setting_key=als)
年假方案判断 (指定日期/自然年/非自然年-按入职时间) (表 ent_sys_setting setting_key=acs)
添加年假使用记录根据系统设置计算 是否可使用年假和可使用天数
<strong>按入职时间(J)</strong> (表 ent_sys_setting setting_key=alv)
根据时间判断入职年数 获取设置的年假天数
<strong>按自然年(Y)</strong> (表 ent_sys_setting setting_key=alvy)
根据时间判断入职年数 获取设置的年假天数 没满一年按比例计算
<strong>按指定日期(D)</strong> (表 ent_sys_setting setting_key=alvd)
直接根据时间获取设置的年假天数
添加考勤记录
查询已经使用的年假记录,判断剩余的年假,插入年假记录
②.特殊休假
获取特殊休假是否开启 (表 ent_sys_setting setting_key=shv)
获取可用特殊假期数据 (表 ent_holiday)
添加特殊假期使用记录 (表 oa_attendance_used)
5.添加考勤记录
设置代理人ID, 加班无代理人
为防止用户忘记填 首日小时和未日小时数 的验证 (婚嫁,丧假不考虑休息日)婚假/丧假/产假/陪产假 判断是否累计休息 根据系统设置 (表 ent_sys_setting setting_key=mfvah)
单天判断请假判断是不是休息日 是的话抛出异常
请假/调休/出差 判断首日,尾日是否工作日,如果是,首尾日时间才有效
加班/出差/婚假/丧假/产假/陪产假 不考虑节假日
请假/调休 需要考虑节假日
累计小时数 不等于 实际小时数 抛出异常
如果是加班计算加班小时数
如果是请假设置对应的请假类别
如果是出差设置是否有无网络