sozsoft-platform/configs/seeds/postgres/object/Prc_V_MaterialRequestItemPlan.sql
2026-10-19 17:35:08 +03:00

30 lines
2.7 KiB
SQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- Talep kaleminin planlanmış payları ve planlanacak kalanı (Planlama, Plan Takibi, kalem durumu). Miktarlar kalemin birimine çevrilir.
-- Satınalma payı: teklif aşamasındaki teklif talebinde ya da iptal olmayan siparişe geçmiş teklif kaleminde duran miktar; ihale aynı kalemi
-- bütün tedarikçilere kopyaladığı için ihale × ihale kalemi başına bir kez (en büyüğü) sayılır.
-- Transfer payı (Stoktan kararı dahil — kaynak ve hedefi teslim konumu olan transfer): iptal olmayan iç transfer satırı — tamamlanmış belgede yapılan, açık belgede istenen miktar (eksik tamamlanan belgenin kalanı
-- backorder belgesinde istenir); tamamlanmış iade belgesinin yapılan miktarı paydan düşer (iade edilen kalem yeniden planlanır).
CREATE OR REPLACE VIEW public."Prc_V_MaterialRequestItemPlan" AS
SELECT i."Id", i."TenantId", COALESCE(pq."Quantity", 0) AS "PurchaseQuantity", COALESCE(tq."Quantity", 0) AS "TransferQuantity",
i."Quantity" - COALESCE(pq."Quantity", 0) - COALESCE(tq."Quantity", 0) AS "RemainingQuantity"
FROM "Prc_T_MaterialRequestItem" i
LEFT JOIN LATERAL (
SELECT SUM(g."Quantity") AS "Quantity"
FROM (SELECT MAX(public."Stk_F_UomConvert"(rl."Quantity", rl."UomId", i."UomId")) AS "Quantity"
FROM "Prc_T_PurchaseRfqLine" rl
INNER JOIN "Prc_T_PurchaseRfq" q ON q."Id" = rl."PurchaseRfqId"
WHERE rl."MaterialRequestItemId" = i."Id" AND rl."IsDeleted" = false AND q."IsDeleted" = false
AND (q."Status" IN ('Draft', 'Sent')
OR (q."Status" = 'Purchase'
AND EXISTS (SELECT 1 FROM "Prc_T_PurchaseOrderLine" ol
INNER JOIN "Prc_T_PurchaseOrder" o ON o."Id" = ol."PurchaseOrderId"
WHERE ol."PurchaseRfqLineId" = rl."Id" AND ol."IsDeleted" = false
AND o."IsDeleted" = false AND o."Status" <> 'Cancelled')))
GROUP BY COALESCE(q."TenderGroupId", q."Id"), COALESCE(rl."TenderLineId", rl."Id")) g) pq ON true
LEFT JOIN LATERAL (
SELECT SUM(public."Stk_F_UomConvert"(CASE WHEN t."ReturnOfId" IS NOT NULL THEN CASE WHEN t."Status" = 'Done' THEN -tl."Quantity" ELSE 0 END
WHEN t."Status" = 'Done' THEN tl."Quantity" ELSE tl."DemandQuantity" END, tl."UomId", i."UomId")) AS "Quantity"
FROM "Stk_T_TransferLine" tl
INNER JOIN "Stk_T_Transfer" t ON t."Id" = tl."TransferId"
WHERE tl."MaterialRequestItemId" = i."Id" AND tl."IsDeleted" = false AND t."IsDeleted" = false
AND t."OperationKind" = 'InternalTransfer' AND t."Status" <> 'Cancelled') tq ON true
WHERE i."IsDeleted" = false;