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

31 lines
2.7 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ı (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).
2026-10-14 09:07:11 +00:00
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"
2026-10-14 09:07:11 +00:00
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."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"
2026-10-14 09:07:11 +00:00
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') tq ON true
2026-10-14 09:07:11 +00:00
WHERE i."IsDeleted" = false;