sozsoft-platform/configs/seeds/sql/object/Hr_V_LeaveSummary.sql

33 lines
1.8 KiB
MySQL
Raw Normal View History

2026-10-04 19:17:16 +00:00
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