-- Plan Takibi'nin Geri Al'ı (App.Prc.MaterialRequestPlanTrack › UpdateCommand): stoktan karşılamayı geri alır. Stoktan karşılama belge -- açmadığı için geri dönüşü kalemin kendisidir: stoktan karşılanan miktar teslim edilenden düşülür ve sıfırlanır, kalanı yeniden açılan -- kapalı kalem Bekliyor'a döner ve Planlama'da yeniden planlanır (Prc_P_MaterialRequestItemSync ile aynı kural). CREATE OR ALTER PROCEDURE [dbo].[Prc_P_MaterialRequestStockUndo] @Id uniqueidentifier, @TenantId uniqueidentifier, @LastModifierId uniqueidentifier AS BEGIN SET NOCOUNT ON; SET XACT_ABORT ON; BEGIN TRANSACTION; UPDATE Prc_T_MaterialRequestItem SET DeliveredQuantity = CASE WHEN DeliveredQuantity > FromStockQuantity THEN DeliveredQuantity - FromStockQuantity ELSE 0 END, FromStockQuantity = 0, LastModificationTime = GETUTCDATE(), LastModifierId = @LastModifierId WHERE Id = @Id AND IsDeleted = 0 AND FromStockQuantity > 0 AND LineStatus IN ('Waiting', 'Done') AND (TenantId = @TenantId OR (TenantId IS NULL AND @TenantId IS NULL)); IF @@ROWCOUNT = 0 THROW 50202, N'Geri alınacak stoktan karşılama yok ya da kalem kapatılmış.', 1; UPDATE i SET LineStatus = 'Waiting' FROM Prc_T_MaterialRequestItem i INNER JOIN Prc_V_MaterialRequestItemPlan p ON p.Id = i.Id WHERE i.Id = @Id AND i.LineStatus = 'Done' AND p.RemainingQuantity > 0 AND i.DeliveredQuantity < i.Quantity; COMMIT TRANSACTION; END