Files
Plataforma-de-desarrolladores/tools/PA_Fraccionamientos_EtapaDocumentoGet.sql
Jorge Luis caudillo esparza 4e80ecca77 --gis
2026-08-18 11:45:00 -07:00

82 lines
2.3 KiB
Transact-SQL

CREATE OR ALTER PROCEDURE [dbo].[PA_Fraccionamientos_EtapaDocumentoGet]
@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 documentos.';
SET @ErrorTipo = 2;
RETURN;
END;
SELECT
E.CveFraccionamientoEtapa,
E.CveFraccionamiento,
F.CveCliente,
E.Etapa
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
)
);
IF @@ROWCOUNT = 0
BEGIN
SET @ErrorMostrar = 'La etapa no existe o no está asignada al usuario.';
SET @ErrorTipo = 2;
RETURN;
END;
SET @Return = 1;
END TRY
BEGIN CATCH
SET @ErrorMostrar = 'Ocurrió un error al validar el acceso al documento; 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_EtapaDocumentoGet'),
'; Línea: ', ERROR_LINE(),
'; Detalle: ', ERROR_MESSAGE()
);
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
END CATCH;
END;
GO