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