CREATE PROCEDURE SP_WMS_AlteraEstado @SSCC NVARCHAR(50), @intIdEstado INT, @AbateQtd BIT, @strUser NVARCHAR(50) AS BEGIN BEGIN TRANSACTION; BEGIN TRY IF @AbateQtd = 1 BEGIN DECLARE @strEstado NVARCHAR(255); SET @strEstado = (SELECT [strDescricao] FROM [Tbl_Estados] WHERE intid = @intIdEstado); UPDATE Mov_SSCC_Cab SET [intIdEstadoAtual] = @intIdEstado, [strDescEstado] = @strEstado, [fltQtdActual] = 0, [dtmDataAlteracao] = getdate(), [strUserAlteracao] = @strUser, [strObs]= [strObs] + ' - SSCC abatido por mudança de estado, com uma qtd Anulada de ' + cast([fltQtdActual] AS NVARCHAR(50)) WHERE [strIA_00_SSCC] = @SSCC; END ELSE BEGIN SET @strEstado = (SELECT [strDescricao] FROM [Tbl_Estados] WHERE intid = @intIdEstado); UPDATE Mov_SSCC_Cab SET [intIdEstadoAtual] = @intIdEstado, [strDescEstado] = @strEstado, [dtmDataAlteracao] = getdate(), [strUserAlteracao] = @strUser WHERE [strIA_00_SSCC] = @SSCC; END -- Inserir no histórico INSERT INTO [Mov_SSCC_Estados] ([strSSCC] ,[intEstado] ,[dtmDataRegisto] ,[strUserRegisto]) VALUES (@SSCC ,@intIdEstado ,getdate() ,@strUser) -- Commit da transação COMMIT TRANSACTION; END TRY BEGIN CATCH -- Rollback em caso de erro ROLLBACK TRANSACTION; -- Retornar o erro THROW; END CATCH END