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

30 lines
1.5 KiB
MySQL
Raw Normal View History

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