sozsoft-platform/configs/seeds/postgres/object/Prc_V_MaterialRequestPlanVendor.sql
2026-10-14 12:07:11 +03:00

36 lines
3.3 KiB
SQL
Raw 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.

-- Planla diyaloğunun Satınalma ızgarası (App.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 "Inv_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;