30 lines
1.5 KiB
MySQL
30 lines
1.5 KiB
MySQL
|
|
-- 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
|