考勤加班时间不满25分钟不算加班, 满25分钟但不超过50分钟,算加班半小时;满50分钟,但不满1小时25分钟,算加班1小时;满1小时25分钟,但不满1小时50分钟,算加班1.5小时。
考勤实现
加班时间不满25分钟不算加班, 满25分钟但不超过50分钟,算加班半小时;满50分钟,但不满1小时25分钟,算加班1小时;满1小时25分钟,但不满1小时50分钟,算加班1.5小时。
实现方法:自定义考勤算法实现,
一、
首先算法中利用公式实现此逻辑
加班时间不满25分钟不算加班, 满25分钟但不超过50分钟,算加班半小时;满50分钟,但不满1小时25分钟,算加班1小时;满1小时25分钟,但不满1小时50分钟,算加班1.5小时。
加班1 加班2 加班3 加班4 都要如此
二、
然后数据库执行sql
Create procedure [dbo].[hr_sp_tm_Day10_ComputeStatus_After]
@Startdate nvarchar(10), --开始日期
@Enddate nvarchar(10), --截止日期
@strPerson nvarchar(50), --人员临时表
@strDayResult nvarchar(50), --日结果临时表
@strPeriodResult nvarchar(50), --班段结果临时表
@strOriCardData nvarchar(50) --刷卡数据临时表
as
declare @strSQL as nvarchar(4000)
set @strSQL=‘
update o set o.nOvertimeHours=d.nOverTimeHours1
from ‘+@strDayResult+‘ d
join hr_tm_OverTimeresult o
on d.cpsn_num=o.cpsn_num
d.ID_hr_tm_overtime1 = o.uRecordId‘
EXECUTE sp_executesql @strSQL
set @strSQL=‘
update o set o.nOvertimeHours=d.nOverTimeHours2
from ‘+@strDayResult+‘ d
join hr_tm_OverTimeresult o
on d.cpsn_num=o.cpsn_num
d.ID_hr_tm_overtime2 = o.uRecordId‘
EXECUTE sp_executesql @strSQL
set @strSQL=‘
update o set o.nOvertimeHours=d.nOverTimeHours3
from ‘+@strDayResult+‘ d
join hr_tm_OverTimeresult o
on d.cpsn_num=o.cpsn_num
d.ID_hr_tm_overtime3 = o.uRecordId‘
EXECUTE sp_executesql @strSQL
set @strSQL=‘
update o set o.nOvertimeHours=d.nOverTimeHours4
from ‘+@strDayResult+‘ d
join hr_tm_OverTimeresult o
on d.cpsn_num=o.cpsn_num
d.ID_hr_tm_overtime4 = o.uRecordId‘
EXECUTE sp_executesql @strSQL
if @@ERROR <> 0 Goto Err_Handler
return 0
Err_Handler:
return 1
执行之后如此再次设置考勤算法
考勤加班时间不满25分钟不算加班, 满25分钟但不超过50分钟,算加班半小时;满50分钟,但不满1小时25分钟,算加班1小时;满1小时25分钟,但不满1小时50分钟,算加班1.5小时。
本文2024-08-19 20:50:03发表“u8知识”栏目。
本文链接:https://wenku.my7c.com/article/yonyou-u8-844.html