2026-10-04 21:18:13 +00:00
|
|
|
|
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,
|
2026-10-19 14:35:08 +00:00
|
|
|
|
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
|
2026-10-04 21:18:13 +00:00
|
|
|
|
) 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,
|
2026-10-19 14:35:08 +00:00
|
|
|
|
TRY_CONVERT(int, dbo.Hr_F_HrSetting(u.TenantId, N'Adm.HrSettings.Attendance.DefaultBreakMinutes')), 60) AS BreakMin,
|
2026-10-04 21:18:13 +00:00
|
|
|
|
COALESCE(s.LateToleranceMinutes,
|
2026-10-19 14:35:08 +00:00
|
|
|
|
TRY_CONVERT(int, dbo.Hr_F_HrSetting(u.TenantId, N'Adm.HrSettings.Attendance.LateToleranceMinutes')), 10) AS LateTol,
|
2026-10-04 21:18:13 +00:00
|
|
|
|
COALESCE(s.EarlyLeaveToleranceMinutes,
|
2026-10-19 14:35:08 +00:00
|
|
|
|
TRY_CONVERT(int, dbo.Hr_F_HrSetting(u.TenantId, N'Adm.HrSettings.Attendance.EarlyLeaveToleranceMinutes')), 10) AS EarlyTol
|
2026-10-04 21:18:13 +00:00
|
|
|
|
) x
|
|
|
|
|
|
WHERE u.IsDeleted = 0;
|
|
|
|
|
|
GO
|