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

32 lines
2.6 KiB
MySQL
Raw Normal View History

2026-10-14 09:07:11 +00:00
-- 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ı: iptal olmayan iç transfer satırı — tamamlanmış belgede yapılan, açık belgede istenen miktar (eksik tamamlanan belgenin kalanı
-- backorder belgesinde istenir); iade belgesi sayılmaz.
-- Stok payı: stok talebin teslim konumundayken onaylanan, belgesiz karşılanan miktar (FromStockQuantity).
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) - i."FromStockQuantity" AS "RemainingQuantity",
i."FromStockQuantity"
FROM "Prc_T_MaterialRequestItem" i
LEFT JOIN LATERAL (
SELECT SUM(g."Quantity") AS "Quantity"
FROM (SELECT MAX(public."Inv_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."Inv_F_UomConvert"(CASE WHEN t."Status" = 'Done' THEN tl."Quantity" ELSE tl."DemandQuantity" END, tl."UomId", i."UomId")) AS "Quantity"
FROM "Inv_T_TransferLine" tl
INNER JOIN "Inv_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' AND t."ReturnOfId" IS NULL) tq ON true
WHERE i."IsDeleted" = false;