2026-10-09 17:02:27 +00:00
|
|
|
|
CREATE OR REPLACE PROCEDURE public."Prc_P_MaterialRequestAfterSave"(
|
|
|
|
|
|
"p_Id" uuid,
|
|
|
|
|
|
"p_UserId" uuid DEFAULT NULL
|
|
|
|
|
|
)
|
|
|
|
|
|
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", '|')
|
|
|
|
|
|
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" = 'PurchaseDesk'
|
|
|
|
|
|
AND a."TenantId" IS NOT DISTINCT FROM r."TenantId")
|
|
|
|
|
|
WHERE r."Id" = "p_Id";
|
|
|
|
|
|
|
|
|
|
|
|
UPDATE "Prc_T_MaterialRequest" r SET
|
|
|
|
|
|
"PurchaseApprovedBy" = COALESCE("p_UserId", r."LastModifierId"),
|
|
|
|
|
|
"PurchaseApprovalDate" = COALESCE(r."ApprovalDate", now()),
|
|
|
|
|
|
"PurchaseApprovalNote" = r."ApprovalNote"
|
|
|
|
|
|
WHERE r."Id" = "p_Id" AND r."PurchaseApprovedBy" IS NULL AND r."DeptApprovedBy" IS NOT NULL
|
|
|
|
|
|
AND r."ApprovalStatus" IN ('Onaylandı', 'Reddedildi');
|
|
|
|
|
|
|
|
|
|
|
|
UPDATE "Prc_T_MaterialRequest" r SET
|
|
|
|
|
|
"DeptApprovedBy" = COALESCE("p_UserId", r."LastModifierId"),
|
|
|
|
|
|
"DeptApprovalDate" = COALESCE(r."ApprovalDate", now()),
|
|
|
|
|
|
"DeptApprovalNote" = r."ApprovalNote"
|
|
|
|
|
|
WHERE r."Id" = "p_Id" AND r."DeptApprovedBy" IS NULL
|
|
|
|
|
|
AND r."ApprovalStatus" IN ('Satınalma Onayı', 'Onaylandı', 'Reddedildi');
|
|
|
|
|
|
|
|
|
|
|
|
UPDATE "Prc_T_MaterialRequest" r SET "Status" =
|
|
|
|
|
|
CASE
|
|
|
|
|
|
WHEN r."ApprovalStatus" = 'Departman Onayı' THEN 'DeptApproval'
|
|
|
|
|
|
WHEN r."ApprovalStatus" = 'Satınalma Onayı' THEN 'PurchaseApproval'
|
|
|
|
|
|
WHEN r."ApprovalStatus" = 'Reddedildi' THEN 'Rejected'
|
|
|
|
|
|
WHEN r."ApprovalStatus" = 'Onaylandı' THEN
|
|
|
|
|
|
CASE
|
|
|
|
|
|
WHEN s."Total" > 0 AND s."Closed" = s."Total" THEN 'Done'
|
|
|
|
|
|
WHEN s."Closed" > 0 THEN 'PartiallyDone'
|
|
|
|
|
|
ELSE 'Approved'
|
|
|
|
|
|
END
|
|
|
|
|
|
ELSE 'Draft'
|
|
|
|
|
|
END
|
|
|
|
|
|
FROM (
|
|
|
|
|
|
SELECT COUNT(*) AS "Total",
|
2026-10-09 19:57:57 +00:00
|
|
|
|
COALESCE(SUM(CASE WHEN l."LineStatus" IN ('Done', 'Cancelled') THEN 1 ELSE 0 END), 0) AS "Closed"
|
2026-10-09 17:02:27 +00:00
|
|
|
|
FROM "Prc_T_MaterialRequestItem" l
|
|
|
|
|
|
WHERE l."MaterialRequestId" = "p_Id" AND l."IsDeleted" = false
|
|
|
|
|
|
) s
|
|
|
|
|
|
WHERE r."Id" = "p_Id";
|
|
|
|
|
|
END;
|
|
|
|
|
|
$$;
|