29 lines
1.5 KiB
Transact-SQL
29 lines
1.5 KiB
Transact-SQL
-- 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
|