ALTER PROCEDURE [dbo].[PA_Fraccionamientos_EtapaGISGet] @CveFraccionamientoEtapa int, @CveUsuarioEjecuta int, @ErrorMostrar varchar(max) OUTPUT, @ErrorTipo int OUTPUT, @Return bit OUTPUT AS BEGIN SET NOCOUNT ON; SELECT @ErrorMostrar = NULL, @ErrorTipo = 0, @Return = 0; BEGIN TRY DECLARE @NombreRol varchar(100); SELECT @NombreRol = R.NombreRol FROM dbo.Sis_Usuarios AS U INNER JOIN dbo.Sis_Roles AS R ON R.CveRol = U.CveRol WHERE U.CveUsuario = @CveUsuarioEjecuta AND U.Activo = 1; IF @NombreRol IS NULL BEGIN SET @ErrorMostrar = 'El usuario no está disponible para consultar el GIS.'; SET @ErrorTipo = 2; RETURN; END; IF NOT EXISTS ( SELECT 1 FROM dbo.FraccionamientosEtapas AS E INNER JOIN dbo.Fraccionamientos AS F ON F.CveFraccionamiento = E.CveFraccionamiento WHERE E.CveFraccionamientoEtapa = @CveFraccionamientoEtapa AND ( @NombreRol <> 'Empresa' OR EXISTS ( SELECT 1 FROM dbo.Sis_UsuariosClientes AS UC WHERE UC.CveUsuario = @CveUsuarioEjecuta AND UC.CveCliente = F.CveCliente AND UC.Activo = 1 ) ) ) BEGIN SET @ErrorMostrar = 'La etapa no existe o no está asignada al usuario.'; SET @ErrorTipo = 2; RETURN; END; SELECT G.CveFraccionamientoEtapaGIS, G.CveFraccionamientoEtapa, E.CveFraccionamiento, F.CveCliente, E.Etapa, G.Nombre, G.UrlVisualizacion, G.FechaAlta, G.FechaModificacion FROM dbo.FraccionamientosEtapasGIS AS G INNER JOIN dbo.FraccionamientosEtapas AS E ON E.CveFraccionamientoEtapa = G.CveFraccionamientoEtapa INNER JOIN dbo.Fraccionamientos AS F ON F.CveFraccionamiento = E.CveFraccionamiento WHERE G.CveFraccionamientoEtapa = @CveFraccionamientoEtapa; SET @Return = 1; END TRY BEGIN CATCH SET @ErrorMostrar = 'Ocurrió un error al consultar el GIS de la etapa; favor de contactar a Sistemas.'; SET @ErrorTipo = 1; SET @Return = 0; DECLARE @ErrorTecnico nvarchar(2048) = CONCAT( 'Número: ', ERROR_NUMBER(), '; Procedimiento: ', COALESCE( ERROR_PROCEDURE(), 'PA_Fraccionamientos_EtapaGISGet'), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE() ); RAISERROR(N'%s', 10, 1, @ErrorTecnico); END CATCH; END; GO