Files
Plataforma-de-desarrolladores/Menu_Desarrolladores.sql
Jorge Luis caudillo esparza 8f33c860ec Ajustes
2026-08-13 19:46:33 -07:00

189 lines
6.6 KiB
Transact-SQL

SET NOCOUNT ON;
SET XACT_ABORT ON;
BEGIN TRY
BEGIN TRANSACTION;
DECLARE @CvePlataforma int;
SELECT TOP (1)
@CvePlataforma = CvePlataforma
FROM dbo.Sis_Plataformas
WHERE NombrePlataforma = 'Plataforma de Desarrolladores'
AND Borrado = 0
ORDER BY CvePlataforma;
IF @CvePlataforma IS NULL
BEGIN
INSERT INTO dbo.Sis_Plataformas
(NombrePlataforma, Descripcion, Activo, FechaCreacion)
VALUES
('Plataforma de Desarrolladores', 'Portal WebForms para desarrolladores', 1, GETDATE());
SET @CvePlataforma = CONVERT(int, SCOPE_IDENTITY());
END
ELSE
BEGIN
UPDATE dbo.Sis_Plataformas
SET Activo = 1,
FechaActualizacion = GETDATE()
WHERE CvePlataforma = @CvePlataforma;
END;
DECLARE @Menu TABLE
(
Clave varchar(50) NOT NULL PRIMARY KEY,
ClavePadre varchar(50) NULL,
NombreModulo varchar(150) NOT NULL,
Url varchar(500) NULL,
ClaseCssIcono varchar(150) NULL,
OrdenVisualizacion int NOT NULL
);
INSERT INTO @Menu
(Clave, ClavePadre, NombreModulo, Url, ClaseCssIcono, OrdenVisualizacion)
VALUES
('Inicio', NULL, 'Inicio', '~/Inicio.aspx', 'icon-home', 0),
('Desarrolladores', NULL, 'Desarrolladores', NULL, 'fa fa-address-card', 10),
('Tramites', 'Desarrolladores', 'Trámites', '~/Pages/Desarrolladores/Tramites.aspx', 'fa fa-dollar-sign', 10),
('ConsultaTramites', 'Desarrolladores', 'Consulta Trámites', '~/Pages/Desarrolladores/ConsultaTramites.aspx', 'fa fa-search', 20),
('Predios', 'Desarrolladores', 'Predios', '~/Pages/Desarrolladores/Predios.aspx', 'fa fa-house', 30),
('Fraccionamientos', 'Desarrolladores', 'Fraccionamientos', '~/Pages/Fraccionamientos/Fraccionamientos.aspx', 'fa fa-building', 35),
('FraccionamientoDetalle', 'Fraccionamientos', 'Detalle de fraccionamiento', '~/Pages/Fraccionamientos/FraccionamientoDetalle.aspx', 'fa fa-building-o', 10),
('Facturas', 'Desarrolladores', 'Facturas', '~/Pages/Desarrolladores/Facturas.aspx', 'fa fa-print', 40),
('HistorialFacturas', 'Desarrolladores', 'Historial Facturas', '~/Pages/Desarrolladores/HistorialFacturas.aspx', 'fa fa-print', 50),
('FacturasComerciales', 'Desarrolladores', 'Fact. Comerciales', '~/Pages/Desarrolladores/FacturasComerciales.aspx', 'fa fa-dollar-sign', 60),
('FacturasComercialesListado', 'Desarrolladores', 'Fact. Com. Listado', '~/Pages/Desarrolladores/FacturasComercialesListado.aspx', 'fa fa-print', 70),
('FacturasCfdi', NULL, 'Facturas (CFDI)', '~/Pages/Desarrolladores/FacturasCfdi.aspx', 'fa fa-address-card', 20);
DECLARE @Ids TABLE
(
Clave varchar(50) NOT NULL PRIMARY KEY,
CveModulo int NOT NULL
);
DECLARE
@Clave varchar(50),
@ClavePadre varchar(50),
@NombreModulo varchar(150),
@Url varchar(500),
@ClaseCssIcono varchar(150),
@OrdenVisualizacion int,
@CveModuloPadre int,
@CveModulo int;
DECLARE MenuCursor CURSOR LOCAL FAST_FORWARD FOR
SELECT Clave, ClavePadre, NombreModulo, Url, ClaseCssIcono, OrdenVisualizacion
FROM @Menu
ORDER BY CASE WHEN ClavePadre IS NULL THEN 0 ELSE 1 END, OrdenVisualizacion, Clave;
OPEN MenuCursor;
FETCH NEXT FROM MenuCursor
INTO @Clave, @ClavePadre, @NombreModulo, @Url, @ClaseCssIcono, @OrdenVisualizacion;
WHILE @@FETCH_STATUS = 0
BEGIN
SET @CveModuloPadre = NULL;
SET @CveModulo = NULL;
IF @ClavePadre IS NOT NULL
BEGIN
SELECT @CveModuloPadre = CveModulo
FROM @Ids
WHERE Clave = @ClavePadre;
END;
SELECT TOP (1)
@CveModulo = CveModulo
FROM dbo.Sis_Modulos
WHERE CvePlataforma = @CvePlataforma
AND
(
(@Url IS NOT NULL AND LOWER(ISNULL(Url, '')) = LOWER(@Url))
OR (@Url IS NULL AND Url IS NULL AND NombreModulo = @NombreModulo)
)
ORDER BY CveModulo;
IF @CveModulo IS NULL
BEGIN
INSERT INTO dbo.Sis_Modulos
(CveModuloPadre, CvePlataforma, NombreModulo, Descripcion, Url,
ClaseCssIcono, ClaseCssEstilo, OrdenVisualizacion, Visible, Activo, FechaCreacion)
VALUES
(@CveModuloPadre, @CvePlataforma, @NombreModulo, @NombreModulo, @Url,
@ClaseCssIcono, NULL, @OrdenVisualizacion, 1, 1, GETDATE());
SET @CveModulo = CONVERT(int, SCOPE_IDENTITY());
END
ELSE
BEGIN
UPDATE dbo.Sis_Modulos
SET CveModuloPadre = @CveModuloPadre,
NombreModulo = @NombreModulo,
Url = @Url,
ClaseCssIcono = @ClaseCssIcono,
OrdenVisualizacion = @OrdenVisualizacion,
Visible = 1,
Activo = 1,
Borrado = 0,
FechaBorrado = NULL,
FechaActualizacion = GETDATE()
WHERE CveModulo = @CveModulo;
END;
INSERT INTO @Ids (Clave, CveModulo)
VALUES (@Clave, @CveModulo);
FETCH NEXT FROM MenuCursor
INTO @Clave, @ClavePadre, @NombreModulo, @Url, @ClaseCssIcono, @OrdenVisualizacion;
END;
CLOSE MenuCursor;
DEALLOCATE MenuCursor;
UPDATE M SET M.Visible = 0
FROM dbo.Sis_Modulos AS M
INNER JOIN @Ids AS I ON I.CveModulo = M.CveModulo
WHERE I.Clave = 'FraccionamientoDetalle';
UPDATE RM
SET RM.PuedeVer = 1,
RM.Borrado = 0,
RM.FechaBorrado = NULL
FROM dbo.Sis_RolesModulos AS RM
INNER JOIN @Ids AS M ON M.CveModulo = RM.CveModulo
INNER JOIN dbo.Sis_Roles AS R ON R.CveRol = RM.CveRol
WHERE R.Activo = 1
AND R.Borrado = 0;
INSERT INTO dbo.Sis_RolesModulos
(CveRol, CveModulo, PuedeVer, PuedeCrear, PuedeModificar,
PuedeEliminar, PuedeImprimir, PuedeExportar, FechaCreacion)
SELECT
R.CveRol, M.CveModulo, 1, 0, 0, 0, 0, 0, GETDATE()
FROM dbo.Sis_Roles AS R
CROSS JOIN @Ids AS M
WHERE R.Activo = 1
AND R.Borrado = 0
AND NOT EXISTS
(
SELECT 1
FROM dbo.Sis_RolesModulos AS RM
WHERE RM.CveRol = R.CveRol
AND RM.CveModulo = M.CveModulo
);
COMMIT TRANSACTION;
SELECT M.CveModulo, M.CveModuloPadre, M.NombreModulo, M.Url, M.OrdenVisualizacion
FROM dbo.Sis_Modulos AS M
INNER JOIN @Ids AS I ON I.CveModulo = M.CveModulo
ORDER BY M.CveModuloPadre, M.OrdenVisualizacion, M.NombreModulo;
END TRY
BEGIN CATCH
IF XACT_STATE() <> 0
ROLLBACK TRANSACTION;
THROW;
END CATCH;