49 lines
1.7 KiB
MySQL
49 lines
1.7 KiB
MySQL
|
|
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
|
|||
|
|
-- güncellediği için sahiplik ve aşama kuralı yazma tarafında burada uygulanır.
|
|||
|
|
IF @RequestId IS NULL OR @Actor = N'Hr'
|
|||
|
|
RETURN;
|
|||
|
|
|
|||
|
|
DECLARE @EmployeeId uniqueidentifier, @Status nvarchar(50), @ManagerIds nvarchar(1024);
|
|||
|
|
|
|||
|
|
SELECT @EmployeeId = EmployeeId, @Status = ApprovalStatus, @ManagerIds = ManagerIds
|
|||
|
|
FROM Hr_T_LeaveRequest
|
|||
|
|
WHERE Id = @RequestId AND IsDeleted = 0;
|
|||
|
|
|
|||
|
|
IF @EmployeeId IS NULL
|
|||
|
|
RETURN;
|
|||
|
|
|
|||
|
|
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
|