Files
Plataforma-de-desarrolladores/tools/PA_Fraccionamientos_EtapaGISSave.sql
Jorge Luis caudillo esparza 4e80ecca77 --gis
2026-08-18 11:45:00 -07:00

169 lines
5.2 KiB
Transact-SQL

ALTER PROCEDURE [dbo].[PA_Fraccionamientos_EtapaGISSave]
@CveFraccionamientoEtapa int,
@Nombre varchar(200) = NULL,
@UrlVisualizacion varchar(2000) = NULL,
@CveUsuarioEjecuta int,
@ErrorMostrar varchar(max) OUTPUT,
@ErrorTipo int OUTPUT,
@Return bit OUTPUT
AS
BEGIN
SET NOCOUNT ON;
SELECT
@ErrorMostrar = NULL,
@ErrorTipo = 0,
@Return = 0;
BEGIN TRY
DECLARE @NombreRol varchar(100);
DECLARE @CveFraccionamiento int;
DECLARE @CveCliente int;
DECLARE @Etapa varchar(150);
SELECT @NombreRol = R.NombreRol
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 @NombreRol IS NULL
BEGIN
SET @ErrorMostrar = 'El usuario no está disponible para guardar el GIS.';
SET @ErrorTipo = 2;
RETURN;
END;
SELECT
@CveFraccionamiento = E.CveFraccionamiento,
@CveCliente = F.CveCliente,
@Etapa = E.Etapa
FROM dbo.FraccionamientosEtapas AS E
INNER JOIN dbo.Fraccionamientos AS F
ON F.CveFraccionamiento = E.CveFraccionamiento
WHERE E.CveFraccionamientoEtapa = @CveFraccionamientoEtapa
AND
(
@NombreRol <> 'Empresa'
OR EXISTS
(
SELECT 1
FROM dbo.Sis_UsuariosClientes AS UC
WHERE UC.CveUsuario = @CveUsuarioEjecuta
AND UC.CveCliente = F.CveCliente
AND UC.Activo = 1
)
);
IF @CveFraccionamiento IS NULL
BEGIN
SET @ErrorMostrar = 'La etapa no existe o no está asignada al usuario.';
SET @ErrorTipo = 2;
RETURN;
END;
SET @Nombre = CONCAT(
'gis-',
@CveFraccionamiento,
'-',
@CveFraccionamientoEtapa,
'.gis');
SET @UrlVisualizacion = CONCAT(
'~/Pages/Fraccionamientos/FraccionamientoGis.ashx?etapa=',
@CveFraccionamientoEtapa);
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
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