sozsoft-platform/configs/seeds/postgres/object/Hr_V_LeaveSummary.sql
2026-10-06 14:24:30 +03:00

32 lines
2 KiB
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 REPLACE VIEW public."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", ' ', u."Surname")::varchar(129) AS "EmployeeName",
u."DepartmentId",
u."JobPositionId",
COALESCE(u."SeniorityStartDate", u."HireDate")::date AS "SeniorityStartDate",
CASE
WHEN COALESCE(u."SeniorityStartDate", u."HireDate") IS NULL THEN NULL
ELSE (EXTRACT(YEAR FROM LOCALTIMESTAMP) - EXTRACT(YEAR FROM COALESCE(u."SeniorityStartDate", u."HireDate")))::int
- CASE WHEN COALESCE(u."SeniorityStartDate", u."HireDate")
+ make_interval(years => (EXTRACT(YEAR FROM LOCALTIMESTAMP) - EXTRACT(YEAR FROM COALESCE(u."SeniorityStartDate", u."HireDate")))::int)
> LOCALTIMESTAMP THEN 1 ELSE 0 END
END AS "ServiceYears",
COALESCE(SUM(CASE WHEN l."YearNo" > 0 THEN l."EntitledDays" END), 0)::numeric(9, 1) AS "EntitledDays",
COALESCE(SUM(CASE WHEN l."YearNo" = 0 THEN l."EntitledDays" END), 0)::numeric(9, 1) AS "AdjustmentDays",
COALESCE(SUM(l."UsedDays"), 0)::numeric(9, 1) AS "UsedDays",
COALESCE(SUM(l."PendingDays"), 0)::numeric(9, 1) AS "PendingDays",
COALESCE(SUM(l."EntitledDays" - l."UsedDays"), 0)::numeric(9, 1) AS "RemainingDays",
COALESCE(SUM(l."EntitledDays" - l."UsedDays" - l."PendingDays"), 0)::numeric(9, 1) AS "AvailableDays",
MAX(l."NextAccrualDate") AS "NextAccrualDate",
MAX(l."NextAccrualDays")::numeric(5, 1) AS "NextAccrualDays",
u."IsActive"
FROM "AbpUsers" u
LEFT JOIN public."Hr_V_LeaveBalanceYear" l ON l."EmployeeId" = u."Id"
WHERE u."IsDeleted" = FALSE
GROUP BY u."Id", u."TenantId", u."Name", u."Surname", u."DepartmentId", u."JobPositionId",
u."SeniorityStartDate", u."HireDate", u."IsActive";