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

23 lines
1.6 KiB
MySQL
Raw Normal View History

2026-10-11 14:01:11 +00:00
CREATE OR REPLACE PROCEDURE public."Prc_P_PurchaseOrderRecalc"(p_id uuid)
LANGUAGE plpgsql AS $$
BEGIN
2026-10-12 10:27:54 +00:00
UPDATE "Prc_T_PurchaseOrderLine" SET "Amount" = ROUND(ROUND("Quantity" * "UnitPrice", 2) * (1 + "TaxRate" / 100), 2)
2026-10-11 14:01:11 +00:00
WHERE "PurchaseOrderId" = p_id AND "IsDeleted" = false;
2026-10-11 19:57:23 +00:00
-- Kaynak: teklif talebinden gelen siparişte teklif no, doğrudan yazılan siparişte talep numaraları.
2026-10-11 14:01:11 +00:00
UPDATE "Prc_T_PurchaseOrder" o SET
2026-10-12 10:27:54 +00:00
"UntaxedAmount" = COALESCE((SELECT SUM(ROUND(l."Quantity" * l."UnitPrice", 2)) FROM "Prc_T_PurchaseOrderLine" l WHERE l."PurchaseOrderId" = p_id AND l."IsDeleted" = false), 0),
"TaxAmount" = COALESCE((SELECT SUM(l."Amount" - ROUND(l."Quantity" * l."UnitPrice", 2)) FROM "Prc_T_PurchaseOrderLine" l WHERE l."PurchaseOrderId" = p_id AND l."IsDeleted" = false), 0),
2026-10-11 19:57:23 +00:00
"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))
2026-10-11 14:01:11 +00:00
WHERE o."Id" = p_id;
UPDATE "Prc_T_PurchaseOrder" SET "TotalAmount" = "UntaxedAmount" + "TaxAmount" WHERE "Id" = p_id;
2026-10-12 10:27:54 +00:00
CALL public."Prc_P_MaterialRequestSyncStatus"(p_id);
2026-10-11 14:01:11 +00:00
END;
$$;