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

37 lines
1.6 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
2026-10-12 10:27:54 +00:00
INNER JOIN "AbpUsers" u ON u."UserName" = a."ApprovalUserName" AND u."IsDeleted" = false AND u."IsActive" = true
AND u."TenantId" IS NOT DISTINCT FROM a."TenantId"
2026-10-09 17:02:27 +00:00
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
2026-10-19 14:35:08 +00:00
WHERE g."Name" = 'Prc.MaterialRequestPurchaseApproval.Update'
2026-10-10 20:11:12 +00:00
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;
$$;