sozsoft-platform/configs/seeds/host/sql/object/Hr_V_AttendanceShift.sql
2026-10-05 00:18:13 +03:00

32 lines
2.3 KiB
Transact-SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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'App.HrSettings.Attendance.DefaultShiftStart')) AS DefaultStart,
TRY_CONVERT(time, dbo.Hr_F_HrSetting(u.TenantId, N'App.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'App.HrSettings.Attendance.DefaultBreakMinutes')), 60) AS BreakMin,
COALESCE(s.LateToleranceMinutes,
TRY_CONVERT(int, dbo.Hr_F_HrSetting(u.TenantId, N'App.HrSettings.Attendance.LateToleranceMinutes')), 10) AS LateTol,
COALESCE(s.EarlyLeaveToleranceMinutes,
TRY_CONVERT(int, dbo.Hr_F_HrSetting(u.TenantId, N'App.HrSettings.Attendance.EarlyLeaveToleranceMinutes')), 10) AS EarlyTol
) x
WHERE u.IsDeleted = 0;
GO