sozsoft-platform/configs/seeds/sql/object/Prc_V_MaterialRequestItemPlan.sql
2026-10-14 22:26:03 +03:00

31 lines
3 KiB
Transact-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.

-- 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.Inv_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.Inv_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 Inv_T_TransferLine tl
INNER JOIN Inv_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