sozsoft-platform/configs/seeds/sql/object/Prc_P_MaterialRequestAfterSave.sql

39 lines
1.8 KiB
MySQL
Raw Normal View History

2026-10-09 17:02:27 +00:00
CREATE OR ALTER PROCEDURE [dbo].[Prc_P_MaterialRequestAfterSave]
2026-10-10 20:11:12 +00:00
@Id uniqueidentifier
2026-10-09 17:02:27 +00:00
AS
BEGIN
SET NOCOUNT ON;
IF @Id IS NULL RETURN;
2026-10-10 20:11:12 +00:00
-- 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.
2026-10-09 17:02:27 +00:00
UPDATE r SET
DeptApproverUserNames = (
SELECT STRING_AGG(u.UserName, '|')
FROM Adm_T_Approver a
INNER JOIN AbpUsers u ON u.Id = a.ApproverUserId AND u.IsDeleted = 0
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, '|')
2026-10-10 20:11:12 +00:00
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'App.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)))))
2026-10-09 17:02:27 +00:00
FROM Prc_T_MaterialRequest r
WHERE r.Id = @Id;
END
GO