20 lines
950 B
MySQL
20 lines
950 B
MySQL
|
|
CREATE OR ALTER PROCEDURE [dbo].[Hr_S_LeaveDaysRefresh]
|
|||
|
|
@TenantId uniqueidentifier,
|
|||
|
|
@EmployeeId uniqueidentifier
|
|||
|
|
AS
|
|||
|
|
BEGIN
|
|||
|
|
SET NOCOUNT ON;
|
|||
|
|
|
|||
|
|
-- 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 r
|
|||
|
|
SET Days = CASE WHEN r.IsHalfDay = 1 AND n.Days > 0.5 THEN 0.5 ELSE n.Days END
|
|||
|
|
FROM Hr_T_LeaveRequest r
|
|||
|
|
INNER JOIN Hr_T_LeaveType t ON t.Id = r.LeaveTypeId
|
|||
|
|
CROSS APPLY (SELECT dbo.Hr_F_LeaveNetDays(@TenantId, r.EmployeeId, CAST(r.StartDate AS date), CAST(r.EndDate AS date)) AS Days) n
|
|||
|
|
WHERE r.EmployeeId = @EmployeeId AND r.IsDeleted = 0 AND t.Code <> N'Sick'
|
|||
|
|
AND r.Days <> CASE WHEN r.IsHalfDay = 1 AND n.Days > 0.5 THEN 0.5 ELSE n.Days END;
|
|||
|
|
END
|
|||
|
|
GO
|