Files
Plataforma-de-desarrolladores/Tramites_Condiciones_Etapas_20260902.sql
Jorge Luis caudillo esparza a3b9ffef1c AjustesNombres
2026-09-07 06:27:12 -07:00

736 lines
22 KiB
Transact-SQL

SET NOCOUNT ON;
GO
IF OBJECT_ID(N'dbo.FraccionamientosEtapas', N'U') IS NULL
BEGIN
THROW 50001, 'No existe la tabla dbo.FraccionamientosEtapas.', 1;
END;
GO
IF COL_LENGTH(N'dbo.FraccionamientosEtapas', N'Aprobado_Prefactibilidad') IS NULL
BEGIN
ALTER TABLE dbo.FraccionamientosEtapas
ADD Aprobado_Prefactibilidad bit NULL;
END;
GO
IF COL_LENGTH(N'dbo.FraccionamientosEtapas', N'RequiereObrasExternas') IS NULL
BEGIN
ALTER TABLE dbo.FraccionamientosEtapas
ADD RequiereObrasExternas bit NULL;
END;
GO
IF COL_LENGTH(N'dbo.FraccionamientosEtapas', N'TipoDeObra') IS NULL
BEGIN
ALTER TABLE dbo.FraccionamientosEtapas
ADD TipoDeObra bit NULL;
END;
GO
IF COL_LENGTH(N'dbo.FraccionamientosEtapas', N'LiberacionMacromedidor') IS NULL
BEGIN
ALTER TABLE dbo.FraccionamientosEtapas
ADD LiberacionMacromedidor bit NULL;
END;
GO
IF COL_LENGTH(N'dbo.FraccionamientosEtapas', N'Relotificacion') IS NULL
BEGIN
ALTER TABLE dbo.FraccionamientosEtapas
ADD Relotificacion bit NULL;
END;
GO
IF COL_LENGTH(N'dbo.FraccionamientosEtapas', N'LiberacionDeLotes') IS NULL
BEGIN
ALTER TABLE dbo.FraccionamientosEtapas
ADD LiberacionDeLotes bit NULL;
END;
GO
IF COL_LENGTH(N'dbo.FraccionamientosEtapas', N'LiberacionDePagosDeDerechos') IS NULL
BEGIN
ALTER TABLE dbo.FraccionamientosEtapas
ADD LiberacionDePagosDeDerechos bit NULL;
END;
GO
IF OBJECT_ID(N'dbo.Tra_TiposTramite', N'U') IS NULL
BEGIN
THROW 50002, 'No existe la tabla dbo.Tra_TiposTramite.', 1;
END;
GO
IF COL_LENGTH(N'dbo.Tra_TiposTramite', N'HabilitaAprobado_Prefactibilidad') IS NULL
BEGIN
ALTER TABLE dbo.Tra_TiposTramite
ADD HabilitaAprobado_Prefactibilidad bit NULL;
END;
GO
IF COL_LENGTH(N'dbo.Tra_TiposTramite', N'HabilitaRequiereObrasExternas') IS NULL
BEGIN
ALTER TABLE dbo.Tra_TiposTramite
ADD HabilitaRequiereObrasExternas bit NULL;
END;
GO
IF COL_LENGTH(N'dbo.Tra_TiposTramite', N'HabilitaTipoDeObra') IS NULL
BEGIN
ALTER TABLE dbo.Tra_TiposTramite
ADD HabilitaTipoDeObra bit NULL;
END;
GO
IF COL_LENGTH(N'dbo.Tra_TiposTramite', N'HabilitaLiberacionMacromedidor') IS NULL
BEGIN
ALTER TABLE dbo.Tra_TiposTramite
ADD HabilitaLiberacionMacromedidor bit NULL;
END;
GO
IF COL_LENGTH(N'dbo.Tra_TiposTramite', N'HabilitaRelotificacion') IS NULL
BEGIN
ALTER TABLE dbo.Tra_TiposTramite
ADD HabilitaRelotificacion bit NULL;
END;
GO
IF COL_LENGTH(N'dbo.Tra_TiposTramite', N'HabilitaLiberacionDeLotes') IS NULL
BEGIN
ALTER TABLE dbo.Tra_TiposTramite
ADD HabilitaLiberacionDeLotes bit NULL;
END;
GO
IF COL_LENGTH(N'dbo.Tra_TiposTramite', N'HabilitaLiberacionDePagosDeDerechos') IS NULL
BEGIN
ALTER TABLE dbo.Tra_TiposTramite
ADD HabilitaLiberacionDePagosDeDerechos bit NULL;
END;
GO
CREATE OR ALTER PROCEDURE dbo.PA_Fraccionamientos_EtapaCondicionesGet
@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
SELECT
E.CveFraccionamientoEtapa,
E.CveFraccionamiento,
F.CveCliente,
E.Etapa,
E.Aprobado_Prefactibilidad,
E.RequiereObrasExternas,
E.TipoDeObra,
E.LiberacionMacromedidor,
E.Relotificacion,
E.LiberacionDeLotes,
E.LiberacionDePagosDeDerechos
FROM dbo.FraccionamientosEtapas AS E
INNER JOIN dbo.Fraccionamientos AS F
ON F.CveFraccionamiento = E.CveFraccionamiento
WHERE E.CveFraccionamientoEtapa = @CveFraccionamientoEtapa;
IF @@ROWCOUNT = 0
BEGIN
SET @ErrorMostrar = 'La etapa no existe.';
SET @ErrorTipo = 2;
RETURN;
END;
SET @Return = 1;
END TRY
BEGIN CATCH
SET @ErrorMostrar = 'Ocurrió un error al consultar las condiciones 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_EtapaCondicionesGet'),
'; Línea: ', ERROR_LINE(),
'; Detalle: ', ERROR_MESSAGE()
);
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
END CATCH;
END;
GO
CREATE OR ALTER PROCEDURE dbo.PA_Fraccionamientos_EtapaCondicionesUpdate
@CveFraccionamientoEtapa int,
@Aprobado_Prefactibilidad int = -1,
@RequiereObrasExternas int = -1,
@TipoDeObra int = -1,
@LiberacionMacromedidor int = -1,
@Relotificacion int = -1,
@LiberacionDeLotes int = -1,
@LiberacionDePagosDeDerechos int = -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
IF @Aprobado_Prefactibilidad = -1
SET @Aprobado_Prefactibilidad = NULL;
IF @RequiereObrasExternas = -1
SET @RequiereObrasExternas = NULL;
IF @TipoDeObra = -1
SET @TipoDeObra = NULL;
IF @LiberacionMacromedidor = -1
SET @LiberacionMacromedidor = NULL;
IF @Relotificacion = -1
SET @Relotificacion = NULL;
IF @LiberacionDeLotes = -1
SET @LiberacionDeLotes = NULL;
IF @LiberacionDePagosDeDerechos = -1
SET @LiberacionDePagosDeDerechos = NULL;
UPDATE E
SET
E.Aprobado_Prefactibilidad = @Aprobado_Prefactibilidad,
E.RequiereObrasExternas = @RequiereObrasExternas,
E.TipoDeObra = @TipoDeObra,
E.LiberacionMacromedidor = @LiberacionMacromedidor,
E.Relotificacion = @Relotificacion,
E.LiberacionDeLotes = @LiberacionDeLotes,
E.LiberacionDePagosDeDerechos = @LiberacionDePagosDeDerechos,
E.FechaModificacion = GETDATE(),
E.CveUsuario = @CveUsuarioEjecuta
FROM dbo.FraccionamientosEtapas AS E
INNER JOIN dbo.Fraccionamientos AS F
ON F.CveFraccionamiento = E.CveFraccionamiento
WHERE E.CveFraccionamientoEtapa = @CveFraccionamientoEtapa;
IF @@ROWCOUNT = 0
BEGIN
SET @ErrorMostrar = 'La etapa no existe.';
SET @ErrorTipo = 2;
RETURN;
END;
SELECT
E.CveFraccionamientoEtapa,
E.CveFraccionamiento,
F.CveCliente,
E.Etapa,
E.Aprobado_Prefactibilidad,
E.RequiereObrasExternas,
E.TipoDeObra,
E.LiberacionMacromedidor,
E.Relotificacion,
E.LiberacionDeLotes,
E.LiberacionDePagosDeDerechos
FROM dbo.FraccionamientosEtapas AS E
INNER JOIN dbo.Fraccionamientos AS F
ON F.CveFraccionamiento = E.CveFraccionamiento
WHERE E.CveFraccionamientoEtapa = @CveFraccionamientoEtapa;
SET @Return = 1;
END TRY
BEGIN CATCH
SET @ErrorMostrar = 'Ocurrió un error al guardar las condiciones 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_EtapaCondicionesUpdate'),
'; Línea: ', ERROR_LINE(),
'; Detalle: ', ERROR_MESSAGE()
);
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
END CATCH;
END;
GO
CREATE OR ALTER PROCEDURE dbo.PA_Tra_TipoTramiteList
@Texto varchar(250) = 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
SELECT
T.CveTipoTramite,
T.Codigo,
T.TipoTramite,
T.Descripcion,
T.Orden,
T.EsActivo,
T.HabilitaAprobado_Prefactibilidad,
T.HabilitaRequiereObrasExternas,
T.HabilitaTipoDeObra,
T.HabilitaLiberacionMacromedidor,
T.HabilitaRelotificacion,
T.HabilitaLiberacionDeLotes,
T.HabilitaLiberacionDePagosDeDerechos,
(
SELECT COUNT(*)
FROM dbo.Tra_Preguntas AS P
WHERE P.CveTipoTramite = T.CveTipoTramite
) AS NumeroPreguntas
FROM dbo.Tra_TiposTramite AS T
WHERE (@IncluirInactivos = 1 OR T.EsActivo = 1)
AND
(
NULLIF(LTRIM(RTRIM(@Texto)), '') IS NULL
OR T.Codigo LIKE '%' + @Texto + '%'
OR T.TipoTramite LIKE '%' + @Texto + '%'
OR T.Descripcion LIKE '%' + @Texto + '%'
)
ORDER BY T.Orden, T.TipoTramite;
SET @Return = 1;
END TRY
BEGIN CATCH
SET @ErrorMostrar = 'Ocurrió un error al consultar los tipos de trámite; 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_Tra_TipoTramiteList'),
'; Línea: ', ERROR_LINE(),
'; Detalle: ', ERROR_MESSAGE()
);
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
END CATCH;
END;
GO
CREATE OR ALTER PROCEDURE dbo.PA_Tra_TipoTramiteGet
@CveTipoTramite 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
SELECT
T.CveTipoTramite,
T.Codigo,
T.TipoTramite,
T.Descripcion,
T.Orden,
T.EsActivo,
T.HabilitaAprobado_Prefactibilidad,
T.HabilitaRequiereObrasExternas,
T.HabilitaTipoDeObra,
T.HabilitaLiberacionMacromedidor,
T.HabilitaRelotificacion,
T.HabilitaLiberacionDeLotes,
T.HabilitaLiberacionDePagosDeDerechos,
(
SELECT COUNT(*)
FROM dbo.Tra_Preguntas AS P
WHERE P.CveTipoTramite = T.CveTipoTramite
) AS NumeroPreguntas
FROM dbo.Tra_TiposTramite AS T
WHERE T.CveTipoTramite = @CveTipoTramite;
SET @Return = 1;
END TRY
BEGIN CATCH
SET @ErrorMostrar = 'Ocurrió un error al consultar el tipo de trámite; 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_Tra_TipoTramiteGet'),
'; Línea: ', ERROR_LINE(),
'; Detalle: ', ERROR_MESSAGE()
);
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
END CATCH;
END;
GO
CREATE OR ALTER PROCEDURE dbo.PA_Tra_TipoTramiteSave
@CveTipoTramite int = NULL,
@Codigo varchar(50),
@TipoTramite varchar(200),
@Descripcion varchar(500) = NULL,
@EsActivo bit,
@HabilitaAprobado_Prefactibilidad int = -1,
@HabilitaRequiereObrasExternas int = -1,
@HabilitaTipoDeObra int = -1,
@HabilitaLiberacionMacromedidor int = -1,
@HabilitaRelotificacion int = -1,
@HabilitaLiberacionDeLotes int = -1,
@HabilitaLiberacionDePagosDeDerechos int = -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
IF @HabilitaAprobado_Prefactibilidad = -1
SET @HabilitaAprobado_Prefactibilidad = NULL;
IF @HabilitaRequiereObrasExternas = -1
SET @HabilitaRequiereObrasExternas = NULL;
IF @HabilitaTipoDeObra = -1
SET @HabilitaTipoDeObra = NULL;
IF @HabilitaLiberacionMacromedidor = -1
SET @HabilitaLiberacionMacromedidor = NULL;
IF @HabilitaRelotificacion = -1
SET @HabilitaRelotificacion = NULL;
IF @HabilitaLiberacionDeLotes = -1
SET @HabilitaLiberacionDeLotes = NULL;
IF @HabilitaLiberacionDePagosDeDerechos = -1
SET @HabilitaLiberacionDePagosDeDerechos = NULL;
SELECT
@Codigo = LTRIM(RTRIM(@Codigo)),
@TipoTramite = LTRIM(RTRIM(@TipoTramite)),
@Descripcion = NULLIF(LTRIM(RTRIM(@Descripcion)), '');
IF NULLIF(@Codigo, '') IS NULL
OR NULLIF(@TipoTramite, '') IS NULL
BEGIN
SET @ErrorMostrar = 'Capture el código y el nombre del tipo de trámite.';
SET @ErrorTipo = 2;
RETURN;
END;
IF EXISTS
(
SELECT 1
FROM dbo.Tra_TiposTramite
WHERE Codigo = @Codigo
AND CveTipoTramite <> ISNULL(@CveTipoTramite, 0)
)
BEGIN
SET @ErrorMostrar = 'El código del tipo de trámite ya está registrado.';
SET @ErrorTipo = 2;
RETURN;
END;
IF @CveTipoTramite IS NULL
BEGIN
DECLARE @Orden int;
SELECT @Orden = ISNULL(MAX(Orden), 0) + 1
FROM dbo.Tra_TiposTramite;
INSERT INTO dbo.Tra_TiposTramite
(
Codigo,
TipoTramite,
Descripcion,
Orden,
EsActivo,
HabilitaAprobado_Prefactibilidad,
HabilitaRequiereObrasExternas,
HabilitaTipoDeObra,
HabilitaLiberacionMacromedidor,
HabilitaRelotificacion,
HabilitaLiberacionDeLotes,
HabilitaLiberacionDePagosDeDerechos,
CveUsuario
)
VALUES
(
@Codigo,
@TipoTramite,
@Descripcion,
@Orden,
@EsActivo,
@HabilitaAprobado_Prefactibilidad,
@HabilitaRequiereObrasExternas,
@HabilitaTipoDeObra,
@HabilitaLiberacionMacromedidor,
@HabilitaRelotificacion,
@HabilitaLiberacionDeLotes,
@HabilitaLiberacionDePagosDeDerechos,
@CveUsuarioEjecuta
);
SET @CveTipoTramite = CONVERT(int, SCOPE_IDENTITY());
END
ELSE
BEGIN
UPDATE dbo.Tra_TiposTramite
SET
Codigo = @Codigo,
TipoTramite = @TipoTramite,
Descripcion = @Descripcion,
EsActivo = @EsActivo,
HabilitaAprobado_Prefactibilidad = @HabilitaAprobado_Prefactibilidad,
HabilitaRequiereObrasExternas = @HabilitaRequiereObrasExternas,
HabilitaTipoDeObra = @HabilitaTipoDeObra,
HabilitaLiberacionMacromedidor = @HabilitaLiberacionMacromedidor,
HabilitaRelotificacion = @HabilitaRelotificacion,
HabilitaLiberacionDeLotes = @HabilitaLiberacionDeLotes,
HabilitaLiberacionDePagosDeDerechos = @HabilitaLiberacionDePagosDeDerechos,
FechaModificacion = GETDATE(),
CveUsuario = @CveUsuarioEjecuta
WHERE CveTipoTramite = @CveTipoTramite;
END;
SELECT @CveTipoTramite AS CveTipoTramite;
SET @Return = 1;
END TRY
BEGIN CATCH
SET @ErrorMostrar = 'Ocurrió un error al guardar el tipo de trámite; 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_Tra_TipoTramiteSave'),
'; Línea: ', ERROR_LINE(),
'; Detalle: ', ERROR_MESSAGE()
);
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
END CATCH;
END;
GO
CREATE OR ALTER PROCEDURE dbo.PA_Tramites_ActualizarTramites
@CveSolicitud 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
-- Plantilla para activar automáticamente otro trámite en la misma etapa.
-- Se deja comentada hasta definir las condiciones y el tipo de trámite.
--
-- INSERT INTO dbo.Tra_Solicitudes
-- (
-- Folio,
-- CveCliente,
-- CveFraccionamiento,
-- CveFraccionamientoEtapa,
-- CveTipoTramite,
-- CveEstatusSolicitud,
-- CveUsuarioSolicita,
-- FechaInicio
-- )
-- SELECT
-- CONCAT('ET', S.CveFraccionamientoEtapa, '-TR', T.CveTipoTramite),
-- S.CveCliente,
-- S.CveFraccionamiento,
-- S.CveFraccionamientoEtapa,
-- T.CveTipoTramite,
-- E.CveEstatusSolicitud,
-- @CveUsuarioEjecuta,
-- GETDATE()
-- FROM dbo.Tra_Solicitudes AS S
-- CROSS JOIN dbo.Tra_TiposTramite AS T
-- CROSS APPLY
-- (
-- SELECT TOP (1) ES.CveEstatusSolicitud
-- FROM dbo.Tra_EstatusSolicitud AS ES
-- WHERE ES.Orden = 1
-- AND ES.EsActivo = 1
-- ORDER BY ES.CveEstatusSolicitud
-- ) AS E
-- WHERE S.CveSolicitud = @CveSolicitud
-- AND T.CveTipoTramite = 0
-- AND NOT EXISTS
-- (
-- SELECT 1
-- FROM dbo.Tra_Solicitudes AS SA
-- WHERE SA.CveFraccionamientoEtapa = S.CveFraccionamientoEtapa
-- AND SA.CveTipoTramite = T.CveTipoTramite
-- );
SELECT 1 AS Resultado;
SET @Return = 1;
END TRY
BEGIN CATCH
SET @ErrorMostrar = 'Ocurrió un error al actualizar los trámites; 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_Tramites_ActualizarTramites'),
'; Línea: ', ERROR_LINE(),
'; Detalle: ', ERROR_MESSAGE()
);
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
END CATCH;
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 @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
);
INSERT INTO @Campos
(
NombreTablaSQL,
NombreCampoSQL,
NombreMostrar
)
VALUES
('FraccionamientosEtapas', 'Aprobado_Prefactibilidad', 'Aprobado en prefactibilidad'),
('FraccionamientosEtapas', 'RequiereObrasExternas', 'Requiere obras externas'),
('FraccionamientosEtapas', 'TipoDeObra', 'Tipo de obra'),
('FraccionamientosEtapas', 'LiberacionMacromedidor', 'Liberación de macromedidor'),
('FraccionamientosEtapas', 'Relotificacion', 'Relotificación'),
('FraccionamientosEtapas', 'LiberacionDeLotes', 'Liberación de lotes'),
('FraccionamientosEtapas', 'LiberacionDePagosDeDerechos', 'Liberación de pagos de derechos'),
('Tra_TiposTramite', 'HabilitaAprobado_Prefactibilidad', 'Habilita aprobado en prefactibilidad'),
('Tra_TiposTramite', 'HabilitaRequiereObrasExternas', 'Habilita requiere obras externas'),
('Tra_TiposTramite', 'HabilitaTipoDeObra', 'Habilita tipo de obra'),
('Tra_TiposTramite', 'HabilitaLiberacionMacromedidor', 'Habilita liberación de macromedidor'),
('Tra_TiposTramite', 'HabilitaRelotificacion', 'Habilita relotificación'),
('Tra_TiposTramite', 'HabilitaLiberacionDeLotes', 'Habilita liberación de lotes'),
('Tra_TiposTramite', 'HabilitaLiberacionDePagosDeDerechos', 'Habilita liberación de pagos de derechos');
UPDATE C
SET
C.NombreMostrar = S.NombreMostrar,
C.MostrarEnBitacora = 1,
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,
1,
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
);
END;
GO