-- Transfer belgesi kaydı sonrası: tür, şube, depo ve boş konumlar operasyon türünden gelir (formda olmayan alımın -- kaynağı ve teslimatın hedefi her zaman, iade belgesi hariç); teslimat politikası yalnız teslimatta tutulur. Tamamlanmış belgenin başlığı -- yeniden türetilmez: stoğu belirleyen alanlar kilitlidir (Inv_TR_TransferLock) ve sonradan değişen operasyon türü İade Et'i 50328'e düşürürdü. -- Numara, özet ve durum butonunun işlemi (PendingAction) buradan çalışır. CREATE OR ALTER PROCEDURE [dbo].[Inv_P_TransferAfterSave] @Id uniqueidentifier, @UserId uniqueidentifier = NULL AS BEGIN SET NOCOUNT ON; DECLARE @Act nvarchar(16) = (SELECT PendingAction FROM Inv_T_Transfer WHERE Id = @Id); UPDATE t SET OperationKind = ot.OperationKind, BranchId = ot.BranchId, WarehouseId = ot.WarehouseId, SourceLocationId = CASE WHEN t.ReturnOfId IS NULL AND (ot.OperationKind = 'Receipt' OR t.SourceLocationId IS NULL) THEN COALESCE(ot.SourceLocationId, t.SourceLocationId) ELSE t.SourceLocationId END, DestinationLocationId = CASE WHEN t.ReturnOfId IS NULL AND (ot.OperationKind = 'Delivery' OR t.DestinationLocationId IS NULL) THEN COALESCE(ot.DestinationLocationId, t.DestinationLocationId) ELSE t.DestinationLocationId END, DeliveryPolicy = CASE WHEN ot.OperationKind = 'Delivery' THEN COALESCE(t.DeliveryPolicy, 'Direct') END FROM Inv_T_Transfer t INNER JOIN Inv_T_OperationType ot ON ot.Id = t.OperationTypeId WHERE t.Id = @Id AND t.Status <> 'Done'; EXEC Inv_P_TransferNumber @Id; EXEC Inv_P_TransferRecalc @Id; -- Durum butonları işlemi PendingAction alanına yazıp ekranın güncelleme ucuyla kaydeder. IF @Act IS NOT NULL EXEC Inv_P_TransferSetStatus @Id, @Act, @UserId; END