sozsoft-platform/configs/seeds/sql/object/Prc_V_MaterialRequestPlanTrack.sql

42 lines
3.3 KiB
MySQL
Raw Normal View History

2026-10-14 09:07:11 +00:00
-- 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