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

37 lines
3.3 KiB
MySQL
Raw Permalink Normal View History

2026-10-19 14:35:08 +00:00
-- Planla diyaloğunun Satınalma ızgarası (Prc.MaterialRequestPlanVendor): kiracının bütün aktif kontakları; ürünün fiyat listesindekiler
2026-10-14 09:07:11 +00:00
-- 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"
2026-10-19 14:35:08 +00:00
FROM "Stk_T_ProductSupplier" x
2026-10-14 09:07:11 +00:00
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;