39 lines
1.9 KiB
Transact-SQL
39 lines
1.9 KiB
Transact-SQL
CREATE OR ALTER PROCEDURE [dbo].[Prc_P_MaterialRequestAfterSave]
|
||
@Id uniqueidentifier
|
||
AS
|
||
BEGIN
|
||
SET NOCOUNT ON;
|
||
IF @Id IS NULL RETURN;
|
||
|
||
-- Departman onaycıları: Onaycılar'da talebin departmanı için Satınalma onay yeri.
|
||
-- Satınalma onaycıları: Satınalma Onayı Bekleyenler ekranında karar verebilen (güncelleme yetkisi
|
||
-- doğrudan ya da rolüyle verilmiş) aktif kullanıcılar.
|
||
UPDATE r SET
|
||
DeptApproverUserNames = (
|
||
SELECT STRING_AGG(u.UserName, '|')
|
||
FROM Adm_T_Approver a
|
||
INNER JOIN AbpUsers u ON u.UserName = a.ApprovalUserName AND u.IsDeleted = 0 AND u.IsActive = 1
|
||
AND ((u.TenantId IS NULL AND a.TenantId IS NULL) OR u.TenantId = a.TenantId)
|
||
WHERE a.IsDeleted = 0 AND a.IsActive = 1 AND a.ApprovalArea = 'Purchase'
|
||
AND a.DepartmentId = r.DepartmentId
|
||
AND ((a.TenantId IS NULL AND r.TenantId IS NULL) OR a.TenantId = r.TenantId)),
|
||
PurchaseApproverUserNames = (
|
||
SELECT STRING_AGG(u.UserName, '|')
|
||
FROM AbpUsers u
|
||
WHERE u.IsDeleted = 0 AND u.IsActive = 1
|
||
AND ((u.TenantId IS NULL AND r.TenantId IS NULL) OR u.TenantId = r.TenantId)
|
||
AND EXISTS (
|
||
SELECT 1
|
||
FROM AbpPermissionGrants g
|
||
WHERE g.Name = N'Prc.MaterialRequestPurchaseApproval.Update'
|
||
AND ((g.TenantId IS NULL AND r.TenantId IS NULL) OR g.TenantId = r.TenantId)
|
||
AND ((g.ProviderName = N'U' AND g.ProviderKey = CAST(u.Id AS nvarchar(64)))
|
||
OR (g.ProviderName = N'R' AND g.ProviderKey IN (
|
||
SELECT ro.Name
|
||
FROM AbpUserRoles ur
|
||
INNER JOIN AbpRoles ro ON ro.Id = ur.RoleId
|
||
WHERE ur.UserId = u.Id)))))
|
||
FROM Prc_T_MaterialRequest r
|
||
WHERE r.Id = @Id;
|
||
END
|
||
GO
|