-- Plan Takibi (App.Prc.MaterialRequestPlanTrack): talep kalemleri için verilen her karar — satınalmada ihalenin kök teklif talebindeki kalem -- (alternatif tedarikçilere kopyalanan satırlar tekrar listelenmez; siparişe dönüştüyse ihale kaleminin siparişi ve tedarikçisi), iç -- transferde transfer satırı, stoktan karşılamada kalemin kendisi (belgesiz; konum talebin teslim konumu). Gerçekleşen: siparişte alınan, -- transferde tamamlanmış belgede yapılan, stokta karşılanan miktar. CREATE OR ALTER VIEW [dbo].[Prc_V_MaterialRequestPlanTrack] AS SELECT rl.Id, rl.TenantId, i.Id AS MaterialRequestItemId, i.MaterialRequestId, r.RequestNo, r.BranchId, r.DepartmentId, r.WarehouseId, r.LocationId, i.ProductId, i.DueDate, CAST('Purchase' AS nvarchar(16)) AS PlanMethod, q.Id AS DocumentId, q.RfqNo AS DocumentNo, q.Status AS DocumentStatus, COALESCE(o.SupplierId, q.SupplierId) AS SupplierId, CAST(NULL AS uniqueidentifier) AS SourceLocationId, o.Id AS PurchaseOrderId, o.OrderNo AS PurchaseOrderNo, o.Status AS OrderStatus, rl.Quantity, rl.UomId, ISNULL(o.ReceivedQuantity, 0) AS DoneQuantity, rl.CreationTime AS PlanDate, rl.CreatorId AS PlannerUserId, rl.IsDeleted FROM Prc_T_PurchaseRfqLine rl INNER JOIN Prc_T_PurchaseRfq q ON q.Id = rl.PurchaseRfqId AND q.IsDeleted = 0 AND q.Id = ISNULL(q.TenderGroupId, q.Id) INNER JOIN Prc_T_MaterialRequestItem i ON i.Id = rl.MaterialRequestItemId INNER JOIN Prc_T_MaterialRequest r ON r.Id = i.MaterialRequestId OUTER APPLY (SELECT TOP 1 po.Id, po.OrderNo, po.Status, po.SupplierId, ol.ReceivedQuantity FROM Prc_T_PurchaseRfqLine al INNER JOIN Prc_T_PurchaseOrderLine ol ON ol.PurchaseRfqLineId = al.Id AND ol.IsDeleted = 0 INNER JOIN Prc_T_PurchaseOrder po ON po.Id = ol.PurchaseOrderId AND po.IsDeleted = 0 WHERE al.TenderLineId = ISNULL(rl.TenderLineId, rl.Id) AND al.IsDeleted = 0 ORDER BY CASE WHEN po.Status = 'Cancelled' THEN 1 ELSE 0 END, po.CreationTime DESC) o WHERE rl.IsDeleted = 0 UNION ALL SELECT tl.Id, tl.TenantId, i.Id, i.MaterialRequestId, r.RequestNo, r.BranchId, r.DepartmentId, r.WarehouseId, r.LocationId, i.ProductId, i.DueDate, CAST('Transfer' AS nvarchar(16)), t.Id, t.TransferNo, t.Status, NULL, t.SourceLocationId, NULL, NULL, NULL, tl.DemandQuantity, tl.UomId, CASE WHEN t.Status = 'Done' THEN tl.Quantity ELSE 0 END, tl.CreationTime, tl.CreatorId, tl.IsDeleted FROM Inv_T_TransferLine tl INNER JOIN Inv_T_Transfer t ON t.Id = tl.TransferId AND t.IsDeleted = 0 AND t.OperationKind = 'InternalTransfer' AND t.ReturnOfId IS NULL INNER JOIN Prc_T_MaterialRequestItem i ON i.Id = tl.MaterialRequestItemId INNER JOIN Prc_T_MaterialRequest r ON r.Id = i.MaterialRequestId WHERE tl.IsDeleted = 0 UNION ALL SELECT i.Id, i.TenantId, i.Id, i.MaterialRequestId, r.RequestNo, r.BranchId, r.DepartmentId, r.WarehouseId, r.LocationId, i.ProductId, i.DueDate, CAST('Stock' AS nvarchar(16)), NULL, NULL, NULL, NULL, r.LocationId, NULL, NULL, NULL, i.FromStockQuantity, i.UomId, i.FromStockQuantity, i.LastModificationTime, i.LastModifierId, i.IsDeleted FROM Prc_T_MaterialRequestItem i INNER JOIN Prc_T_MaterialRequest r ON r.Id = i.MaterialRequestId WHERE i.FromStockQuantity > 0