32 lines
2.3 KiB
Transact-SQL
32 lines
2.3 KiB
Transact-SQL
CREATE OR ALTER VIEW [dbo].[Hr_V_AttendanceShift]
|
||
AS
|
||
-- Çalışanın puantajda kullanılan vardiyası (dakika cinsinden). Kullanıcı kartında vardiya yoksa ya da
|
||
-- vardiyanın alanı boşsa Ayarlar › İnsan Kaynakları › Puantaj'daki varsayılan geçerlidir.
|
||
-- DayOffset: hareketin hangi iş gününe yazılacağı. Vardiya bitişi ile bir sonraki başlangıç arasındaki
|
||
-- boşluğun ortası gün sınırıdır; gece vardiyasındaki 23:50 okutması vardiyanın başladığı ertesi günün
|
||
-- hareketidir. İş günü = CAST(DATEADD(minute, -DayOffset, Zaman) AS date).
|
||
SELECT x.EmployeeId, x.TenantId, x.ShiftId, x.StartMin, x.EndMin, x.BreakMin, x.LateTol, x.EarlyTol,
|
||
x.StartMin - ((x.StartMin - ((x.EndMin + ((x.StartMin - x.EndMin + 1440) % 1440) / 2) % 1440) + 1440) % 1440) AS DayOffset
|
||
FROM AbpUsers u
|
||
LEFT JOIN Hr_T_Shift s ON s.Id = u.ShiftId AND s.IsDeleted = 0
|
||
CROSS APPLY (
|
||
SELECT TRY_CONVERT(time, s.StartTime) AS ShiftStart,
|
||
TRY_CONVERT(time, s.EndTime) AS ShiftEnd,
|
||
TRY_CONVERT(time, dbo.Hr_F_HrSetting(u.TenantId, N'Adm.HrSettings.Attendance.DefaultShiftStart')) AS DefaultStart,
|
||
TRY_CONVERT(time, dbo.Hr_F_HrSetting(u.TenantId, N'Adm.HrSettings.Attendance.DefaultShiftEnd')) AS DefaultEnd
|
||
) t
|
||
CROSS APPLY (
|
||
SELECT u.Id AS EmployeeId, u.TenantId, s.Id AS ShiftId,
|
||
COALESCE(DATEPART(hour, t.ShiftStart) * 60 + DATEPART(minute, t.ShiftStart),
|
||
DATEPART(hour, t.DefaultStart) * 60 + DATEPART(minute, t.DefaultStart), 480) AS StartMin,
|
||
COALESCE(DATEPART(hour, t.ShiftEnd) * 60 + DATEPART(minute, t.ShiftEnd),
|
||
DATEPART(hour, t.DefaultEnd) * 60 + DATEPART(minute, t.DefaultEnd), 1080) AS EndMin,
|
||
COALESCE(s.BreakMinutes,
|
||
TRY_CONVERT(int, dbo.Hr_F_HrSetting(u.TenantId, N'Adm.HrSettings.Attendance.DefaultBreakMinutes')), 60) AS BreakMin,
|
||
COALESCE(s.LateToleranceMinutes,
|
||
TRY_CONVERT(int, dbo.Hr_F_HrSetting(u.TenantId, N'Adm.HrSettings.Attendance.LateToleranceMinutes')), 10) AS LateTol,
|
||
COALESCE(s.EarlyLeaveToleranceMinutes,
|
||
TRY_CONVERT(int, dbo.Hr_F_HrSetting(u.TenantId, N'Adm.HrSettings.Attendance.EarlyLeaveToleranceMinutes')), 10) AS EarlyTol
|
||
) x
|
||
WHERE u.IsDeleted = 0;
|
||
GO
|