2026-10-04 19:17:16 +00:00
|
|
|
|
CREATE OR ALTER PROCEDURE [dbo].[Hr_S_LeaveRequestGuard]
|
|
|
|
|
|
@RequestId uniqueidentifier,
|
|
|
|
|
|
@ActorId uniqueidentifier,
|
|
|
|
|
|
@Actor nvarchar(16),
|
|
|
|
|
|
@Operation nvarchar(16)
|
|
|
|
|
|
AS
|
|
|
|
|
|
BEGIN
|
|
|
|
|
|
SET NOCOUNT ON;
|
|
|
|
|
|
|
|
|
|
|
|
-- Persona ekranları satırı DefaultFilter ile süzer; kayıt uçları satırı yalnızca Id ile
|
2026-10-04 21:18:13 +00:00
|
|
|
|
-- güncellediği için sahiplik ve aşama kuralı yazma tarafında burada uygulanır. Kayıttan önce
|
|
|
|
|
|
-- çalıştığı için talebin eski tarihleri de burada kapalı puantaj dönemine karşı denetlenir.
|
|
|
|
|
|
IF @RequestId IS NULL
|
2026-10-04 19:17:16 +00:00
|
|
|
|
RETURN;
|
|
|
|
|
|
|
2026-10-04 21:18:13 +00:00
|
|
|
|
DECLARE @EmployeeId uniqueidentifier, @Status nvarchar(50), @ManagerIds nvarchar(1024),
|
|
|
|
|
|
@TenantId uniqueidentifier, @StartDate date, @EndDate date;
|
2026-10-04 19:17:16 +00:00
|
|
|
|
|
2026-10-04 21:18:13 +00:00
|
|
|
|
SELECT @EmployeeId = EmployeeId, @Status = ApprovalStatus, @ManagerIds = ManagerIds,
|
|
|
|
|
|
@TenantId = TenantId, @StartDate = CAST(StartDate AS date), @EndDate = CAST(EndDate AS date)
|
2026-10-04 19:17:16 +00:00
|
|
|
|
FROM Hr_T_LeaveRequest
|
|
|
|
|
|
WHERE Id = @RequestId AND IsDeleted = 0;
|
|
|
|
|
|
|
|
|
|
|
|
IF @EmployeeId IS NULL
|
|
|
|
|
|
RETURN;
|
|
|
|
|
|
|
2026-10-04 21:18:13 +00:00
|
|
|
|
IF dbo.Hr_F_TimesheetPeriodClosed(@TenantId, @StartDate, @EndDate) = 1
|
|
|
|
|
|
THROW 51118, N'İzin tarihleri kapalı bir puantaj dönemine düşüyor. Önce İnsan Kaynakları dönemi açmalıdır.', 1;
|
|
|
|
|
|
|
|
|
|
|
|
IF @Actor = N'Hr'
|
|
|
|
|
|
RETURN;
|
|
|
|
|
|
|
2026-10-04 19:17:16 +00:00
|
|
|
|
IF @Actor = N'Employee'
|
|
|
|
|
|
BEGIN
|
|
|
|
|
|
IF @EmployeeId <> @ActorId
|
|
|
|
|
|
THROW 51100, N'Bu izin talebi size ait değil.', 1;
|
|
|
|
|
|
|
|
|
|
|
|
-- Karar verilmiş talep çalışan tarafından değiştirilemez; iptal için İK'ya başvurulur.
|
|
|
|
|
|
IF @Status IS NOT NULL AND @Status NOT IN (N'Onaya Gönderildi', N'Müdür Onayı')
|
|
|
|
|
|
THROW 51101, N'Onay sürecinde ilerlemiş ya da sonuçlanmış izin talebi değiştirilemez veya silinemez. İptal için İnsan Kaynakları ile görüşün.', 1;
|
|
|
|
|
|
|
|
|
|
|
|
RETURN;
|
|
|
|
|
|
END
|
|
|
|
|
|
|
|
|
|
|
|
IF @Actor = N'Manager'
|
|
|
|
|
|
BEGIN
|
|
|
|
|
|
IF @Operation = N'Delete'
|
|
|
|
|
|
THROW 51102, N'Yönetici izin talebini silemez.', 1;
|
|
|
|
|
|
|
|
|
|
|
|
IF @ActorId IS NULL OR N'|' + COALESCE(@ManagerIds, N'') + N'|' NOT LIKE N'%|' + CONVERT(nvarchar(36), @ActorId) + N'|%'
|
|
|
|
|
|
THROW 51103, N'Bu izin talebinin onaycısı değilsiniz.', 1;
|
|
|
|
|
|
|
|
|
|
|
|
IF @Status IS NULL OR @Status <> N'Müdür Onayı'
|
|
|
|
|
|
THROW 51104, N'İzin talebi müdür onayında beklemiyor.', 1;
|
|
|
|
|
|
END
|
|
|
|
|
|
END
|
|
|
|
|
|
GO
|