31 lines
3 KiB
Transact-SQL
31 lines
3 KiB
Transact-SQL
-- 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).
|
||
CREATE OR ALTER VIEW [dbo].[Prc_V_MaterialRequestItemPlan] AS
|
||
SELECT i.Id, i.TenantId, ISNULL(pq.Quantity, 0) AS PurchaseQuantity, ISNULL(tq.Quantity, 0) AS TransferQuantity,
|
||
i.Quantity - ISNULL(pq.Quantity, 0) - ISNULL(tq.Quantity, 0) AS RemainingQuantity
|
||
FROM Prc_T_MaterialRequestItem i
|
||
OUTER APPLY (SELECT SUM(g.Quantity) AS Quantity
|
||
FROM (SELECT MAX(c.Quantity) AS Quantity
|
||
FROM (SELECT ISNULL(q.TenderGroupId, q.Id) AS TenderGroupId, ISNULL(rl.TenderLineId, rl.Id) AS TenderLineId,
|
||
dbo.Stk_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 = 0 AND q.IsDeleted = 0
|
||
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 = 0
|
||
AND o.IsDeleted = 0 AND o.Status <> 'Cancelled')))) c
|
||
GROUP BY c.TenderGroupId, c.TenderLineId) g) pq
|
||
OUTER APPLY (SELECT SUM(c.Quantity) AS Quantity
|
||
FROM (SELECT dbo.Stk_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
|
||
FROM Stk_T_TransferLine tl
|
||
INNER JOIN Stk_T_Transfer t ON t.Id = tl.TransferId
|
||
WHERE tl.MaterialRequestItemId = i.Id AND tl.IsDeleted = 0 AND t.IsDeleted = 0
|
||
AND t.OperationKind = 'InternalTransfer' AND t.Status <> 'Cancelled') c) tq
|
||
WHERE i.IsDeleted = 0
|