sozsoft-platform/configs/seeds/postgres/object/Hr_S_LeaveDaysRefresh.sql

27 lines
1.1 KiB
MySQL
Raw Permalink Normal View History

2026-10-06 11:24:30 +00:00
CREATE OR REPLACE PROCEDURE public."Hr_S_LeaveDaysRefresh"(
p_TenantId uuid,
p_EmployeeId uuid
)
LANGUAGE plpgsql
AS $$
BEGIN
-- Rapor eklenince, tarihi değişince ya da silinince çalışanın diğer izin taleplerinin gün sayısı
-- yeniden hesaplanır (Hr_F_LeaveNetDays): rapora denk gelen yıllık izin günü bakiyeye geri döner.
-- Rapor türündeki talep kendi günlerini sayar; onun gün sayısına dokunulmaz.
UPDATE public."Hr_T_LeaveRequest" AS r
SET "Days" = s."NewDays"
FROM (
SELECT x."Id",
CASE WHEN x."IsHalfDay" = TRUE AND n."Days" > 0.5 THEN 0.5 ELSE n."Days" END AS "NewDays"
FROM public."Hr_T_LeaveRequest" x
INNER JOIN public."Hr_T_LeaveType" t ON t."Id" = x."LeaveTypeId"
CROSS JOIN LATERAL (
SELECT public."Hr_F_LeaveNetDays"(p_TenantId, x."EmployeeId", x."StartDate"::date, x."EndDate"::date) AS "Days"
) n
WHERE x."EmployeeId" = p_EmployeeId AND x."IsDeleted" = FALSE AND t."Code" <> 'Sick'
) s
WHERE r."Id" = s."Id"
AND r."Days" <> s."NewDays";
END
$$;