1606 lines
72 KiB
Transact-SQL
1606 lines
72 KiB
Transact-SQL
/* Adaptación de los PA instalados. Preparado para revisión; no ejecutado.
|
|
Requiere Documentos_Etapa_Estructura_20260927.sql.
|
|
Conserva Job_VerificaVigencias / Horario_VerificaVigencias_0300 (03:00 Hermosillo). */
|
|
CREATE OR ALTER PROCEDURE dbo.PA_Tramites_DocumentoSolicitudFraccionamientoList
|
|
@CveFraccionamiento int,
|
|
@CveFraccionamientoEtapa int = NULL,
|
|
@CveTipoTramite int = NULL,
|
|
@IncluirRequisitos 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
|
|
DECLARE @CveCliente int;
|
|
DECLARE @EsDesarrollador bit;
|
|
SELECT @CveCliente = F.CveCliente
|
|
FROM dbo.Fraccionamientos AS F
|
|
WHERE F.CveFraccionamiento = @CveFraccionamiento;
|
|
SELECT @EsDesarrollador = CASE WHEN U.CveRol = 3 THEN 1 ELSE 0 END
|
|
FROM dbo.Sis_Usuarios AS U
|
|
INNER JOIN dbo.Sis_Roles AS R ON R.CveRol = U.CveRol AND R.Activo = 1
|
|
WHERE U.CveUsuario = @CveUsuarioEjecuta AND U.Activo = 1;
|
|
IF @CveCliente IS NULL OR @EsDesarrollador IS NULL OR
|
|
(
|
|
@EsDesarrollador = 1 AND NOT EXISTS
|
|
(
|
|
SELECT 1 FROM dbo.Sis_UsuariosClientes AS UC
|
|
INNER JOIN dbo.Clientes AS C ON C.CveCliente = UC.CveCliente AND C.Estatus = 1
|
|
WHERE UC.CveUsuario = @CveUsuarioEjecuta
|
|
AND UC.CveCliente = @CveCliente AND UC.Activo = 1
|
|
)
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'No tiene acceso al fraccionamiento seleccionado.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
DECLARE @Hoy date = CONVERT(date, SYSDATETIMEOFFSET() AT TIME ZONE 'US Mountain Standard Time');
|
|
;WITH Configuracion AS
|
|
(
|
|
SELECT S.CveSolicitud, S.CveFraccionamientoEtapa, G.CveTipoDocumento,
|
|
COALESCE(P.EsRequerido, G.EsRequerido) AS EsRequerido,
|
|
COALESCE(P.EsCliente, G.EsCliente) AS EsCliente,
|
|
COALESCE(P.TieneVigencia, G.TieneVigencia) AS TieneVigencia,
|
|
COALESCE(P.EsActivo, G.EsActivo) AS EsActivo,
|
|
E.EsFinal, S.CveTipoTramite, S.Folio
|
|
FROM dbo.Tra_Solicitudes AS S
|
|
INNER JOIN dbo.Tra_EstatusSolicitud AS E ON E.CveEstatusSolicitud = S.CveEstatusSolicitud
|
|
INNER JOIN dbo.Tra_TiposTramiteDocumento AS G ON G.CveTipoTramite = S.CveTipoTramite
|
|
LEFT JOIN dbo.Tra_SolicitudDocumentoConfiguracion AS P ON P.CveSolicitud = S.CveSolicitud
|
|
AND P.CveTipoDocumento = G.CveTipoDocumento
|
|
UNION ALL
|
|
SELECT P.CveSolicitud, P.CveFraccionamientoEtapa, P.CveTipoDocumento,
|
|
P.EsRequerido, P.EsCliente, P.TieneVigencia, P.EsActivo,
|
|
ISNULL(E.EsFinal, 0), S.CveTipoTramite, S.Folio
|
|
FROM dbo.Tra_SolicitudDocumentoConfiguracion AS P
|
|
LEFT JOIN dbo.Tra_Solicitudes AS S ON S.CveSolicitud = P.CveSolicitud
|
|
LEFT JOIN dbo.Tra_EstatusSolicitud AS E ON E.CveEstatusSolicitud = S.CveEstatusSolicitud
|
|
WHERE P.CveSolicitud IS NULL OR NOT EXISTS
|
|
(
|
|
SELECT 1 FROM dbo.Tra_TiposTramiteDocumento AS G
|
|
WHERE G.CveTipoTramite = S.CveTipoTramite
|
|
AND G.CveTipoDocumento = P.CveTipoDocumento
|
|
)
|
|
),
|
|
Requisitos AS
|
|
(
|
|
SELECT C.CveFraccionamientoEtapa, C.CveTipoDocumento,
|
|
CONVERT(bit, MAX(CASE WHEN C.EsActivo = 1 AND C.EsRequerido = 1
|
|
AND C.EsFinal = 0 AND T.EsActivo = 1 THEN 1 ELSE 0 END)) AS EsRequerido,
|
|
CONVERT(bit, MAX(CONVERT(int, C.EsCliente))) AS EsCliente,
|
|
CONVERT(bit, MAX(CONVERT(int, C.TieneVigencia))) AS TieneVigencia,
|
|
CONVERT(bit, MAX(CASE WHEN C.EsActivo = 1 AND C.EsFinal = 0 THEN 1 ELSE 0 END)) AS TieneContextoAbierto
|
|
FROM Configuracion AS C
|
|
INNER JOIN dbo.Tra_TiposDocumento AS T ON T.CveTipoDocumento = C.CveTipoDocumento
|
|
GROUP BY C.CveFraccionamientoEtapa, C.CveTipoDocumento
|
|
),
|
|
Claves AS
|
|
(
|
|
SELECT CveFraccionamientoEtapa, CveTipoDocumento FROM Requisitos
|
|
UNION
|
|
SELECT CveFraccionamientoEtapa, CveTipoDocumento
|
|
FROM dbo.Tra_DocumentosSolicitud WHERE EsActivo = 1
|
|
),
|
|
Filas AS
|
|
(
|
|
SELECT K.CveFraccionamientoEtapa, K.CveTipoDocumento,
|
|
ISNULL(C.CveSolicitud, 0) AS CveSolicitud,
|
|
C.CveTipoTramite, C.Folio,
|
|
CASE WHEN @IncluirRequisitos = 1 THEN C.EsRequerido ELSE R.EsRequerido END AS EsRequerido,
|
|
COALESCE(C.EsCliente, R.EsCliente, CONVERT(bit, 1)) AS EsCliente,
|
|
COALESCE(C.TieneVigencia, R.TieneVigencia, CONVERT(bit, 0)) AS TieneVigencia,
|
|
ISNULL(R.EsRequerido, 0) AS RequeridoEtapa,
|
|
ISNULL(R.TieneContextoAbierto, 0) AS TieneContextoAbierto
|
|
FROM Claves AS K
|
|
LEFT JOIN Requisitos AS R ON R.CveFraccionamientoEtapa = K.CveFraccionamientoEtapa
|
|
AND R.CveTipoDocumento = K.CveTipoDocumento
|
|
LEFT JOIN Configuracion AS C ON @IncluirRequisitos = 1
|
|
AND C.CveFraccionamientoEtapa = K.CveFraccionamientoEtapa
|
|
AND C.CveTipoDocumento = K.CveTipoDocumento AND C.EsActivo = 1
|
|
WHERE @IncluirRequisitos = 0 OR C.CveTipoDocumento IS NOT NULL
|
|
)
|
|
SELECT
|
|
ISNULL(D.CveDocumentoSolicitud, 0) AS CveDocumentoSolicitud,
|
|
F.CveSolicitud, F.Folio, E.CveFraccionamientoEtapa, E.CveFraccionamiento,
|
|
@CveCliente AS CveCliente, E.Etapa,
|
|
ISNULL(F.CveTipoTramite, 0) AS CveTipoTramite, T.TipoTramite,
|
|
F.CveTipoDocumento, COALESCE(NULLIF(TD.Descripcion, ''), TD.TipoDocumento) AS TipoDocumento,
|
|
D.NombreArchivo, COALESCE(D.ComentarioAdministrativo, D.ComentarioCliente) AS Nota,
|
|
D.EsAprobado, D.FechaRevision, D.FechaDocumento, D.FechaVencimiento,
|
|
CONVERT(bit, ISNULL(F.EsRequerido, 0)) AS EsRequerido, F.EsCliente, F.TieneVigencia,
|
|
CONVERT(bit, CASE WHEN D.CveDocumentoSolicitud IS NULL THEN 0 ELSE 1 END) AS TieneArchivo,
|
|
CONVERT(bit, CASE WHEN F.TieneContextoAbierto = 1 THEN 0 ELSE 1 END) AS EsFinalSolicitud,
|
|
CONVERT(bit, CASE WHEN D.FechaVencimiento < @Hoy THEN 1 ELSE 0 END) AS FechaExpirada,
|
|
ISNULL(D.Vencido, CONVERT(bit, 0)) AS Vencido,
|
|
CONVERT(bit, CASE WHEN F.CveTipoDocumento = 2 THEN 1 ELSE 0 END) AS EsGis,
|
|
CONVERT(bit, CASE WHEN F.CveTipoDocumento = 2 THEN 1 ELSE 0 END) AS PuedeAdministrarGis,
|
|
CONVERT(bit, CASE WHEN F.CveTipoDocumento <> 2 THEN 1 ELSE 0 END) AS PuedeActualizarArchivo,
|
|
CONVERT(bit, CASE WHEN @EsDesarrollador = 0 AND D.CveDocumentoSolicitud IS NOT NULL THEN 1 ELSE 0 END) AS PuedeRevisar,
|
|
CASE
|
|
WHEN D.CveDocumentoSolicitud IS NULL THEN 'Pendiente'
|
|
WHEN D.FechaVencimiento < @Hoy AND F.RequeridoEtapa = 1 THEN 'Vencido'
|
|
WHEN D.EsAprobado = 1 THEN 'Aprobado'
|
|
WHEN D.EsAprobado = 0 THEN 'Rechazado'
|
|
ELSE 'Por aprobar'
|
|
END AS EstadoDocumento
|
|
FROM Filas AS F
|
|
INNER JOIN dbo.FraccionamientosEtapas AS E ON E.CveFraccionamientoEtapa = F.CveFraccionamientoEtapa
|
|
INNER JOIN dbo.Tra_TiposDocumento AS TD ON TD.CveTipoDocumento = F.CveTipoDocumento
|
|
LEFT JOIN dbo.Tra_TiposTramite AS T ON T.CveTipoTramite = F.CveTipoTramite
|
|
LEFT JOIN dbo.Tra_DocumentosSolicitud AS D ON D.CveFraccionamientoEtapa = F.CveFraccionamientoEtapa
|
|
AND D.CveTipoDocumento = F.CveTipoDocumento AND D.EsActivo = 1
|
|
WHERE E.CveFraccionamiento = @CveFraccionamiento
|
|
AND (@CveFraccionamientoEtapa IS NULL OR E.CveFraccionamientoEtapa = @CveFraccionamientoEtapa)
|
|
AND (D.CveDocumentoSolicitud IS NOT NULL OR F.EsRequerido = 1 OR @IncluirRequisitos = 1)
|
|
AND (@CveTipoTramite IS NULL OR EXISTS
|
|
(
|
|
SELECT 1 FROM Configuracion AS C
|
|
WHERE C.CveFraccionamientoEtapa = F.CveFraccionamientoEtapa
|
|
AND C.CveTipoDocumento = F.CveTipoDocumento AND C.CveTipoTramite = @CveTipoTramite
|
|
AND C.EsActivo = 1
|
|
))
|
|
ORDER BY E.Orden, E.Etapa, TD.TipoDocumento;
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SELECT
|
|
@ErrorMostrar = 'No fue posible procesar los documentos; contacte a Sistemas.',
|
|
@ErrorTipo = 1,
|
|
@Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Tramites_DocumentoSolicitudFraccionamientoList'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE dbo.PA_Tramites_DocumentoSolicitudUploadContextGet
|
|
@CveFraccionamiento int,
|
|
@CveSolicitud int = NULL,
|
|
@CveTipoDocumento int,
|
|
@CveFraccionamientoEtapa int = NULL,
|
|
@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 @CveCliente int;
|
|
DECLARE @EsDesarrollador bit;
|
|
SELECT @CveCliente = F.CveCliente
|
|
FROM dbo.Fraccionamientos AS F
|
|
WHERE F.CveFraccionamiento = @CveFraccionamiento;
|
|
SELECT @EsDesarrollador = CASE WHEN U.CveRol = 3 THEN 1 ELSE 0 END
|
|
FROM dbo.Sis_Usuarios AS U
|
|
INNER JOIN dbo.Sis_Roles AS R ON R.CveRol = U.CveRol AND R.Activo = 1
|
|
WHERE U.CveUsuario = @CveUsuarioEjecuta AND U.Activo = 1;
|
|
IF @CveCliente IS NULL OR @EsDesarrollador IS NULL OR
|
|
(
|
|
@EsDesarrollador = 1 AND NOT EXISTS
|
|
(
|
|
SELECT 1 FROM dbo.Sis_UsuariosClientes AS UC
|
|
INNER JOIN dbo.Clientes AS C ON C.CveCliente = UC.CveCliente AND C.Estatus = 1
|
|
WHERE UC.CveUsuario = @CveUsuarioEjecuta
|
|
AND UC.CveCliente = @CveCliente AND UC.Activo = 1
|
|
)
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'No tiene acceso al fraccionamiento seleccionado.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
SET @CveSolicitud = NULLIF(@CveSolicitud, 0);
|
|
IF @CveSolicitud IS NOT NULL
|
|
BEGIN
|
|
SELECT @CveFraccionamientoEtapa = S.CveFraccionamientoEtapa
|
|
FROM dbo.Tra_Solicitudes AS S
|
|
WHERE S.CveSolicitud = @CveSolicitud AND S.CveFraccionamiento = @CveFraccionamiento
|
|
AND (@CveFraccionamientoEtapa IS NULL OR S.CveFraccionamientoEtapa = @CveFraccionamientoEtapa);
|
|
IF NOT EXISTS
|
|
(
|
|
SELECT 1 FROM dbo.Tra_Solicitudes
|
|
WHERE CveSolicitud = @CveSolicitud AND CveFraccionamiento = @CveFraccionamiento
|
|
AND CveFraccionamientoEtapa = @CveFraccionamientoEtapa
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'La solicitud no pertenece a la etapa seleccionada.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
END;
|
|
IF NOT EXISTS
|
|
(
|
|
SELECT 1 FROM dbo.FraccionamientosEtapas
|
|
WHERE CveFraccionamientoEtapa = @CveFraccionamientoEtapa
|
|
AND CveFraccionamiento = @CveFraccionamiento
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'Seleccione una etapa del fraccionamiento.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
;WITH Configuracion AS
|
|
(
|
|
SELECT S.CveSolicitud, S.CveFraccionamientoEtapa, G.CveTipoDocumento,
|
|
COALESCE(P.EsRequerido, G.EsRequerido) AS EsRequerido,
|
|
COALESCE(P.EsCliente, G.EsCliente) AS EsCliente,
|
|
COALESCE(P.TieneVigencia, G.TieneVigencia) AS TieneVigencia,
|
|
COALESCE(P.EsActivo, G.EsActivo) AS EsActivo,
|
|
E.EsFinal, S.CveTipoTramite, S.Folio
|
|
FROM dbo.Tra_Solicitudes AS S
|
|
INNER JOIN dbo.Tra_EstatusSolicitud AS E ON E.CveEstatusSolicitud = S.CveEstatusSolicitud
|
|
INNER JOIN dbo.Tra_TiposTramiteDocumento AS G ON G.CveTipoTramite = S.CveTipoTramite
|
|
LEFT JOIN dbo.Tra_SolicitudDocumentoConfiguracion AS P ON P.CveSolicitud = S.CveSolicitud
|
|
AND P.CveTipoDocumento = G.CveTipoDocumento
|
|
UNION ALL
|
|
SELECT P.CveSolicitud, P.CveFraccionamientoEtapa, P.CveTipoDocumento,
|
|
P.EsRequerido, P.EsCliente, P.TieneVigencia, P.EsActivo,
|
|
ISNULL(E.EsFinal, 0), S.CveTipoTramite, S.Folio
|
|
FROM dbo.Tra_SolicitudDocumentoConfiguracion AS P
|
|
LEFT JOIN dbo.Tra_Solicitudes AS S ON S.CveSolicitud = P.CveSolicitud
|
|
LEFT JOIN dbo.Tra_EstatusSolicitud AS E ON E.CveEstatusSolicitud = S.CveEstatusSolicitud
|
|
WHERE P.CveSolicitud IS NULL OR NOT EXISTS
|
|
(
|
|
SELECT 1 FROM dbo.Tra_TiposTramiteDocumento AS G
|
|
WHERE G.CveTipoTramite = S.CveTipoTramite
|
|
AND G.CveTipoDocumento = P.CveTipoDocumento
|
|
)
|
|
),
|
|
Requisitos AS
|
|
(
|
|
SELECT C.CveFraccionamientoEtapa, C.CveTipoDocumento,
|
|
CONVERT(bit, MAX(CASE WHEN C.EsActivo = 1 AND C.EsRequerido = 1
|
|
AND C.EsFinal = 0 AND T.EsActivo = 1 THEN 1 ELSE 0 END)) AS EsRequerido,
|
|
CONVERT(bit, MAX(CONVERT(int, C.EsCliente))) AS EsCliente,
|
|
CONVERT(bit, MAX(CONVERT(int, C.TieneVigencia))) AS TieneVigencia,
|
|
CONVERT(bit, MAX(CASE WHEN C.EsActivo = 1 AND C.EsFinal = 0 THEN 1 ELSE 0 END)) AS TieneContextoAbierto
|
|
FROM Configuracion AS C
|
|
INNER JOIN dbo.Tra_TiposDocumento AS T ON T.CveTipoDocumento = C.CveTipoDocumento
|
|
GROUP BY C.CveFraccionamientoEtapa, C.CveTipoDocumento
|
|
)
|
|
SELECT
|
|
ISNULL(D.CveDocumentoSolicitud, 0) AS CveDocumentoSolicitud,
|
|
ISNULL(@CveSolicitud, 0) AS CveSolicitud, S.Folio,
|
|
@CveCliente AS CveCliente, E.CveFraccionamiento, E.CveFraccionamientoEtapa, E.Etapa,
|
|
ISNULL(S.CveTipoTramite, 0) AS CveTipoTramite, T.TipoTramite,
|
|
TD.CveTipoDocumento, COALESCE(NULLIF(TD.Descripcion, ''), TD.TipoDocumento) AS TipoDocumento,
|
|
ISNULL(R.EsCliente, CONVERT(bit, 1)) AS EsCliente,
|
|
ISNULL(R.TieneVigencia, CONVERT(bit, 0)) AS TieneVigencia,
|
|
CONVERT(bit, CASE WHEN R.TieneContextoAbierto = 1 THEN 0 ELSE 1 END) AS EsFinalSolicitud,
|
|
TD.ExtensionesPermitidas, TD.TamanoMaximoMb,
|
|
D.FechaDocumento AS FechaDocumentoAnterior, D.FechaVencimiento AS FechaVencimientoAnterior,
|
|
D.NombreArchivo AS NombreArchivoAnterior, D.NombreArchivoFisico AS NombreArchivoFisicoAnterior,
|
|
D.RutaArchivo AS RutaArchivoAnterior, D.ContentType AS ContentTypeAnterior,
|
|
D.TamanoBytes AS TamanoBytesAnterior, D.ComentarioCliente AS ComentarioClienteAnterior,
|
|
D.ComentarioAdministrativo AS ComentarioAdministrativoAnterior,
|
|
D.EsAprobado AS EsAprobadoAnterior, D.CveUsuarioRevisa AS CveUsuarioRevisaAnterior,
|
|
D.FechaRevision AS FechaRevisionAnterior
|
|
FROM dbo.FraccionamientosEtapas AS E
|
|
CROSS JOIN dbo.Tra_TiposDocumento AS TD
|
|
LEFT JOIN Requisitos AS R ON R.CveFraccionamientoEtapa = E.CveFraccionamientoEtapa
|
|
AND R.CveTipoDocumento = TD.CveTipoDocumento
|
|
LEFT JOIN dbo.Tra_Solicitudes AS S ON S.CveSolicitud = @CveSolicitud
|
|
LEFT JOIN dbo.Tra_TiposTramite AS T ON T.CveTipoTramite = S.CveTipoTramite
|
|
LEFT JOIN dbo.Tra_DocumentosSolicitud AS D ON D.CveFraccionamientoEtapa = E.CveFraccionamientoEtapa
|
|
AND D.CveTipoDocumento = TD.CveTipoDocumento AND D.EsActivo = 1
|
|
WHERE E.CveFraccionamientoEtapa = @CveFraccionamientoEtapa
|
|
AND TD.CveTipoDocumento = @CveTipoDocumento
|
|
AND TD.EsActivo = 1
|
|
AND (R.CveTipoDocumento IS NOT NULL OR D.CveDocumentoSolicitud IS NOT NULL);
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SELECT
|
|
@ErrorMostrar = 'No fue posible procesar los documentos; contacte a Sistemas.',
|
|
@ErrorTipo = 1,
|
|
@Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Tramites_DocumentoSolicitudUploadContextGet'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE dbo.PA_Tramites_DocumentoEtapaVencimientoActualizar
|
|
@CveFraccionamientoEtapa int = NULL,
|
|
@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 @Hoy date = CONVERT(date, SYSDATETIMEOFFSET() AT TIME ZONE 'US Mountain Standard Time');
|
|
;WITH Configuracion AS
|
|
(
|
|
SELECT S.CveSolicitud, S.CveFraccionamientoEtapa, G.CveTipoDocumento,
|
|
COALESCE(P.EsRequerido, G.EsRequerido) AS EsRequerido,
|
|
COALESCE(P.EsCliente, G.EsCliente) AS EsCliente,
|
|
COALESCE(P.TieneVigencia, G.TieneVigencia) AS TieneVigencia,
|
|
COALESCE(P.EsActivo, G.EsActivo) AS EsActivo,
|
|
E.EsFinal, S.CveTipoTramite, S.Folio
|
|
FROM dbo.Tra_Solicitudes AS S
|
|
INNER JOIN dbo.Tra_EstatusSolicitud AS E ON E.CveEstatusSolicitud = S.CveEstatusSolicitud
|
|
INNER JOIN dbo.Tra_TiposTramiteDocumento AS G ON G.CveTipoTramite = S.CveTipoTramite
|
|
LEFT JOIN dbo.Tra_SolicitudDocumentoConfiguracion AS P ON P.CveSolicitud = S.CveSolicitud
|
|
AND P.CveTipoDocumento = G.CveTipoDocumento
|
|
UNION ALL
|
|
SELECT P.CveSolicitud, P.CveFraccionamientoEtapa, P.CveTipoDocumento,
|
|
P.EsRequerido, P.EsCliente, P.TieneVigencia, P.EsActivo,
|
|
ISNULL(E.EsFinal, 0), S.CveTipoTramite, S.Folio
|
|
FROM dbo.Tra_SolicitudDocumentoConfiguracion AS P
|
|
LEFT JOIN dbo.Tra_Solicitudes AS S ON S.CveSolicitud = P.CveSolicitud
|
|
LEFT JOIN dbo.Tra_EstatusSolicitud AS E ON E.CveEstatusSolicitud = S.CveEstatusSolicitud
|
|
WHERE P.CveSolicitud IS NULL OR NOT EXISTS
|
|
(
|
|
SELECT 1 FROM dbo.Tra_TiposTramiteDocumento AS G
|
|
WHERE G.CveTipoTramite = S.CveTipoTramite
|
|
AND G.CveTipoDocumento = P.CveTipoDocumento
|
|
)
|
|
),
|
|
Requisitos AS
|
|
(
|
|
SELECT C.CveFraccionamientoEtapa, C.CveTipoDocumento,
|
|
CONVERT(bit, MAX(CASE WHEN C.EsActivo = 1 AND C.EsRequerido = 1
|
|
AND C.EsFinal = 0 AND T.EsActivo = 1 THEN 1 ELSE 0 END)) AS EsRequerido,
|
|
CONVERT(bit, MAX(CONVERT(int, C.EsCliente))) AS EsCliente,
|
|
CONVERT(bit, MAX(CONVERT(int, C.TieneVigencia))) AS TieneVigencia,
|
|
CONVERT(bit, MAX(CASE WHEN C.EsActivo = 1 AND C.EsFinal = 0 THEN 1 ELSE 0 END)) AS TieneContextoAbierto
|
|
FROM Configuracion AS C
|
|
INNER JOIN dbo.Tra_TiposDocumento AS T ON T.CveTipoDocumento = C.CveTipoDocumento
|
|
GROUP BY C.CveFraccionamientoEtapa, C.CveTipoDocumento
|
|
)
|
|
UPDATE D
|
|
SET Vencido = CONVERT(bit, CASE WHEN D.EsActivo = 1
|
|
AND D.FechaVencimiento < @Hoy AND R.EsRequerido = 1 THEN 1 ELSE 0 END)
|
|
FROM dbo.Tra_DocumentosSolicitud AS D
|
|
LEFT JOIN Requisitos AS R ON R.CveFraccionamientoEtapa = D.CveFraccionamientoEtapa
|
|
AND R.CveTipoDocumento = D.CveTipoDocumento
|
|
WHERE @CveFraccionamientoEtapa IS NULL OR D.CveFraccionamientoEtapa = @CveFraccionamientoEtapa;
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SELECT
|
|
@ErrorMostrar = 'No fue posible procesar los documentos; contacte a Sistemas.',
|
|
@ErrorTipo = 1,
|
|
@Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Tramites_DocumentoEtapaVencimientoActualizar'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE dbo.PA_Tramites_DocumentoSolicitudSave
|
|
@CveFraccionamiento int,
|
|
@CveSolicitud int = NULL,
|
|
@CveTipoDocumento int,
|
|
@NombreArchivo varchar(255),
|
|
@NombreArchivoFisico varchar(255),
|
|
@RutaArchivo varchar(1000),
|
|
@ContentType varchar(100) = NULL,
|
|
@TamanoBytes bigint = NULL,
|
|
@ComentarioCliente varchar(1000) = NULL,
|
|
@FechaDocumento date = NULL,
|
|
@FechaVencimiento date = NULL,
|
|
@ActualizarFechas bit = 0,
|
|
@CveFraccionamientoEtapa int = NULL,
|
|
@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 @CveCliente int;
|
|
DECLARE @EsDesarrollador bit;
|
|
SELECT @CveCliente = F.CveCliente
|
|
FROM dbo.Fraccionamientos AS F
|
|
WHERE F.CveFraccionamiento = @CveFraccionamiento;
|
|
SELECT @EsDesarrollador = CASE WHEN U.CveRol = 3 THEN 1 ELSE 0 END
|
|
FROM dbo.Sis_Usuarios AS U
|
|
INNER JOIN dbo.Sis_Roles AS R ON R.CveRol = U.CveRol AND R.Activo = 1
|
|
WHERE U.CveUsuario = @CveUsuarioEjecuta AND U.Activo = 1;
|
|
IF @CveCliente IS NULL OR @EsDesarrollador IS NULL OR
|
|
(
|
|
@EsDesarrollador = 1 AND NOT EXISTS
|
|
(
|
|
SELECT 1 FROM dbo.Sis_UsuariosClientes AS UC
|
|
INNER JOIN dbo.Clientes AS C ON C.CveCliente = UC.CveCliente AND C.Estatus = 1
|
|
WHERE UC.CveUsuario = @CveUsuarioEjecuta
|
|
AND UC.CveCliente = @CveCliente AND UC.Activo = 1
|
|
)
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'No tiene acceso al fraccionamiento seleccionado.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
SET @CveSolicitud = NULLIF(@CveSolicitud, 0);
|
|
IF @CveSolicitud IS NOT NULL
|
|
BEGIN
|
|
SELECT @CveFraccionamientoEtapa = S.CveFraccionamientoEtapa
|
|
FROM dbo.Tra_Solicitudes AS S
|
|
WHERE S.CveSolicitud = @CveSolicitud AND S.CveFraccionamiento = @CveFraccionamiento
|
|
AND (@CveFraccionamientoEtapa IS NULL OR S.CveFraccionamientoEtapa = @CveFraccionamientoEtapa);
|
|
IF NOT EXISTS
|
|
(
|
|
SELECT 1 FROM dbo.Tra_Solicitudes
|
|
WHERE CveSolicitud = @CveSolicitud AND CveFraccionamiento = @CveFraccionamiento
|
|
AND CveFraccionamientoEtapa = @CveFraccionamientoEtapa
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'La solicitud no pertenece a la etapa seleccionada.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
END;
|
|
IF NOT EXISTS
|
|
(
|
|
SELECT 1 FROM dbo.FraccionamientosEtapas
|
|
WHERE CveFraccionamientoEtapa = @CveFraccionamientoEtapa
|
|
AND CveFraccionamiento = @CveFraccionamiento
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'Seleccione una etapa del fraccionamiento.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
IF NULLIF(LTRIM(RTRIM(@NombreArchivo)), '') IS NULL
|
|
OR NULLIF(LTRIM(RTRIM(@RutaArchivo)), '') IS NULL
|
|
OR NULLIF(LTRIM(RTRIM(@NombreArchivoFisico)), '') IS NULL
|
|
BEGIN
|
|
SET @ErrorMostrar = 'Los datos del archivo están incompletos.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
SELECT D.* INTO #Anterior
|
|
FROM dbo.Tra_DocumentosSolicitud AS D WITH (UPDLOCK, HOLDLOCK)
|
|
WHERE D.CveFraccionamientoEtapa = @CveFraccionamientoEtapa
|
|
AND D.CveTipoDocumento = @CveTipoDocumento AND D.EsActivo = 1;
|
|
|
|
IF @ActualizarFechas = 0
|
|
BEGIN
|
|
SELECT @FechaDocumento = FechaDocumento,
|
|
@FechaVencimiento = FechaVencimiento
|
|
FROM #Anterior;
|
|
END;
|
|
|
|
DECLARE @CveDocumento int;
|
|
IF @CveTipoDocumento = 2 AND EXISTS (SELECT 1 FROM #Anterior)
|
|
BEGIN
|
|
-- GIS conserva su reemplazo físico establecido; no inventa versiones del mismo archivo.
|
|
SELECT @CveDocumento = CveDocumentoSolicitud FROM #Anterior;
|
|
UPDATE dbo.Tra_DocumentosSolicitud
|
|
SET NombreArchivo = @NombreArchivo,
|
|
NombreArchivoFisico = @NombreArchivoFisico,
|
|
RutaArchivo = @RutaArchivo,
|
|
ContentType = @ContentType,
|
|
TamanoBytes = @TamanoBytes,
|
|
ComentarioCliente = @ComentarioCliente,
|
|
EsAprobado = NULL,
|
|
ComentarioAdministrativo = NULL,
|
|
CveUsuarioRevisa = NULL,
|
|
FechaRevision = NULL,
|
|
CveUsuarioCarga = @CveUsuarioEjecuta,
|
|
FechaDocumento = @FechaDocumento,
|
|
FechaVencimiento = @FechaVencimiento,
|
|
Vencido = 0
|
|
WHERE CveDocumentoSolicitud = @CveDocumento;
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
-- La renovación crea una versión; nunca borra la revisión ni el archivo anterior.
|
|
UPDATE dbo.Tra_DocumentosSolicitud
|
|
SET EsActivo = 0, Vencido = 0
|
|
WHERE CveFraccionamientoEtapa = @CveFraccionamientoEtapa
|
|
AND CveTipoDocumento = @CveTipoDocumento AND EsActivo = 1;
|
|
|
|
INSERT INTO dbo.Tra_DocumentosSolicitud
|
|
(
|
|
CveSolicitud, CveFraccionamientoEtapa, CveTipoDocumento,
|
|
NombreArchivo, NombreArchivoFisico, RutaArchivo, ContentType, TamanoBytes,
|
|
ComentarioCliente, CveUsuarioCarga, FechaDocumento, FechaVencimiento, EsActivo, Vencido
|
|
)
|
|
VALUES
|
|
(
|
|
@CveSolicitud, @CveFraccionamientoEtapa, @CveTipoDocumento,
|
|
@NombreArchivo, @NombreArchivoFisico, @RutaArchivo, @ContentType, @TamanoBytes,
|
|
@ComentarioCliente, @CveUsuarioEjecuta, @FechaDocumento, @FechaVencimiento, 1, 0
|
|
);
|
|
SET @CveDocumento = CONVERT(int, SCOPE_IDENTITY());
|
|
END;
|
|
SELECT D.CveDocumentoSolicitud, ISNULL(D.CveSolicitud, 0) AS CveSolicitud,
|
|
S.Folio, F.CveCliente, E.CveFraccionamiento, E.CveFraccionamientoEtapa, E.Etapa,
|
|
ISNULL(S.CveTipoTramite, 0) AS CveTipoTramite, T.TipoTramite,
|
|
D.CveTipoDocumento, COALESCE(NULLIF(TD.Descripcion, ''), TD.TipoDocumento) AS TipoDocumento,
|
|
D.NombreArchivo, D.NombreArchivoFisico, D.RutaArchivo, D.ContentType, D.TamanoBytes,
|
|
D.FechaDocumento, D.FechaVencimiento, D.ComentarioCliente, D.ComentarioAdministrativo,
|
|
D.EsAprobado, D.CveUsuarioRevisa, D.FechaRevision,
|
|
CONVERT(bit, CASE WHEN A.CveDocumentoSolicitud IS NULL THEN 1 ELSE 0 END) AS EsNuevo,
|
|
A.NombreArchivo AS NombreArchivoAnterior,
|
|
A.NombreArchivoFisico AS NombreArchivoFisicoAnterior,
|
|
A.RutaArchivo AS RutaArchivoAnterior,
|
|
A.ContentType AS ContentTypeAnterior,
|
|
A.TamanoBytes AS TamanoBytesAnterior,
|
|
A.ComentarioCliente AS ComentarioClienteAnterior,
|
|
A.ComentarioAdministrativo AS ComentarioAdministrativoAnterior,
|
|
A.EsAprobado AS EsAprobadoAnterior,
|
|
A.CveUsuarioRevisa AS CveUsuarioRevisaAnterior,
|
|
A.FechaRevision AS FechaRevisionAnterior,
|
|
A.FechaDocumento AS FechaDocumentoAnterior,
|
|
A.FechaVencimiento AS FechaVencimientoAnterior
|
|
FROM dbo.Tra_DocumentosSolicitud AS D
|
|
INNER JOIN dbo.FraccionamientosEtapas AS E ON E.CveFraccionamientoEtapa = D.CveFraccionamientoEtapa
|
|
INNER JOIN dbo.Fraccionamientos AS F ON F.CveFraccionamiento = E.CveFraccionamiento
|
|
INNER JOIN dbo.Tra_TiposDocumento AS TD ON TD.CveTipoDocumento = D.CveTipoDocumento
|
|
LEFT JOIN dbo.Tra_Solicitudes AS S ON S.CveSolicitud = D.CveSolicitud
|
|
LEFT JOIN dbo.Tra_TiposTramite AS T ON T.CveTipoTramite = S.CveTipoTramite
|
|
LEFT JOIN #Anterior AS A ON A.CveFraccionamientoEtapa = D.CveFraccionamientoEtapa
|
|
AND A.CveTipoDocumento = D.CveTipoDocumento
|
|
WHERE D.CveDocumentoSolicitud = @CveDocumento;
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SELECT
|
|
@ErrorMostrar = 'No fue posible procesar los documentos; contacte a Sistemas.',
|
|
@ErrorTipo = 1,
|
|
@Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Tramites_DocumentoSolicitudSave'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE dbo.PA_Tramites_DocumentoSolicitudDownloadGet
|
|
@CveFraccionamiento int,
|
|
@CveDocumentoSolicitud 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 @CveCliente int;
|
|
DECLARE @EsDesarrollador bit;
|
|
SELECT @CveCliente = F.CveCliente
|
|
FROM dbo.Fraccionamientos AS F
|
|
WHERE F.CveFraccionamiento = @CveFraccionamiento;
|
|
SELECT @EsDesarrollador = CASE WHEN U.CveRol = 3 THEN 1 ELSE 0 END
|
|
FROM dbo.Sis_Usuarios AS U
|
|
INNER JOIN dbo.Sis_Roles AS R ON R.CveRol = U.CveRol AND R.Activo = 1
|
|
WHERE U.CveUsuario = @CveUsuarioEjecuta AND U.Activo = 1;
|
|
IF @CveCliente IS NULL OR @EsDesarrollador IS NULL OR
|
|
(
|
|
@EsDesarrollador = 1 AND NOT EXISTS
|
|
(
|
|
SELECT 1 FROM dbo.Sis_UsuariosClientes AS UC
|
|
INNER JOIN dbo.Clientes AS C ON C.CveCliente = UC.CveCliente AND C.Estatus = 1
|
|
WHERE UC.CveUsuario = @CveUsuarioEjecuta
|
|
AND UC.CveCliente = @CveCliente AND UC.Activo = 1
|
|
)
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'No tiene acceso al fraccionamiento seleccionado.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
SELECT D.CveDocumentoSolicitud, ISNULL(D.CveSolicitud, 0) AS CveSolicitud,
|
|
S.Folio, F.CveCliente, E.CveFraccionamiento, E.CveFraccionamientoEtapa, E.Etapa,
|
|
ISNULL(S.CveTipoTramite, 0) AS CveTipoTramite, T.TipoTramite,
|
|
D.CveTipoDocumento, COALESCE(NULLIF(TD.Descripcion, ''), TD.TipoDocumento) AS TipoDocumento,
|
|
D.NombreArchivo, D.NombreArchivoFisico, D.RutaArchivo, D.ContentType, D.TamanoBytes
|
|
FROM dbo.Tra_DocumentosSolicitud AS D
|
|
INNER JOIN dbo.FraccionamientosEtapas AS E ON E.CveFraccionamientoEtapa = D.CveFraccionamientoEtapa
|
|
INNER JOIN dbo.Fraccionamientos AS F ON F.CveFraccionamiento = E.CveFraccionamiento
|
|
INNER JOIN dbo.Tra_TiposDocumento AS TD ON TD.CveTipoDocumento = D.CveTipoDocumento
|
|
LEFT JOIN dbo.Tra_Solicitudes AS S ON S.CveSolicitud = D.CveSolicitud
|
|
LEFT JOIN dbo.Tra_TiposTramite AS T ON T.CveTipoTramite = S.CveTipoTramite
|
|
WHERE D.CveDocumentoSolicitud = @CveDocumentoSolicitud
|
|
AND E.CveFraccionamiento = @CveFraccionamiento;
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SELECT
|
|
@ErrorMostrar = 'No fue posible procesar los documentos; contacte a Sistemas.',
|
|
@ErrorTipo = 1,
|
|
@Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Tramites_DocumentoSolicitudDownloadGet'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE dbo.PA_Tramites_DocumentoSolicitudDelete
|
|
@CveFraccionamiento int,
|
|
@CveDocumentoSolicitud 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 @CveCliente int;
|
|
DECLARE @EsDesarrollador bit;
|
|
SELECT @CveCliente = F.CveCliente
|
|
FROM dbo.Fraccionamientos AS F
|
|
WHERE F.CveFraccionamiento = @CveFraccionamiento;
|
|
SELECT @EsDesarrollador = CASE WHEN U.CveRol = 3 THEN 1 ELSE 0 END
|
|
FROM dbo.Sis_Usuarios AS U
|
|
INNER JOIN dbo.Sis_Roles AS R ON R.CveRol = U.CveRol AND R.Activo = 1
|
|
WHERE U.CveUsuario = @CveUsuarioEjecuta AND U.Activo = 1;
|
|
IF @CveCliente IS NULL OR @EsDesarrollador IS NULL OR
|
|
(
|
|
@EsDesarrollador = 1 AND NOT EXISTS
|
|
(
|
|
SELECT 1 FROM dbo.Sis_UsuariosClientes AS UC
|
|
INNER JOIN dbo.Clientes AS C ON C.CveCliente = UC.CveCliente AND C.Estatus = 1
|
|
WHERE UC.CveUsuario = @CveUsuarioEjecuta
|
|
AND UC.CveCliente = @CveCliente AND UC.Activo = 1
|
|
)
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'No tiene acceso al fraccionamiento seleccionado.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
SELECT D.CveDocumentoSolicitud, ISNULL(D.CveSolicitud, 0) AS CveSolicitud,
|
|
S.Folio, F.CveCliente, E.CveFraccionamiento, E.CveFraccionamientoEtapa, E.Etapa,
|
|
ISNULL(S.CveTipoTramite, 0) AS CveTipoTramite, T.TipoTramite,
|
|
D.CveTipoDocumento, COALESCE(NULLIF(TD.Descripcion, ''), TD.TipoDocumento) AS TipoDocumento,
|
|
D.NombreArchivo, D.NombreArchivoFisico, D.RutaArchivo, D.ContentType, D.TamanoBytes
|
|
INTO #DocumentoEliminar
|
|
FROM dbo.Tra_DocumentosSolicitud AS D
|
|
INNER JOIN dbo.FraccionamientosEtapas AS E ON E.CveFraccionamientoEtapa = D.CveFraccionamientoEtapa
|
|
INNER JOIN dbo.Fraccionamientos AS F ON F.CveFraccionamiento = E.CveFraccionamiento
|
|
INNER JOIN dbo.Tra_TiposDocumento AS TD ON TD.CveTipoDocumento = D.CveTipoDocumento
|
|
LEFT JOIN dbo.Tra_Solicitudes AS S ON S.CveSolicitud = D.CveSolicitud
|
|
LEFT JOIN dbo.Tra_TiposTramite AS T ON T.CveTipoTramite = S.CveTipoTramite
|
|
WHERE D.CveDocumentoSolicitud = @CveDocumentoSolicitud
|
|
AND E.CveFraccionamiento = @CveFraccionamiento AND D.EsActivo = 1;
|
|
DELETE D
|
|
FROM dbo.Tra_DocumentosSolicitud AS D
|
|
INNER JOIN #DocumentoEliminar AS E ON E.CveDocumentoSolicitud = D.CveDocumentoSolicitud;
|
|
SELECT * FROM #DocumentoEliminar;
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SELECT
|
|
@ErrorMostrar = 'No fue posible procesar los documentos; contacte a Sistemas.',
|
|
@ErrorTipo = 1,
|
|
@Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Tramites_DocumentoSolicitudDelete'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE dbo.PA_Tramites_DocumentoSolicitudReview
|
|
@CveFraccionamiento int,
|
|
@CveDocumentoSolicitud int,
|
|
@Aprobar bit,
|
|
@Nota varchar(1000) = NULL,
|
|
@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 @CveCliente int;
|
|
DECLARE @EsDesarrollador bit;
|
|
SELECT @CveCliente = F.CveCliente
|
|
FROM dbo.Fraccionamientos AS F
|
|
WHERE F.CveFraccionamiento = @CveFraccionamiento;
|
|
SELECT @EsDesarrollador = CASE WHEN U.CveRol = 3 THEN 1 ELSE 0 END
|
|
FROM dbo.Sis_Usuarios AS U
|
|
INNER JOIN dbo.Sis_Roles AS R ON R.CveRol = U.CveRol AND R.Activo = 1
|
|
WHERE U.CveUsuario = @CveUsuarioEjecuta AND U.Activo = 1;
|
|
IF @CveCliente IS NULL OR @EsDesarrollador IS NULL OR
|
|
(
|
|
@EsDesarrollador = 1 AND NOT EXISTS
|
|
(
|
|
SELECT 1 FROM dbo.Sis_UsuariosClientes AS UC
|
|
INNER JOIN dbo.Clientes AS C ON C.CveCliente = UC.CveCliente AND C.Estatus = 1
|
|
WHERE UC.CveUsuario = @CveUsuarioEjecuta
|
|
AND UC.CveCliente = @CveCliente AND UC.Activo = 1
|
|
)
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'No tiene acceso al fraccionamiento seleccionado.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
IF @EsDesarrollador = 1
|
|
BEGIN
|
|
SET @ErrorMostrar = 'La revisión corresponde a Agua de Hermosillo.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
SET @Nota = NULLIF(LTRIM(RTRIM(@Nota)), '');
|
|
IF @Aprobar = 0 AND @Nota IS NULL
|
|
BEGIN
|
|
SET @ErrorMostrar = 'Capture el motivo del rechazo.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
SELECT D.* INTO #Anterior
|
|
FROM dbo.Tra_DocumentosSolicitud AS D WITH (UPDLOCK, HOLDLOCK)
|
|
INNER JOIN dbo.FraccionamientosEtapas AS E ON E.CveFraccionamientoEtapa = D.CveFraccionamientoEtapa
|
|
WHERE D.CveDocumentoSolicitud = @CveDocumentoSolicitud
|
|
AND E.CveFraccionamiento = @CveFraccionamiento AND D.EsActivo = 1;
|
|
IF NOT EXISTS (SELECT 1 FROM #Anterior)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'El documento ya no es la versión vigente.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
UPDATE dbo.Tra_DocumentosSolicitud
|
|
SET EsAprobado = @Aprobar,
|
|
ComentarioAdministrativo = CASE WHEN @Aprobar = 0 THEN @Nota ELSE NULL END,
|
|
CveUsuarioRevisa = @CveUsuarioEjecuta,
|
|
FechaRevision = GETDATE()
|
|
WHERE CveDocumentoSolicitud = @CveDocumentoSolicitud;
|
|
SELECT D.CveDocumentoSolicitud, ISNULL(D.CveSolicitud, 0) AS CveSolicitud,
|
|
S.Folio, F.CveCliente, E.CveFraccionamiento, E.CveFraccionamientoEtapa, E.Etapa,
|
|
ISNULL(S.CveTipoTramite, 0) AS CveTipoTramite, T.TipoTramite,
|
|
D.CveTipoDocumento, COALESCE(NULLIF(TD.Descripcion, ''), TD.TipoDocumento) AS TipoDocumento,
|
|
D.NombreArchivo, D.NombreArchivoFisico, D.RutaArchivo, D.ContentType, D.TamanoBytes,
|
|
D.EsAprobado, D.ComentarioAdministrativo, D.CveUsuarioRevisa, D.FechaRevision,
|
|
A.EsAprobado AS EsAprobadoAnterior,
|
|
A.ComentarioAdministrativo AS ComentarioAdministrativoAnterior,
|
|
A.CveUsuarioRevisa AS CveUsuarioRevisaAnterior,
|
|
A.FechaRevision AS FechaRevisionAnterior, CONVERT(bit, 1) AS HuboCambio
|
|
FROM dbo.Tra_DocumentosSolicitud AS D
|
|
INNER JOIN dbo.FraccionamientosEtapas AS E ON E.CveFraccionamientoEtapa = D.CveFraccionamientoEtapa
|
|
INNER JOIN dbo.Fraccionamientos AS F ON F.CveFraccionamiento = E.CveFraccionamiento
|
|
INNER JOIN dbo.Tra_TiposDocumento AS TD ON TD.CveTipoDocumento = D.CveTipoDocumento
|
|
LEFT JOIN dbo.Tra_Solicitudes AS S ON S.CveSolicitud = D.CveSolicitud
|
|
LEFT JOIN dbo.Tra_TiposTramite AS T ON T.CveTipoTramite = S.CveTipoTramite
|
|
INNER JOIN #Anterior AS A ON A.CveDocumentoSolicitud = D.CveDocumentoSolicitud
|
|
WHERE D.CveDocumentoSolicitud = @CveDocumentoSolicitud;
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SELECT
|
|
@ErrorMostrar = 'No fue posible procesar los documentos; contacte a Sistemas.',
|
|
@ErrorTipo = 1,
|
|
@Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Tramites_DocumentoSolicitudReview'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE dbo.PA_Tramites_DocumentoSolicitudStageContextGet
|
|
@CveFraccionamientoEtapa int,
|
|
@CveTipoTramite int,
|
|
@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
|
|
DECLARE @CveFraccionamiento int;
|
|
SELECT @CveFraccionamiento = CveFraccionamiento
|
|
FROM dbo.FraccionamientosEtapas
|
|
WHERE CveFraccionamientoEtapa = @CveFraccionamientoEtapa;
|
|
EXEC dbo.PA_Tramites_DocumentoSolicitudUploadContextGet
|
|
@CveFraccionamiento = @CveFraccionamiento,
|
|
@CveFraccionamientoEtapa = @CveFraccionamientoEtapa,
|
|
@CveSolicitud = NULL,
|
|
@CveTipoDocumento = @CveTipoDocumento,
|
|
@CveUsuarioEjecuta = @CveUsuarioEjecuta,
|
|
@ErrorMostrar = @ErrorMostrar OUTPUT,
|
|
@ErrorTipo = @ErrorTipo OUTPUT,
|
|
@Return = @Return OUTPUT;
|
|
IF ISNULL(@Return, 0) = 0 RETURN;
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SELECT
|
|
@ErrorMostrar = 'No fue posible procesar los documentos; contacte a Sistemas.',
|
|
@ErrorTipo = 1,
|
|
@Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Tramites_DocumentoSolicitudStageContextGet'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE dbo.PA_Tramites_SolicitudDocumentoConfiguracionList
|
|
@CveFraccionamiento int,
|
|
@CveSolicitud int = NULL,
|
|
@CveFraccionamientoEtapa int = NULL,
|
|
@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 @CveCliente int;
|
|
DECLARE @EsDesarrollador bit;
|
|
SELECT @CveCliente = F.CveCliente
|
|
FROM dbo.Fraccionamientos AS F
|
|
WHERE F.CveFraccionamiento = @CveFraccionamiento;
|
|
SELECT @EsDesarrollador = CASE WHEN U.CveRol = 3 THEN 1 ELSE 0 END
|
|
FROM dbo.Sis_Usuarios AS U
|
|
INNER JOIN dbo.Sis_Roles AS R ON R.CveRol = U.CveRol AND R.Activo = 1
|
|
WHERE U.CveUsuario = @CveUsuarioEjecuta AND U.Activo = 1;
|
|
IF @CveCliente IS NULL OR @EsDesarrollador IS NULL OR
|
|
(
|
|
@EsDesarrollador = 1 AND NOT EXISTS
|
|
(
|
|
SELECT 1 FROM dbo.Sis_UsuariosClientes AS UC
|
|
INNER JOIN dbo.Clientes AS C ON C.CveCliente = UC.CveCliente AND C.Estatus = 1
|
|
WHERE UC.CveUsuario = @CveUsuarioEjecuta
|
|
AND UC.CveCliente = @CveCliente AND UC.Activo = 1
|
|
)
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'No tiene acceso al fraccionamiento seleccionado.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
SET @CveSolicitud = NULLIF(@CveSolicitud, 0);
|
|
IF @CveSolicitud IS NOT NULL
|
|
BEGIN
|
|
SELECT @CveFraccionamientoEtapa = S.CveFraccionamientoEtapa
|
|
FROM dbo.Tra_Solicitudes AS S
|
|
WHERE S.CveSolicitud = @CveSolicitud AND S.CveFraccionamiento = @CveFraccionamiento
|
|
AND (@CveFraccionamientoEtapa IS NULL OR S.CveFraccionamientoEtapa = @CveFraccionamientoEtapa);
|
|
IF NOT EXISTS
|
|
(
|
|
SELECT 1 FROM dbo.Tra_Solicitudes
|
|
WHERE CveSolicitud = @CveSolicitud AND CveFraccionamiento = @CveFraccionamiento
|
|
AND CveFraccionamientoEtapa = @CveFraccionamientoEtapa
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'La solicitud no pertenece a la etapa seleccionada.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
END;
|
|
IF NOT EXISTS
|
|
(
|
|
SELECT 1 FROM dbo.FraccionamientosEtapas
|
|
WHERE CveFraccionamientoEtapa = @CveFraccionamientoEtapa
|
|
AND CveFraccionamiento = @CveFraccionamiento
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'Seleccione una etapa del fraccionamiento.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
SELECT
|
|
ISNULL(@CveSolicitud, 0) AS CveSolicitud, @CveCliente AS CveCliente,
|
|
E.CveFraccionamiento, E.CveFraccionamientoEtapa, E.Etapa, S.Folio, T.TipoTramite,
|
|
ISNULL(ES.EsFinal, CONVERT(bit, 0)) AS EsFinalSolicitud,
|
|
D.CveTipoDocumento, COALESCE(NULLIF(D.Descripcion, ''), D.TipoDocumento) AS TipoDocumento,
|
|
COALESCE(P.EsRequerido, G.EsRequerido, CONVERT(bit, 0)) AS EsRequerido,
|
|
COALESCE(P.EsCliente, G.EsCliente, CONVERT(bit, 1)) AS EsCliente,
|
|
COALESCE(P.TieneVigencia, G.TieneVigencia, CONVERT(bit, 0)) AS TieneVigencia,
|
|
COALESCE(P.Orden, G.Orden, 0) AS Orden,
|
|
COALESCE(P.EsActivo, G.EsActivo, CONVERT(bit, 1)) AS EsActivo,
|
|
CONVERT(bit, CASE WHEN P.CveConfiguracionDocumento IS NULL THEN 0 ELSE 1 END) AS EsParticular,
|
|
CONVERT(bit, CASE WHEN P.CveConfiguracionDocumento IS NOT NULL
|
|
OR G.CveTipoDocumento IS NOT NULL THEN 1 ELSE 0 END) AS EsConfigurado
|
|
FROM dbo.FraccionamientosEtapas AS E
|
|
CROSS JOIN dbo.Tra_TiposDocumento AS D
|
|
LEFT JOIN dbo.Tra_Solicitudes AS S ON S.CveSolicitud = @CveSolicitud
|
|
LEFT JOIN dbo.Tra_TiposTramite AS T ON T.CveTipoTramite = S.CveTipoTramite
|
|
LEFT JOIN dbo.Tra_EstatusSolicitud AS ES ON ES.CveEstatusSolicitud = S.CveEstatusSolicitud
|
|
LEFT JOIN dbo.Tra_TiposTramiteDocumento AS G ON G.CveTipoTramite = S.CveTipoTramite
|
|
AND G.CveTipoDocumento = D.CveTipoDocumento
|
|
LEFT JOIN dbo.Tra_SolicitudDocumentoConfiguracion AS P ON P.CveFraccionamientoEtapa = E.CveFraccionamientoEtapa
|
|
AND ISNULL(P.CveSolicitud, 0) = ISNULL(@CveSolicitud, 0)
|
|
AND P.CveTipoDocumento = D.CveTipoDocumento
|
|
WHERE E.CveFraccionamientoEtapa = @CveFraccionamientoEtapa
|
|
AND (D.EsActivo = 1 OR P.CveConfiguracionDocumento IS NOT NULL OR G.CveTipoDocumento IS NOT NULL)
|
|
ORDER BY COALESCE(P.Orden, G.Orden, 0), D.TipoDocumento;
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SELECT
|
|
@ErrorMostrar = 'No fue posible procesar los documentos; contacte a Sistemas.',
|
|
@ErrorTipo = 1,
|
|
@Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Tramites_SolicitudDocumentoConfiguracionList'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE dbo.PA_Tramites_SolicitudDocumentoConfiguracionSave
|
|
@CveFraccionamiento int,
|
|
@CveSolicitud int = NULL,
|
|
@CveFraccionamientoEtapa int = NULL,
|
|
@CveTipoDocumento int,
|
|
@EsRequerido bit,
|
|
@EsCliente bit,
|
|
@TieneVigencia bit,
|
|
@Orden int,
|
|
@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
|
|
DECLARE @CveCliente int;
|
|
DECLARE @EsDesarrollador bit;
|
|
SELECT @CveCliente = F.CveCliente
|
|
FROM dbo.Fraccionamientos AS F
|
|
WHERE F.CveFraccionamiento = @CveFraccionamiento;
|
|
SELECT @EsDesarrollador = CASE WHEN U.CveRol = 3 THEN 1 ELSE 0 END
|
|
FROM dbo.Sis_Usuarios AS U
|
|
INNER JOIN dbo.Sis_Roles AS R ON R.CveRol = U.CveRol AND R.Activo = 1
|
|
WHERE U.CveUsuario = @CveUsuarioEjecuta AND U.Activo = 1;
|
|
IF @CveCliente IS NULL OR @EsDesarrollador IS NULL OR
|
|
(
|
|
@EsDesarrollador = 1 AND NOT EXISTS
|
|
(
|
|
SELECT 1 FROM dbo.Sis_UsuariosClientes AS UC
|
|
INNER JOIN dbo.Clientes AS C ON C.CveCliente = UC.CveCliente AND C.Estatus = 1
|
|
WHERE UC.CveUsuario = @CveUsuarioEjecuta
|
|
AND UC.CveCliente = @CveCliente AND UC.Activo = 1
|
|
)
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'No tiene acceso al fraccionamiento seleccionado.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
IF @EsDesarrollador = 1
|
|
BEGIN
|
|
SET @ErrorMostrar = 'Sólo Agua de Hermosillo puede solicitar o modificar requisitos.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
SET @CveSolicitud = NULLIF(@CveSolicitud, 0);
|
|
IF @CveSolicitud IS NOT NULL
|
|
BEGIN
|
|
SELECT @CveFraccionamientoEtapa = S.CveFraccionamientoEtapa
|
|
FROM dbo.Tra_Solicitudes AS S
|
|
WHERE S.CveSolicitud = @CveSolicitud AND S.CveFraccionamiento = @CveFraccionamiento
|
|
AND (@CveFraccionamientoEtapa IS NULL OR S.CveFraccionamientoEtapa = @CveFraccionamientoEtapa);
|
|
IF NOT EXISTS
|
|
(
|
|
SELECT 1 FROM dbo.Tra_Solicitudes
|
|
WHERE CveSolicitud = @CveSolicitud AND CveFraccionamiento = @CveFraccionamiento
|
|
AND CveFraccionamientoEtapa = @CveFraccionamientoEtapa
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'La solicitud no pertenece a la etapa seleccionada.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
END;
|
|
IF NOT EXISTS
|
|
(
|
|
SELECT 1 FROM dbo.FraccionamientosEtapas
|
|
WHERE CveFraccionamientoEtapa = @CveFraccionamientoEtapa
|
|
AND CveFraccionamiento = @CveFraccionamiento
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'Seleccione una etapa del fraccionamiento.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
IF EXISTS
|
|
(
|
|
SELECT 1 FROM dbo.Tra_SolicitudDocumentoConfiguracion WITH (UPDLOCK, HOLDLOCK)
|
|
WHERE CveFraccionamientoEtapa = @CveFraccionamientoEtapa
|
|
AND ISNULL(CveSolicitud, 0) = ISNULL(@CveSolicitud, 0)
|
|
AND CveTipoDocumento = @CveTipoDocumento
|
|
)
|
|
BEGIN
|
|
UPDATE dbo.Tra_SolicitudDocumentoConfiguracion
|
|
SET EsRequerido = @EsRequerido,
|
|
EsCliente = @EsCliente,
|
|
TieneVigencia = @TieneVigencia,
|
|
EsActivo = @EsActivo
|
|
WHERE CveFraccionamientoEtapa = @CveFraccionamientoEtapa
|
|
AND ISNULL(CveSolicitud, 0) = ISNULL(@CveSolicitud, 0)
|
|
AND CveTipoDocumento = @CveTipoDocumento;
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SELECT @Orden = ISNULL(MAX(Orden), 0) + 1
|
|
FROM dbo.Tra_SolicitudDocumentoConfiguracion WITH (UPDLOCK, HOLDLOCK)
|
|
WHERE CveFraccionamientoEtapa = @CveFraccionamientoEtapa;
|
|
INSERT INTO dbo.Tra_SolicitudDocumentoConfiguracion
|
|
(
|
|
CveFraccionamientoEtapa, CveSolicitud, CveTipoDocumento,
|
|
EsRequerido, EsCliente, TieneVigencia, Orden, EsActivo
|
|
)
|
|
VALUES
|
|
(
|
|
@CveFraccionamientoEtapa, @CveSolicitud, @CveTipoDocumento,
|
|
@EsRequerido, @EsCliente, @TieneVigencia, @Orden, @EsActivo
|
|
);
|
|
END;
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SELECT
|
|
@ErrorMostrar = 'No fue posible procesar los documentos; contacte a Sistemas.',
|
|
@ErrorTipo = 1,
|
|
@Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Tramites_SolicitudDocumentoConfiguracionSave'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE dbo.PA_Tramites_SolicitudDocumentoConfiguracionDelete
|
|
@CveFraccionamiento int,
|
|
@CveSolicitud int = NULL,
|
|
@CveFraccionamientoEtapa int = NULL,
|
|
@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
|
|
DECLARE @CveCliente int;
|
|
DECLARE @EsDesarrollador bit;
|
|
SELECT @CveCliente = F.CveCliente
|
|
FROM dbo.Fraccionamientos AS F
|
|
WHERE F.CveFraccionamiento = @CveFraccionamiento;
|
|
SELECT @EsDesarrollador = CASE WHEN U.CveRol = 3 THEN 1 ELSE 0 END
|
|
FROM dbo.Sis_Usuarios AS U
|
|
INNER JOIN dbo.Sis_Roles AS R ON R.CveRol = U.CveRol AND R.Activo = 1
|
|
WHERE U.CveUsuario = @CveUsuarioEjecuta AND U.Activo = 1;
|
|
IF @CveCliente IS NULL OR @EsDesarrollador IS NULL OR
|
|
(
|
|
@EsDesarrollador = 1 AND NOT EXISTS
|
|
(
|
|
SELECT 1 FROM dbo.Sis_UsuariosClientes AS UC
|
|
INNER JOIN dbo.Clientes AS C ON C.CveCliente = UC.CveCliente AND C.Estatus = 1
|
|
WHERE UC.CveUsuario = @CveUsuarioEjecuta
|
|
AND UC.CveCliente = @CveCliente AND UC.Activo = 1
|
|
)
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'No tiene acceso al fraccionamiento seleccionado.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
IF @EsDesarrollador = 1
|
|
BEGIN
|
|
SET @ErrorMostrar = 'Sólo Agua de Hermosillo puede solicitar o modificar requisitos.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
SET @CveSolicitud = NULLIF(@CveSolicitud, 0);
|
|
IF @CveSolicitud IS NOT NULL
|
|
BEGIN
|
|
SELECT @CveFraccionamientoEtapa = S.CveFraccionamientoEtapa
|
|
FROM dbo.Tra_Solicitudes AS S
|
|
WHERE S.CveSolicitud = @CveSolicitud AND S.CveFraccionamiento = @CveFraccionamiento
|
|
AND (@CveFraccionamientoEtapa IS NULL OR S.CveFraccionamientoEtapa = @CveFraccionamientoEtapa);
|
|
IF NOT EXISTS
|
|
(
|
|
SELECT 1 FROM dbo.Tra_Solicitudes
|
|
WHERE CveSolicitud = @CveSolicitud AND CveFraccionamiento = @CveFraccionamiento
|
|
AND CveFraccionamientoEtapa = @CveFraccionamientoEtapa
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'La solicitud no pertenece a la etapa seleccionada.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
END;
|
|
IF NOT EXISTS
|
|
(
|
|
SELECT 1 FROM dbo.FraccionamientosEtapas
|
|
WHERE CveFraccionamientoEtapa = @CveFraccionamientoEtapa
|
|
AND CveFraccionamiento = @CveFraccionamiento
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'Seleccione una etapa del fraccionamiento.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
DELETE FROM dbo.Tra_SolicitudDocumentoConfiguracion
|
|
WHERE CveFraccionamientoEtapa = @CveFraccionamientoEtapa
|
|
AND ISNULL(CveSolicitud, 0) = ISNULL(@CveSolicitud, 0)
|
|
AND CveTipoDocumento = @CveTipoDocumento;
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SELECT
|
|
@ErrorMostrar = 'No fue posible procesar los documentos; contacte a Sistemas.',
|
|
@ErrorTipo = 1,
|
|
@Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Tramites_SolicitudDocumentoConfiguracionDelete'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE dbo.PA_Tra_SolicitudProcesoActualizar
|
|
@CveSolicitud INT=NULL,
|
|
@CveFraccionamientoEtapa INT=NULL,
|
|
@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 @CveSolicitud IS NULL
|
|
AND @CveFraccionamientoEtapa IS NULL
|
|
BEGIN
|
|
SET @ErrorMostrar = 'Seleccione una solicitud o etapa para actualizar.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END
|
|
DECLARE @Hoy AS DATE = CONVERT (DATE, SYSDATETIMEOFFSET() AT TIME ZONE 'US Mountain Standard Time');
|
|
SELECT S.CveSolicitud,
|
|
S.CveTipoTramite,
|
|
S.CveFraccionamientoEtapa,
|
|
ES.Codigo AS CodigoEstatus,
|
|
ES.EsFinal
|
|
INTO #Solicitudes
|
|
FROM dbo.Tra_Solicitudes AS S
|
|
INNER JOIN dbo.Tra_EstatusSolicitud AS ES ON ES.CveEstatusSolicitud = S.CveEstatusSolicitud
|
|
WHERE (@CveSolicitud IS NULL
|
|
OR S.CveSolicitud = @CveSolicitud)
|
|
AND (@CveFraccionamientoEtapa IS NULL
|
|
OR S.CveFraccionamientoEtapa = @CveFraccionamientoEtapa);
|
|
CREATE UNIQUE CLUSTERED INDEX IX_Solicitudes
|
|
ON #Solicitudes(CveSolicitud);
|
|
SELECT S.CveSolicitud,
|
|
G.CveTipoDocumento,
|
|
G.EsRequerido,
|
|
G.EsCliente,
|
|
G.TieneVigencia,
|
|
G.EsActivo
|
|
INTO #Configuracion
|
|
FROM #Solicitudes AS S
|
|
INNER JOIN dbo.Tra_TiposTramiteDocumento AS G ON G.CveTipoTramite = S.CveTipoTramite
|
|
WHERE NOT EXISTS (SELECT 1
|
|
FROM dbo.Tra_SolicitudDocumentoConfiguracion AS P
|
|
WHERE P.CveSolicitud = S.CveSolicitud
|
|
AND P.CveTipoDocumento = G.CveTipoDocumento)
|
|
UNION ALL
|
|
SELECT P.CveSolicitud,
|
|
P.CveTipoDocumento,
|
|
P.EsRequerido,
|
|
P.EsCliente,
|
|
P.TieneVigencia,
|
|
P.EsActivo
|
|
FROM dbo.Tra_SolicitudDocumentoConfiguracion AS P
|
|
INNER JOIN #Solicitudes AS S ON S.CveSolicitud = P.CveSolicitud;
|
|
CREATE TABLE #Acciones (
|
|
CveSolicitud INT NOT NULL,
|
|
TipoAccion VARCHAR (30) COLLATE Modern_Spanish_CI_AS NOT NULL,
|
|
CveReferencia INT NOT NULL,
|
|
Descripcion NVARCHAR (1000) COLLATE Modern_Spanish_CS_AS NOT NULL,
|
|
VisibleCliente BIT NOT NULL,
|
|
Orden INT NOT NULL,
|
|
PRIMARY KEY (CveSolicitud, TipoAccion, CveReferencia)
|
|
);
|
|
INSERT INTO #Acciones (CveSolicitud, TipoAccion, CveReferencia, Descripcion, VisibleCliente, Orden)
|
|
SELECT C.CveSolicitud,
|
|
'DocumentoFaltante',
|
|
C.CveTipoDocumento,
|
|
CONCAT(N'Cargar documento: ', COALESCE (NULLIF (T.Descripcion, ''), T.TipoDocumento)),
|
|
C.EsCliente,
|
|
10
|
|
FROM #Configuracion AS C
|
|
INNER JOIN #Solicitudes AS S ON S.CveSolicitud = C.CveSolicitud
|
|
INNER JOIN dbo.Tra_TiposDocumento AS T ON T.CveTipoDocumento = C.CveTipoDocumento
|
|
WHERE C.EsActivo = 1
|
|
AND S.EsFinal = 0
|
|
AND C.EsRequerido = 1
|
|
AND T.EsActivo = 1
|
|
AND NOT EXISTS (SELECT 1
|
|
FROM dbo.Tra_DocumentosSolicitud AS D
|
|
WHERE D.CveFraccionamientoEtapa = S.CveFraccionamientoEtapa
|
|
AND D.CveTipoDocumento = C.CveTipoDocumento
|
|
AND D.EsActivo = 1
|
|
AND NULLIF (LTRIM(RTRIM(D.NombreArchivo)), '') IS NOT NULL
|
|
AND NULLIF (LTRIM(RTRIM(D.RutaArchivo)), '') IS NOT NULL);
|
|
INSERT INTO #Acciones (CveSolicitud, TipoAccion, CveReferencia, Descripcion, VisibleCliente, Orden)
|
|
SELECT S.CveSolicitud,
|
|
'DocumentoRechazado',
|
|
D.CveDocumentoSolicitud,
|
|
CONCAT(N'Corregir documento no autorizado: ', COALESCE (NULLIF (T.Descripcion, ''), T.TipoDocumento)),
|
|
ISNULL(C.EsCliente, 0),
|
|
20
|
|
FROM dbo.Tra_DocumentosSolicitud AS D
|
|
INNER JOIN #Solicitudes AS S ON S.CveFraccionamientoEtapa = D.CveFraccionamientoEtapa
|
|
INNER JOIN dbo.Tra_TiposDocumento AS T ON T.CveTipoDocumento = D.CveTipoDocumento
|
|
LEFT OUTER JOIN #Configuracion AS C ON C.CveSolicitud = S.CveSolicitud
|
|
AND C.CveTipoDocumento = D.CveTipoDocumento
|
|
WHERE D.EsActivo = 1
|
|
AND D.EsAprobado = 0
|
|
AND C.EsActivo = 1
|
|
AND S.EsFinal = 0;
|
|
INSERT INTO #Acciones (CveSolicitud, TipoAccion, CveReferencia, Descripcion, VisibleCliente, Orden)
|
|
SELECT S.CveSolicitud,
|
|
'DocumentoVencido',
|
|
D.CveDocumentoSolicitud,
|
|
CONCAT(N'Renovar documento vencido: ', COALESCE (NULLIF (T.Descripcion, ''), T.TipoDocumento), N' (', CONVERT (CHAR (10), D.FechaVencimiento, 103), N')'),
|
|
ISNULL(C.EsCliente, 0),
|
|
30
|
|
FROM dbo.Tra_DocumentosSolicitud AS D
|
|
INNER JOIN #Solicitudes AS S ON S.CveFraccionamientoEtapa = D.CveFraccionamientoEtapa
|
|
INNER JOIN dbo.Tra_TiposDocumento AS T ON T.CveTipoDocumento = D.CveTipoDocumento
|
|
LEFT OUTER JOIN #Configuracion AS C ON C.CveSolicitud = S.CveSolicitud
|
|
AND C.CveTipoDocumento = D.CveTipoDocumento
|
|
WHERE D.EsActivo = 1
|
|
AND D.FechaVencimiento < @Hoy
|
|
AND S.EsFinal = 0
|
|
AND C.EsActivo = 1
|
|
AND C.EsRequerido = 1;
|
|
WITH Aplicaciones
|
|
AS (SELECT A.CveSolicitudPago,
|
|
SUM(A.ImporteAplicado) AS Abonado
|
|
FROM dbo.Tra_PagosAplicaciones AS A
|
|
INNER JOIN dbo.Tra_Pagos AS P ON P.CvePago = A.CvePago
|
|
WHERE P.EsActivo = 1
|
|
AND P.Autorizado = 1
|
|
GROUP BY A.CveSolicitudPago),
|
|
Traslados
|
|
AS (SELECT O.CveSolicitudPagoOrigen,
|
|
SUM(O.ImporteTomadoConvenio) AS Convenido
|
|
FROM dbo.Tra_SolicitudesPagoConvenioOrigen AS O
|
|
INNER JOIN dbo.Tra_SolicitudesPago AS C ON C.CveSolicitudPago = O.CveSolicitudPagoConvenio
|
|
WHERE C.EstadoAdministrativo <> 'CANCELADO'
|
|
GROUP BY O.CveSolicitudPagoOrigen),
|
|
Saldos
|
|
AS (SELECT S.*,
|
|
ISNULL(A.Abonado, 0) AS ImporteAbonado,
|
|
ISNULL(T.Convenido, 0) AS ImporteConvenido,
|
|
S.Importe - ISNULL(A.Abonado, 0) - ISNULL(T.Convenido, 0) AS SaldoPendiente
|
|
FROM dbo.Tra_SolicitudesPago AS S
|
|
LEFT OUTER JOIN Aplicaciones AS A ON A.CveSolicitudPago = S.CveSolicitudPago
|
|
LEFT OUTER JOIN Traslados AS T ON T.CveSolicitudPagoOrigen = S.CveSolicitudPago)
|
|
INSERT INTO #Acciones (CveSolicitud, TipoAccion, CveReferencia, Descripcion, VisibleCliente, Orden)
|
|
SELECT DISTINCT R.CveSolicitud,
|
|
'PagoPendiente',
|
|
S.CveSolicitudPago,
|
|
CONCAT(N'Pagar saldo: ', S.Descripcion),
|
|
1,
|
|
40
|
|
FROM Saldos AS S
|
|
INNER JOIN #Solicitudes AS R ON R.CveSolicitud = S.CveSolicitud
|
|
OR EXISTS (SELECT 1
|
|
FROM dbo.Tra_SolicitudesPagoConvenioOrigen AS O
|
|
INNER JOIN dbo.Tra_SolicitudesPago AS P ON P.CveSolicitudPago = O.CveSolicitudPagoOrigen
|
|
WHERE O.CveSolicitudPagoConvenio = S.CveSolicitudPago
|
|
AND P.CveSolicitud = R.CveSolicitud)
|
|
WHERE S.EstadoAdministrativo = 'ACTIVO'
|
|
AND S.EsRequerido = 1
|
|
AND S.SaldoPendiente > 0;
|
|
DECLARE @SolicitudCondicion AS INT;
|
|
DECLARE @TipoTramite AS INT;
|
|
DECLARE @Etapa AS INT;
|
|
DECLARE @Condiciones TABLE (
|
|
CveCondicionMostrar INT,
|
|
CondicionMostrar VARCHAR (100));
|
|
DECLARE @Correcto AS BIT;
|
|
DECLARE @TipoError AS INT;
|
|
DECLARE @Mensaje AS VARCHAR (MAX);
|
|
DECLARE condiciones CURSOR LOCAL FAST_FORWARD
|
|
FOR SELECT CveSolicitud,
|
|
CveTipoTramite,
|
|
CveFraccionamientoEtapa
|
|
FROM #Solicitudes
|
|
ORDER BY CveSolicitud;
|
|
OPEN condiciones;
|
|
FETCH NEXT FROM condiciones INTO @SolicitudCondicion, @TipoTramite, @Etapa;
|
|
WHILE @@FETCH_STATUS = 0
|
|
BEGIN
|
|
DELETE @Condiciones;
|
|
INSERT INTO @Condiciones
|
|
EXECUTE dbo.PA_Tra_MostrarCondicionesporTramite
|
|
@CveTipoTramite = @TipoTramite,
|
|
@CveFraccionamientoEtapa = @Etapa,
|
|
@CveUsuarioEjecuta = @CveUsuarioEjecuta,
|
|
@ErrorMostrar = @Mensaje OUTPUT,
|
|
@ErrorTipo = @TipoError OUTPUT,
|
|
@Return = @Correcto OUTPUT;
|
|
IF ISNULL(@Correcto, 0) = 0
|
|
BEGIN
|
|
SET @ErrorMostrar = @Mensaje;
|
|
SET @ErrorTipo = ISNULL(NULLIF (@TipoError, 0), 1);
|
|
CLOSE condiciones;
|
|
DEALLOCATE condiciones;
|
|
RETURN;
|
|
END
|
|
INSERT INTO #Acciones (CveSolicitud, TipoAccion, CveReferencia, Descripcion, VisibleCliente, Orden)
|
|
SELECT @SolicitudCondicion,
|
|
'CondicionPendiente',
|
|
C.CveCondicionMostrar,
|
|
CONCAT(N'Capturar condición: ', C.CondicionMostrar),
|
|
0,
|
|
50
|
|
FROM @Condiciones AS C
|
|
INNER JOIN dbo.FraccionamientosEtapas AS E ON E.CveFraccionamientoEtapa = @Etapa
|
|
WHERE CASE C.CveCondicionMostrar
|
|
WHEN 1 THEN E.Aprobado_Prefactibilidad
|
|
WHEN 2 THEN E.RequiereObrasExternas
|
|
WHEN 3 THEN E.TipoDeObra
|
|
WHEN 4 THEN E.LiberacionMacromedidor
|
|
WHEN 5 THEN E.Relotificacion
|
|
WHEN 6 THEN E.LiberacionDeLotes
|
|
WHEN 7 THEN E.LiberacionDePagosDeDerechos
|
|
END IS NULL;
|
|
FETCH NEXT FROM condiciones INTO @SolicitudCondicion, @TipoTramite, @Etapa;
|
|
END
|
|
CLOSE condiciones;
|
|
DEALLOCATE condiciones;
|
|
UPDATE S
|
|
SET EstatusProceso =
|
|
CASE
|
|
WHEN B.CodigoEstatus = 'Autorizado' THEN 4
|
|
WHEN EXISTS
|
|
(
|
|
SELECT 1 FROM #Acciones AS A
|
|
WHERE A.CveSolicitud = S.CveSolicitud AND A.TipoAccion = 'DocumentoRechazado'
|
|
) THEN 2
|
|
WHEN EXISTS
|
|
(
|
|
SELECT 1 FROM #Acciones AS A
|
|
WHERE A.CveSolicitud = S.CveSolicitud
|
|
AND A.TipoAccion IN ('DocumentoFaltante', 'DocumentoVencido')
|
|
) THEN 1
|
|
WHEN B.CodigoEstatus = 'Revisando' THEN 3
|
|
WHEN B.CodigoEstatus <> 'Sin Procesar'
|
|
OR EXISTS
|
|
(
|
|
SELECT 1 FROM dbo.Tra_DocumentosSolicitud AS D
|
|
INNER JOIN #Configuracion AS C ON C.CveSolicitud = S.CveSolicitud
|
|
AND C.CveTipoDocumento = D.CveTipoDocumento AND C.EsActivo = 1
|
|
WHERE D.CveFraccionamientoEtapa = S.CveFraccionamientoEtapa AND D.EsActivo = 1
|
|
)
|
|
OR EXISTS
|
|
(
|
|
SELECT 1 FROM dbo.Tra_ComentariosSolicitud AS C
|
|
WHERE C.CveSolicitud = S.CveSolicitud
|
|
) THEN 1
|
|
ELSE 0
|
|
END
|
|
FROM dbo.Tra_Solicitudes AS S
|
|
INNER JOIN #Solicitudes AS B ON B.CveSolicitud = S.CveSolicitud;
|
|
DELETE A
|
|
FROM #Acciones AS A
|
|
INNER JOIN #Solicitudes AS S ON S.CveSolicitud = A.CveSolicitud
|
|
WHERE S.CodigoEstatus IN ('Autorizado', 'Cancelado');
|
|
DELETE A
|
|
FROM dbo.Tra_SolicitudesAccionesPendientes AS A
|
|
INNER JOIN #Solicitudes AS S ON S.CveSolicitud = A.CveSolicitud
|
|
WHERE NOT EXISTS (SELECT 1
|
|
FROM #Acciones AS N
|
|
WHERE N.CveSolicitud = A.CveSolicitud
|
|
AND N.TipoAccion = A.TipoAccion
|
|
AND N.CveReferencia = A.CveReferencia);
|
|
UPDATE A
|
|
SET Descripcion = N.Descripcion,
|
|
VisibleCliente = N.VisibleCliente,
|
|
Orden = N.Orden
|
|
FROM dbo.Tra_SolicitudesAccionesPendientes AS A
|
|
INNER JOIN #Acciones AS N ON N.CveSolicitud = A.CveSolicitud
|
|
AND N.TipoAccion = A.TipoAccion
|
|
AND N.CveReferencia = A.CveReferencia;
|
|
INSERT INTO dbo.Tra_SolicitudesAccionesPendientes (CveSolicitud, TipoAccion, CveReferencia, Descripcion, VisibleCliente, Orden)
|
|
SELECT N.CveSolicitud,
|
|
N.TipoAccion,
|
|
N.CveReferencia,
|
|
N.Descripcion,
|
|
N.VisibleCliente,
|
|
N.Orden
|
|
FROM #Acciones AS N
|
|
WHERE NOT EXISTS (SELECT 1
|
|
FROM dbo.Tra_SolicitudesAccionesPendientes AS A
|
|
WHERE A.CveSolicitud = N.CveSolicitud
|
|
AND A.TipoAccion = N.TipoAccion
|
|
AND A.CveReferencia = N.CveReferencia);
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SELECT @ErrorMostrar = 'No fue posible actualizar o consultar el seguimiento de solicitudes; contacte a Sistemas.',
|
|
@ErrorTipo = 1,
|
|
@Return = 0;
|
|
DECLARE @ErrorTecnico AS NVARCHAR (2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', COALESCE (ERROR_PROCEDURE(), 'PA_Tra_SolicitudProcesoActualizar'), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
|
|
RAISERROR (N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH
|
|
END
|
|
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE dbo.PA_Job_VerificaVigencias
|
|
|
|
@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
|
|
-- Job_VerificaVigencias: diario a las 03:00, America/Hermosillo.
|
|
-- No se llama desde pantallas. No modifica supervisiones.
|
|
EXEC dbo.PA_Tramites_DocumentoEtapaVencimientoActualizar
|
|
@CveFraccionamientoEtapa = NULL,
|
|
@CveUsuarioEjecuta = @CveUsuarioEjecuta,
|
|
@ErrorMostrar = @ErrorMostrar OUTPUT,
|
|
@ErrorTipo = @ErrorTipo OUTPUT,
|
|
@Return = @Return OUTPUT;
|
|
IF ISNULL(@Return, 0) = 0 RETURN;
|
|
|
|
DECLARE @Etapa int;
|
|
DECLARE etapas CURSOR LOCAL FAST_FORWARD FOR
|
|
SELECT DISTINCT CveFraccionamientoEtapa FROM dbo.Tra_DocumentosSolicitud
|
|
WHERE EsActivo = 1
|
|
AND FechaVencimiento < CONVERT(date, SYSDATETIMEOFFSET() AT TIME ZONE 'US Mountain Standard Time');
|
|
OPEN etapas;
|
|
FETCH NEXT FROM etapas INTO @Etapa;
|
|
WHILE @@FETCH_STATUS = 0
|
|
BEGIN
|
|
EXEC dbo.PA_Tra_SolicitudProcesoActualizar
|
|
@CveFraccionamientoEtapa = @Etapa,
|
|
@CveUsuarioEjecuta = @CveUsuarioEjecuta,
|
|
@ErrorMostrar = @ErrorMostrar OUTPUT,
|
|
@ErrorTipo = @ErrorTipo OUTPUT,
|
|
@Return = @Return OUTPUT;
|
|
IF ISNULL(@Return, 0) = 0
|
|
BEGIN
|
|
CLOSE etapas;
|
|
DEALLOCATE etapas;
|
|
RETURN;
|
|
END;
|
|
FETCH NEXT FROM etapas INTO @Etapa;
|
|
END;
|
|
CLOSE etapas;
|
|
DEALLOCATE etapas;
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SELECT
|
|
@ErrorMostrar = 'No fue posible procesar los documentos; contacte a Sistemas.',
|
|
@ErrorTipo = 1,
|
|
@Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Job_VerificaVigencias'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
GO
|