813 lines
29 KiB
Transact-SQL
813 lines
29 KiB
Transact-SQL
/* Procedimientos del catálogo de fraccionamientos sincronizados desde la base local. */
|
|
|
|
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_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_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_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_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_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_EtapaGet]
|
|
@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;
|
|
|
|
SELECT
|
|
E.CveFraccionamientoEtapa,
|
|
E.CveFraccionamiento,
|
|
F.CveCliente,
|
|
E.Etapa,
|
|
E.Hectareas,
|
|
E.Orden,
|
|
E.EsActivo
|
|
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
|
|
)
|
|
);
|
|
|
|
IF @@ROWCOUNT = 0
|
|
BEGIN
|
|
SET @ErrorMostrar = 'La etapa no existe o no está asignada al usuario.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'Ocurrió un error al consultar 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_EtapaGet'),
|
|
'; 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_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_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
|