34 lines
3.1 KiB
Transact-SQL
34 lines
3.1 KiB
Transact-SQL
-- 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 ALTER VIEW [dbo].[Prc_V_MaterialRequestPlanVendor] AS
|
||
SELECT CONCAT(CAST(i.Id AS nvarchar(36)), ':', CAST(c.Id AS nvarchar(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 CASE WHEN ps.Price IS NULL THEN 1 ELSE 0 END, ps.Price, ps.LastPurchaseDate DESC, c.Name) AS SuggestRank,
|
||
CASE WHEN ip.RemainingQuantity - ISNULL(od.Quantity, 0) < 0 THEN 0 ELSE ip.RemainingQuantity - ISNULL(od.Quantity, 0) END 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 = 0 AND c.IsActive = 1
|
||
AND (c.TenantId = i.TenantId OR (c.TenantId IS NULL AND i.TenantId IS NULL))
|
||
OUTER APPLY (SELECT TOP 1 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 = 0
|
||
ORDER BY x.MinQuantity) ps
|
||
LEFT JOIN Prc_T_MaterialRequestPlanLine pl
|
||
ON pl.MaterialRequestItemId = i.Id AND pl.PlanMethod = 'Purchase' AND pl.SupplierId = c.Id AND pl.IsDeleted = 0
|
||
OUTER APPLY (SELECT TOP 1 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 = 0
|
||
WHERE q.IsDeleted = 0 AND q.Status = 'Draft' AND q.SupplierId = c.Id AND q.BranchId = r.BranchId AND q.WarehouseId = r.WarehouseId
|
||
ORDER BY q.CreationTime DESC) d
|
||
INNER JOIN Prc_V_MaterialRequestItemPlan ip ON ip.Id = i.Id
|
||
OUTER APPLY (SELECT SUM(x.Quantity) AS Quantity
|
||
FROM Prc_T_MaterialRequestPlanLine x
|
||
WHERE x.MaterialRequestItemId = i.Id AND x.IsDeleted = 0 AND (x.SupplierId IS NULL OR x.SupplierId <> c.Id)) od
|
||
WHERE i.IsDeleted = 0;
|
||
GO
|