1283 lines
39 KiB
Transact-SQL
1283 lines
39 KiB
Transact-SQL
/*
|
|
Avance por etapa y GIS opcional por etapa.
|
|
La migración es idempotente y conserva el contrato de errores común.
|
|
*/
|
|
|
|
SET ANSI_NULLS ON;
|
|
GO
|
|
SET QUOTED_IDENTIFIER ON;
|
|
GO
|
|
|
|
IF COL_LENGTH(N'dbo.FraccionamientosEtapas', N'Avance') IS NULL
|
|
BEGIN
|
|
ALTER TABLE dbo.FraccionamientosEtapas
|
|
ADD Avance decimal(5,2) NOT NULL
|
|
CONSTRAINT DF_FraccionamientosEtapas_Avance DEFAULT (0.00);
|
|
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 G
|
|
FROM dbo.FraccionamientosEtapasGIS AS G
|
|
INNER JOIN dbo.FraccionamientosEtapas AS E
|
|
ON E.CveFraccionamientoEtapa = G.CveFraccionamientoEtapa
|
|
WHERE E.CveFraccionamiento = @CveFraccionamiento;
|
|
|
|
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_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,
|
|
A.NumeroEtapas,
|
|
A.NumeroLotes,
|
|
A.AvanceGlobal,
|
|
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
|
|
OUTER APPLY
|
|
(
|
|
SELECT
|
|
COUNT(E.CveFraccionamientoEtapa) AS NumeroEtapas,
|
|
(
|
|
SELECT COUNT(L.CveFraccionamientoLote)
|
|
FROM dbo.FraccionamientosLotes AS L
|
|
INNER JOIN dbo.FraccionamientosEtapas AS EL
|
|
ON EL.CveFraccionamientoEtapa =
|
|
L.CveFraccionamientoEtapa
|
|
WHERE EL.CveFraccionamiento = F.CveFraccionamiento
|
|
) AS NumeroLotes,
|
|
CONVERT(
|
|
decimal(5,2),
|
|
COALESCE(
|
|
AVG(CONVERT(decimal(9,4), E.Avance)),
|
|
0.00)) AS AvanceGlobal
|
|
FROM dbo.FraccionamientosEtapas AS E
|
|
WHERE E.CveFraccionamiento = F.CveFraccionamiento
|
|
) AS A
|
|
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
|
|
)
|
|
)
|
|
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,
|
|
A.NumeroEtapas,
|
|
A.NumeroLotes,
|
|
A.AvanceGlobal,
|
|
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
|
|
OUTER APPLY
|
|
(
|
|
SELECT
|
|
COUNT(E.CveFraccionamientoEtapa) AS NumeroEtapas,
|
|
(
|
|
SELECT COUNT(L.CveFraccionamientoLote)
|
|
FROM dbo.FraccionamientosLotes AS L
|
|
INNER JOIN dbo.FraccionamientosEtapas AS EL
|
|
ON EL.CveFraccionamientoEtapa =
|
|
L.CveFraccionamientoEtapa
|
|
WHERE EL.CveFraccionamiento = F.CveFraccionamiento
|
|
) AS NumeroLotes,
|
|
CONVERT(
|
|
decimal(5,2),
|
|
COALESCE(
|
|
AVG(CONVERT(decimal(9,4), E.Avance)),
|
|
0.00)) AS AvanceGlobal
|
|
FROM dbo.FraccionamientosEtapas AS E
|
|
WHERE E.CveFraccionamiento = F.CveFraccionamiento
|
|
) AS A
|
|
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
|
|
|
|
IF NOT EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM sys.check_constraints
|
|
WHERE parent_object_id = OBJECT_ID(N'dbo.FraccionamientosEtapas')
|
|
AND name = N'CK_FraccionamientosEtapas_Avance'
|
|
)
|
|
BEGIN
|
|
ALTER TABLE dbo.FraccionamientosEtapas WITH CHECK
|
|
ADD CONSTRAINT CK_FraccionamientosEtapas_Avance
|
|
CHECK (Avance >= 0.00 AND Avance <= 100.00);
|
|
|
|
ALTER TABLE dbo.FraccionamientosEtapas
|
|
CHECK CONSTRAINT CK_FraccionamientosEtapas_Avance;
|
|
END;
|
|
GO
|
|
|
|
IF OBJECT_ID(N'dbo.FraccionamientosEtapasGIS', N'U') IS NULL
|
|
BEGIN
|
|
CREATE TABLE dbo.FraccionamientosEtapasGIS
|
|
(
|
|
CveFraccionamientoEtapaGIS int IDENTITY(1,1) NOT NULL,
|
|
CveFraccionamientoEtapa int NOT NULL,
|
|
Nombre varchar(200) COLLATE Modern_Spanish_CS_AS NOT NULL,
|
|
UrlVisualizacion varchar(2000) COLLATE Modern_Spanish_CS_AS NOT NULL,
|
|
FechaAlta datetime NOT NULL
|
|
CONSTRAINT DF_FraccionamientosEtapasGIS_FechaAlta
|
|
DEFAULT (GETDATE()),
|
|
FechaModificacion datetime NULL,
|
|
CveUsuario int NOT NULL,
|
|
CONSTRAINT PK_FraccionamientosEtapasGIS
|
|
PRIMARY KEY CLUSTERED (CveFraccionamientoEtapaGIS),
|
|
CONSTRAINT UQ_FraccionamientosEtapasGIS_Etapa
|
|
UNIQUE NONCLUSTERED (CveFraccionamientoEtapa),
|
|
CONSTRAINT CK_FraccionamientosEtapasGIS_UrlVisualizacion
|
|
CHECK
|
|
(
|
|
LOWER(UrlVisualizacion) LIKE 'http://%'
|
|
OR LOWER(UrlVisualizacion) LIKE 'https://%'
|
|
),
|
|
CONSTRAINT FK_FraccionamientosEtapasGIS_Etapa
|
|
FOREIGN KEY (CveFraccionamientoEtapa)
|
|
REFERENCES dbo.FraccionamientosEtapas (CveFraccionamientoEtapa),
|
|
CONSTRAINT FK_FraccionamientosEtapasGIS_Usuario
|
|
FOREIGN KEY (CveUsuario)
|
|
REFERENCES dbo.Sis_Usuarios (CveUsuario)
|
|
);
|
|
END;
|
|
GO
|
|
|
|
IF OBJECT_ID(N'dbo.Bit_Campos', N'U') IS NOT NULL
|
|
AND COL_LENGTH(N'dbo.Bit_Campos', N'TipoDatoSQL') IS NULL
|
|
BEGIN
|
|
ALTER TABLE dbo.Bit_Campos
|
|
ADD TipoDatoSQL varchar(128) COLLATE Modern_Spanish_CS_AS NULL;
|
|
END;
|
|
GO
|
|
|
|
IF OBJECT_ID(N'dbo.Bit_Campos', N'U') IS NOT NULL
|
|
AND COL_LENGTH(N'dbo.Bit_Campos', N'CveTablaReferencia') IS NULL
|
|
BEGIN
|
|
ALTER TABLE dbo.Bit_Campos
|
|
ADD CveTablaReferencia int NULL;
|
|
END;
|
|
GO
|
|
|
|
IF OBJECT_ID(N'dbo.Bit_Campos', N'U') IS NOT NULL
|
|
AND COL_LENGTH(N'dbo.Bit_Campos', N'CveCampoMostrarReferencia') IS NULL
|
|
BEGIN
|
|
ALTER TABLE dbo.Bit_Campos
|
|
ADD CveCampoMostrarReferencia int NULL;
|
|
END;
|
|
GO
|
|
|
|
IF OBJECT_ID(N'dbo.Bit_Campos', N'U') IS NOT NULL
|
|
AND COL_LENGTH(N'dbo.Bit_Campos', N'CveTablaReferencia') IS NOT NULL
|
|
AND COL_LENGTH(N'dbo.Bit_Campos', N'CveCampoMostrarReferencia') IS NOT NULL
|
|
AND NOT EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM sys.check_constraints
|
|
WHERE parent_object_id = OBJECT_ID(N'dbo.Bit_Campos')
|
|
AND name = N'CK_Bit_Campos_ReferenciaCompleta'
|
|
)
|
|
BEGIN
|
|
ALTER TABLE dbo.Bit_Campos WITH CHECK
|
|
ADD CONSTRAINT CK_Bit_Campos_ReferenciaCompleta
|
|
CHECK
|
|
(
|
|
(CveTablaReferencia IS NULL
|
|
AND CveCampoMostrarReferencia IS NULL)
|
|
OR
|
|
(CveTablaReferencia IS NOT NULL
|
|
AND CveCampoMostrarReferencia IS NOT NULL)
|
|
);
|
|
|
|
ALTER TABLE dbo.Bit_Campos
|
|
CHECK CONSTRAINT CK_Bit_Campos_ReferenciaCompleta;
|
|
END;
|
|
GO
|
|
|
|
IF OBJECT_ID(N'dbo.Bit_Campos', N'U') IS NOT NULL
|
|
AND OBJECT_ID(N'dbo.Bit_Tablas', N'U') IS NOT NULL
|
|
AND COL_LENGTH(N'dbo.Bit_Campos', N'CveTablaReferencia') IS NOT NULL
|
|
AND NOT EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM sys.foreign_keys
|
|
WHERE parent_object_id = OBJECT_ID(N'dbo.Bit_Campos')
|
|
AND name = N'FK_Bit_Campos_TablaReferencia'
|
|
)
|
|
BEGIN
|
|
ALTER TABLE dbo.Bit_Campos WITH CHECK
|
|
ADD CONSTRAINT FK_Bit_Campos_TablaReferencia
|
|
FOREIGN KEY (CveTablaReferencia)
|
|
REFERENCES dbo.Bit_Tablas (CveTabla);
|
|
|
|
ALTER TABLE dbo.Bit_Campos
|
|
CHECK CONSTRAINT FK_Bit_Campos_TablaReferencia;
|
|
END;
|
|
GO
|
|
|
|
IF OBJECT_ID(N'dbo.Bit_Campos', N'U') IS NOT NULL
|
|
AND COL_LENGTH(N'dbo.Bit_Campos', N'CveCampoMostrarReferencia') IS NOT NULL
|
|
AND NOT EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM sys.foreign_keys
|
|
WHERE parent_object_id = OBJECT_ID(N'dbo.Bit_Campos')
|
|
AND name = N'FK_Bit_Campos_CampoMostrarReferencia'
|
|
)
|
|
BEGIN
|
|
ALTER TABLE dbo.Bit_Campos WITH CHECK
|
|
ADD CONSTRAINT FK_Bit_Campos_CampoMostrarReferencia
|
|
FOREIGN KEY (CveCampoMostrarReferencia)
|
|
REFERENCES dbo.Bit_Campos (CveCampo);
|
|
|
|
ALTER TABLE dbo.Bit_Campos
|
|
CHECK CONSTRAINT FK_Bit_Campos_CampoMostrarReferencia;
|
|
END;
|
|
GO
|
|
|
|
IF OBJECT_ID(N'dbo.Bit_Tablas', N'U') IS NOT NULL
|
|
AND OBJECT_ID(N'dbo.Bit_Campos', N'U') IS NOT NULL
|
|
BEGIN
|
|
DECLARE @CveTablaGIS int;
|
|
|
|
SELECT @CveTablaGIS = T.CveTabla
|
|
FROM dbo.Bit_Tablas AS T
|
|
WHERE T.NombreTablaSQL = 'FraccionamientosEtapasGIS';
|
|
|
|
IF @CveTablaGIS IS NULL
|
|
BEGIN
|
|
INSERT INTO dbo.Bit_Tablas
|
|
(
|
|
NombreTablaSQL,
|
|
NombreMostrar,
|
|
Descripcion,
|
|
NombreCampoLlaveSQL,
|
|
Activo
|
|
)
|
|
VALUES
|
|
(
|
|
'FraccionamientosEtapasGIS',
|
|
'GIS de etapas',
|
|
'GIS asociado a las etapas.',
|
|
'CveFraccionamientoEtapaGIS',
|
|
1
|
|
);
|
|
|
|
SET @CveTablaGIS = CONVERT(int, SCOPE_IDENTITY());
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
UPDATE dbo.Bit_Tablas
|
|
SET
|
|
NombreMostrar = 'GIS de etapas',
|
|
Descripcion = 'GIS asociado a las etapas.',
|
|
NombreCampoLlaveSQL = 'CveFraccionamientoEtapaGIS',
|
|
Activo = 1,
|
|
FechaMod = GETDATE()
|
|
WHERE CveTabla = @CveTablaGIS;
|
|
END;
|
|
|
|
DECLARE @Campos TABLE
|
|
(
|
|
NombreTablaSQL varchar(128) COLLATE Modern_Spanish_CS_AS NOT NULL,
|
|
NombreCampoSQL varchar(128) COLLATE Modern_Spanish_CS_AS NOT NULL,
|
|
NombreMostrar varchar(150) COLLATE Modern_Spanish_CS_AS NOT NULL,
|
|
MostrarEnBitacora bit NOT NULL
|
|
);
|
|
|
|
INSERT INTO @Campos
|
|
(
|
|
NombreTablaSQL,
|
|
NombreCampoSQL,
|
|
NombreMostrar,
|
|
MostrarEnBitacora
|
|
)
|
|
VALUES
|
|
('FraccionamientosEtapas', 'Avance', 'Avance', 1),
|
|
('FraccionamientosEtapasGIS', 'CveFraccionamientoEtapaGIS', 'Clave de GIS', 0),
|
|
('FraccionamientosEtapasGIS', 'CveFraccionamientoEtapa', 'Etapa', 1),
|
|
('FraccionamientosEtapasGIS', 'Nombre', 'GIS', 1),
|
|
('FraccionamientosEtapasGIS', 'UrlVisualizacion', 'URL de visualización', 1);
|
|
|
|
UPDATE C
|
|
SET
|
|
C.NombreMostrar = S.NombreMostrar,
|
|
C.MostrarEnBitacora = S.MostrarEnBitacora,
|
|
C.TipoDatoSQL = TY.name COLLATE Modern_Spanish_CS_AS,
|
|
C.Activo = 1,
|
|
C.FechaMod = GETDATE()
|
|
FROM dbo.Bit_Campos AS C
|
|
INNER JOIN dbo.Bit_Tablas AS T
|
|
ON T.CveTabla = C.CveTabla
|
|
INNER JOIN @Campos AS S
|
|
ON S.NombreTablaSQL = T.NombreTablaSQL
|
|
AND S.NombreCampoSQL = C.NombreCampoSQL
|
|
INNER JOIN sys.tables AS ST
|
|
ON ST.name COLLATE Modern_Spanish_CS_AS = S.NombreTablaSQL
|
|
AND SCHEMA_NAME(ST.schema_id) = 'dbo'
|
|
INNER JOIN sys.columns AS CO
|
|
ON CO.object_id = ST.object_id
|
|
AND CO.name COLLATE Modern_Spanish_CS_AS = S.NombreCampoSQL
|
|
INNER JOIN sys.types AS TY
|
|
ON TY.user_type_id = CO.user_type_id;
|
|
|
|
INSERT INTO dbo.Bit_Campos
|
|
(
|
|
CveTabla,
|
|
NombreCampoSQL,
|
|
NombreMostrar,
|
|
MostrarEnBitacora,
|
|
TipoDatoSQL,
|
|
Activo
|
|
)
|
|
SELECT
|
|
T.CveTabla,
|
|
S.NombreCampoSQL,
|
|
S.NombreMostrar,
|
|
S.MostrarEnBitacora,
|
|
TY.name COLLATE Modern_Spanish_CS_AS,
|
|
1
|
|
FROM @Campos AS S
|
|
INNER JOIN dbo.Bit_Tablas AS T
|
|
ON T.NombreTablaSQL = S.NombreTablaSQL
|
|
INNER JOIN sys.tables AS ST
|
|
ON ST.name COLLATE Modern_Spanish_CS_AS = S.NombreTablaSQL
|
|
AND SCHEMA_NAME(ST.schema_id) = 'dbo'
|
|
INNER JOIN sys.columns AS CO
|
|
ON CO.object_id = ST.object_id
|
|
AND CO.name COLLATE Modern_Spanish_CS_AS = S.NombreCampoSQL
|
|
INNER JOIN sys.types AS TY
|
|
ON TY.user_type_id = CO.user_type_id
|
|
WHERE NOT EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM dbo.Bit_Campos AS C
|
|
WHERE C.CveTabla = T.CveTabla
|
|
AND C.NombreCampoSQL = S.NombreCampoSQL
|
|
);
|
|
|
|
UPDATE CG
|
|
SET
|
|
CG.CveTablaReferencia = TE.CveTabla,
|
|
CG.CveCampoMostrarReferencia = CE.CveCampo,
|
|
CG.FechaMod = GETDATE()
|
|
FROM dbo.Bit_Campos AS CG
|
|
INNER JOIN dbo.Bit_Tablas AS TG
|
|
ON TG.CveTabla = CG.CveTabla
|
|
AND TG.NombreTablaSQL = 'FraccionamientosEtapasGIS'
|
|
INNER JOIN dbo.Bit_Tablas AS TE
|
|
ON TE.NombreTablaSQL = 'FraccionamientosEtapas'
|
|
AND TE.Activo = 1
|
|
INNER JOIN dbo.Bit_Campos AS CE
|
|
ON CE.CveTabla = TE.CveTabla
|
|
AND CE.NombreCampoSQL = 'Etapa'
|
|
AND CE.Activo = 1
|
|
WHERE CG.NombreCampoSQL = 'CveFraccionamientoEtapa';
|
|
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
|
|
E.CveFraccionamientoEtapa,
|
|
E.CveFraccionamiento,
|
|
E.Etapa,
|
|
E.Hectareas,
|
|
E.Orden,
|
|
E.Avance,
|
|
E.EsActivo
|
|
FROM dbo.FraccionamientosEtapas AS E
|
|
WHERE E.CveFraccionamiento = @CveFraccionamiento
|
|
ORDER BY E.Orden, E.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.Avance,
|
|
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_EtapaAvanceUpdate]
|
|
@CveFraccionamientoEtapa int,
|
|
@Avance decimal(5,2),
|
|
@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 @Avance IS NULL OR @Avance < 0.00 OR @Avance > 100.00
|
|
BEGIN
|
|
SET @ErrorMostrar = 'El avance debe estar entre 0.00 y 100.00 por ciento.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
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;
|
|
|
|
DECLARE @Cambios TABLE
|
|
(
|
|
AvanceAnterior decimal(5,2) NOT NULL,
|
|
Avance decimal(5,2) NOT NULL
|
|
);
|
|
|
|
UPDATE E
|
|
SET
|
|
E.Avance = @Avance,
|
|
E.FechaModificacion = GETDATE(),
|
|
E.CveUsuario = @CveUsuarioEjecuta
|
|
OUTPUT
|
|
DELETED.Avance,
|
|
INSERTED.Avance
|
|
INTO @Cambios
|
|
(
|
|
AvanceAnterior,
|
|
Avance
|
|
)
|
|
FROM dbo.FraccionamientosEtapas AS E
|
|
INNER JOIN dbo.Fraccionamientos AS F
|
|
ON F.CveFraccionamiento = E.CveFraccionamiento
|
|
WHERE E.CveFraccionamientoEtapa = @CveFraccionamientoEtapa
|
|
AND E.Avance <> @Avance
|
|
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
|
|
)
|
|
);
|
|
|
|
SELECT
|
|
E.CveFraccionamientoEtapa,
|
|
E.CveFraccionamiento,
|
|
F.CveCliente,
|
|
E.Etapa,
|
|
COALESCE(C.AvanceAnterior, E.Avance) AS AvanceAnterior,
|
|
COALESCE(C.Avance, E.Avance) AS Avance,
|
|
CONVERT(
|
|
bit,
|
|
CASE WHEN C.Avance IS NULL THEN 0 ELSE 1 END
|
|
) AS HuboCambio
|
|
FROM dbo.FraccionamientosEtapas AS E
|
|
INNER JOIN dbo.Fraccionamientos AS F
|
|
ON F.CveFraccionamiento = E.CveFraccionamiento
|
|
OUTER APPLY
|
|
(
|
|
SELECT
|
|
CA.AvanceAnterior,
|
|
CA.Avance
|
|
FROM @Cambios AS CA
|
|
) AS C
|
|
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 actualizar el avance 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_EtapaAvanceUpdate'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE [dbo].[PA_Fraccionamientos_EtapaGISGet]
|
|
@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;
|
|
|
|
SELECT
|
|
G.CveFraccionamientoEtapaGIS,
|
|
G.CveFraccionamientoEtapa,
|
|
E.CveFraccionamiento,
|
|
F.CveCliente,
|
|
E.Etapa,
|
|
G.Nombre,
|
|
G.UrlVisualizacion,
|
|
G.FechaAlta,
|
|
G.FechaModificacion
|
|
FROM dbo.FraccionamientosEtapasGIS AS G
|
|
INNER JOIN dbo.FraccionamientosEtapas AS E
|
|
ON E.CveFraccionamientoEtapa = G.CveFraccionamientoEtapa
|
|
INNER JOIN dbo.Fraccionamientos AS F
|
|
ON F.CveFraccionamiento = E.CveFraccionamiento
|
|
WHERE G.CveFraccionamientoEtapa = @CveFraccionamientoEtapa;
|
|
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'Ocurrió un error al consultar el GIS 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_EtapaGISGet'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE [dbo].[PA_Fraccionamientos_EtapaGISSave]
|
|
@CveFraccionamientoEtapa int,
|
|
@Nombre varchar(200),
|
|
@UrlVisualizacion varchar(2000),
|
|
@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 @UrlVisualizacion = NULLIF(
|
|
LTRIM(RTRIM(@UrlVisualizacion)),
|
|
'');
|
|
|
|
IF @Nombre IS NULL
|
|
BEGIN
|
|
SET @ErrorMostrar = 'Capture el nombre del GIS.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
IF @UrlVisualizacion IS NULL OR
|
|
(
|
|
LOWER(@UrlVisualizacion) NOT LIKE 'http://%'
|
|
AND LOWER(@UrlVisualizacion) NOT LIKE 'https://%'
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'Capture una URL absoluta http o https válida para el GIS.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
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;
|
|
|
|
DECLARE @CveFraccionamientoEtapaGIS int;
|
|
DECLARE @NombreAnterior varchar(200);
|
|
DECLARE @UrlVisualizacionAnterior varchar(2000);
|
|
DECLARE @EsNuevo bit = 0;
|
|
DECLARE @HuboCambio bit = 0;
|
|
|
|
SELECT
|
|
@CveFraccionamientoEtapaGIS = G.CveFraccionamientoEtapaGIS,
|
|
@NombreAnterior = G.Nombre,
|
|
@UrlVisualizacionAnterior = G.UrlVisualizacion
|
|
FROM dbo.FraccionamientosEtapasGIS AS G WITH (UPDLOCK, HOLDLOCK)
|
|
WHERE G.CveFraccionamientoEtapa = @CveFraccionamientoEtapa;
|
|
|
|
IF @CveFraccionamientoEtapaGIS IS NULL
|
|
BEGIN
|
|
INSERT INTO dbo.FraccionamientosEtapasGIS
|
|
(
|
|
CveFraccionamientoEtapa,
|
|
Nombre,
|
|
UrlVisualizacion,
|
|
CveUsuario
|
|
)
|
|
VALUES
|
|
(
|
|
@CveFraccionamientoEtapa,
|
|
@Nombre,
|
|
@UrlVisualizacion,
|
|
@CveUsuarioEjecuta
|
|
);
|
|
|
|
SET @CveFraccionamientoEtapaGIS = CONVERT(
|
|
int,
|
|
SCOPE_IDENTITY());
|
|
SET @EsNuevo = 1;
|
|
SET @HuboCambio = 1;
|
|
END
|
|
ELSE IF @NombreAnterior <> @Nombre
|
|
OR @UrlVisualizacionAnterior <> @UrlVisualizacion
|
|
BEGIN
|
|
UPDATE dbo.FraccionamientosEtapasGIS
|
|
SET
|
|
Nombre = @Nombre,
|
|
UrlVisualizacion = @UrlVisualizacion,
|
|
FechaModificacion = GETDATE(),
|
|
CveUsuario = @CveUsuarioEjecuta
|
|
WHERE CveFraccionamientoEtapaGIS =
|
|
@CveFraccionamientoEtapaGIS;
|
|
|
|
SET @HuboCambio = 1;
|
|
END;
|
|
|
|
SELECT
|
|
G.CveFraccionamientoEtapaGIS,
|
|
G.CveFraccionamientoEtapa,
|
|
E.CveFraccionamiento,
|
|
F.CveCliente,
|
|
E.Etapa,
|
|
G.Nombre,
|
|
G.UrlVisualizacion,
|
|
@NombreAnterior AS NombreAnterior,
|
|
@UrlVisualizacionAnterior AS UrlVisualizacionAnterior,
|
|
@EsNuevo AS EsNuevo,
|
|
@HuboCambio AS HuboCambio,
|
|
G.FechaAlta,
|
|
G.FechaModificacion
|
|
FROM dbo.FraccionamientosEtapasGIS AS G
|
|
INNER JOIN dbo.FraccionamientosEtapas AS E
|
|
ON E.CveFraccionamientoEtapa = G.CveFraccionamientoEtapa
|
|
INNER JOIN dbo.Fraccionamientos AS F
|
|
ON F.CveFraccionamiento = E.CveFraccionamiento
|
|
WHERE G.CveFraccionamientoEtapaGIS =
|
|
@CveFraccionamientoEtapaGIS;
|
|
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'Ocurrió un error al guardar el GIS 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_EtapaGISSave'),
|
|
'; 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 AS S
|
|
WHERE S.CveFraccionamientoEtapa = @CveFraccionamientoEtapa
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'La etapa tiene trámites relacionados y no puede eliminarse.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
DELETE FROM dbo.FraccionamientosEtapasGIS
|
|
WHERE CveFraccionamientoEtapa = @CveFraccionamientoEtapa;
|
|
|
|
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
|