Files
Plataforma-de-desarrolladores/Catalogos_Tramites_Internos.sql
Jorge Luis caudillo esparza 8f33c860ec Ajustes
2026-08-13 19:46:33 -07:00

1401 lines
56 KiB
Transact-SQL

SET NOCOUNT ON;
GO
/* Migración del modelo de preguntas por tipo de trámite. */
IF COL_LENGTH(N'dbo.Tra_Preguntas', N'CveTipoTramite') IS NULL
BEGIN
ALTER TABLE dbo.Tra_Preguntas
ADD CveTipoTramite int NULL;
END;
GO
IF COL_LENGTH(N'dbo.Tra_Preguntas', N'Codigo') IS NULL
BEGIN
ALTER TABLE dbo.Tra_Preguntas
ADD Codigo varchar(50) COLLATE Modern_Spanish_CI_AS NULL;
END;
GO
IF OBJECT_ID(N'dbo.FK_Tra_Preguntas_TiposTramite', N'F') IS NULL
BEGIN
ALTER TABLE dbo.Tra_Preguntas
ADD CONSTRAINT FK_Tra_Preguntas_TiposTramite
FOREIGN KEY (CveTipoTramite)
REFERENCES dbo.Tra_TiposTramite (CveTipoTramite);
END;
GO
IF NOT EXISTS
(
SELECT 1
FROM sys.indexes
WHERE object_id = OBJECT_ID(N'dbo.Tra_Preguntas')
AND name = N'UX_Tra_Preguntas_Codigo'
)
BEGIN
CREATE UNIQUE NONCLUSTERED INDEX UX_Tra_Preguntas_Codigo
ON dbo.Tra_Preguntas (Codigo)
WHERE Codigo IS NOT NULL;
END;
GO
;WITH OrdenNormalizado AS
(
SELECT
CveEstatusSolicitud,
ROW_NUMBER() OVER (ORDER BY Orden, CveEstatusSolicitud) AS OrdenNuevo
FROM dbo.Tra_EstatusSolicitud
)
UPDATE E
SET Orden = N.OrdenNuevo
FROM dbo.Tra_EstatusSolicitud AS E
INNER JOIN OrdenNormalizado AS N
ON N.CveEstatusSolicitud = E.CveEstatusSolicitud;
;WITH OrdenNormalizado AS
(
SELECT
CveTipoTramite,
ROW_NUMBER() OVER (ORDER BY Orden, CveTipoTramite) AS OrdenNuevo
FROM dbo.Tra_TiposTramite
)
UPDATE T
SET Orden = N.OrdenNuevo
FROM dbo.Tra_TiposTramite AS T
INNER JOIN OrdenNormalizado AS N
ON N.CveTipoTramite = T.CveTipoTramite;
;WITH OrdenNormalizado AS
(
SELECT
CveDocumentoRequerido,
ROW_NUMBER() OVER
(
PARTITION BY CveTipoTramite
ORDER BY Orden, CveDocumentoRequerido
) AS OrdenNuevo
FROM dbo.Tra_DocumentosRequeridos
)
UPDATE D
SET Orden = N.OrdenNuevo
FROM dbo.Tra_DocumentosRequeridos AS D
INNER JOIN OrdenNormalizado AS N
ON N.CveDocumentoRequerido = D.CveDocumentoRequerido;
;WITH OrdenNormalizado AS
(
SELECT
CvePregunta,
ROW_NUMBER() OVER
(
PARTITION BY CveTipoTramite
ORDER BY Orden, CvePregunta
) AS OrdenNuevo
FROM dbo.Tra_Preguntas
)
UPDATE P
SET Orden = N.OrdenNuevo
FROM dbo.Tra_Preguntas AS P
INNER JOIN OrdenNormalizado AS N
ON N.CvePregunta = P.CvePregunta;
;WITH OrdenNormalizado AS
(
SELECT
CveOpcionPregunta,
ROW_NUMBER() OVER
(
PARTITION BY CvePregunta
ORDER BY Orden, CveOpcionPregunta
) AS OrdenNuevo
FROM dbo.Tra_OpcionesPregunta
)
UPDATE O
SET Orden = N.OrdenNuevo
FROM dbo.Tra_OpcionesPregunta AS O
INNER JOIN OrdenNormalizado AS N
ON N.CveOpcionPregunta = O.CveOpcionPregunta;
GO
CREATE OR ALTER PROCEDURE dbo.PA_Tra_EstatusSolicitudList
@Texto varchar(200) = NULL,
@IncluirInactivos bit = 0,
@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
IF NOT EXISTS (SELECT 1 FROM dbo.Sis_Usuarios WHERE CveUsuario = @CveUsuarioEjecuta AND CveRol IN (1, 2) AND Activo = 1)
BEGIN
SELECT @ErrorMostrar = 'No cuenta con permiso para consultar este catálogo.', @ErrorTipo = 2;
RETURN;
END;
SELECT CveEstatusSolicitud, Codigo, EstatusSolicitud, Orden, EsFinal, EsActivo
FROM dbo.Tra_EstatusSolicitud
WHERE (@IncluirInactivos = 1 OR EsActivo = 1)
AND (NULLIF(LTRIM(RTRIM(@Texto)), '') IS NULL
OR Codigo LIKE '%' + @Texto + '%'
OR EstatusSolicitud LIKE '%' + @Texto + '%')
ORDER BY Orden, EstatusSolicitud;
SET @Return = 1;
END TRY
BEGIN CATCH
SELECT @ErrorMostrar = 'Ocurrió un error al consultar los estatus de solicitud; favor de contactar a Sistemas.', @ErrorTipo = 1, @Return = 0;
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Tra_EstatusSolicitudList'), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
END CATCH;
END;
GO
CREATE OR ALTER PROCEDURE dbo.PA_Tra_EstatusSolicitudGet
@CveEstatusSolicitud 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
IF NOT EXISTS (SELECT 1 FROM dbo.Sis_Usuarios WHERE CveUsuario = @CveUsuarioEjecuta AND CveRol IN (1, 2) AND Activo = 1)
BEGIN
SELECT @ErrorMostrar = 'No cuenta con permiso para consultar este catálogo.', @ErrorTipo = 2;
RETURN;
END;
SELECT CveEstatusSolicitud, Codigo, EstatusSolicitud, Orden, EsFinal, EsActivo
FROM dbo.Tra_EstatusSolicitud
WHERE CveEstatusSolicitud = @CveEstatusSolicitud;
SET @Return = 1;
END TRY
BEGIN CATCH
SELECT @ErrorMostrar = 'Ocurrió un error al consultar el estatus de solicitud; favor de contactar a Sistemas.', @ErrorTipo = 1, @Return = 0;
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Tra_EstatusSolicitudGet'), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
END CATCH;
END;
GO
CREATE OR ALTER PROCEDURE dbo.PA_Tra_EstatusSolicitudSave
@CveEstatusSolicitud int = NULL,
@Codigo varchar(50),
@EstatusSolicitud varchar(100),
@EsFinal bit,
@EsActivo bit,
@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
IF NOT EXISTS (SELECT 1 FROM dbo.Sis_Usuarios WHERE CveUsuario = @CveUsuarioEjecuta AND CveRol IN (1, 2) AND Activo = 1)
BEGIN
SELECT @ErrorMostrar = 'No cuenta con permiso para modificar este catálogo.', @ErrorTipo = 2;
RETURN;
END;
SELECT @Codigo = LTRIM(RTRIM(@Codigo)), @EstatusSolicitud = LTRIM(RTRIM(@EstatusSolicitud));
IF NULLIF(@Codigo, '') IS NULL OR NULLIF(@EstatusSolicitud, '') IS NULL
BEGIN
SELECT @ErrorMostrar = 'Capture el código y el estatus de la solicitud.', @ErrorTipo = 2;
RETURN;
END;
IF EXISTS (SELECT 1 FROM dbo.Tra_EstatusSolicitud WHERE Codigo = @Codigo AND CveEstatusSolicitud <> ISNULL(@CveEstatusSolicitud, 0))
BEGIN
SELECT @ErrorMostrar = 'El código del estatus ya está registrado.', @ErrorTipo = 2;
RETURN;
END;
IF @CveEstatusSolicitud IS NULL
BEGIN
DECLARE @Orden int =
ISNULL((SELECT MAX(Orden) FROM dbo.Tra_EstatusSolicitud), 0) + 1;
INSERT dbo.Tra_EstatusSolicitud (Codigo, EstatusSolicitud, Orden, EsFinal, EsActivo)
VALUES (@Codigo, @EstatusSolicitud, @Orden, @EsFinal, @EsActivo);
SET @CveEstatusSolicitud = CONVERT(int, SCOPE_IDENTITY());
END
ELSE
BEGIN
UPDATE dbo.Tra_EstatusSolicitud
SET Codigo = @Codigo,
EstatusSolicitud = @EstatusSolicitud,
EsFinal = @EsFinal,
EsActivo = @EsActivo
WHERE CveEstatusSolicitud = @CveEstatusSolicitud;
END;
SELECT @CveEstatusSolicitud AS CveEstatusSolicitud;
SET @Return = 1;
END TRY
BEGIN CATCH
SELECT @ErrorMostrar = 'Ocurrió un error al guardar el estatus de solicitud; favor de contactar a Sistemas.', @ErrorTipo = 1, @Return = 0;
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Tra_EstatusSolicitudSave'), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
END CATCH;
END;
GO
CREATE OR ALTER PROCEDURE dbo.PA_Tra_EstatusSolicitudDelete
@CveEstatusSolicitud 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
IF NOT EXISTS (SELECT 1 FROM dbo.Sis_Usuarios WHERE CveUsuario = @CveUsuarioEjecuta AND CveRol IN (1, 2) AND Activo = 1)
BEGIN
SELECT @ErrorMostrar = 'No cuenta con permiso para eliminar este catálogo.', @ErrorTipo = 2;
RETURN;
END;
IF EXISTS (SELECT 1 FROM dbo.Tra_Solicitudes WHERE CveEstatusSolicitud = @CveEstatusSolicitud)
OR EXISTS (SELECT 1 FROM dbo.Tra_HistorialEstatusSolicitud WHERE CveEstatusSolicitud = @CveEstatusSolicitud)
BEGIN
SELECT @ErrorMostrar = 'El estatus ya se utiliza en solicitudes y no puede eliminarse. Puede desactivarlo.', @ErrorTipo = 2;
RETURN;
END;
DELETE dbo.Tra_EstatusSolicitud WHERE CveEstatusSolicitud = @CveEstatusSolicitud;
SET @Return = 1;
END TRY
BEGIN CATCH
SELECT @ErrorMostrar = 'Ocurrió un error al eliminar el estatus de solicitud; favor de contactar a Sistemas.', @ErrorTipo = 1, @Return = 0;
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Tra_EstatusSolicitudDelete'), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
END CATCH;
END;
GO
CREATE OR ALTER PROCEDURE dbo.PA_Tra_TipoTramiteList
@Texto varchar(250) = NULL,
@IncluirInactivos bit = 0,
@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
IF NOT EXISTS (SELECT 1 FROM dbo.Sis_Usuarios WHERE CveUsuario = @CveUsuarioEjecuta AND CveRol IN (1, 2) AND Activo = 1)
BEGIN
SELECT @ErrorMostrar = 'No cuenta con permiso para consultar este catálogo.', @ErrorTipo = 2;
RETURN;
END;
SELECT T.CveTipoTramite, T.Codigo, T.TipoTramite, T.Descripcion, T.Orden, T.EsActivo,
COUNT(P.CvePregunta) AS NumeroPreguntas
FROM dbo.Tra_TiposTramite AS T
LEFT JOIN dbo.Tra_Preguntas AS P ON P.CveTipoTramite = T.CveTipoTramite
WHERE (@IncluirInactivos = 1 OR T.EsActivo = 1)
AND (NULLIF(LTRIM(RTRIM(@Texto)), '') IS NULL
OR T.Codigo LIKE '%' + @Texto + '%'
OR T.TipoTramite LIKE '%' + @Texto + '%'
OR T.Descripcion LIKE '%' + @Texto + '%')
GROUP BY T.CveTipoTramite, T.Codigo, T.TipoTramite, T.Descripcion, T.Orden, T.EsActivo
ORDER BY T.Orden, T.TipoTramite;
SET @Return = 1;
END TRY
BEGIN CATCH
SELECT @ErrorMostrar = 'Ocurrió un error al consultar los tipos de trámite; favor de contactar a Sistemas.', @ErrorTipo = 1, @Return = 0;
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Tra_TipoTramiteList'), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
END CATCH;
END;
GO
CREATE OR ALTER PROCEDURE dbo.PA_Tra_TipoTramiteGet
@CveTipoTramite 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
IF NOT EXISTS (SELECT 1 FROM dbo.Sis_Usuarios WHERE CveUsuario = @CveUsuarioEjecuta AND CveRol IN (1, 2) AND Activo = 1)
BEGIN
SELECT @ErrorMostrar = 'No cuenta con permiso para consultar este catálogo.', @ErrorTipo = 2;
RETURN;
END;
SELECT T.CveTipoTramite, T.Codigo, T.TipoTramite, T.Descripcion, T.Orden, T.EsActivo,
(SELECT COUNT(*) FROM dbo.Tra_Preguntas AS P WHERE P.CveTipoTramite = T.CveTipoTramite) AS NumeroPreguntas
FROM dbo.Tra_TiposTramite AS T
WHERE T.CveTipoTramite = @CveTipoTramite;
SET @Return = 1;
END TRY
BEGIN CATCH
SELECT @ErrorMostrar = 'Ocurrió un error al consultar el tipo de trámite; favor de contactar a Sistemas.', @ErrorTipo = 1, @Return = 0;
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Tra_TipoTramiteGet'), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
END CATCH;
END;
GO
CREATE OR ALTER PROCEDURE dbo.PA_Tra_TipoTramiteSave
@CveTipoTramite int = NULL,
@Codigo varchar(50),
@TipoTramite varchar(200),
@Descripcion varchar(500) = NULL,
@EsActivo bit,
@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
IF NOT EXISTS (SELECT 1 FROM dbo.Sis_Usuarios WHERE CveUsuario = @CveUsuarioEjecuta AND CveRol IN (1, 2) AND Activo = 1)
BEGIN
SELECT @ErrorMostrar = 'No cuenta con permiso para modificar este catálogo.', @ErrorTipo = 2;
RETURN;
END;
SELECT @Codigo = LTRIM(RTRIM(@Codigo)), @TipoTramite = LTRIM(RTRIM(@TipoTramite)), @Descripcion = NULLIF(LTRIM(RTRIM(@Descripcion)), '');
IF NULLIF(@Codigo, '') IS NULL OR NULLIF(@TipoTramite, '') IS NULL
BEGIN
SELECT @ErrorMostrar = 'Capture el código y el nombre del tipo de trámite.', @ErrorTipo = 2;
RETURN;
END;
IF EXISTS (SELECT 1 FROM dbo.Tra_TiposTramite WHERE Codigo = @Codigo AND CveTipoTramite <> ISNULL(@CveTipoTramite, 0))
BEGIN
SELECT @ErrorMostrar = 'El código del tipo de trámite ya está registrado.', @ErrorTipo = 2;
RETURN;
END;
IF @CveTipoTramite IS NULL
BEGIN
DECLARE @Orden int =
ISNULL((SELECT MAX(Orden) FROM dbo.Tra_TiposTramite), 0) + 1;
INSERT dbo.Tra_TiposTramite (Codigo, TipoTramite, Descripcion, Orden, EsActivo, CveUsuario)
VALUES (@Codigo, @TipoTramite, @Descripcion, @Orden, @EsActivo, @CveUsuarioEjecuta);
SET @CveTipoTramite = CONVERT(int, SCOPE_IDENTITY());
END
ELSE
BEGIN
UPDATE dbo.Tra_TiposTramite
SET Codigo = @Codigo, TipoTramite = @TipoTramite, Descripcion = @Descripcion,
EsActivo = @EsActivo, FechaModificacion = GETDATE(), CveUsuario = @CveUsuarioEjecuta
WHERE CveTipoTramite = @CveTipoTramite;
END;
SELECT @CveTipoTramite AS CveTipoTramite;
SET @Return = 1;
END TRY
BEGIN CATCH
SELECT @ErrorMostrar = 'Ocurrió un error al guardar el tipo de trámite; favor de contactar a Sistemas.', @ErrorTipo = 1, @Return = 0;
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Tra_TipoTramiteSave'), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
END CATCH;
END;
GO
CREATE OR ALTER PROCEDURE dbo.PA_Tra_TipoTramiteDelete
@CveTipoTramite 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
IF NOT EXISTS (SELECT 1 FROM dbo.Sis_Usuarios WHERE CveUsuario = @CveUsuarioEjecuta AND CveRol IN (1, 2) AND Activo = 1)
BEGIN
SELECT @ErrorMostrar = 'No cuenta con permiso para eliminar este catálogo.', @ErrorTipo = 2;
RETURN;
END;
IF EXISTS (SELECT 1 FROM dbo.Tra_Solicitudes WHERE CveTipoTramite = @CveTipoTramite)
OR EXISTS (SELECT 1 FROM dbo.Tra_DocumentosRequeridos WHERE CveTipoTramite = @CveTipoTramite)
OR EXISTS (SELECT 1 FROM dbo.Tra_Preguntas WHERE CveTipoTramite = @CveTipoTramite)
BEGIN
SELECT @ErrorMostrar = 'El tipo de trámite tiene información relacionada y no puede eliminarse. Puede desactivarlo.', @ErrorTipo = 2;
RETURN;
END;
DELETE dbo.Tra_TiposTramite WHERE CveTipoTramite = @CveTipoTramite;
SET @Return = 1;
END TRY
BEGIN CATCH
SELECT @ErrorMostrar = 'Ocurrió un error al eliminar el tipo de trámite; favor de contactar a Sistemas.', @ErrorTipo = 1, @Return = 0;
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Tra_TipoTramiteDelete'), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
END CATCH;
END;
GO
CREATE OR ALTER PROCEDURE dbo.PA_Tra_TipoDocumentoList
@Texto varchar(250) = NULL,
@IncluirInactivos bit = 0,
@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
IF NOT EXISTS (SELECT 1 FROM dbo.Sis_Usuarios WHERE CveUsuario = @CveUsuarioEjecuta AND CveRol IN (1, 2) AND Activo = 1)
BEGIN
SELECT @ErrorMostrar = 'No cuenta con permiso para consultar este catálogo.', @ErrorTipo = 2;
RETURN;
END;
SELECT CveTipoDocumento, TipoDocumento, Descripcion, ExtensionesPermitidas, TamanoMaximoMb, EsActivo
FROM dbo.Tra_TiposDocumento
WHERE (@IncluirInactivos = 1 OR EsActivo = 1)
AND (NULLIF(LTRIM(RTRIM(@Texto)), '') IS NULL
OR TipoDocumento LIKE '%' + @Texto + '%'
OR Descripcion LIKE '%' + @Texto + '%'
OR ExtensionesPermitidas LIKE '%' + @Texto + '%')
ORDER BY TipoDocumento;
SET @Return = 1;
END TRY
BEGIN CATCH
SELECT @ErrorMostrar = 'Ocurrió un error al consultar los tipos de documento; favor de contactar a Sistemas.', @ErrorTipo = 1, @Return = 0;
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Tra_TipoDocumentoList'), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
END CATCH;
END;
GO
CREATE OR ALTER PROCEDURE dbo.PA_Tra_TipoDocumentoGet
@CveTipoDocumento 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
IF NOT EXISTS (SELECT 1 FROM dbo.Sis_Usuarios WHERE CveUsuario = @CveUsuarioEjecuta AND CveRol IN (1, 2) AND Activo = 1)
BEGIN
SELECT @ErrorMostrar = 'No cuenta con permiso para consultar este catálogo.', @ErrorTipo = 2;
RETURN;
END;
SELECT CveTipoDocumento, TipoDocumento, Descripcion, ExtensionesPermitidas, TamanoMaximoMb, EsActivo
FROM dbo.Tra_TiposDocumento
WHERE CveTipoDocumento = @CveTipoDocumento;
SET @Return = 1;
END TRY
BEGIN CATCH
SELECT @ErrorMostrar = 'Ocurrió un error al consultar el tipo de documento; favor de contactar a Sistemas.', @ErrorTipo = 1, @Return = 0;
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Tra_TipoDocumentoGet'), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
END CATCH;
END;
GO
CREATE OR ALTER PROCEDURE dbo.PA_Tra_TipoDocumentoSave
@CveTipoDocumento int = NULL,
@TipoDocumento varchar(200),
@Descripcion varchar(500) = NULL,
@ExtensionesPermitidas varchar(200) = NULL,
@TamanoMaximoMb int = NULL,
@EsActivo bit,
@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
IF NOT EXISTS (SELECT 1 FROM dbo.Sis_Usuarios WHERE CveUsuario = @CveUsuarioEjecuta AND CveRol IN (1, 2) AND Activo = 1)
BEGIN
SELECT @ErrorMostrar = 'No cuenta con permiso para modificar este catálogo.', @ErrorTipo = 2;
RETURN;
END;
SELECT @TipoDocumento = LTRIM(RTRIM(@TipoDocumento)),
@Descripcion = NULLIF(LTRIM(RTRIM(@Descripcion)), ''),
@ExtensionesPermitidas = NULLIF(LTRIM(RTRIM(@ExtensionesPermitidas)), '');
IF NULLIF(@TipoDocumento, '') IS NULL
BEGIN
SELECT @ErrorMostrar = 'Capture el nombre del tipo de documento.', @ErrorTipo = 2;
RETURN;
END;
IF @TamanoMaximoMb IS NOT NULL AND @TamanoMaximoMb <= 0
BEGIN
SELECT @ErrorMostrar = 'El tamaño máximo debe ser mayor que cero.', @ErrorTipo = 2;
RETURN;
END;
IF EXISTS (SELECT 1 FROM dbo.Tra_TiposDocumento WHERE TipoDocumento = @TipoDocumento AND CveTipoDocumento <> ISNULL(@CveTipoDocumento, 0))
BEGIN
SELECT @ErrorMostrar = 'El tipo de documento ya está registrado.', @ErrorTipo = 2;
RETURN;
END;
IF @CveTipoDocumento IS NULL
BEGIN
INSERT dbo.Tra_TiposDocumento (TipoDocumento, Descripcion, ExtensionesPermitidas, TamanoMaximoMb, EsActivo, CveUsuario)
VALUES (@TipoDocumento, @Descripcion, @ExtensionesPermitidas, @TamanoMaximoMb, @EsActivo, @CveUsuarioEjecuta);
SET @CveTipoDocumento = CONVERT(int, SCOPE_IDENTITY());
END
ELSE
BEGIN
UPDATE dbo.Tra_TiposDocumento
SET TipoDocumento = @TipoDocumento, Descripcion = @Descripcion,
ExtensionesPermitidas = @ExtensionesPermitidas, TamanoMaximoMb = @TamanoMaximoMb,
EsActivo = @EsActivo, FechaModificacion = GETDATE(), CveUsuario = @CveUsuarioEjecuta
WHERE CveTipoDocumento = @CveTipoDocumento;
END;
SELECT @CveTipoDocumento AS CveTipoDocumento;
SET @Return = 1;
END TRY
BEGIN CATCH
SELECT @ErrorMostrar = 'Ocurrió un error al guardar el tipo de documento; favor de contactar a Sistemas.', @ErrorTipo = 1, @Return = 0;
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Tra_TipoDocumentoSave'), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
END CATCH;
END;
GO
CREATE OR ALTER PROCEDURE dbo.PA_Tra_TipoDocumentoDelete
@CveTipoDocumento 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
IF NOT EXISTS (SELECT 1 FROM dbo.Sis_Usuarios WHERE CveUsuario = @CveUsuarioEjecuta AND CveRol IN (1, 2) AND Activo = 1)
BEGIN
SELECT @ErrorMostrar = 'No cuenta con permiso para eliminar este catálogo.', @ErrorTipo = 2;
RETURN;
END;
IF EXISTS (SELECT 1 FROM dbo.Tra_DocumentosRequeridos WHERE CveTipoDocumento = @CveTipoDocumento)
OR EXISTS (SELECT 1 FROM dbo.Tra_DocumentosSolicitud WHERE CveTipoDocumento = @CveTipoDocumento)
BEGIN
SELECT @ErrorMostrar = 'El tipo de documento tiene información relacionada y no puede eliminarse. Puede desactivarlo.', @ErrorTipo = 2;
RETURN;
END;
DELETE dbo.Tra_TiposDocumento WHERE CveTipoDocumento = @CveTipoDocumento;
SET @Return = 1;
END TRY
BEGIN CATCH
SELECT @ErrorMostrar = 'Ocurrió un error al eliminar el tipo de documento; favor de contactar a Sistemas.', @ErrorTipo = 1, @Return = 0;
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Tra_TipoDocumentoDelete'), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
END CATCH;
END;
GO
CREATE OR ALTER PROCEDURE dbo.PA_Tra_DocumentoRequeridoList
@CveTipoTramite int = NULL,
@IncluirInactivos bit = 0,
@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
IF NOT EXISTS (SELECT 1 FROM dbo.Sis_Usuarios WHERE CveUsuario = @CveUsuarioEjecuta AND CveRol IN (1, 2) AND Activo = 1)
BEGIN
SELECT @ErrorMostrar = 'No cuenta con permiso para consultar este catálogo.', @ErrorTipo = 2;
RETURN;
END;
SELECT D.CveDocumentoRequerido, D.CveTipoTramite, T.TipoTramite,
D.CveTipoDocumento, TD.TipoDocumento, D.EsRequerido, D.Orden, D.EsActivo
FROM dbo.Tra_DocumentosRequeridos AS D
INNER JOIN dbo.Tra_TiposTramite AS T ON T.CveTipoTramite = D.CveTipoTramite
INNER JOIN dbo.Tra_TiposDocumento AS TD ON TD.CveTipoDocumento = D.CveTipoDocumento
WHERE (@CveTipoTramite IS NULL OR D.CveTipoTramite = @CveTipoTramite)
AND (@IncluirInactivos = 1 OR D.EsActivo = 1)
ORDER BY T.Orden, T.TipoTramite, D.Orden, TD.TipoDocumento;
SET @Return = 1;
END TRY
BEGIN CATCH
SELECT @ErrorMostrar = 'Ocurrió un error al consultar los documentos requeridos; favor de contactar a Sistemas.', @ErrorTipo = 1, @Return = 0;
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Tra_DocumentoRequeridoList'), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
END CATCH;
END;
GO
CREATE OR ALTER PROCEDURE dbo.PA_Tra_DocumentoRequeridoGet
@CveDocumentoRequerido 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
IF NOT EXISTS (SELECT 1 FROM dbo.Sis_Usuarios WHERE CveUsuario = @CveUsuarioEjecuta AND CveRol IN (1, 2) AND Activo = 1)
BEGIN
SELECT @ErrorMostrar = 'No cuenta con permiso para consultar este catálogo.', @ErrorTipo = 2;
RETURN;
END;
SELECT D.CveDocumentoRequerido, D.CveTipoTramite, T.TipoTramite,
D.CveTipoDocumento, TD.TipoDocumento, D.EsRequerido, D.Orden, D.EsActivo
FROM dbo.Tra_DocumentosRequeridos AS D
INNER JOIN dbo.Tra_TiposTramite AS T ON T.CveTipoTramite = D.CveTipoTramite
INNER JOIN dbo.Tra_TiposDocumento AS TD ON TD.CveTipoDocumento = D.CveTipoDocumento
WHERE D.CveDocumentoRequerido = @CveDocumentoRequerido;
SET @Return = 1;
END TRY
BEGIN CATCH
SELECT @ErrorMostrar = 'Ocurrió un error al consultar el documento requerido; favor de contactar a Sistemas.', @ErrorTipo = 1, @Return = 0;
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Tra_DocumentoRequeridoGet'), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
END CATCH;
END;
GO
CREATE OR ALTER PROCEDURE dbo.PA_Tra_DocumentoRequeridoSave
@CveDocumentoRequerido int = NULL,
@CveTipoTramite int,
@CveTipoDocumento int,
@EsRequerido bit,
@EsActivo bit,
@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
IF NOT EXISTS (SELECT 1 FROM dbo.Sis_Usuarios WHERE CveUsuario = @CveUsuarioEjecuta AND CveRol IN (1, 2) AND Activo = 1)
BEGIN
SELECT @ErrorMostrar = 'No cuenta con permiso para modificar este catálogo.', @ErrorTipo = 2;
RETURN;
END;
IF NOT EXISTS (SELECT 1 FROM dbo.Tra_TiposTramite WHERE CveTipoTramite = @CveTipoTramite)
OR NOT EXISTS (SELECT 1 FROM dbo.Tra_TiposDocumento WHERE CveTipoDocumento = @CveTipoDocumento)
BEGIN
SELECT @ErrorMostrar = 'Seleccione un tipo de trámite y un tipo de documento válidos.', @ErrorTipo = 2;
RETURN;
END;
IF EXISTS
(
SELECT 1
FROM dbo.Tra_DocumentosRequeridos
WHERE CveTipoTramite = @CveTipoTramite
AND CveTipoDocumento = @CveTipoDocumento
AND CveDocumentoRequerido <> ISNULL(@CveDocumentoRequerido, 0)
)
BEGIN
SELECT @ErrorMostrar = 'El documento ya está asociado al tipo de trámite.', @ErrorTipo = 2;
RETURN;
END;
IF @CveDocumentoRequerido IS NULL
BEGIN
DECLARE @Orden int = ISNULL((
SELECT MAX(Orden)
FROM dbo.Tra_DocumentosRequeridos
WHERE CveTipoTramite = @CveTipoTramite), 0) + 1;
INSERT dbo.Tra_DocumentosRequeridos (CveTipoTramite, CveTipoDocumento, EsRequerido, Orden, EsActivo)
VALUES (@CveTipoTramite, @CveTipoDocumento, @EsRequerido, @Orden, @EsActivo);
SET @CveDocumentoRequerido = CONVERT(int, SCOPE_IDENTITY());
END
ELSE
BEGIN
DECLARE @CveTipoTramiteAnterior int;
SELECT
@CveTipoTramiteAnterior = CveTipoTramite,
@Orden = Orden
FROM dbo.Tra_DocumentosRequeridos
WHERE CveDocumentoRequerido = @CveDocumentoRequerido;
IF @CveTipoTramiteAnterior <> @CveTipoTramite
BEGIN
SET @Orden = ISNULL((
SELECT MAX(Orden)
FROM dbo.Tra_DocumentosRequeridos
WHERE CveTipoTramite = @CveTipoTramite), 0) + 1;
END;
UPDATE dbo.Tra_DocumentosRequeridos
SET CveTipoTramite = @CveTipoTramite, CveTipoDocumento = @CveTipoDocumento,
EsRequerido = @EsRequerido, Orden = @Orden, EsActivo = @EsActivo
WHERE CveDocumentoRequerido = @CveDocumentoRequerido;
END;
SELECT @CveDocumentoRequerido AS CveDocumentoRequerido;
SET @Return = 1;
END TRY
BEGIN CATCH
SELECT @ErrorMostrar = 'Ocurrió un error al guardar el documento requerido; favor de contactar a Sistemas.', @ErrorTipo = 1, @Return = 0;
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Tra_DocumentoRequeridoSave'), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
END CATCH;
END;
GO
CREATE OR ALTER PROCEDURE dbo.PA_Tra_DocumentoRequeridoDelete
@CveDocumentoRequerido 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
IF NOT EXISTS (SELECT 1 FROM dbo.Sis_Usuarios WHERE CveUsuario = @CveUsuarioEjecuta AND CveRol IN (1, 2) AND Activo = 1)
BEGIN
SELECT @ErrorMostrar = 'No cuenta con permiso para eliminar este catálogo.', @ErrorTipo = 2;
RETURN;
END;
DELETE dbo.Tra_DocumentosRequeridos WHERE CveDocumentoRequerido = @CveDocumentoRequerido;
SET @Return = 1;
END TRY
BEGIN CATCH
SELECT @ErrorMostrar = 'Ocurrió un error al eliminar el documento requerido; favor de contactar a Sistemas.', @ErrorTipo = 1, @Return = 0;
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Tra_DocumentoRequeridoDelete'), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
END CATCH;
END;
GO
CREATE OR ALTER PROCEDURE dbo.PA_Tra_TipoPreguntaList
@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
IF NOT EXISTS (SELECT 1 FROM dbo.Sis_Usuarios WHERE CveUsuario = @CveUsuarioEjecuta AND CveRol IN (1, 2) AND Activo = 1)
BEGIN
SELECT @ErrorMostrar = 'No cuenta con permiso para consultar este catálogo.', @ErrorTipo = 2;
RETURN;
END;
SELECT CveTipoPregunta, TipoPregunta, EsActivo
FROM dbo.Tra_TiposPregunta
WHERE EsActivo = 1
ORDER BY CveTipoPregunta;
SET @Return = 1;
END TRY
BEGIN CATCH
SELECT @ErrorMostrar = 'Ocurrió un error al consultar los tipos de pregunta; favor de contactar a Sistemas.', @ErrorTipo = 1, @Return = 0;
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Tra_TipoPreguntaList'), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
END CATCH;
END;
GO
CREATE OR ALTER PROCEDURE dbo.PA_Tra_PreguntaList
@CveTipoTramite int,
@SoloConOpciones bit = 0,
@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
IF NOT EXISTS (SELECT 1 FROM dbo.Sis_Usuarios WHERE CveUsuario = @CveUsuarioEjecuta AND CveRol IN (1, 2) AND Activo = 1)
BEGIN
SELECT @ErrorMostrar = 'No cuenta con permiso para consultar este catálogo.', @ErrorTipo = 2;
RETURN;
END;
SELECT P.CvePregunta, P.CveTipoTramite, T.TipoTramite, P.CveTipoPregunta,
TP.TipoPregunta, P.Codigo, P.Pregunta, P.Descripcion, P.EsRequerida,
P.Orden, P.EsActivo, COUNT(O.CveOpcionPregunta) AS NumeroOpciones
FROM dbo.Tra_Preguntas AS P
INNER JOIN dbo.Tra_TiposTramite AS T ON T.CveTipoTramite = P.CveTipoTramite
INNER JOIN dbo.Tra_TiposPregunta AS TP ON TP.CveTipoPregunta = P.CveTipoPregunta
LEFT JOIN dbo.Tra_OpcionesPregunta AS O ON O.CvePregunta = P.CvePregunta
WHERE P.CveTipoTramite = @CveTipoTramite
AND (@SoloConOpciones = 0 OR P.CveTipoPregunta IN (3, 4))
GROUP BY P.CvePregunta, P.CveTipoTramite, T.TipoTramite, P.CveTipoPregunta,
TP.TipoPregunta, P.Codigo, P.Pregunta, P.Descripcion, P.EsRequerida,
P.Orden, P.EsActivo
ORDER BY P.Orden, P.Pregunta;
SET @Return = 1;
END TRY
BEGIN CATCH
SELECT @ErrorMostrar = 'Ocurrió un error al consultar las preguntas; favor de contactar a Sistemas.', @ErrorTipo = 1, @Return = 0;
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Tra_PreguntaList'), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
END CATCH;
END;
GO
CREATE OR ALTER PROCEDURE dbo.PA_Tra_PreguntaGet
@CvePregunta 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
IF NOT EXISTS (SELECT 1 FROM dbo.Sis_Usuarios WHERE CveUsuario = @CveUsuarioEjecuta AND CveRol IN (1, 2) AND Activo = 1)
BEGIN
SELECT @ErrorMostrar = 'No cuenta con permiso para consultar este catálogo.', @ErrorTipo = 2;
RETURN;
END;
SELECT P.CvePregunta, P.CveTipoTramite, T.TipoTramite, P.CveTipoPregunta,
TP.TipoPregunta, P.Codigo, P.Pregunta, P.Descripcion, P.EsRequerida,
P.Orden, P.EsActivo,
(SELECT COUNT(*) FROM dbo.Tra_OpcionesPregunta AS O WHERE O.CvePregunta = P.CvePregunta) AS NumeroOpciones
FROM dbo.Tra_Preguntas AS P
INNER JOIN dbo.Tra_TiposTramite AS T ON T.CveTipoTramite = P.CveTipoTramite
INNER JOIN dbo.Tra_TiposPregunta AS TP ON TP.CveTipoPregunta = P.CveTipoPregunta
WHERE P.CvePregunta = @CvePregunta;
SET @Return = 1;
END TRY
BEGIN CATCH
SELECT @ErrorMostrar = 'Ocurrió un error al consultar la pregunta; favor de contactar a Sistemas.', @ErrorTipo = 1, @Return = 0;
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Tra_PreguntaGet'), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
END CATCH;
END;
GO
CREATE OR ALTER PROCEDURE dbo.PA_Tra_PreguntaSave
@CvePregunta int = NULL,
@CveTipoTramite int,
@CveTipoPregunta int,
@Codigo varchar(50) = NULL,
@Pregunta varchar(500),
@Descripcion varchar(1000) = NULL,
@EsRequerida bit,
@EsActivo bit,
@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
IF NOT EXISTS (SELECT 1 FROM dbo.Sis_Usuarios WHERE CveUsuario = @CveUsuarioEjecuta AND CveRol IN (1, 2) AND Activo = 1)
BEGIN
SELECT @ErrorMostrar = 'No cuenta con permiso para modificar este catálogo.', @ErrorTipo = 2;
RETURN;
END;
SELECT @Codigo = NULLIF(LTRIM(RTRIM(@Codigo)), ''),
@Pregunta = LTRIM(RTRIM(@Pregunta)),
@Descripcion = NULLIF(LTRIM(RTRIM(@Descripcion)), '');
IF NULLIF(@Pregunta, '') IS NULL
OR NOT EXISTS (SELECT 1 FROM dbo.Tra_TiposTramite WHERE CveTipoTramite = @CveTipoTramite)
OR NOT EXISTS (SELECT 1 FROM dbo.Tra_TiposPregunta WHERE CveTipoPregunta = @CveTipoPregunta AND EsActivo = 1)
BEGIN
SELECT @ErrorMostrar = 'Capture una pregunta y seleccione valores de catálogo válidos.', @ErrorTipo = 2;
RETURN;
END;
IF @Codigo IS NOT NULL
AND EXISTS (SELECT 1 FROM dbo.Tra_Preguntas WHERE Codigo = @Codigo AND CvePregunta <> ISNULL(@CvePregunta, 0))
BEGIN
SELECT @ErrorMostrar = 'El código de la pregunta ya está registrado.', @ErrorTipo = 2;
RETURN;
END;
IF @CvePregunta IS NOT NULL
AND @CveTipoPregunta <> 4
AND EXISTS (SELECT 1 FROM dbo.Tra_OpcionesPregunta WHERE CvePregunta = @CvePregunta)
BEGIN
SELECT @ErrorMostrar = 'Elimine primero las opciones de respuesta antes de cambiar el tipo de pregunta.', @ErrorTipo = 2;
RETURN;
END;
IF @CvePregunta IS NULL
BEGIN
DECLARE @Orden int = ISNULL((
SELECT MAX(Orden)
FROM dbo.Tra_Preguntas
WHERE CveTipoTramite = @CveTipoTramite), 0) + 1;
INSERT dbo.Tra_Preguntas
(CveTipoTramite, CveTipoPregunta, Codigo, Pregunta, Descripcion,
EsRequerida, Orden, EsActivo, CveUsuario)
VALUES
(@CveTipoTramite, @CveTipoPregunta, @Codigo, @Pregunta, @Descripcion,
@EsRequerida, @Orden, @EsActivo, @CveUsuarioEjecuta);
SET @CvePregunta = CONVERT(int, SCOPE_IDENTITY());
END
ELSE
BEGIN
DECLARE @CveTipoTramiteAnterior int;
SELECT
@CveTipoTramiteAnterior = CveTipoTramite,
@Orden = Orden
FROM dbo.Tra_Preguntas
WHERE CvePregunta = @CvePregunta;
IF @CveTipoTramiteAnterior <> @CveTipoTramite
BEGIN
SET @Orden = ISNULL((
SELECT MAX(Orden)
FROM dbo.Tra_Preguntas
WHERE CveTipoTramite = @CveTipoTramite), 0) + 1;
END;
UPDATE dbo.Tra_Preguntas
SET CveTipoTramite = @CveTipoTramite, CveTipoPregunta = @CveTipoPregunta,
Codigo = @Codigo, Pregunta = @Pregunta, Descripcion = @Descripcion,
EsRequerida = @EsRequerida, Orden = @Orden, EsActivo = @EsActivo,
FechaModificacion = GETDATE(), CveUsuario = @CveUsuarioEjecuta
WHERE CvePregunta = @CvePregunta;
END;
SELECT @CvePregunta AS CvePregunta;
SET @Return = 1;
END TRY
BEGIN CATCH
SELECT @ErrorMostrar = 'Ocurrió un error al guardar la pregunta; favor de contactar a Sistemas.', @ErrorTipo = 1, @Return = 0;
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Tra_PreguntaSave'), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
END CATCH;
END;
GO
CREATE OR ALTER PROCEDURE dbo.PA_Tra_PreguntaDelete
@CvePregunta 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
IF NOT EXISTS (SELECT 1 FROM dbo.Sis_Usuarios WHERE CveUsuario = @CveUsuarioEjecuta AND CveRol IN (1, 2) AND Activo = 1)
BEGIN
SELECT @ErrorMostrar = 'No cuenta con permiso para eliminar este catálogo.', @ErrorTipo = 2;
RETURN;
END;
IF EXISTS (SELECT 1 FROM dbo.Tra_RespuestasSolicitud WHERE CvePregunta = @CvePregunta)
BEGIN
SELECT @ErrorMostrar = 'La pregunta ya tiene respuestas registradas y no puede eliminarse. Puede desactivarla.', @ErrorTipo = 2;
RETURN;
END;
DELETE dbo.Tra_OpcionesPregunta WHERE CvePregunta = @CvePregunta;
DELETE dbo.Tra_Preguntas WHERE CvePregunta = @CvePregunta;
SET @Return = 1;
END TRY
BEGIN CATCH
SELECT @ErrorMostrar = 'Ocurrió un error al eliminar la pregunta; favor de contactar a Sistemas.', @ErrorTipo = 1, @Return = 0;
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Tra_PreguntaDelete'), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
END CATCH;
END;
GO
CREATE OR ALTER PROCEDURE dbo.PA_Tra_OpcionPreguntaList
@CvePregunta 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
IF NOT EXISTS (SELECT 1 FROM dbo.Sis_Usuarios WHERE CveUsuario = @CveUsuarioEjecuta AND CveRol IN (1, 2) AND Activo = 1)
BEGIN
SELECT @ErrorMostrar = 'No cuenta con permiso para consultar este catálogo.', @ErrorTipo = 2;
RETURN;
END;
SELECT O.CveOpcionPregunta, O.CvePregunta, P.Pregunta, O.TextoOpcion,
O.ValorOpcion, O.Orden, O.EsActivo
FROM dbo.Tra_OpcionesPregunta AS O
INNER JOIN dbo.Tra_Preguntas AS P ON P.CvePregunta = O.CvePregunta
WHERE O.CvePregunta = @CvePregunta
ORDER BY O.Orden, O.TextoOpcion;
SET @Return = 1;
END TRY
BEGIN CATCH
SELECT @ErrorMostrar = 'Ocurrió un error al consultar las opciones de respuesta; favor de contactar a Sistemas.', @ErrorTipo = 1, @Return = 0;
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Tra_OpcionPreguntaList'), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
END CATCH;
END;
GO
CREATE OR ALTER PROCEDURE dbo.PA_Tra_OpcionPreguntaGet
@CveOpcionPregunta 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
IF NOT EXISTS (SELECT 1 FROM dbo.Sis_Usuarios WHERE CveUsuario = @CveUsuarioEjecuta AND CveRol IN (1, 2) AND Activo = 1)
BEGIN
SELECT @ErrorMostrar = 'No cuenta con permiso para consultar este catálogo.', @ErrorTipo = 2;
RETURN;
END;
SELECT O.CveOpcionPregunta, O.CvePregunta, P.Pregunta, O.TextoOpcion,
O.ValorOpcion, O.Orden, O.EsActivo
FROM dbo.Tra_OpcionesPregunta AS O
INNER JOIN dbo.Tra_Preguntas AS P ON P.CvePregunta = O.CvePregunta
WHERE O.CveOpcionPregunta = @CveOpcionPregunta;
SET @Return = 1;
END TRY
BEGIN CATCH
SELECT @ErrorMostrar = 'Ocurrió un error al consultar la opción de respuesta; favor de contactar a Sistemas.', @ErrorTipo = 1, @Return = 0;
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Tra_OpcionPreguntaGet'), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
END CATCH;
END;
GO
CREATE OR ALTER PROCEDURE dbo.PA_Tra_OpcionPreguntaSave
@CveOpcionPregunta int = NULL,
@CvePregunta int,
@TextoOpcion varchar(300),
@ValorOpcion varchar(300) = NULL,
@EsActivo bit,
@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
IF NOT EXISTS (SELECT 1 FROM dbo.Sis_Usuarios WHERE CveUsuario = @CveUsuarioEjecuta AND CveRol IN (1, 2) AND Activo = 1)
BEGIN
SELECT @ErrorMostrar = 'No cuenta con permiso para modificar este catálogo.', @ErrorTipo = 2;
RETURN;
END;
SELECT @TextoOpcion = LTRIM(RTRIM(@TextoOpcion)),
@ValorOpcion = NULLIF(LTRIM(RTRIM(@ValorOpcion)), '');
IF NULLIF(@TextoOpcion, '') IS NULL
OR NOT EXISTS (SELECT 1 FROM dbo.Tra_Preguntas WHERE CvePregunta = @CvePregunta AND CveTipoPregunta IN (3, 4))
BEGIN
SELECT @ErrorMostrar = 'Seleccione una pregunta de selección múltiple y capture la respuesta.', @ErrorTipo = 2;
RETURN;
END;
IF EXISTS
(
SELECT 1
FROM dbo.Tra_OpcionesPregunta
WHERE CvePregunta = @CvePregunta
AND TextoOpcion = @TextoOpcion
AND CveOpcionPregunta <> ISNULL(@CveOpcionPregunta, 0)
)
BEGIN
SELECT @ErrorMostrar = 'La respuesta ya está registrada para esta pregunta.', @ErrorTipo = 2;
RETURN;
END;
IF @CveOpcionPregunta IS NULL
BEGIN
DECLARE @Orden int = ISNULL((
SELECT MAX(Orden)
FROM dbo.Tra_OpcionesPregunta
WHERE CvePregunta = @CvePregunta), 0) + 1;
INSERT dbo.Tra_OpcionesPregunta (CvePregunta, TextoOpcion, ValorOpcion, Orden, EsActivo)
VALUES (@CvePregunta, @TextoOpcion, @ValorOpcion, @Orden, @EsActivo);
SET @CveOpcionPregunta = CONVERT(int, SCOPE_IDENTITY());
END
ELSE
BEGIN
DECLARE @CvePreguntaAnterior int;
SELECT
@CvePreguntaAnterior = CvePregunta,
@Orden = Orden
FROM dbo.Tra_OpcionesPregunta
WHERE CveOpcionPregunta = @CveOpcionPregunta;
IF @CvePreguntaAnterior <> @CvePregunta
BEGIN
SET @Orden = ISNULL((
SELECT MAX(Orden)
FROM dbo.Tra_OpcionesPregunta
WHERE CvePregunta = @CvePregunta), 0) + 1;
END;
UPDATE dbo.Tra_OpcionesPregunta
SET CvePregunta = @CvePregunta, TextoOpcion = @TextoOpcion,
ValorOpcion = @ValorOpcion, Orden = @Orden, EsActivo = @EsActivo
WHERE CveOpcionPregunta = @CveOpcionPregunta;
END;
SELECT @CveOpcionPregunta AS CveOpcionPregunta;
SET @Return = 1;
END TRY
BEGIN CATCH
SELECT @ErrorMostrar = 'Ocurrió un error al guardar la opción de respuesta; favor de contactar a Sistemas.', @ErrorTipo = 1, @Return = 0;
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Tra_OpcionPreguntaSave'), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
END CATCH;
END;
GO
CREATE OR ALTER PROCEDURE dbo.PA_Tra_OpcionPreguntaDelete
@CveOpcionPregunta 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
IF NOT EXISTS (SELECT 1 FROM dbo.Sis_Usuarios WHERE CveUsuario = @CveUsuarioEjecuta AND CveRol IN (1, 2) AND Activo = 1)
BEGIN
SELECT @ErrorMostrar = 'No cuenta con permiso para eliminar este catálogo.', @ErrorTipo = 2;
RETURN;
END;
IF EXISTS (SELECT 1 FROM dbo.Tra_RespuestasSolicitud WHERE CveOpcionPregunta = @CveOpcionPregunta)
BEGIN
SELECT @ErrorMostrar = 'La opción ya tiene respuestas registradas y no puede eliminarse. Puede desactivarla.', @ErrorTipo = 2;
RETURN;
END;
DELETE dbo.Tra_OpcionesPregunta WHERE CveOpcionPregunta = @CveOpcionPregunta;
SET @Return = 1;
END TRY
BEGIN CATCH
SELECT @ErrorMostrar = 'Ocurrió un error al eliminar la opción de respuesta; favor de contactar a Sistemas.', @ErrorTipo = 1, @Return = 0;
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Tra_OpcionPreguntaDelete'), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
END CATCH;
END;
GO
CREATE OR ALTER PROCEDURE dbo.PA_Tra_CatalogoOrdenMove
@Entidad varchar(40),
@CveRegistro int,
@CveReferencia int,
@ColocarDespues bit,
@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
IF NOT EXISTS
(
SELECT 1
FROM dbo.Sis_Usuarios
WHERE CveUsuario = @CveUsuarioEjecuta
AND CveRol IN (1, 2)
AND Activo = 1
)
BEGIN
SELECT
@ErrorMostrar = 'No cuenta con permiso para reordenar este catálogo.',
@ErrorTipo = 2;
RETURN;
END;
IF @CveRegistro <= 0
OR @CveReferencia <= 0
OR @CveRegistro = @CveReferencia
BEGIN
SELECT
@ErrorMostrar = 'Seleccione una posición válida para mover el registro.',
@ErrorTipo = 2;
RETURN;
END;
DECLARE @Registros TABLE
(
CveRegistro int NOT NULL PRIMARY KEY,
CvePadre int NULL,
Orden int NOT NULL
);
IF @Entidad = 'EstatusSolicitud'
BEGIN
INSERT @Registros (CveRegistro, CvePadre, Orden)
SELECT CveEstatusSolicitud, NULL, Orden
FROM dbo.Tra_EstatusSolicitud;
END
ELSE IF @Entidad = 'TipoTramite'
BEGIN
INSERT @Registros (CveRegistro, CvePadre, Orden)
SELECT CveTipoTramite, NULL, Orden
FROM dbo.Tra_TiposTramite;
END
ELSE IF @Entidad = 'DocumentoRequerido'
BEGIN
INSERT @Registros (CveRegistro, CvePadre, Orden)
SELECT CveDocumentoRequerido, CveTipoTramite, Orden
FROM dbo.Tra_DocumentosRequeridos;
END
ELSE IF @Entidad = 'Pregunta'
BEGIN
INSERT @Registros (CveRegistro, CvePadre, Orden)
SELECT CvePregunta, CveTipoTramite, Orden
FROM dbo.Tra_Preguntas;
END
ELSE IF @Entidad = 'OpcionPregunta'
BEGIN
INSERT @Registros (CveRegistro, CvePadre, Orden)
SELECT CveOpcionPregunta, CvePregunta, Orden
FROM dbo.Tra_OpcionesPregunta;
END
ELSE
BEGIN
SELECT
@ErrorMostrar = 'El catálogo solicitado no admite reordenamiento.',
@ErrorTipo = 2;
RETURN;
END;
DECLARE @OrdenAnterior int;
DECLARE @OrdenReferencia int;
DECLARE @CvePadre int;
DECLARE @CvePadreReferencia int;
DECLARE @OrdenNuevo int;
SELECT
@OrdenAnterior = Orden,
@CvePadre = CvePadre
FROM @Registros
WHERE CveRegistro = @CveRegistro;
SELECT
@OrdenReferencia = Orden,
@CvePadreReferencia = CvePadre
FROM @Registros
WHERE CveRegistro = @CveReferencia;
IF @OrdenAnterior IS NULL
OR @OrdenReferencia IS NULL
OR ISNULL(@CvePadre, -1) <> ISNULL(@CvePadreReferencia, -1)
BEGIN
SELECT
@ErrorMostrar = 'Los registros seleccionados no pertenecen al mismo catálogo.',
@ErrorTipo = 2;
RETURN;
END;
SET @OrdenNuevo =
CASE
WHEN @ColocarDespues = 1 AND @OrdenAnterior < @OrdenReferencia
THEN @OrdenReferencia
WHEN @ColocarDespues = 1
THEN @OrdenReferencia + 1
WHEN @OrdenAnterior < @OrdenReferencia
THEN @OrdenReferencia - 1
ELSE @OrdenReferencia
END;
IF @OrdenNuevo = @OrdenAnterior
BEGIN
SET @Return = 1;
RETURN;
END;
IF @OrdenAnterior < @OrdenNuevo
BEGIN
UPDATE @Registros
SET Orden = Orden - 1
WHERE ISNULL(CvePadre, -1) = ISNULL(@CvePadre, -1)
AND CveRegistro <> @CveRegistro
AND Orden > @OrdenAnterior
AND Orden <= @OrdenNuevo;
END
ELSE
BEGIN
UPDATE @Registros
SET Orden = Orden + 1
WHERE ISNULL(CvePadre, -1) = ISNULL(@CvePadre, -1)
AND CveRegistro <> @CveRegistro
AND Orden >= @OrdenNuevo
AND Orden < @OrdenAnterior;
END;
UPDATE @Registros
SET Orden = @OrdenNuevo
WHERE CveRegistro = @CveRegistro;
IF @Entidad = 'EstatusSolicitud'
BEGIN
UPDATE E
SET Orden = R.Orden
FROM dbo.Tra_EstatusSolicitud AS E
INNER JOIN @Registros AS R
ON R.CveRegistro = E.CveEstatusSolicitud
WHERE E.Orden <> R.Orden;
END
ELSE IF @Entidad = 'TipoTramite'
BEGIN
UPDATE T
SET Orden = R.Orden
FROM dbo.Tra_TiposTramite AS T
INNER JOIN @Registros AS R
ON R.CveRegistro = T.CveTipoTramite
WHERE T.Orden <> R.Orden;
END
ELSE IF @Entidad = 'DocumentoRequerido'
BEGIN
UPDATE D
SET Orden = R.Orden
FROM dbo.Tra_DocumentosRequeridos AS D
INNER JOIN @Registros AS R
ON R.CveRegistro = D.CveDocumentoRequerido
WHERE D.Orden <> R.Orden;
END
ELSE IF @Entidad = 'Pregunta'
BEGIN
UPDATE P
SET Orden = R.Orden
FROM dbo.Tra_Preguntas AS P
INNER JOIN @Registros AS R
ON R.CveRegistro = P.CvePregunta
WHERE P.Orden <> R.Orden;
END
ELSE
BEGIN
UPDATE O
SET Orden = R.Orden
FROM dbo.Tra_OpcionesPregunta AS O
INNER JOIN @Registros AS R
ON R.CveRegistro = O.CveOpcionPregunta
WHERE O.Orden <> R.Orden;
END;
SET @Return = 1;
END TRY
BEGIN CATCH
SELECT
@ErrorMostrar = 'Ocurrió un error al actualizar el orden del catálogo; favor de contactar a Sistemas.',
@ErrorTipo = 1,
@Return = 0;
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
'Número: ', ERROR_NUMBER(),
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Tra_CatalogoOrdenMove'),
'; Línea: ', ERROR_LINE(),
'; Detalle: ', ERROR_MESSAGE()
);
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
END CATCH;
END;
GO