CREATE OR ALTER PROCEDURE [dbo].[Prc_P_PurchaseOrderRecalc] @Id uniqueidentifier AS BEGIN SET NOCOUNT ON; UPDATE Prc_T_PurchaseOrderLine SET Amount = ROUND(Quantity * UnitPrice, 2) WHERE PurchaseOrderId = @Id AND IsDeleted = 0; -- Kaynak: teklif talebinden gelen siparişte teklif no, doğrudan yazılan siparişte talep numaraları. UPDATE o SET UntaxedAmount = ISNULL((SELECT SUM(l.Amount) FROM Prc_T_PurchaseOrderLine l WHERE l.PurchaseOrderId = @Id AND l.IsDeleted = 0), 0), TaxAmount = ISNULL((SELECT SUM(ROUND(l.Amount * l.TaxRate / 100, 2)) FROM Prc_T_PurchaseOrderLine l WHERE l.PurchaseOrderId = @Id AND l.IsDeleted = 0), 0), SourceDocument = COALESCE(q.RfqNo, STUFF((SELECT DISTINCT N', ' + m.RequestNo FROM Prc_T_PurchaseOrderLine l INNER JOIN Prc_T_MaterialRequestItem i ON i.Id = l.MaterialRequestItemId INNER JOIN Prc_T_MaterialRequest m ON m.Id = i.MaterialRequestId WHERE l.PurchaseOrderId = @Id AND l.IsDeleted = 0 FOR XML PATH(''), TYPE).value('.', 'nvarchar(512)'), 1, 2, N'')) FROM Prc_T_PurchaseOrder o LEFT JOIN Prc_T_PurchaseRfq q ON q.Id = o.PurchaseRfqId WHERE o.Id = @Id; UPDATE Prc_T_PurchaseOrder SET TotalAmount = UntaxedAmount + TaxAmount WHERE Id = @Id; END