CREATE OR REPLACE PROCEDURE public."Prc_P_PurchaseOrderRecalc"(p_id uuid) LANGUAGE plpgsql AS $$ BEGIN UPDATE "Prc_T_PurchaseOrderLine" SET "Amount" = ROUND("Quantity" * "UnitPrice", 2) WHERE "PurchaseOrderId" = p_id AND "IsDeleted" = false; -- Kaynak: teklif talebinden gelen siparişte teklif no, doğrudan yazılan siparişte talep numaraları. UPDATE "Prc_T_PurchaseOrder" o SET "UntaxedAmount" = COALESCE((SELECT SUM(l."Amount") FROM "Prc_T_PurchaseOrderLine" l WHERE l."PurchaseOrderId" = p_id AND l."IsDeleted" = false), 0), "TaxAmount" = COALESCE((SELECT SUM(ROUND(l."Amount" * l."TaxRate" / 100, 2)) FROM "Prc_T_PurchaseOrderLine" l WHERE l."PurchaseOrderId" = p_id AND l."IsDeleted" = false), 0), "SourceDocument" = COALESCE((SELECT q."RfqNo" FROM "Prc_T_PurchaseRfq" q WHERE q."Id" = o."PurchaseRfqId"), (SELECT string_agg(DISTINCT m."RequestNo", ', ') FROM "Prc_T_PurchaseOrderLine" l INNER JOIN "Prc_T_MaterialRequestItem" i ON i."Id" = l."MaterialRequestItemId" INNER JOIN "Prc_T_MaterialRequest" m ON m."Id" = i."MaterialRequestId" WHERE l."PurchaseOrderId" = p_id AND l."IsDeleted" = false)) WHERE o."Id" = p_id; UPDATE "Prc_T_PurchaseOrder" SET "TotalAmount" = "UntaxedAmount" + "TaxAmount" WHERE "Id" = p_id; END; $$;