-- Planla diyaloğunun Satınalma ızgarası (Prc.MaterialRequestPlanVendor): kiracının bütün aktif kontakları; ürünün fiyat listesindekiler -- fiyatıyla, diğerleri fiyatsız gelir. SuggestRank ızgaranın sırası ve Öner'in seçtiği tedarikçidir: fiyatlılar ucuzdan pahalıya, sonra son alım -- tarihi yeniden eskiye, sonra ad (para birimi farkı gözetilmez). Fiyat satırı teklif kalemine yazılanla aynıdır (en düşük minimum -- miktarlı satır, Prc_P_MaterialRequestPlan); son alım tarihini siparişli alım yazar. -- Plan Miktarı kalemin bu tedarikçi için taslak planıdır; Rfq* tedarikçinin talebin şubesi ve deposu için bu kalemi taşıyan taslak teklif -- talebidir (satırdaki Teklifi Aç). BaseId diyaloğun süzdüğü kalem, Id kalem + ':' + tedarikçidir (Prc_P_MaterialRequestPlanLineSave ayırır). -- MaxQuantity satıra yazılabilecek en fazla plan miktarıdır: planlanacak kalandan kalemin diğer taslak satırları düşülür. CREATE OR REPLACE VIEW public."Prc_V_MaterialRequestPlanVendor" AS SELECT CAST(i."Id" AS varchar(36)) || ':' || CAST(c."Id" AS varchar(36)) AS "Id", i."TenantId", i."Id" AS "BaseId", c."Id" AS "ContactId", ps."MinQuantity", ps."UomId", ps."Price", ps."CurrencyId", ps."LeadTimeDays", ps."LastPurchaseDate", pl."Quantity" AS "PlanQuantity", d."Id" AS "RfqId", d."RfqNo", d."Quantity" AS "RfqQuantity", i."IsDeleted", ROW_NUMBER() OVER (PARTITION BY i."Id" ORDER BY ps."Price" ASC NULLS LAST, ps."LastPurchaseDate" DESC NULLS LAST, c."Name") AS "SuggestRank", GREATEST(0, ip."RemainingQuantity" - COALESCE(od."Quantity", 0)) AS "MaxQuantity" FROM "Prc_T_MaterialRequestItem" i INNER JOIN "Prc_T_MaterialRequest" r ON r."Id" = i."MaterialRequestId" INNER JOIN "Adm_T_Contact" c ON c."IsDeleted" = false AND c."IsActive" = true AND c."TenantId" IS NOT DISTINCT FROM i."TenantId" LEFT JOIN LATERAL (SELECT x."MinQuantity", x."UomId", x."Price", x."CurrencyId", x."LeadTimeDays", x."LastPurchaseDate" FROM "Stk_T_ProductSupplier" x WHERE x."ProductId" = i."ProductId" AND x."ContactId" = c."Id" AND x."IsDeleted" = false ORDER BY x."MinQuantity" LIMIT 1) ps ON TRUE LEFT JOIN "Prc_T_MaterialRequestPlanLine" pl ON pl."MaterialRequestItemId" = i."Id" AND pl."PlanMethod" = 'Purchase' AND pl."SupplierId" = c."Id" AND pl."IsDeleted" = false LEFT JOIN LATERAL (SELECT q."Id", q."RfqNo", ql."Quantity" FROM "Prc_T_PurchaseRfq" q INNER JOIN "Prc_T_PurchaseRfqLine" ql ON ql."PurchaseRfqId" = q."Id" AND ql."MaterialRequestItemId" = i."Id" AND ql."IsDeleted" = false WHERE q."IsDeleted" = false AND q."Status" = 'Draft' AND q."SupplierId" = c."Id" AND q."BranchId" = r."BranchId" AND q."WarehouseId" = r."WarehouseId" ORDER BY q."CreationTime" DESC LIMIT 1) d ON TRUE INNER JOIN public."Prc_V_MaterialRequestItemPlan" ip ON ip."Id" = i."Id" LEFT JOIN LATERAL (SELECT SUM(x."Quantity") AS "Quantity" FROM "Prc_T_MaterialRequestPlanLine" x WHERE x."MaterialRequestItemId" = i."Id" AND x."IsDeleted" = false AND (x."SupplierId" IS NULL OR x."SupplierId" <> c."Id")) od ON TRUE WHERE i."IsDeleted" = false;