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

36 lines
1.5 KiB
MySQL
Raw Normal View History

2026-10-09 17:02:27 +00:00
CREATE OR REPLACE PROCEDURE public."Prc_P_MaterialRequestAfterSave"(
2026-10-10 20:11:12 +00:00
"p_Id" uuid
2026-10-09 17:02:27 +00:00
)
LANGUAGE plpgsql
AS $$
BEGIN
IF "p_Id" IS NULL THEN RETURN; END IF;
UPDATE "Prc_T_MaterialRequest" 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" = false
WHERE a."IsDeleted" = false AND a."IsActive" = true AND a."ApprovalArea" = 'Purchase'
AND a."DepartmentId" = r."DepartmentId"
AND a."TenantId" IS NOT DISTINCT FROM r."TenantId"),
"PurchaseApproverUserNames" = (
SELECT string_agg(u."UserName", '|')
2026-10-10 20:11:12 +00:00
FROM "AbpUsers" u
WHERE u."IsDeleted" = false AND u."IsActive" = true
AND u."TenantId" IS NOT DISTINCT FROM r."TenantId"
AND EXISTS (
SELECT 1
FROM "AbpPermissionGrants" g
WHERE g."Name" = 'App.Prc.MaterialRequestPurchaseApproval.Update'
AND g."TenantId" IS NOT DISTINCT FROM r."TenantId"
AND ((g."ProviderName" = 'U' AND g."ProviderKey" = u."Id"::text)
OR (g."ProviderName" = '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
WHERE r."Id" = "p_Id";
END;
$$;