32 lines
1.8 KiB
Transact-SQL
32 lines
1.8 KiB
Transact-SQL
CREATE OR ALTER VIEW [dbo].[Hr_V_LeaveSummary]
|
||
AS
|
||
-- Çalışan başına yıllık izin bakiyesi; defterin (Hr_V_LeaveBalanceYear) toplamıdır.
|
||
-- Kalan = hak edilen + düzeltme − onaylı kullanılan; Kullanılabilir = kalan − onay bekleyen.
|
||
SELECT u.Id,
|
||
u.TenantId,
|
||
u.Id AS EmployeeId,
|
||
CONCAT(u.Name, N' ', u.Surname) AS EmployeeName,
|
||
u.DepartmentId,
|
||
u.JobPositionId,
|
||
CAST(COALESCE(u.SeniorityStartDate, u.HireDate) AS date) AS SeniorityStartDate,
|
||
CASE
|
||
WHEN COALESCE(u.SeniorityStartDate, u.HireDate) IS NULL THEN NULL
|
||
ELSE DATEDIFF(year, COALESCE(u.SeniorityStartDate, u.HireDate), GETDATE())
|
||
- CASE WHEN DATEADD(year, DATEDIFF(year, COALESCE(u.SeniorityStartDate, u.HireDate), GETDATE()),
|
||
COALESCE(u.SeniorityStartDate, u.HireDate)) > GETDATE() THEN 1 ELSE 0 END
|
||
END AS ServiceYears,
|
||
CAST(COALESCE(SUM(CASE WHEN l.YearNo > 0 THEN l.EntitledDays END), 0) AS decimal(9, 1)) AS EntitledDays,
|
||
CAST(COALESCE(SUM(CASE WHEN l.YearNo = 0 THEN l.EntitledDays END), 0) AS decimal(9, 1)) AS AdjustmentDays,
|
||
CAST(COALESCE(SUM(l.UsedDays), 0) AS decimal(9, 1)) AS UsedDays,
|
||
CAST(COALESCE(SUM(l.PendingDays), 0) AS decimal(9, 1)) AS PendingDays,
|
||
CAST(COALESCE(SUM(l.EntitledDays - l.UsedDays), 0) AS decimal(9, 1)) AS RemainingDays,
|
||
CAST(COALESCE(SUM(l.EntitledDays - l.UsedDays - l.PendingDays), 0) AS decimal(9, 1)) AS AvailableDays,
|
||
MAX(l.NextAccrualDate) AS NextAccrualDate,
|
||
MAX(l.NextAccrualDays) AS NextAccrualDays,
|
||
u.IsActive
|
||
FROM AbpUsers u
|
||
LEFT JOIN Hr_V_LeaveBalanceYear l ON l.EmployeeId = u.Id
|
||
WHERE u.IsDeleted = 0
|
||
GROUP BY u.Id, u.TenantId, u.Name, u.Surname, u.DepartmentId, u.JobPositionId,
|
||
u.SeniorityStartDate, u.HireDate, u.IsActive
|
||
GO
|