250 lines
8.2 KiB
Transact-SQL
250 lines
8.2 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'
|
|
ORDER BY CvePlataforma;
|
|
|
|
IF @CvePlataforma IS NULL
|
|
BEGIN
|
|
THROW 50001, 'No se encontró la plataforma de desarrolladores.', 1;
|
|
END;
|
|
|
|
DECLARE @Menu TABLE
|
|
(
|
|
Clave varchar(50) NOT NULL PRIMARY KEY,
|
|
ClavePadre varchar(50) NULL,
|
|
NombreModulo varchar(150) NOT NULL,
|
|
Url varchar(500) NULL,
|
|
Icono varchar(150) NULL,
|
|
Orden int NOT NULL,
|
|
Visible bit NOT NULL,
|
|
Nivel int NOT NULL
|
|
);
|
|
|
|
INSERT INTO @Menu
|
|
(Clave, ClavePadre, NombreModulo, Url, Icono, Orden, Visible, Nivel)
|
|
VALUES
|
|
('Catalogos', NULL, 'Catálogos', NULL, 'fa fa-list-alt', 30, 1, 0),
|
|
('EstatusSolicitud', 'Catalogos', 'Estatus de solicitud', '~/Pages/Catalogos/EstatusSolicitud.aspx', 'fa fa-check-circle', 10, 1, 1),
|
|
('TiposTramite', 'Catalogos', 'Tipos de trámite', '~/Pages/Catalogos/TiposTramite.aspx', 'fa fa-file-text-o', 20, 1, 1),
|
|
('TipoTramiteDetalle', 'TiposTramite', 'Detalle de tipo de trámite', '~/Pages/Catalogos/TipoTramiteDetalle.aspx', 'fa fa-question-circle', 10, 0, 2),
|
|
('TiposDocumento', 'Catalogos', 'Tipos de documento', '~/Pages/Catalogos/TiposDocumento.aspx', 'fa fa-file-o', 30, 1, 1),
|
|
('DocumentosRequeridos', 'Catalogos', 'Documentos requeridos', '~/Pages/Catalogos/DocumentosRequeridos.aspx', 'fa fa-paperclip', 40, 1, 1),
|
|
('ProductosGrupo', 'Catalogos', 'Productos', NULL, 'fa fa-cubes', 50, 1, 1),
|
|
('ProductosServicios', 'ProductosGrupo', 'Productos', '~/Pages/Catalogos/ProductosServicios.aspx', 'fa fa-cube', 10, 1, 2),
|
|
('UnidadesMedida', 'ProductosGrupo', 'Unidades de medida', '~/Pages/Catalogos/UnidadesMedida.aspx', 'fa fa-balance-scale', 20, 1, 2),
|
|
('Clasificaciones', 'ProductosGrupo', 'Clasificación', '~/Pages/Catalogos/Clasificaciones.aspx', 'fa fa-tags', 30, 1, 2);
|
|
|
|
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),
|
|
@Icono varchar(150),
|
|
@Orden int,
|
|
@Visible bit,
|
|
@Nivel int,
|
|
@CveModuloPadre int,
|
|
@CveModulo int;
|
|
|
|
DECLARE CatalogoCursor CURSOR LOCAL FAST_FORWARD FOR
|
|
SELECT
|
|
Clave,
|
|
ClavePadre,
|
|
NombreModulo,
|
|
Url,
|
|
Icono,
|
|
Orden,
|
|
Visible,
|
|
Nivel
|
|
FROM @Menu
|
|
ORDER BY Nivel, Orden, Clave;
|
|
|
|
OPEN CatalogoCursor;
|
|
FETCH NEXT FROM CatalogoCursor
|
|
INTO @Clave, @ClavePadre, @NombreModulo, @Url, @Icono, @Orden,
|
|
@Visible, @Nivel;
|
|
|
|
WHILE @@FETCH_STATUS = 0
|
|
BEGIN
|
|
SELECT @CveModuloPadre = NULL, @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) COLLATE Modern_Spanish_CS_AS)
|
|
OR
|
|
(@Url IS NULL AND Url IS NULL AND NombreModulo = @NombreModulo COLLATE Modern_Spanish_CS_AS)
|
|
)
|
|
ORDER BY CveModulo;
|
|
|
|
IF @CveModulo IS NULL
|
|
BEGIN
|
|
INSERT dbo.Sis_Modulos
|
|
(CveModuloPadre, CvePlataforma, NombreModulo, Descripcion, Url,
|
|
ClaseCssIcono, ClaseCssEstilo, OrdenVisualizacion, Visible,
|
|
Activo, FechaCreacion)
|
|
VALUES
|
|
(@CveModuloPadre, @CvePlataforma, @NombreModulo, @NombreModulo,
|
|
@Url, @Icono, NULL, @Orden, @Visible, 1, GETDATE());
|
|
|
|
SET @CveModulo = CONVERT(int, SCOPE_IDENTITY());
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
UPDATE dbo.Sis_Modulos
|
|
SET CveModuloPadre = @CveModuloPadre,
|
|
NombreModulo = @NombreModulo COLLATE Modern_Spanish_CS_AS,
|
|
Descripcion = @NombreModulo,
|
|
Url = @Url,
|
|
ClaseCssIcono = @Icono,
|
|
OrdenVisualizacion = @Orden,
|
|
Visible = @Visible,
|
|
Activo = 1,
|
|
FechaActualizacion = GETDATE()
|
|
WHERE CveModulo = @CveModulo;
|
|
END;
|
|
|
|
INSERT INTO @Ids (Clave, CveModulo)
|
|
VALUES (@Clave, @CveModulo);
|
|
|
|
FETCH NEXT FROM CatalogoCursor
|
|
INTO @Clave, @ClavePadre, @NombreModulo, @Url, @Icono, @Orden,
|
|
@Visible, @Nivel;
|
|
END;
|
|
|
|
CLOSE CatalogoCursor;
|
|
DEALLOCATE CatalogoCursor;
|
|
|
|
UPDATE RM
|
|
SET PuedeVer = CASE WHEN RM.CveRol IN (1, 2) THEN 1 ELSE 0 END,
|
|
PuedeCrear = CASE WHEN RM.CveRol IN (1, 2) THEN 1 ELSE 0 END,
|
|
PuedeModificar = CASE WHEN RM.CveRol IN (1, 2) THEN 1 ELSE 0 END,
|
|
PuedeEliminar = CASE WHEN RM.CveRol IN (1, 2) THEN 1 ELSE 0 END
|
|
FROM dbo.Sis_RolesModulos AS RM
|
|
INNER JOIN @Ids AS I ON I.CveModulo = RM.CveModulo;
|
|
|
|
INSERT dbo.Sis_RolesModulos
|
|
(CveRol, CveModulo, PuedeVer, PuedeCrear, PuedeModificar,
|
|
PuedeEliminar, PuedeImprimir, PuedeExportar, FechaCreacion)
|
|
SELECT
|
|
R.CveRol,
|
|
I.CveModulo,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
GETDATE()
|
|
FROM dbo.Sis_Roles AS R
|
|
CROSS JOIN @Ids AS I
|
|
WHERE R.CveRol IN (1, 2)
|
|
AND NOT EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM dbo.Sis_RolesModulos AS RM
|
|
WHERE RM.CveRol = R.CveRol
|
|
AND RM.CveModulo = I.CveModulo
|
|
);
|
|
|
|
DECLARE @Tablas TABLE
|
|
(
|
|
NombreTablaSQL varchar(128) NOT NULL,
|
|
NombreMostrar varchar(150) NOT NULL,
|
|
CampoLlave varchar(128) NOT NULL
|
|
);
|
|
|
|
INSERT INTO @Tablas
|
|
(NombreTablaSQL, NombreMostrar, CampoLlave)
|
|
VALUES
|
|
('Tra_EstatusSolicitud', 'Estatus de solicitud', 'CveEstatusSolicitud'),
|
|
('Tra_TiposTramite', 'Tipos de trámite', 'CveTipoTramite'),
|
|
('Tra_TiposDocumento', 'Tipos de documento', 'CveTipoDocumento'),
|
|
('Tra_DocumentosRequeridos', 'Documentos requeridos', 'CveDocumentoRequerido'),
|
|
('Tra_Preguntas', 'Preguntas de trámite', 'CvePregunta'),
|
|
('Tra_OpcionesPregunta', 'Opciones de respuesta', 'CveOpcionPregunta');
|
|
|
|
UPDATE T
|
|
SET NombreMostrar = S.NombreMostrar,
|
|
NombreCampoLlaveSQL = S.CampoLlave,
|
|
Activo = 1,
|
|
FechaMod = GETDATE()
|
|
FROM dbo.Bit_Tablas AS T
|
|
INNER JOIN @Tablas AS S ON S.NombreTablaSQL COLLATE Modern_Spanish_CS_AS = T.NombreTablaSQL;
|
|
|
|
INSERT dbo.Bit_Tablas
|
|
(NombreTablaSQL, NombreMostrar, Descripcion, NombreCampoLlaveSQL, Activo)
|
|
SELECT
|
|
S.NombreTablaSQL,
|
|
S.NombreMostrar,
|
|
'Catálogo interno de trámites.',
|
|
S.CampoLlave,
|
|
1
|
|
FROM @Tablas AS S
|
|
WHERE NOT EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM dbo.Bit_Tablas AS T
|
|
WHERE T.NombreTablaSQL = S.NombreTablaSQL COLLATE Modern_Spanish_CS_AS
|
|
);
|
|
|
|
INSERT dbo.Bit_Campos
|
|
(CveTabla, NombreCampoSQL, NombreMostrar, MostrarEnBitacora, TipoDatoSQL, Activo)
|
|
SELECT
|
|
BT.CveTabla,
|
|
C.name,
|
|
C.name,
|
|
CASE WHEN C.name = S.CampoLlave THEN 0 ELSE 1 END,
|
|
TY.name,
|
|
1
|
|
FROM @Tablas AS S
|
|
INNER JOIN sys.tables AS T ON T.name = S.NombreTablaSQL COLLATE Modern_Spanish_CS_AS
|
|
INNER JOIN sys.schemas AS SC ON SC.schema_id = T.schema_id AND SC.name = 'dbo'
|
|
INNER JOIN sys.columns AS C ON C.object_id = T.object_id
|
|
INNER JOIN sys.types AS TY ON TY.user_type_id = C.user_type_id
|
|
INNER JOIN dbo.Bit_Tablas AS BT ON BT.NombreTablaSQL = S.NombreTablaSQL COLLATE Modern_Spanish_CS_AS
|
|
WHERE NOT EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM dbo.Bit_Campos AS BC
|
|
WHERE BC.CveTabla = BT.CveTabla
|
|
AND BC.NombreCampoSQL = C.name COLLATE Modern_Spanish_CS_AS
|
|
);
|
|
|
|
COMMIT TRANSACTION;
|
|
END TRY
|
|
BEGIN CATCH
|
|
IF XACT_STATE() <> 0
|
|
BEGIN
|
|
ROLLBACK TRANSACTION;
|
|
END;
|
|
|
|
THROW;
|
|
END CATCH;
|
|
GO
|