sozsoft-platform/configs/seeds/sql/object/Prc_P_MaterialRequestStockUndo.sql
2026-10-14 12:07:11 +03:00

29 lines
1.5 KiB
Transact-SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 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