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

28 lines
1.6 KiB
MySQL
Raw Permalink Normal View History

2026-10-11 14:01:11 +00:00
CREATE OR ALTER PROCEDURE [dbo].[Prc_P_PurchaseOrderRecalc]
@Id uniqueidentifier
AS
BEGIN
SET NOCOUNT ON;
2026-10-12 10:27:54 +00:00
UPDATE Prc_T_PurchaseOrderLine SET Amount = ROUND(ROUND(Quantity * UnitPrice, 2) * (1 + TaxRate / 100), 2)
2026-10-11 14:01:11 +00:00
WHERE PurchaseOrderId = @Id AND IsDeleted = 0;
2026-10-11 19:57:23 +00:00
-- Kaynak: teklif talebinden gelen siparişte teklif no, doğrudan yazılan siparişte talep numaraları.
2026-10-11 14:01:11 +00:00
UPDATE o SET
2026-10-12 10:27:54 +00:00
UntaxedAmount = ISNULL((SELECT SUM(ROUND(l.Quantity * l.UnitPrice, 2)) FROM Prc_T_PurchaseOrderLine l WHERE l.PurchaseOrderId = @Id AND l.IsDeleted = 0), 0),
TaxAmount = ISNULL((SELECT SUM(l.Amount - ROUND(l.Quantity * l.UnitPrice, 2)) FROM Prc_T_PurchaseOrderLine l WHERE l.PurchaseOrderId = @Id AND l.IsDeleted = 0), 0),
2026-10-11 19:57:23 +00:00
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''))
2026-10-11 14:01:11 +00:00
FROM Prc_T_PurchaseOrder o
2026-10-11 19:57:23 +00:00
LEFT JOIN Prc_T_PurchaseRfq q ON q.Id = o.PurchaseRfqId
2026-10-11 14:01:11 +00:00
WHERE o.Id = @Id;
UPDATE Prc_T_PurchaseOrder SET TotalAmount = UntaxedAmount + TaxAmount WHERE Id = @Id;
2026-10-12 10:27:54 +00:00
EXEC Prc_P_MaterialRequestSyncStatus @Id;
2026-10-11 14:01:11 +00:00
END