2604 lines
88 KiB
Transact-SQL
2604 lines
88 KiB
Transact-SQL
/* Migración global a borrado físico. Generada desde SIG_PlataformaDesarolladores el 2026-07-22. */
|
|
|
|
SET NOCOUNT ON;
|
|
|
|
SET XACT_ABORT ON;
|
|
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE [dbo].[PA_Clientes_EstatusUpdate]
|
|
@CveCliente int,
|
|
@Activo 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
|
|
UPDATE C
|
|
SET C.[Estatus] = @Activo, C.[CveUsuarioModifico] = @CveUsuarioEjecuta
|
|
FROM [dbo].[Clientes] C
|
|
WHERE C.[CveCliente] = @CveCliente
|
|
AND EXISTS
|
|
(
|
|
SELECT 1 FROM [dbo].[Sis_Usuarios] U INNER JOIN [dbo].[Sis_Roles] R ON R.[CveRol] = U.[CveRol]
|
|
WHERE U.[CveUsuario] = @CveUsuarioEjecuta
|
|
AND R.[NombreRol] IN ('SuperUsuario', 'Administrador')
|
|
AND U.[Activo] = (1)
|
|
);
|
|
IF @@ROWCOUNT = (0)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'Sólo un Administrador o SuperUsuario puede cambiar el estado del cliente.';
|
|
SET @ErrorTipo = 1;
|
|
RETURN;
|
|
END;
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'Ocurrió un error al cambiar el estado del cliente; favor de contactar a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
DECLARE @E nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', ERROR_PROCEDURE(), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
|
|
RAISERROR(N'%s', 10, 1, @E);
|
|
END CATCH;
|
|
END;
|
|
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE [dbo].[PA_Fraccionamientos_ClienteList]
|
|
@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 @EsSuperUsuario bit = 0;
|
|
|
|
SELECT @EsSuperUsuario = CASE WHEN R.NombreRol = 'SuperUsuario' THEN 1 ELSE 0 END
|
|
FROM dbo.Sis_Usuarios AS U
|
|
INNER JOIN dbo.Sis_Roles AS R ON R.CveRol = U.CveRol
|
|
WHERE U.CveUsuario = @CveUsuarioEjecuta
|
|
AND U.Activo = 1
|
|
;
|
|
|
|
SELECT DISTINCT
|
|
C.CveCliente,
|
|
C.Nombre AS Cliente,
|
|
C.RFC
|
|
FROM dbo.Clientes AS C
|
|
WHERE C.Estatus = 1
|
|
AND
|
|
(
|
|
@EsSuperUsuario = 1
|
|
OR EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM dbo.Sis_UsuariosClientes AS UC
|
|
WHERE UC.CveUsuario = @CveUsuarioEjecuta
|
|
AND UC.CveCliente = C.CveCliente
|
|
AND UC.Activo = 1
|
|
|
|
)
|
|
)
|
|
ORDER BY C.Nombre;
|
|
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'Ocurrió un error al consultar los clientes disponibles; favor de contactar a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Fraccionamientos_ClienteList'), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE [dbo].[PA_Fraccionamientos_EstatusList]
|
|
@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
|
|
SELECT
|
|
E.CveEstatus,
|
|
E.Estatus
|
|
FROM dbo.Fraccionamientos_Estatus AS E
|
|
ORDER BY E.Estatus;
|
|
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'Ocurrió un error al consultar los estatus de fraccionamientos; favor de contactar a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Fraccionamientos_EstatusList'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE [dbo].[PA_Fraccionamientos_EtapaDelete]
|
|
@CveFraccionamientoEtapa int,
|
|
@CveUsuarioEjecuta int,
|
|
@ErrorMostrar varchar(max) OUTPUT,
|
|
@ErrorTipo int OUTPUT,
|
|
@Return bit OUTPUT
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON;
|
|
SELECT @ErrorMostrar = NULL, @ErrorTipo = 0, @Return = 0;
|
|
BEGIN TRY
|
|
DECLARE @EsSuperUsuario bit = 0;
|
|
SELECT @EsSuperUsuario = CASE WHEN R.NombreRol = 'SuperUsuario' THEN 1 ELSE 0 END
|
|
FROM dbo.Sis_Usuarios AS U INNER JOIN dbo.Sis_Roles AS R ON R.CveRol = U.CveRol
|
|
WHERE U.CveUsuario = @CveUsuarioEjecuta AND U.Activo = 1;
|
|
|
|
IF NOT EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM dbo.FraccionamientosEtapas AS E
|
|
INNER JOIN dbo.Fraccionamientos AS F ON F.CveFraccionamiento = E.CveFraccionamiento
|
|
WHERE E.CveFraccionamientoEtapa = @CveFraccionamientoEtapa
|
|
AND (@EsSuperUsuario = 1 OR EXISTS
|
|
(SELECT 1 FROM dbo.Sis_UsuariosClientes AS UC
|
|
WHERE UC.CveUsuario = @CveUsuarioEjecuta AND UC.CveCliente = F.CveCliente
|
|
AND UC.Activo = 1))
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'La etapa no existe o no está asignada al usuario.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
IF EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM dbo.Tra_Solicitudes
|
|
WHERE CveFraccionamientoEtapa = @CveFraccionamientoEtapa
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'La etapa tiene trámites relacionados y no puede eliminarse.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
|
|
DELETE FROM dbo.FraccionamientosLotes
|
|
WHERE CveFraccionamientoEtapa = @CveFraccionamientoEtapa;
|
|
|
|
DELETE FROM dbo.FraccionamientosEtapas
|
|
WHERE CveFraccionamientoEtapa = @CveFraccionamientoEtapa;
|
|
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'Ocurrió un error al eliminar la etapa; favor de contactar a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Fraccionamientos_EtapaDelete'), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE [dbo].[PA_Fraccionamientos_EtapaList]
|
|
@CveFraccionamiento 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 @EsSuperUsuario bit = 0;
|
|
SELECT @EsSuperUsuario = CASE WHEN R.NombreRol = 'SuperUsuario' THEN 1 ELSE 0 END
|
|
FROM dbo.Sis_Usuarios AS U INNER JOIN dbo.Sis_Roles AS R ON R.CveRol = U.CveRol
|
|
WHERE U.CveUsuario = @CveUsuarioEjecuta AND U.Activo = 1;
|
|
|
|
IF NOT EXISTS
|
|
(
|
|
SELECT 1 FROM dbo.Fraccionamientos AS F
|
|
WHERE F.CveFraccionamiento = @CveFraccionamiento
|
|
AND (@EsSuperUsuario = 1 OR EXISTS
|
|
(SELECT 1 FROM dbo.Sis_UsuariosClientes AS UC
|
|
WHERE UC.CveUsuario = @CveUsuarioEjecuta AND UC.CveCliente = F.CveCliente
|
|
AND UC.Activo = 1))
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'El fraccionamiento no existe o no está asignado al usuario.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
SELECT CveFraccionamientoEtapa, CveFraccionamiento, Etapa, Hectareas, Orden, EsActivo
|
|
FROM dbo.FraccionamientosEtapas
|
|
WHERE CveFraccionamiento = @CveFraccionamiento
|
|
ORDER BY Orden, Etapa;
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'Ocurrió un error al consultar las etapas; favor de contactar a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Fraccionamientos_EtapaList'), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE [dbo].[PA_Fraccionamientos_EtapaSave]
|
|
@CveFraccionamientoEtapa int = NULL,
|
|
@CveFraccionamiento int,
|
|
@Etapa varchar(150),
|
|
@Hectareas decimal(18,4) = NULL,
|
|
@Orden int = 0,
|
|
@EsActivo bit = 1,
|
|
@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 @EsSuperUsuario bit = 0;
|
|
SELECT @EsSuperUsuario = CASE WHEN R.NombreRol = 'SuperUsuario' THEN 1 ELSE 0 END
|
|
FROM dbo.Sis_Usuarios AS U INNER JOIN dbo.Sis_Roles AS R ON R.CveRol = U.CveRol
|
|
WHERE U.CveUsuario = @CveUsuarioEjecuta AND U.Activo = 1;
|
|
|
|
IF NULLIF(LTRIM(RTRIM(@Etapa)), '') IS NULL
|
|
BEGIN
|
|
SET @ErrorMostrar = 'Capture el nombre de la etapa.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
IF @Hectareas IS NOT NULL AND @Hectareas < 0
|
|
BEGIN
|
|
SET @ErrorMostrar = 'Las hectáreas de la etapa no pueden ser negativas.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
IF NOT EXISTS
|
|
(
|
|
SELECT 1 FROM dbo.Fraccionamientos AS F
|
|
WHERE F.CveFraccionamiento = @CveFraccionamiento
|
|
AND (@EsSuperUsuario = 1 OR EXISTS
|
|
(SELECT 1 FROM dbo.Sis_UsuariosClientes AS UC
|
|
WHERE UC.CveUsuario = @CveUsuarioEjecuta AND UC.CveCliente = F.CveCliente
|
|
AND UC.Activo = 1))
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'El fraccionamiento no existe o no está asignado al usuario.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
IF @CveFraccionamientoEtapa IS NOT NULL
|
|
AND NOT EXISTS (SELECT 1 FROM dbo.FraccionamientosEtapas WHERE CveFraccionamientoEtapa = @CveFraccionamientoEtapa AND CveFraccionamiento = @CveFraccionamiento)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'La etapa no existe o no pertenece al fraccionamiento.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
IF EXISTS
|
|
(
|
|
SELECT 1 FROM dbo.FraccionamientosEtapas
|
|
WHERE CveFraccionamiento = @CveFraccionamiento
|
|
AND Etapa = LTRIM(RTRIM(@Etapa))
|
|
AND (@CveFraccionamientoEtapa IS NULL OR CveFraccionamientoEtapa <> @CveFraccionamientoEtapa)
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'Ya existe una etapa con ese nombre en el fraccionamiento.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
IF @CveFraccionamientoEtapa IS NULL
|
|
BEGIN
|
|
INSERT INTO dbo.FraccionamientosEtapas
|
|
(CveFraccionamiento, Etapa, Hectareas, Orden, EsActivo, CveUsuario)
|
|
VALUES
|
|
(@CveFraccionamiento, LTRIM(RTRIM(@Etapa)), @Hectareas, @Orden, @EsActivo, @CveUsuarioEjecuta);
|
|
SET @CveFraccionamientoEtapa = CONVERT(int, SCOPE_IDENTITY());
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
UPDATE dbo.FraccionamientosEtapas
|
|
SET Etapa = LTRIM(RTRIM(@Etapa)), Hectareas = @Hectareas,
|
|
Orden = @Orden, EsActivo = @EsActivo,
|
|
FechaModificacion = GETDATE(), CveUsuario = @CveUsuarioEjecuta
|
|
WHERE CveFraccionamientoEtapa = @CveFraccionamientoEtapa;
|
|
END;
|
|
SELECT @CveFraccionamientoEtapa AS CveFraccionamientoEtapa;
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'Ocurrió un error al guardar la etapa; favor de contactar a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Fraccionamientos_EtapaSave'), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE [dbo].[PA_Fraccionamientos_EtapaTramiteList]
|
|
@CveFraccionamiento 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 @EsSuperUsuario bit = 0;
|
|
SELECT @EsSuperUsuario = CASE WHEN R.NombreRol = 'SuperUsuario' THEN 1 ELSE 0 END
|
|
FROM dbo.Sis_Usuarios AS U
|
|
INNER JOIN dbo.Sis_Roles AS R ON R.CveRol = U.CveRol
|
|
WHERE U.CveUsuario = @CveUsuarioEjecuta AND U.Activo = 1;
|
|
|
|
IF NOT EXISTS
|
|
(
|
|
SELECT 1 FROM dbo.Fraccionamientos AS F
|
|
WHERE F.CveFraccionamiento = @CveFraccionamiento
|
|
AND (@EsSuperUsuario = 1 OR EXISTS
|
|
(SELECT 1 FROM dbo.Sis_UsuariosClientes AS UC
|
|
WHERE UC.CveUsuario = @CveUsuarioEjecuta AND UC.CveCliente = F.CveCliente
|
|
AND UC.Activo = 1))
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'El fraccionamiento no existe o no está asignado al usuario.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
SELECT E.CveFraccionamientoEtapa, E.Etapa, S.CveSolicitud,
|
|
CONVERT(varchar(50), S.Folio) AS Folio, T.TipoTramite,
|
|
ES.EstatusSolicitud, ES.EsFinal,
|
|
COALESCE(H.FechaAlta, S.FechaModificacion, S.FechaAlta) AS FechaUltimoEstatus,
|
|
H.Comentarios
|
|
FROM dbo.FraccionamientosEtapas AS E
|
|
LEFT JOIN dbo.Tra_Solicitudes AS S ON S.CveFraccionamientoEtapa = E.CveFraccionamientoEtapa
|
|
LEFT JOIN dbo.Tra_TiposTramite AS T ON T.CveTipoTramite = S.CveTipoTramite
|
|
OUTER APPLY
|
|
(
|
|
SELECT TOP (1) HS.CveEstatusSolicitud, HS.FechaAlta, HS.Comentarios
|
|
FROM dbo.Tra_HistorialEstatusSolicitud AS HS
|
|
WHERE HS.CveSolicitud = S.CveSolicitud
|
|
ORDER BY HS.FechaAlta DESC
|
|
) AS H
|
|
LEFT JOIN dbo.Tra_EstatusSolicitud AS ES ON ES.CveEstatusSolicitud = COALESCE(H.CveEstatusSolicitud, S.CveEstatusSolicitud)
|
|
WHERE E.CveFraccionamiento = @CveFraccionamiento
|
|
ORDER BY E.Orden, E.Etapa, S.FechaAlta DESC;
|
|
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'Ocurrió un error al consultar los trámites de las etapas; favor de contactar a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Fraccionamientos_EtapaTramiteList'), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE [dbo].[PA_Fraccionamientos_FraccionamientoDelete]
|
|
@CveFraccionamiento 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 @EsSuperUsuario bit = 0;
|
|
SELECT @EsSuperUsuario = CASE WHEN R.NombreRol = 'SuperUsuario' THEN 1 ELSE 0 END
|
|
FROM dbo.Sis_Usuarios AS U INNER JOIN dbo.Sis_Roles AS R ON R.CveRol = U.CveRol
|
|
WHERE U.CveUsuario = @CveUsuarioEjecuta AND U.Activo = 1;
|
|
|
|
IF NOT EXISTS
|
|
(
|
|
SELECT 1 FROM dbo.Fraccionamientos AS F
|
|
WHERE F.CveFraccionamiento = @CveFraccionamiento
|
|
AND (@EsSuperUsuario = 1 OR EXISTS
|
|
(SELECT 1 FROM dbo.Sis_UsuariosClientes AS UC
|
|
WHERE UC.CveUsuario = @CveUsuarioEjecuta AND UC.CveCliente = F.CveCliente
|
|
AND UC.Activo = 1))
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'El fraccionamiento no existe o no está asignado al usuario.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
IF EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM dbo.Tra_Solicitudes AS S
|
|
WHERE S.CveFraccionamiento = @CveFraccionamiento
|
|
OR EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM dbo.FraccionamientosEtapas AS E
|
|
WHERE E.CveFraccionamientoEtapa = S.CveFraccionamientoEtapa
|
|
AND E.CveFraccionamiento = @CveFraccionamiento
|
|
)
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'El fraccionamiento tiene trámites relacionados y no puede eliminarse.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
|
|
DELETE L
|
|
FROM dbo.FraccionamientosLotes AS L
|
|
INNER JOIN dbo.FraccionamientosEtapas AS E
|
|
ON E.CveFraccionamientoEtapa = L.CveFraccionamientoEtapa
|
|
WHERE E.CveFraccionamiento = @CveFraccionamiento;
|
|
|
|
DELETE FROM dbo.FraccionamientosEtapas
|
|
WHERE CveFraccionamiento = @CveFraccionamiento;
|
|
|
|
DELETE FROM dbo.Fraccionamientos
|
|
WHERE CveFraccionamiento = @CveFraccionamiento;
|
|
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'Ocurrió un error al eliminar el fraccionamiento; favor de contactar a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Fraccionamientos_FraccionamientoDelete'), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE [dbo].[PA_Fraccionamientos_FraccionamientoGet]
|
|
@CveFraccionamiento 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 @EsSuperUsuario bit = 0;
|
|
SELECT @EsSuperUsuario = CASE WHEN R.NombreRol = 'SuperUsuario' THEN 1 ELSE 0 END
|
|
FROM dbo.Sis_Usuarios AS U
|
|
INNER JOIN dbo.Sis_Roles AS R ON R.CveRol = U.CveRol
|
|
WHERE U.CveUsuario = @CveUsuarioEjecuta AND U.Activo = 1;
|
|
|
|
IF NOT EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM dbo.Fraccionamientos AS F
|
|
WHERE F.CveFraccionamiento = @CveFraccionamiento
|
|
|
|
AND
|
|
(
|
|
@EsSuperUsuario = 1
|
|
OR EXISTS
|
|
(
|
|
SELECT 1 FROM dbo.Sis_UsuariosClientes AS UC
|
|
WHERE UC.CveUsuario = @CveUsuarioEjecuta
|
|
AND UC.CveCliente = F.CveCliente
|
|
AND UC.Activo = 1
|
|
)
|
|
)
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'El fraccionamiento no existe o no está asignado al usuario.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
SELECT
|
|
F.CveFraccionamiento, F.CveCliente, C.Nombre AS Cliente,
|
|
F.Fraccionamiento, F.Hectareas, F.Ubicacion, F.CveEstatus,
|
|
COALESCE(FE.Estatus, 'Estatus no disponible') AS Estatus,
|
|
F.EsActivo, 0 AS NumeroEtapas, F.FechaAlta
|
|
FROM dbo.Fraccionamientos AS F
|
|
INNER JOIN dbo.Clientes AS C ON C.CveCliente = F.CveCliente
|
|
LEFT JOIN dbo.Fraccionamientos_Estatus AS FE
|
|
ON FE.CveEstatus = F.CveEstatus
|
|
|
|
WHERE F.CveFraccionamiento = @CveFraccionamiento;
|
|
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'Ocurrió un error al consultar el fraccionamiento; favor de contactar a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Fraccionamientos_FraccionamientoGet'), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE [dbo].[PA_Fraccionamientos_FraccionamientoList]
|
|
@Texto varchar(200) = NULL,
|
|
@CveCliente 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
|
|
DECLARE @EsSuperUsuario bit = 0;
|
|
SELECT @EsSuperUsuario = CASE WHEN R.NombreRol = 'SuperUsuario' THEN 1 ELSE 0 END
|
|
FROM dbo.Sis_Usuarios AS U
|
|
INNER JOIN dbo.Sis_Roles AS R ON R.CveRol = U.CveRol
|
|
WHERE U.CveUsuario = @CveUsuarioEjecuta AND U.Activo = 1;
|
|
|
|
SELECT
|
|
F.CveFraccionamiento,
|
|
F.CveCliente,
|
|
C.Nombre AS Cliente,
|
|
F.Fraccionamiento,
|
|
F.Hectareas,
|
|
F.Ubicacion,
|
|
F.CveEstatus,
|
|
COALESCE(FE.Estatus, 'Estatus no disponible') AS Estatus,
|
|
F.EsActivo,
|
|
COUNT(E.CveFraccionamientoEtapa) AS NumeroEtapas,
|
|
F.FechaAlta
|
|
FROM dbo.Fraccionamientos AS F
|
|
INNER JOIN dbo.Clientes AS C ON C.CveCliente = F.CveCliente
|
|
LEFT JOIN dbo.Fraccionamientos_Estatus AS FE
|
|
ON FE.CveEstatus = F.CveEstatus
|
|
|
|
LEFT JOIN dbo.FraccionamientosEtapas AS E ON E.CveFraccionamiento = F.CveFraccionamiento
|
|
WHERE (@IncluirInactivos = 1 OR F.EsActivo = 1)
|
|
AND (@CveCliente IS NULL OR F.CveCliente = @CveCliente)
|
|
AND
|
|
(
|
|
NULLIF(LTRIM(RTRIM(@Texto)), '') IS NULL
|
|
OR F.Fraccionamiento LIKE '%' + LTRIM(RTRIM(@Texto)) + '%'
|
|
OR C.Nombre LIKE '%' + LTRIM(RTRIM(@Texto)) + '%'
|
|
OR F.Ubicacion LIKE '%' + LTRIM(RTRIM(@Texto)) + '%'
|
|
)
|
|
AND
|
|
(
|
|
@EsSuperUsuario = 1
|
|
OR EXISTS
|
|
(
|
|
SELECT 1 FROM dbo.Sis_UsuariosClientes AS UC
|
|
WHERE UC.CveUsuario = @CveUsuarioEjecuta
|
|
AND UC.CveCliente = F.CveCliente
|
|
AND UC.Activo = 1
|
|
)
|
|
)
|
|
GROUP BY F.CveFraccionamiento, F.CveCliente, C.Nombre, F.Fraccionamiento,
|
|
F.Hectareas, F.Ubicacion, F.CveEstatus, FE.Estatus, F.EsActivo, F.FechaAlta
|
|
ORDER BY C.Nombre, F.Fraccionamiento;
|
|
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'Ocurrió un error al consultar los fraccionamientos; favor de contactar a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Fraccionamientos_FraccionamientoList'), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE [dbo].[PA_Fraccionamientos_FraccionamientoSave]
|
|
@CveFraccionamiento int = NULL,
|
|
@CveCliente int,
|
|
@Fraccionamiento varchar(200),
|
|
@Hectareas decimal(18,4) = NULL,
|
|
@Ubicacion varchar(500) = NULL,
|
|
@CveEstatus int,
|
|
@EsActivo bit = 1,
|
|
@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 @EsSuperUsuario bit = 0;
|
|
SELECT @EsSuperUsuario = CASE WHEN R.NombreRol = 'SuperUsuario' THEN 1 ELSE 0 END
|
|
FROM dbo.Sis_Usuarios AS U
|
|
INNER JOIN dbo.Sis_Roles AS R ON R.CveRol = U.CveRol
|
|
WHERE U.CveUsuario = @CveUsuarioEjecuta AND U.Activo = 1;
|
|
|
|
IF NULLIF(LTRIM(RTRIM(@Fraccionamiento)), '') IS NULL
|
|
BEGIN
|
|
SET @ErrorMostrar = 'Capture el nombre del fraccionamiento.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
IF @Hectareas IS NOT NULL AND @Hectareas < 0
|
|
BEGIN
|
|
SET @ErrorMostrar = 'Las hectáreas no pueden ser negativas.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
IF NOT EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM dbo.Fraccionamientos_Estatus AS E
|
|
WHERE E.CveEstatus = @CveEstatus
|
|
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'Seleccione un estatus válido para el fraccionamiento.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
IF NOT EXISTS
|
|
(
|
|
SELECT 1 FROM dbo.Clientes AS C
|
|
WHERE C.CveCliente = @CveCliente AND C.Estatus = 1
|
|
AND
|
|
(
|
|
@EsSuperUsuario = 1
|
|
OR EXISTS
|
|
(
|
|
SELECT 1 FROM dbo.Sis_UsuariosClientes AS UC
|
|
WHERE UC.CveUsuario = @CveUsuarioEjecuta
|
|
AND UC.CveCliente = C.CveCliente
|
|
AND UC.Activo = 1
|
|
)
|
|
)
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'El cliente no existe o no está asignado al usuario.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
IF @CveFraccionamiento IS NOT NULL
|
|
AND NOT EXISTS
|
|
(
|
|
SELECT 1 FROM dbo.Fraccionamientos AS F
|
|
WHERE F.CveFraccionamiento = @CveFraccionamiento
|
|
|
|
AND (@EsSuperUsuario = 1 OR EXISTS
|
|
(SELECT 1 FROM dbo.Sis_UsuariosClientes AS UC
|
|
WHERE UC.CveUsuario = @CveUsuarioEjecuta
|
|
AND UC.CveCliente = F.CveCliente
|
|
AND UC.Activo = 1))
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'El fraccionamiento no existe o no está asignado al usuario.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
IF EXISTS
|
|
(
|
|
SELECT 1 FROM dbo.Fraccionamientos AS F
|
|
WHERE F.CveCliente = @CveCliente
|
|
AND F.Fraccionamiento = LTRIM(RTRIM(@Fraccionamiento))
|
|
|
|
AND (@CveFraccionamiento IS NULL OR F.CveFraccionamiento <> @CveFraccionamiento)
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'Ya existe un fraccionamiento con ese nombre para el cliente seleccionado.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
|
|
IF @CveFraccionamiento IS NULL
|
|
BEGIN
|
|
INSERT INTO dbo.Fraccionamientos
|
|
(CveCliente, Fraccionamiento, Hectareas, Ubicacion, CveEstatus, EsActivo, CveUsuario)
|
|
VALUES
|
|
(@CveCliente, LTRIM(RTRIM(@Fraccionamiento)), @Hectareas,
|
|
NULLIF(LTRIM(RTRIM(@Ubicacion)), ''), @CveEstatus,
|
|
@EsActivo, @CveUsuarioEjecuta);
|
|
SET @CveFraccionamiento = CONVERT(int, SCOPE_IDENTITY());
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
UPDATE dbo.Fraccionamientos
|
|
SET CveCliente = @CveCliente,
|
|
Fraccionamiento = LTRIM(RTRIM(@Fraccionamiento)),
|
|
Hectareas = @Hectareas,
|
|
Ubicacion = NULLIF(LTRIM(RTRIM(@Ubicacion)), ''),
|
|
CveEstatus = @CveEstatus,
|
|
EsActivo = @EsActivo,
|
|
FechaModificacion = GETDATE(),
|
|
CveUsuario = @CveUsuarioEjecuta
|
|
WHERE CveFraccionamiento = @CveFraccionamiento;
|
|
END;
|
|
|
|
SELECT @CveFraccionamiento AS CveFraccionamiento;
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'Ocurrió un error al guardar el fraccionamiento; favor de contactar a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Fraccionamientos_FraccionamientoSave'), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE [dbo].[PA_Fraccionamientos_LoteBatchSave]
|
|
@CveFraccionamiento int,
|
|
@CveFraccionamientoEtapa int,
|
|
@LotesXml xml,
|
|
@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].[FraccionamientosEtapas]
|
|
WHERE [CveFraccionamientoEtapa] = @CveFraccionamientoEtapa
|
|
AND [CveFraccionamiento] = @CveFraccionamiento
|
|
|
|
AND [EsActivo] = (1)
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'La etapa seleccionada no existe, está inactiva o no pertenece al fraccionamiento.';
|
|
SET @ErrorTipo = 1;
|
|
RETURN;
|
|
END;
|
|
|
|
DECLARE @Lotes TABLE
|
|
(
|
|
[Nombre] varchar(50) COLLATE Modern_Spanish_CS_AS NULL,
|
|
[Tipo] varchar(100) COLLATE Modern_Spanish_CS_AS NULL,
|
|
[Calle] varchar(200) COLLATE Modern_Spanish_CS_AS NULL,
|
|
[Catastro] varchar(100) COLLATE Modern_Spanish_CS_AS NULL,
|
|
[MetrosCuadrados] decimal(18,4) NULL,
|
|
[Duplicador] varchar(50) COLLATE Modern_Spanish_CS_AS NULL,
|
|
[EsActivo] bit NOT NULL
|
|
);
|
|
|
|
INSERT INTO @Lotes
|
|
(
|
|
[Nombre],
|
|
[Tipo],
|
|
[Calle],
|
|
[Catastro],
|
|
[MetrosCuadrados],
|
|
[Duplicador],
|
|
[EsActivo]
|
|
)
|
|
SELECT
|
|
NULLIF(LTRIM(RTRIM(N.value('@Nombre', 'varchar(50)'))), ''),
|
|
NULLIF(LTRIM(RTRIM(N.value('@Tipo', 'varchar(100)'))), ''),
|
|
NULLIF(LTRIM(RTRIM(N.value('@Calle', 'varchar(200)'))), ''),
|
|
NULLIF(LTRIM(RTRIM(N.value('@Catastro', 'varchar(100)'))), ''),
|
|
TRY_CONVERT(
|
|
decimal(18,4),
|
|
NULLIF(N.value('@MetrosCuadrados', 'varchar(50)'), '')
|
|
),
|
|
NULLIF(LTRIM(RTRIM(N.value('@Duplicador', 'varchar(50)'))), ''),
|
|
N.value('@EsActivo', 'bit')
|
|
FROM @LotesXml.nodes('/Lotes/Lote') AS X(N);
|
|
|
|
DECLARE @Cantidad int = (SELECT COUNT(1) FROM @Lotes);
|
|
|
|
IF @Cantidad = (0)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'No se recibieron lotes para guardar.';
|
|
SET @ErrorTipo = 1;
|
|
RETURN;
|
|
END;
|
|
|
|
|
|
IF EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM @Lotes
|
|
WHERE [Nombre] IS NULL
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'Todos los lotes deben tener un nombre.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
IF EXISTS
|
|
(
|
|
SELECT [Nombre]
|
|
FROM @Lotes
|
|
GROUP BY [Nombre]
|
|
HAVING COUNT(1) > (1)
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'La captura contiene nombres de lote repetidos.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
IF EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM @Lotes AS N
|
|
INNER JOIN [dbo].[FraccionamientosLotes] AS L
|
|
ON L.[CveFraccionamientoEtapa] = @CveFraccionamientoEtapa
|
|
AND L.[Numero] = N.[Nombre]
|
|
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'Uno o más nombres de lote ya existen en la etapa seleccionada.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
|
|
INSERT INTO [dbo].[FraccionamientosLotes]
|
|
(
|
|
[CveFraccionamientoEtapa],
|
|
[Tipo],
|
|
[Calle],
|
|
[Catastro],
|
|
[MetrosCuadrados],
|
|
[Numero],
|
|
[Duplicador],
|
|
[EsActivo],
|
|
[CveUsuario]
|
|
)
|
|
SELECT
|
|
@CveFraccionamientoEtapa,
|
|
[Tipo],
|
|
[Calle],
|
|
[Catastro],
|
|
[MetrosCuadrados],
|
|
[Nombre],
|
|
[Duplicador],
|
|
[EsActivo],
|
|
@CveUsuarioEjecuta FROM @Lotes;
|
|
|
|
|
|
SELECT @Cantidad AS [LotesGuardados];
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
|
|
SET @ErrorMostrar = 'Ocurrió un error al guardar los lotes; favor de contactar a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Fraccionamientos_LoteBatchSave'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE [dbo].[PA_Fraccionamientos_LoteList]
|
|
@CveFraccionamiento 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
|
|
IF NOT EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM [dbo].[Fraccionamientos]
|
|
WHERE [CveFraccionamiento] = @CveFraccionamiento
|
|
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'El fraccionamiento seleccionado no existe.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
IF @CveFraccionamientoEtapa IS NOT NULL
|
|
AND NOT EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM [dbo].[FraccionamientosEtapas]
|
|
WHERE [CveFraccionamientoEtapa] = @CveFraccionamientoEtapa
|
|
AND [CveFraccionamiento] = @CveFraccionamiento
|
|
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'La etapa seleccionada no pertenece al fraccionamiento.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
SELECT
|
|
L.[CveFraccionamientoLote] AS [CveFraccionamientoLote],
|
|
E.[CveFraccionamientoEtapa] AS [CveFraccionamientoEtapa],
|
|
E.[Etapa] AS [Etapa],
|
|
L.[Numero] AS [Nombre],
|
|
L.[Tipo] AS [Tipo],
|
|
L.[Calle] AS [Calle],
|
|
L.[Catastro] AS [Catastro],
|
|
L.[MetrosCuadrados] AS [MetrosCuadrados],
|
|
L.[Duplicador] AS [Duplicador],
|
|
L.[EsActivo] AS [EsActivo]
|
|
FROM [dbo].[FraccionamientosLotes] AS L
|
|
INNER JOIN [dbo].[FraccionamientosEtapas] AS E
|
|
ON E.[CveFraccionamientoEtapa] = L.[CveFraccionamientoEtapa]
|
|
WHERE E.[CveFraccionamiento] = @CveFraccionamiento
|
|
AND (@CveFraccionamientoEtapa IS NULL
|
|
OR E.[CveFraccionamientoEtapa] = @CveFraccionamientoEtapa)
|
|
|
|
|
|
ORDER BY
|
|
E.[Orden],
|
|
E.[Etapa],
|
|
L.[Numero],
|
|
L.[CveFraccionamientoLote];
|
|
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'Ocurrió un error al consultar los lotes; favor de contactar a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Fraccionamientos_LoteList'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE [dbo].[PA_Gral_CodigoPostalGet]
|
|
@CP varchar(5),
|
|
@CveUsuarioEjecuta int,
|
|
@ErrorMostrar varchar(max) OUTPUT,
|
|
@ErrorTipo int OUTPUT,
|
|
@Return bit OUTPUT
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON;
|
|
SELECT @ErrorMostrar = NULL, @ErrorTipo = 0, @Return = 0;
|
|
SET @CP = LTRIM(RTRIM(@CP));
|
|
|
|
BEGIN TRY
|
|
IF LEN(@CP) <> 5 OR @CP LIKE '%[^0-9]%'
|
|
BEGIN
|
|
SET @ErrorMostrar = 'El código postal debe contener exactamente 5 dígitos.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
DECLARE
|
|
@CvePais int,
|
|
@Pais varchar(100),
|
|
@CveEstado int,
|
|
@Estado varchar(50),
|
|
@CveMunicipio int,
|
|
@Municipio varchar(100),
|
|
@CveLocalidad int,
|
|
@Localidad varchar(100);
|
|
|
|
SELECT TOP (1)
|
|
@CvePais = P.[CvePais],
|
|
@Pais = P.[Descripcion],
|
|
@CveEstado = E.[CveEstado],
|
|
@Estado = E.[NombreEstado],
|
|
@CveMunicipio = M.[CveMunicipio],
|
|
@Municipio = M.[Descripcion],
|
|
@CveLocalidad = L.[CveLocalidad],
|
|
@Localidad = L.[NombreLocalidad]
|
|
FROM [dbo].[Gral_SAT_CP] AS CP
|
|
INNER JOIN [dbo].[Gral_SAT_Estado] AS E
|
|
ON E.[ClaveSATEstado] = CP.[ClaveSATEstado]
|
|
|
|
INNER JOIN [dbo].[Gral_SAT_Pais] AS P
|
|
ON P.[ClaveSATPais] = E.[ClaveSATPais]
|
|
|
|
INNER JOIN [dbo].[Gral_SAT_Municipio] AS M
|
|
ON M.[ClaveSATEstado] = CP.[ClaveSATEstado]
|
|
AND M.[ClaveSATMunicipio] = CP.[ClaveSATMunicipio]
|
|
|
|
LEFT JOIN [dbo].[Gral_SAT_Localidad] AS L
|
|
ON L.[ClaveSATEstado] = CP.[ClaveSATEstado]
|
|
AND L.[ClaveSATLocalidad] = CP.[ClaveSATLocalidad]
|
|
|
|
WHERE CP.[CP] = @CP
|
|
;
|
|
|
|
IF @CvePais IS NULL OR @CveEstado IS NULL OR @CveMunicipio IS NULL
|
|
BEGIN
|
|
SET @ErrorMostrar = CONCAT(
|
|
'El código postal ', @CP,
|
|
' no existe o sus relaciones de país, estado y municipio están incompletas.');
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
SELECT
|
|
@CvePais AS [CvePais],
|
|
@Pais AS [Pais],
|
|
@CveEstado AS [CveEstado],
|
|
@Estado AS [Estado],
|
|
@CveMunicipio AS [CveMunicipio],
|
|
@Municipio AS [Municipio],
|
|
@CveLocalidad AS [CveLocalidad],
|
|
@Localidad AS [Localidad],
|
|
COALESCE(NULLIF(@Localidad, ''), @Municipio) AS [Ciudad];
|
|
|
|
SELECT
|
|
C.[CveColonia],
|
|
C.[NombreAsentamiento]
|
|
FROM [dbo].[Gral_SAT_Colonia] AS C
|
|
WHERE C.[CP] = @CP
|
|
|
|
ORDER BY C.[NombreAsentamiento];
|
|
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'Ocurrió un error al consultar el código postal; favor de contactar a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
DECLARE @E nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', ERROR_PROCEDURE(),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE());
|
|
RAISERROR(N'%s', 10, 1, @E);
|
|
END CATCH;
|
|
END;
|
|
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE [dbo].[PA_Gral_EstadoList]
|
|
@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
|
|
SELECT [CveEstado], [NombreEstado], [ClaveSATEstado]
|
|
FROM [dbo].[Gral_SAT_Estado]
|
|
ORDER BY [NombreEstado];
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'Ocurrió un error al consultar los estados; favor de contactar a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
DECLARE @E nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', ERROR_PROCEDURE(), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
|
|
RAISERROR(N'%s', 10, 1, @E);
|
|
END CATCH;
|
|
END;
|
|
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE [dbo].[PA_Sis_CorreoVerify]
|
|
@HashToken char(64),
|
|
@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 @CveVerificacion int;
|
|
DECLARE @CveUsuario int;
|
|
DECLARE @CveCliente int;
|
|
|
|
SELECT TOP (1)
|
|
@CveVerificacion = [CveUsuarioVerificacionCorreo],
|
|
@CveUsuario = [CveUsuario],
|
|
@CveCliente = [CveClienteRegistro]
|
|
FROM [dbo].[Sis_UsuariosVerificacionesCorreo]
|
|
WHERE [HashToken] = @HashToken
|
|
AND [Utilizado] = (0)
|
|
|
|
AND [FechaExpiracion] >= SYSDATETIME();
|
|
|
|
IF @CveVerificacion IS NULL
|
|
BEGIN
|
|
SET @ErrorMostrar = 'La liga de verificación no es válida o ya expiró.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
|
|
UPDATE [dbo].[Sis_UsuariosVerificacionesCorreo]
|
|
SET [Utilizado] = (1), [FechaVerificacion] = SYSDATETIME()
|
|
WHERE [CveUsuarioVerificacionCorreo] = @CveVerificacion AND [Utilizado] = (0);
|
|
|
|
IF @@ROWCOUNT = (0)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'La liga de verificación ya fue utilizada.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
UPDATE [dbo].[Sis_Usuarios]
|
|
SET [CorreoVerificado] = (1), [FechaVerificacionCorreo] = SYSDATETIME(),
|
|
[Activo] = (1), [FechaActualizacion] = GETDATE()
|
|
WHERE [CveUsuario] = @CveUsuario;
|
|
|
|
/* Activación inicial del cliente creado por este mismo token. */
|
|
UPDATE [dbo].[Clientes]
|
|
SET [Estatus] = (1), [CveUsuarioModifico] = @CveUsuario
|
|
WHERE [CveCliente] = @CveCliente AND [CveUsuario] = @CveUsuario;
|
|
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'Ocurrió un error al verificar el correo; favor de contactar a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
DECLARE @E nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', ERROR_PROCEDURE(), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
|
|
RAISERROR(N'%s', 10, 1, @E);
|
|
END CATCH;
|
|
END;
|
|
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE [dbo].[PA_Sis_MenuList]
|
|
@CveRol 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
|
|
SELECT DISTINCT
|
|
M.[CveModulo], M.[CveModuloPadre], M.[NombreModulo], M.[Url],
|
|
M.[ClaseCssIcono], M.[ClaseCssEstilo], M.[OrdenVisualizacion], M.[Visible]
|
|
FROM [dbo].[Sis_Modulos] AS M
|
|
INNER JOIN [dbo].[Sis_RolesModulos] AS RM ON RM.[CveModulo] = M.[CveModulo]
|
|
WHERE RM.[CveRol] = @CveRol
|
|
AND RM.[PuedeVer] = (1)
|
|
AND M.[Activo] = (1)
|
|
AND M.[Visible] = (1)
|
|
|
|
|
|
ORDER BY M.[OrdenVisualizacion], M.[NombreModulo];
|
|
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'Ocurrió un error al consultar el menú; favor de contactar a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Sis_MenuList'), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE [dbo].[PA_Sis_PaginaAccessCheck]
|
|
@PaginaUrl varchar(500),
|
|
@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 @CveRol int;
|
|
DECLARE @PuedeAcceder bit = (0);
|
|
|
|
SELECT @CveRol = [CveRol]
|
|
FROM [dbo].[Sis_Usuarios]
|
|
WHERE [CveUsuario] = @CveUsuarioEjecuta
|
|
AND [Activo] = (1)
|
|
;
|
|
|
|
IF EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM [dbo].[Sis_Modulos] AS M
|
|
INNER JOIN [dbo].[Sis_RolesModulos] AS RM ON RM.[CveModulo] = M.[CveModulo]
|
|
WHERE RM.[CveRol] = @CveRol
|
|
AND RM.[PuedeVer] = (1)
|
|
AND M.[Activo] = (1)
|
|
|
|
|
|
AND
|
|
(
|
|
LOWER(REPLACE(M.[Url], '~/', '')) = LOWER(@PaginaUrl)
|
|
OR LOWER(REPLACE(M.[Url], '/', '')) = LOWER(REPLACE(@PaginaUrl, '/', ''))
|
|
)
|
|
)
|
|
SET @PuedeAcceder = (1);
|
|
ELSE IF EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM [dbo].[Sis_Modulos] AS M
|
|
WHERE M.[Activo] = (1)
|
|
|
|
AND LOWER(REPLACE(M.[Url], '~/', '')) = LOWER(@PaginaUrl)
|
|
)
|
|
SET @PuedeAcceder = (0);
|
|
ELSE IF EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM [dbo].[Sis_UsuariosPermisos] AS UP
|
|
INNER JOIN [dbo].[Sis_Permisos] AS P ON P.[CvePermiso] = UP.[CvePermiso]
|
|
WHERE UP.[CveUsuario] = @CveUsuarioEjecuta
|
|
AND P.[CodigoPermiso] = 'System.Access'
|
|
AND UP.[Permitido] = (1)
|
|
AND P.[Activo] = (1)
|
|
|
|
|
|
)
|
|
SET @PuedeAcceder = (1);
|
|
ELSE IF EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM [dbo].[Sis_RolesPermisos] AS RP
|
|
INNER JOIN [dbo].[Sis_Permisos] AS P ON P.[CvePermiso] = RP.[CvePermiso]
|
|
WHERE RP.[CveRol] = @CveRol
|
|
AND P.[CodigoPermiso] = 'System.Access'
|
|
AND RP.[Permitido] = (1)
|
|
AND P.[Activo] = (1)
|
|
|
|
|
|
)
|
|
SET @PuedeAcceder = (1);
|
|
|
|
SELECT @PuedeAcceder AS [PuedeAcceder];
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'Ocurrió un error al validar el acceso; favor de contactar a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Sis_PaginaAccessCheck'), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE [dbo].[PA_Sis_PermisoCheck]
|
|
@CodigoPermiso varchar(100),
|
|
@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 @CveRol int;
|
|
DECLARE @PermisoUsuario bit;
|
|
|
|
SELECT @CveRol = [CveRol]
|
|
FROM [dbo].[Sis_Usuarios]
|
|
WHERE [CveUsuario] = @CveUsuarioEjecuta
|
|
AND [Activo] = (1)
|
|
;
|
|
|
|
SELECT TOP (1) @PermisoUsuario = UP.[Permitido]
|
|
FROM [dbo].[Sis_UsuariosPermisos] AS UP
|
|
INNER JOIN [dbo].[Sis_Permisos] AS P ON P.[CvePermiso] = UP.[CvePermiso]
|
|
WHERE UP.[CveUsuario] = @CveUsuarioEjecuta
|
|
AND P.[CodigoPermiso] = @CodigoPermiso
|
|
AND P.[Activo] = (1)
|
|
|
|
;
|
|
|
|
IF @PermisoUsuario IS NOT NULL
|
|
SELECT CAST(@PermisoUsuario AS bit) AS [Permitido];
|
|
ELSE IF EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM [dbo].[Sis_RolesPermisos] AS RP
|
|
INNER JOIN [dbo].[Sis_Permisos] AS P ON P.[CvePermiso] = RP.[CvePermiso]
|
|
WHERE RP.[CveRol] = @CveRol
|
|
AND P.[CodigoPermiso] = @CodigoPermiso
|
|
AND RP.[Permitido] = (1)
|
|
AND P.[Activo] = (1)
|
|
|
|
|
|
)
|
|
SELECT CAST((1) AS bit) AS [Permitido];
|
|
ELSE
|
|
SELECT CAST((0) AS bit) AS [Permitido];
|
|
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'Ocurrió un error al consultar los permisos; favor de contactar a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Sis_PermisoCheck'), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE [dbo].[PA_Sis_RegistroClienteAdd]
|
|
@NombreUsuario varchar(100),
|
|
@HashContrasena varchar(500),
|
|
@CorreoElectronico varchar(255),
|
|
@RFC varchar(15),
|
|
@RazonSocial varchar(200),
|
|
@NombreComercial varchar(200) = NULL,
|
|
@Direccion varchar(90),
|
|
@NoExt varchar(20) = NULL,
|
|
@NoInt varchar(50) = NULL,
|
|
@Colonia varchar(100),
|
|
@Ciudad varchar(100),
|
|
@CveSATEstado int,
|
|
@Pais varchar(100) = 'México',
|
|
@CP varchar(5),
|
|
@Telefono varchar(25) = NULL,
|
|
@CvePais int,
|
|
@CveMunicipio int,
|
|
@CveLocalidad int = NULL,
|
|
@CveColonia int,
|
|
@HashToken char(64),
|
|
@HorasExpiracion int = 24,
|
|
@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 @CveRolEmpresa int, @CveUsuario int, @CveCliente int;
|
|
DECLARE @NombreEstado varchar(50), @PaisCatalogo varchar(100);
|
|
DECLARE @CiudadCatalogo varchar(100), @ColoniaCatalogo varchar(100);
|
|
|
|
SET @NombreUsuario = LTRIM(RTRIM(@NombreUsuario));
|
|
SET @CorreoElectronico = LOWER(LTRIM(RTRIM(@CorreoElectronico)));
|
|
SET @RFC = UPPER(REPLACE(LTRIM(RTRIM(@RFC)), ' ', ''));
|
|
SET @CP = LTRIM(RTRIM(@CP));
|
|
|
|
SELECT @CveRolEmpresa = [CveRol]
|
|
FROM [dbo].[Sis_Roles]
|
|
WHERE [NombreRol] = 'Empresa' AND [Activo] = (1);
|
|
|
|
SELECT TOP (1)
|
|
@NombreEstado = LEFT(E.[NombreEstado], 35),
|
|
@PaisCatalogo = LEFT(P.[Descripcion], 50),
|
|
@CiudadCatalogo = LEFT(COALESCE(NULLIF(L.[NombreLocalidad], ''), M.[Descripcion]), 50),
|
|
@ColoniaCatalogo = LEFT(C.[NombreAsentamiento], 50)
|
|
FROM [dbo].[Gral_SAT_CP] AS CP
|
|
INNER JOIN [dbo].[Gral_SAT_Estado] AS E
|
|
ON E.[ClaveSATEstado] = CP.[ClaveSATEstado]
|
|
AND E.[CveEstado] = @CveSATEstado
|
|
INNER JOIN [dbo].[Gral_SAT_Pais] AS P
|
|
ON P.[ClaveSATPais] = E.[ClaveSATPais]
|
|
AND P.[CvePais] = @CvePais
|
|
INNER JOIN [dbo].[Gral_SAT_Municipio] AS M
|
|
ON M.[ClaveSATEstado] = CP.[ClaveSATEstado]
|
|
AND M.[ClaveSATMunicipio] = CP.[ClaveSATMunicipio]
|
|
AND M.[CveMunicipio] = @CveMunicipio
|
|
LEFT JOIN [dbo].[Gral_SAT_Localidad] AS L
|
|
ON L.[ClaveSATEstado] = CP.[ClaveSATEstado]
|
|
AND L.[ClaveSATLocalidad] = CP.[ClaveSATLocalidad]
|
|
INNER JOIN [dbo].[Gral_SAT_Colonia] AS C
|
|
ON C.[CP] = CP.[CP] AND C.[CveColonia] = @CveColonia
|
|
WHERE CP.[CP] = @CP
|
|
AND (@CveLocalidad IS NULL OR L.[CveLocalidad] = @CveLocalidad);
|
|
|
|
IF @CveRolEmpresa IS NULL
|
|
BEGIN
|
|
SELECT @ErrorMostrar = 'No fue posible determinar el rol Empresa.', @ErrorTipo = 1;
|
|
RETURN;
|
|
END;
|
|
|
|
IF @NombreEstado IS NULL OR @PaisCatalogo IS NULL OR @CiudadCatalogo IS NULL OR @ColoniaCatalogo IS NULL
|
|
BEGIN
|
|
SELECT @ErrorMostrar = 'Los datos del código postal no coinciden con los catálogos vigentes. Actualiza el código postal.', @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
SELECT @Pais = @PaisCatalogo, @Ciudad = @CiudadCatalogo, @Colonia = @ColoniaCatalogo;
|
|
|
|
IF EXISTS (SELECT 1 FROM [dbo].[Sis_Usuarios] WHERE [NombreUsuario] = @NombreUsuario)
|
|
OR EXISTS (SELECT 1 FROM [dbo].[Sis_Usuarios] WHERE LOWER([CorreoElectronico]) = @CorreoElectronico)
|
|
OR EXISTS (SELECT 1 FROM [dbo].[Clientes] WHERE UPPER(REPLACE(LTRIM(RTRIM([RFC])), ' ', '')) = @RFC)
|
|
BEGIN
|
|
SELECT @ErrorMostrar = 'Los datos ya fueron registrados por otra solicitud. Actualiza la página e inténtalo nuevamente.', @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
|
|
INSERT INTO [dbo].[Sis_Usuarios]
|
|
([NombreUsuario], [HashContrasena], [CorreoElectronico], [CveRol], [Activo], [DebeCambiarContrasena], [CorreoVerificado])
|
|
VALUES (@NombreUsuario, @HashContrasena, @CorreoElectronico, @CveRolEmpresa, (0), (0), (0));
|
|
|
|
SET @CveUsuario = CONVERT(int, SCOPE_IDENTITY());
|
|
|
|
INSERT INTO [dbo].[Clientes]
|
|
([Nombre], [NombreComercial], [Direccion], [NoExt], [NoInt], [Colonia],
|
|
[Ciudad], [Estado], [CveSATEstado], [Pais], [RFC], [CP], [Telefono],
|
|
[Mail], [Estatus], [Fecha], [CveUsuario], [FechaIng],
|
|
[CvePais], [CveEstado], [CveMunicipio], [CveLocalidad], [CveColonia])
|
|
VALUES
|
|
(@RazonSocial, NULLIF(@NombreComercial, ''), @Direccion, NULLIF(@NoExt, ''),
|
|
NULLIF(@NoInt, ''), @Colonia, @Ciudad, @NombreEstado, @CveSATEstado,
|
|
@Pais, @RFC, @CP, NULLIF(@Telefono, ''), @CorreoElectronico, (0),
|
|
CONVERT(date, GETDATE()), @CveUsuario, GETDATE(),
|
|
@CvePais, @CveSATEstado, @CveMunicipio, @CveLocalidad, @CveColonia);
|
|
|
|
SET @CveCliente = CONVERT(int, SCOPE_IDENTITY());
|
|
|
|
INSERT INTO [dbo].[Sis_UsuariosClientes]
|
|
([CveUsuario], [CveCliente], [Orden], [EsPrincipal], [Activo], [CveUsuarioRegistro])
|
|
VALUES (@CveUsuario, @CveCliente, (1), (1), (1), @CveUsuario);
|
|
|
|
INSERT INTO [dbo].[Sis_UsuariosVerificacionesCorreo]
|
|
([CveUsuario], [CveClienteRegistro], [HashToken], [FechaExpiracion])
|
|
VALUES (@CveUsuario, @CveCliente, @HashToken, DATEADD(HOUR, @HorasExpiracion, SYSDATETIME()));
|
|
|
|
|
|
SELECT @CveUsuario AS [CveUsuario], @CveCliente AS [CveCliente];
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SELECT @ErrorMostrar = 'Ocurrió un error al crear el registro; favor de contactar a Sistemas.', @ErrorTipo = 1, @Return = 0;
|
|
DECLARE @E nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', ERROR_PROCEDURE(), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
|
|
RAISERROR(N'%s', 10, 1, @E);
|
|
END CATCH;
|
|
END;
|
|
|
|
GO
|
|
|
|
/* ==================== AUTORREGISTRO ==================== */
|
|
|
|
CREATE OR ALTER PROCEDURE [dbo].[PA_Sis_RegistroClienteValidate]
|
|
@NombreUsuario varchar(100),
|
|
@CorreoElectronico varchar(255),
|
|
@RFC varchar(15),
|
|
@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
|
|
SET @NombreUsuario = LTRIM(RTRIM(@NombreUsuario));
|
|
SET @CorreoElectronico = LOWER(LTRIM(RTRIM(@CorreoElectronico)));
|
|
SET @RFC = UPPER(REPLACE(LTRIM(RTRIM(@RFC)), ' ', ''));
|
|
|
|
IF EXISTS (SELECT 1 FROM [dbo].[Sis_Usuarios] WHERE [NombreUsuario] = @NombreUsuario)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'El nombre de usuario ya se encuentra registrado.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
IF EXISTS (SELECT 1 FROM [dbo].[Sis_Usuarios] WHERE LOWER([CorreoElectronico]) = @CorreoElectronico)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'El correo electrónico ya se encuentra registrado.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
/* Incluye clientes activos e inactivos para impedir registros duplicados. */
|
|
IF EXISTS (SELECT 1 FROM [dbo].[Clientes] WHERE UPPER(REPLACE(LTRIM(RTRIM([RFC])), ' ', '')) = @RFC)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'El RFC ya se encuentra registrado. Contacta a un administrador para solicitar acceso.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'Ocurrió un error al validar el registro; favor de contactar a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
DECLARE @E nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', ERROR_PROCEDURE(), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
|
|
RAISERROR(N'%s', 10, 1, @E);
|
|
END CATCH;
|
|
END;
|
|
|
|
GO
|
|
|
|
/* ==================== CATÁLOGOS ==================== */
|
|
|
|
CREATE OR ALTER PROCEDURE [dbo].[PA_Sis_RolList]
|
|
@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
|
|
SELECT [CveRol], [NombreRol], [Descripcion]
|
|
FROM [dbo].[Sis_Roles]
|
|
WHERE [Activo] = (1)
|
|
ORDER BY [NombreRol];
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'Ocurrió un error al consultar los roles; favor de contactar a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
DECLARE @E nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', ERROR_PROCEDURE(), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
|
|
RAISERROR(N'%s', 10, 1, @E);
|
|
END CATCH;
|
|
END;
|
|
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE [dbo].[PA_Sis_UsuarioClienteList]
|
|
@CveUsuario 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
|
|
SELECT UC.[CveUsuarioCliente], UC.[CveUsuario], UC.[CveCliente], C.[Nombre], C.[RFC],
|
|
UC.[Orden], UC.[EsPrincipal], UC.[Activo], C.[Estatus] AS [ClienteActivo]
|
|
FROM [dbo].[Sis_UsuariosClientes] UC
|
|
INNER JOIN [dbo].[Clientes] C ON C.[CveCliente] = UC.[CveCliente]
|
|
WHERE UC.[CveUsuario] = @CveUsuario
|
|
ORDER BY UC.[Orden];
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'Ocurrió un error al consultar los clientes del usuario; favor de contactar a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
DECLARE @E nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', ERROR_PROCEDURE(), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
|
|
RAISERROR(N'%s', 10, 1, @E);
|
|
END CATCH;
|
|
END;
|
|
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE [dbo].[PA_Sis_UsuarioClienteSave]
|
|
@CveUsuario int,
|
|
@CveCliente int,
|
|
@Orden int,
|
|
@EsPrincipal 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] U INNER JOIN [dbo].[Sis_Roles] R ON R.[CveRol] = U.[CveRol]
|
|
WHERE U.[CveUsuario] = @CveUsuarioEjecuta AND R.[NombreRol] IN ('SuperUsuario', 'Administrador')
|
|
AND U.[Activo] = (1)
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'No tienes permiso para asignar clientes.';
|
|
SET @ErrorTipo = 1;
|
|
RETURN;
|
|
END;
|
|
|
|
IF @Orden <= (0) OR NOT EXISTS (SELECT 1 FROM [dbo].[Clientes] WHERE [CveCliente] = @CveCliente)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'El cliente o el orden indicado no es válido.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
IF EXISTS
|
|
(
|
|
SELECT 1 FROM [dbo].[Sis_UsuariosClientes]
|
|
WHERE [CveUsuario] = @CveUsuario AND [Orden] = @Orden AND [Activo] = (1)
|
|
AND [CveCliente] <> @CveCliente
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'Ya existe otro cliente con el mismo orden para este usuario.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
IF @EsPrincipal = (1)
|
|
UPDATE [dbo].[Sis_UsuariosClientes]
|
|
SET [EsPrincipal] = (0), [FechaActualizacion] = SYSDATETIME()
|
|
WHERE [CveUsuario] = @CveUsuario;
|
|
|
|
UPDATE [dbo].[Sis_UsuariosClientes]
|
|
SET [Orden] = @Orden, [EsPrincipal] = @EsPrincipal, [Activo] = (1),
|
|
[FechaActualizacion] = SYSDATETIME()
|
|
WHERE [CveUsuario] = @CveUsuario AND [CveCliente] = @CveCliente;
|
|
|
|
IF @@ROWCOUNT = (0)
|
|
INSERT INTO [dbo].[Sis_UsuariosClientes]
|
|
([CveUsuario], [CveCliente], [Orden], [EsPrincipal], [Activo], [CveUsuarioRegistro])
|
|
VALUES
|
|
(@CveUsuario, @CveCliente, @Orden, @EsPrincipal, (1), @CveUsuarioEjecuta);
|
|
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'Ocurrió un error al asignar el cliente; favor de contactar a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
DECLARE @E nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', ERROR_PROCEDURE(), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
|
|
RAISERROR(N'%s', 10, 1, @E);
|
|
END CATCH;
|
|
END;
|
|
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE [dbo].[PA_Sis_UsuarioDelete]
|
|
@CveUsuario 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 @CveUsuario = @CveUsuarioEjecuta
|
|
BEGIN
|
|
SET @ErrorMostrar = 'No puedes borrar tu propio usuario.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
DELETE U
|
|
FROM [dbo].[Sis_Usuarios] AS U
|
|
WHERE U.[CveUsuario] = @CveUsuario
|
|
AND EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM [dbo].[Sis_Usuarios] AS E
|
|
INNER JOIN [dbo].[Sis_Roles] AS R
|
|
ON R.[CveRol] = E.[CveRol]
|
|
WHERE E.[CveUsuario] = @CveUsuarioEjecuta
|
|
AND R.[NombreRol] = 'SuperUsuario'
|
|
AND E.[Activo] = (1)
|
|
);
|
|
IF @@ROWCOUNT = (0)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'No fue posible borrar el usuario o no tienes autorización.';
|
|
SET @ErrorTipo = 1;
|
|
RETURN;
|
|
END;
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
IF ERROR_NUMBER() = 547
|
|
BEGIN
|
|
SET @ErrorMostrar = 'El usuario tiene información relacionada y no puede eliminarse.';
|
|
SET @ErrorTipo = 2;
|
|
SET @Return = 0;
|
|
RETURN;
|
|
END;
|
|
SET @ErrorMostrar = 'Ocurrió un error al borrar el usuario; favor de contactar a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
DECLARE @E nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', ERROR_PROCEDURE(), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
|
|
RAISERROR(N'%s', 10, 1, @E);
|
|
END CATCH;
|
|
END;
|
|
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE [dbo].[PA_Sis_UsuarioGet]
|
|
@CveUsuario 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
|
|
SELECT U.[CveUsuario], U.[NombreUsuario], U.[CorreoElectronico], U.[CveRol],
|
|
R.[NombreRol], U.[Activo], U.[DebeCambiarContrasena], U.[CorreoVerificado]
|
|
FROM [dbo].[Sis_Usuarios] U
|
|
INNER JOIN [dbo].[Sis_Roles] R ON R.[CveRol] = U.[CveRol]
|
|
WHERE U.[CveUsuario] = @CveUsuario;
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'Ocurrió un error al consultar el usuario; favor de contactar a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
DECLARE @E nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', ERROR_PROCEDURE(), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
|
|
RAISERROR(N'%s', 10, 1, @E);
|
|
END CATCH;
|
|
END;
|
|
|
|
GO
|
|
|
|
/* ==================== AUTENTICACIÓN CON CORREO VERIFICADO ==================== */
|
|
|
|
CREATE OR ALTER PROCEDURE [dbo].[PA_Sis_UsuarioGetByName]
|
|
@NombreUsuario varchar(100),
|
|
@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
|
|
SELECT TOP (1)
|
|
U.[CveUsuario], U.[NombreUsuario], U.[HashContrasena], U.[CorreoElectronico],
|
|
U.[CveRol], R.[NombreRol], U.[Activo], U.[DebeCambiarContrasena],
|
|
U.[IntentosFallidosInicioSesion], U.[BloqueadoHasta],
|
|
U.[FechaUltimoInicioSesion], U.[FechaUltimaConexion], U.[CorreoVerificado]
|
|
FROM [dbo].[Sis_Usuarios] AS U
|
|
INNER JOIN [dbo].[Sis_Roles] AS R ON R.[CveRol] = U.[CveRol]
|
|
WHERE U.[NombreUsuario] = @NombreUsuario
|
|
|
|
;
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'Ocurrió un error al consultar el usuario; favor de contactar a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
DECLARE @E nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', ERROR_PROCEDURE(), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
|
|
RAISERROR(N'%s', 10, 1, @E);
|
|
END CATCH;
|
|
END;
|
|
|
|
GO
|
|
|
|
/* ==================== ADMINISTRACIÓN DE USUARIOS ==================== */
|
|
|
|
CREATE OR ALTER PROCEDURE [dbo].[PA_Sis_UsuarioList]
|
|
@Texto varchar(150) = 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 NOT EXISTS
|
|
(
|
|
SELECT 1 FROM [dbo].[Sis_Usuarios] U
|
|
INNER JOIN [dbo].[Sis_Roles] R ON R.[CveRol] = U.[CveRol]
|
|
WHERE U.[CveUsuario] = @CveUsuarioEjecuta
|
|
AND R.[NombreRol] IN ('SuperUsuario', 'Administrador')
|
|
AND U.[Activo] = (1)
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'No tienes permiso para consultar usuarios.';
|
|
SET @ErrorTipo = 1;
|
|
RETURN;
|
|
END;
|
|
|
|
SELECT U.[CveUsuario], U.[NombreUsuario], U.[CorreoElectronico], U.[CveRol],
|
|
R.[NombreRol], U.[Activo], U.[CorreoVerificado], U.[FechaCreacion]
|
|
FROM [dbo].[Sis_Usuarios] U
|
|
INNER JOIN [dbo].[Sis_Roles] R ON R.[CveRol] = U.[CveRol]
|
|
WHERE (@Texto IS NULL OR U.[NombreUsuario] LIKE '%' + @Texto + '%'
|
|
OR U.[CorreoElectronico] LIKE '%' + @Texto + '%')
|
|
ORDER BY U.[NombreUsuario];
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'Ocurrió un error al consultar usuarios; favor de contactar a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
DECLARE @E nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', ERROR_PROCEDURE(), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
|
|
RAISERROR(N'%s', 10, 1, @E);
|
|
END CATCH;
|
|
END;
|
|
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE [dbo].[PA_Sis_UsuarioLoginFailedUpdate]
|
|
@CveUsuario 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
|
|
UPDATE [dbo].[Sis_Usuarios]
|
|
SET [IntentosFallidosInicioSesion] = [IntentosFallidosInicioSesion] + (1),
|
|
[BloqueadoHasta] = CASE
|
|
WHEN [IntentosFallidosInicioSesion] + (1) >= (5)
|
|
THEN DATEADD(MINUTE, (15), GETDATE())
|
|
ELSE [BloqueadoHasta]
|
|
END,
|
|
[FechaActualizacion] = GETDATE()
|
|
WHERE [CveUsuario] = @CveUsuario
|
|
;
|
|
|
|
IF @@ROWCOUNT = (0)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'El usuario ya no está disponible.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'Ocurrió un error al registrar el intento de acceso; favor de contactar a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Sis_UsuarioLoginFailedUpdate'), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE [dbo].[PA_Sis_UsuarioLoginSuccessUpdate]
|
|
@CveUsuario 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
|
|
UPDATE [dbo].[Sis_Usuarios]
|
|
SET [FechaUltimoInicioSesion] = GETDATE(),
|
|
[FechaUltimaConexion] = GETDATE(),
|
|
[IntentosFallidosInicioSesion] = (0),
|
|
[BloqueadoHasta] = NULL,
|
|
[FechaActualizacion] = GETDATE()
|
|
WHERE [CveUsuario] = @CveUsuario
|
|
;
|
|
|
|
IF @@ROWCOUNT = (0)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'El usuario ya no está disponible.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'Ocurrió un error al actualizar el inicio de sesión; favor de contactar a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Sis_UsuarioLoginSuccessUpdate'), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE [dbo].[PA_Sis_UsuarioSave]
|
|
@CveUsuario int = NULL,
|
|
@NombreUsuario varchar(100),
|
|
@CorreoElectronico varchar(255),
|
|
@CveRol int,
|
|
@HashContrasena varchar(500) = NULL,
|
|
@Activo bit,
|
|
@DebeCambiarContrasena 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] U
|
|
INNER JOIN [dbo].[Sis_Roles] R ON R.[CveRol] = U.[CveRol]
|
|
WHERE U.[CveUsuario] = @CveUsuarioEjecuta AND R.[NombreRol] = 'SuperUsuario'
|
|
AND U.[Activo] = (1)
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'Sólo un SuperUsuario puede crear o modificar usuarios.';
|
|
SET @ErrorTipo = 1;
|
|
RETURN;
|
|
END;
|
|
|
|
IF EXISTS (SELECT 1 FROM [dbo].[Sis_Usuarios] WHERE [NombreUsuario] = @NombreUsuario AND [CveUsuario] <> ISNULL(@CveUsuario, (0)))
|
|
OR EXISTS (SELECT 1 FROM [dbo].[Sis_Usuarios] WHERE LOWER([CorreoElectronico]) = LOWER(@CorreoElectronico) AND [CveUsuario] <> ISNULL(@CveUsuario, (0)))
|
|
BEGIN
|
|
SET @ErrorMostrar = 'El usuario o correo electrónico ya está registrado.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
IF @CveUsuario IS NULL OR @CveUsuario <= (0)
|
|
BEGIN
|
|
IF NULLIF(@HashContrasena, '') IS NULL
|
|
BEGIN
|
|
SET @ErrorMostrar = 'La contraseña es obligatoria para un usuario nuevo.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
INSERT INTO [dbo].[Sis_Usuarios]
|
|
([NombreUsuario], [HashContrasena], [CorreoElectronico], [CveRol], [Activo],
|
|
[DebeCambiarContrasena], [CorreoVerificado], [FechaVerificacionCorreo])
|
|
VALUES
|
|
(@NombreUsuario, @HashContrasena, @CorreoElectronico, @CveRol, @Activo,
|
|
@DebeCambiarContrasena, (1), SYSDATETIME());
|
|
SET @CveUsuario = CONVERT(int, SCOPE_IDENTITY());
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
UPDATE [dbo].[Sis_Usuarios]
|
|
SET [NombreUsuario] = @NombreUsuario, [CorreoElectronico] = @CorreoElectronico,
|
|
[CveRol] = @CveRol, [Activo] = @Activo,
|
|
[DebeCambiarContrasena] = @DebeCambiarContrasena,
|
|
[HashContrasena] = COALESCE(NULLIF(@HashContrasena, ''), [HashContrasena]),
|
|
[FechaActualizacion] = GETDATE()
|
|
WHERE [CveUsuario] = @CveUsuario;
|
|
END;
|
|
|
|
SELECT @CveUsuario AS [CveUsuario];
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'Ocurrió un error al guardar el usuario; favor de contactar a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
DECLARE @E nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', ERROR_PROCEDURE(), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
|
|
RAISERROR(N'%s', 10, 1, @E);
|
|
END CATCH;
|
|
END;
|
|
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE [dbo].[PA_Sis_UsuarioSesionAdd]
|
|
@CveUsuario int,
|
|
@TokenSesion varchar(200),
|
|
@DireccionIP varchar(50) = NULL,
|
|
@AgenteUsuario varchar(1000) = NULL,
|
|
@NombreDominio varchar(255) = 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 NOT EXISTS
|
|
(
|
|
SELECT 1 FROM [dbo].[Sis_Usuarios]
|
|
WHERE [CveUsuario] = @CveUsuario AND [Activo] = (1)
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'El usuario no está disponible para iniciar sesión.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
INSERT INTO [dbo].[Sis_UsuariosSesiones]
|
|
([CveUsuario], [TokenSesion], [DireccionIP], [AgenteUsuario],
|
|
[NombreDominio], [FechaUltimaActividad])
|
|
VALUES
|
|
(@CveUsuario, @TokenSesion, @DireccionIP, @AgenteUsuario,
|
|
@NombreDominio, GETDATE());
|
|
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'Ocurrió un error al crear la sesión; favor de contactar a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Sis_UsuarioSesionAdd'), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE [dbo].[PA_Sis_UsuarioSesionEnd]
|
|
@TokenSesion varchar(200),
|
|
@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
|
|
UPDATE [dbo].[Sis_UsuariosSesiones]
|
|
SET [FechaFin] = GETDATE(), [Activo] = (0)
|
|
WHERE [TokenSesion] = @TokenSesion
|
|
;
|
|
|
|
/* Cerrar una sesión inexistente o ya cerrada es una operación idempotente. */
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'Ocurrió un error al cerrar la sesión; favor de contactar a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Sis_UsuarioSesionEnd'), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE [dbo].[PA_Fraccionamientos_LoteGet]
|
|
@CveFraccionamiento int,
|
|
@CveFraccionamientoLote 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].[FraccionamientosLotes] AS L
|
|
INNER JOIN [dbo].[FraccionamientosEtapas] AS E
|
|
ON E.[CveFraccionamientoEtapa] = L.[CveFraccionamientoEtapa]
|
|
WHERE L.[CveFraccionamientoLote] = @CveFraccionamientoLote
|
|
AND E.[CveFraccionamiento] = @CveFraccionamiento
|
|
|
|
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'El lote seleccionado no existe o no pertenece al fraccionamiento.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
SELECT
|
|
L.[CveFraccionamientoLote] AS [CveFraccionamientoLote],
|
|
L.[CveFraccionamientoEtapa] AS [CveFraccionamientoEtapa],
|
|
E.[Etapa] AS [Etapa],
|
|
L.[Numero] AS [Nombre],
|
|
L.[Tipo] AS [Tipo],
|
|
L.[Calle] AS [Calle],
|
|
L.[Catastro] AS [Catastro],
|
|
L.[MetrosCuadrados] AS [MetrosCuadrados],
|
|
L.[Duplicador] AS [Duplicador],
|
|
L.[EsActivo] AS [EsActivo]
|
|
FROM [dbo].[FraccionamientosLotes] AS L
|
|
INNER JOIN [dbo].[FraccionamientosEtapas] AS E
|
|
ON E.[CveFraccionamientoEtapa] = L.[CveFraccionamientoEtapa]
|
|
WHERE L.[CveFraccionamientoLote] = @CveFraccionamientoLote
|
|
AND E.[CveFraccionamiento] = @CveFraccionamiento
|
|
|
|
;
|
|
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'Ocurrió un error al consultar el lote; favor de contactar a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Fraccionamientos_LoteGet'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE [dbo].[PA_Fraccionamientos_LoteUpdate]
|
|
@CveFraccionamiento int,
|
|
@CveFraccionamientoLote int,
|
|
@CveFraccionamientoEtapa int,
|
|
@Nombre varchar(50),
|
|
@Tipo varchar(100) = NULL,
|
|
@Calle varchar(200) = NULL,
|
|
@Catastro varchar(100) = NULL,
|
|
@MetrosCuadrados decimal(18,4) = NULL,
|
|
@Duplicador varchar(50) = 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
|
|
SET @Nombre = NULLIF(LTRIM(RTRIM(@Nombre)), '');
|
|
SET @Tipo = NULLIF(LTRIM(RTRIM(@Tipo)), '');
|
|
SET @Calle = NULLIF(LTRIM(RTRIM(@Calle)), '');
|
|
SET @Catastro = NULLIF(LTRIM(RTRIM(@Catastro)), '');
|
|
SET @Duplicador = NULLIF(LTRIM(RTRIM(@Duplicador)), '');
|
|
|
|
IF @Nombre IS NULL
|
|
BEGIN
|
|
SET @ErrorMostrar = 'Capture el nombre del lote.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
IF @MetrosCuadrados IS NOT NULL
|
|
AND @MetrosCuadrados < (0)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'Los metros cuadrados no pueden ser negativos.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
IF NOT EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM [dbo].[FraccionamientosEtapas]
|
|
WHERE [CveFraccionamientoEtapa] = @CveFraccionamientoEtapa
|
|
AND [CveFraccionamiento] = @CveFraccionamiento
|
|
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'La etapa del lote no pertenece al fraccionamiento.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
IF NOT EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM [dbo].[FraccionamientosLotes] AS L
|
|
INNER JOIN [dbo].[FraccionamientosEtapas] AS E
|
|
ON E.[CveFraccionamientoEtapa] = L.[CveFraccionamientoEtapa]
|
|
WHERE L.[CveFraccionamientoLote] = @CveFraccionamientoLote
|
|
AND E.[CveFraccionamiento] = @CveFraccionamiento
|
|
|
|
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'El lote seleccionado no existe o no pertenece al fraccionamiento.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
IF EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM [dbo].[FraccionamientosLotes] AS L
|
|
WHERE L.[CveFraccionamientoEtapa] = @CveFraccionamientoEtapa
|
|
AND L.[CveFraccionamientoLote] <> @CveFraccionamientoLote
|
|
AND L.[Numero] = @Nombre COLLATE Modern_Spanish_CS_AS
|
|
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'Ya existe otro lote con ese nombre en la etapa.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
|
|
UPDATE [dbo].[FraccionamientosLotes]
|
|
SET
|
|
[CveFraccionamientoEtapa] = @CveFraccionamientoEtapa,
|
|
[Numero] = @Nombre,
|
|
[Tipo] = @Tipo,
|
|
[Calle] = @Calle,
|
|
[Catastro] = @Catastro,
|
|
[MetrosCuadrados] = @MetrosCuadrados,
|
|
[Duplicador] = @Duplicador,
|
|
[EsActivo] = @EsActivo,
|
|
[FechaModificacion] = SYSDATETIME(),
|
|
[CveUsuario] = @CveUsuarioEjecuta
|
|
WHERE [CveFraccionamientoLote] = @CveFraccionamientoLote
|
|
;
|
|
|
|
|
|
SELECT @CveFraccionamientoLote AS [CveFraccionamientoLote];
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
|
|
SET @ErrorMostrar = 'Ocurrió un error al actualizar el lote; favor de contactar a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Fraccionamientos_LoteUpdate'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE [dbo].[PA_Fraccionamientos_LoteDelete]
|
|
@CveFraccionamiento int,
|
|
@CveFraccionamientoLote 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].[FraccionamientosLotes] AS L
|
|
INNER JOIN [dbo].[FraccionamientosEtapas] AS E
|
|
ON E.[CveFraccionamientoEtapa] = L.[CveFraccionamientoEtapa]
|
|
WHERE L.[CveFraccionamientoLote] = @CveFraccionamientoLote
|
|
AND E.[CveFraccionamiento] = @CveFraccionamiento
|
|
|
|
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'El lote seleccionado no existe o no pertenece al fraccionamiento.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
|
|
DELETE FROM [dbo].[FraccionamientosLotes]
|
|
WHERE [CveFraccionamientoLote] = @CveFraccionamientoLote;
|
|
|
|
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
|
|
SET @ErrorMostrar = 'Ocurrió un error al eliminar el lote; favor de contactar a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Fraccionamientos_LoteDelete'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE [dbo].[PA_Fraccionamientos_LoteStageClear]
|
|
@CveFraccionamiento int,
|
|
@CveFraccionamientoEtapa int,
|
|
@CveUsuarioEjecuta int,
|
|
@ErrorMostrar varchar(max) OUTPUT,
|
|
@ErrorTipo int OUTPUT,
|
|
@Return bit OUTPUT
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON;
|
|
|
|
SELECT
|
|
@ErrorMostrar = NULL,
|
|
@ErrorTipo = 0,
|
|
@Return = 0;
|
|
|
|
BEGIN TRY
|
|
IF NOT EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM [dbo].[FraccionamientosEtapas]
|
|
WHERE [CveFraccionamientoEtapa] = @CveFraccionamientoEtapa
|
|
AND [CveFraccionamiento] = @CveFraccionamiento
|
|
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'La etapa seleccionada no pertenece al fraccionamiento.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
|
|
DELETE FROM [dbo].[FraccionamientosLotes]
|
|
WHERE [CveFraccionamientoEtapa] = @CveFraccionamientoEtapa;
|
|
|
|
DECLARE @Cantidad int = @@ROWCOUNT;
|
|
|
|
IF @Cantidad = (0)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'La etapa seleccionada no tiene lotes para eliminar.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
|
|
SELECT @Cantidad AS [LotesEliminados];
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
|
|
SET @ErrorMostrar = 'Ocurrió un error al eliminar los lotes de la etapa; favor de contactar a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Fraccionamientos_LoteStageClear'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
|
|
GO
|
|
|
|
DECLARE @Sql nvarchar(max);
|
|
|
|
SELECT @Sql = STRING_AGG(
|
|
CONVERT(nvarchar(max),
|
|
N'DROP INDEX ' + QUOTENAME(I.[name]) + N' ON ' +
|
|
QUOTENAME(S.[name]) + N'.' + QUOTENAME(T.[name]) + N';'),
|
|
CHAR(13) + CHAR(10)
|
|
)
|
|
FROM sys.indexes AS I
|
|
INNER JOIN sys.tables AS T ON T.[object_id] = I.[object_id]
|
|
INNER JOIN sys.schemas AS S ON S.[schema_id] = T.[schema_id]
|
|
WHERE EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM sys.index_columns AS IC
|
|
INNER JOIN sys.columns AS C
|
|
ON C.[object_id] = IC.[object_id]
|
|
AND C.[column_id] = IC.[column_id]
|
|
WHERE IC.[object_id] = I.[object_id]
|
|
AND IC.[index_id] = I.[index_id]
|
|
AND C.[name] IN (N'Borrado', N'FechaBorrado')
|
|
)
|
|
OR I.[filter_definition] LIKE N'%Borrado%'
|
|
OR I.[filter_definition] LIKE N'%FechaBorrado%';
|
|
|
|
IF NULLIF(@Sql, N'') IS NOT NULL
|
|
EXEC sys.sp_executesql @Sql;
|
|
|
|
SELECT @Sql = STRING_AGG(
|
|
CONVERT(nvarchar(max),
|
|
N'DROP STATISTICS ' + QUOTENAME(S.[name]) + N'.' +
|
|
QUOTENAME(T.[name]) + N'.' + QUOTENAME(ST.[name]) + N';'),
|
|
CHAR(13) + CHAR(10)
|
|
)
|
|
FROM sys.stats AS ST
|
|
INNER JOIN sys.tables AS T ON T.[object_id] = ST.[object_id]
|
|
INNER JOIN sys.schemas AS S ON S.[schema_id] = T.[schema_id]
|
|
WHERE ST.[user_created] = (1)
|
|
AND EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM sys.stats_columns AS SC
|
|
INNER JOIN sys.columns AS C
|
|
ON C.[object_id] = SC.[object_id]
|
|
AND C.[column_id] = SC.[column_id]
|
|
WHERE SC.[object_id] = ST.[object_id]
|
|
AND SC.[stats_id] = ST.[stats_id]
|
|
AND C.[name] IN (N'Borrado', N'FechaBorrado')
|
|
);
|
|
|
|
IF NULLIF(@Sql, N'') IS NOT NULL
|
|
EXEC sys.sp_executesql @Sql;
|
|
|
|
SELECT @Sql = STRING_AGG(
|
|
CONVERT(nvarchar(max),
|
|
N'ALTER TABLE ' + QUOTENAME(S.[name]) + N'.' + QUOTENAME(T.[name]) +
|
|
N' DROP CONSTRAINT ' + QUOTENAME(O.[name]) + N';'),
|
|
CHAR(13) + CHAR(10)
|
|
)
|
|
FROM
|
|
(
|
|
SELECT DC.[parent_object_id] AS [object_id], DC.[name]
|
|
FROM sys.default_constraints AS DC
|
|
INNER JOIN sys.columns AS C
|
|
ON C.[object_id] = DC.[parent_object_id]
|
|
AND C.[column_id] = DC.[parent_column_id]
|
|
WHERE C.[name] IN (N'Borrado', N'FechaBorrado')
|
|
|
|
UNION ALL
|
|
|
|
SELECT CC.[parent_object_id], CC.[name]
|
|
FROM sys.check_constraints AS CC
|
|
WHERE CC.[definition] LIKE N'%Borrado%'
|
|
OR CC.[definition] LIKE N'%FechaBorrado%'
|
|
) AS O
|
|
INNER JOIN sys.tables AS T ON T.[object_id] = O.[object_id]
|
|
INNER JOIN sys.schemas AS S ON S.[schema_id] = T.[schema_id];
|
|
|
|
IF NULLIF(@Sql, N'') IS NOT NULL
|
|
EXEC sys.sp_executesql @Sql;
|
|
|
|
SELECT @Sql = STRING_AGG(
|
|
CONVERT(nvarchar(max),
|
|
N'ALTER TABLE ' + QUOTENAME(S.[name]) + N'.' + QUOTENAME(T.[name]) +
|
|
N' DROP COLUMN ' + QUOTENAME(C.[name]) + N';'),
|
|
CHAR(13) + CHAR(10)
|
|
)
|
|
FROM sys.tables AS T
|
|
INNER JOIN sys.schemas AS S ON S.[schema_id] = T.[schema_id]
|
|
INNER JOIN sys.columns AS C ON C.[object_id] = T.[object_id]
|
|
WHERE C.[name] IN (N'FechaBorrado', N'Borrado');
|
|
|
|
IF NULLIF(@Sql, N'') IS NOT NULL
|
|
EXEC sys.sp_executesql @Sql;
|
|
|
|
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE [object_id] = OBJECT_ID(N'dbo.FraccionamientosLotes') AND [name] = N'IX_FraccionamientosLotes_Etapa')
|
|
CREATE NONCLUSTERED INDEX [IX_FraccionamientosLotes_Etapa]
|
|
ON [dbo].[FraccionamientosLotes] ([CveFraccionamientoEtapa])
|
|
INCLUDE ([Numero], [Tipo], [Calle], [Catastro], [MetrosCuadrados], [Duplicador], [EsActivo]);
|
|
|
|
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE [object_id] = OBJECT_ID(N'dbo.Gral_SAT_Colonia') AND [name] = N'IX_Gral_SAT_Colonia_CP_Vigente')
|
|
CREATE NONCLUSTERED INDEX [IX_Gral_SAT_Colonia_CP_Vigente]
|
|
ON [dbo].[Gral_SAT_Colonia] ([CP])
|
|
INCLUDE ([CveColonia], [ClaveSATColonia], [NombreAsentamiento]);
|
|
|
|
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE [object_id] = OBJECT_ID(N'dbo.Gral_SAT_CP') AND [name] = N'IX_Gral_SAT_CP_BusquedaRegistro')
|
|
CREATE NONCLUSTERED INDEX [IX_Gral_SAT_CP_BusquedaRegistro]
|
|
ON [dbo].[Gral_SAT_CP] ([CP])
|
|
INCLUDE ([CveCP], [ClaveSATEstado], [ClaveSATMunicipio], [ClaveSATLocalidad]);
|
|
|
|
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE [object_id] = OBJECT_ID(N'dbo.Gral_SAT_Localidad') AND [name] = N'IX_Gral_SAT_Localidad_Claves_Vigente')
|
|
CREATE NONCLUSTERED INDEX [IX_Gral_SAT_Localidad_Claves_Vigente]
|
|
ON [dbo].[Gral_SAT_Localidad] ([ClaveSATEstado], [ClaveSATLocalidad])
|
|
INCLUDE ([CveLocalidad], [NombreLocalidad]);
|
|
|
|
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE [object_id] = OBJECT_ID(N'dbo.Gral_SAT_Municipio') AND [name] = N'IX_Gral_SAT_Municipio_Claves_Vigente')
|
|
CREATE NONCLUSTERED INDEX [IX_Gral_SAT_Municipio_Claves_Vigente]
|
|
ON [dbo].[Gral_SAT_Municipio] ([ClaveSATEstado], [ClaveSATMunicipio])
|
|
INCLUDE ([CveMunicipio], [Descripcion]);
|
|
|
|
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE [object_id] = OBJECT_ID(N'dbo.Sis_UsuariosClientes') AND [name] = N'UX_Sis_UsuariosClientes_Usuario_Cliente')
|
|
CREATE UNIQUE NONCLUSTERED INDEX [UX_Sis_UsuariosClientes_Usuario_Cliente]
|
|
ON [dbo].[Sis_UsuariosClientes] ([CveUsuario], [CveCliente]);
|
|
|
|
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE [object_id] = OBJECT_ID(N'dbo.Sis_UsuariosClientes') AND [name] = N'UX_Sis_UsuariosClientes_Usuario_Orden')
|
|
CREATE UNIQUE NONCLUSTERED INDEX [UX_Sis_UsuariosClientes_Usuario_Orden]
|
|
ON [dbo].[Sis_UsuariosClientes] ([CveUsuario], [Orden])
|
|
WHERE [Activo] = (1);
|
|
|
|
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE [object_id] = OBJECT_ID(N'dbo.Sis_UsuariosVerificacionesCorreo') AND [name] = N'IX_Sis_UsuariosVerificacionesCorreo_Pendiente')
|
|
CREATE NONCLUSTERED INDEX [IX_Sis_UsuariosVerificacionesCorreo_Pendiente]
|
|
ON [dbo].[Sis_UsuariosVerificacionesCorreo] ([CveUsuario], [Utilizado], [FechaExpiracion]);
|
|
GO
|