2140 lines
83 KiB
PL/PgSQL
2140 lines
83 KiB
PL/PgSQL
/*
|
|
Visitas, días festivos y cuestionarios reutilizables.
|
|
Preparado para revisión. Su ejecución requiere autorización separada.
|
|
Reutiliza las claves reales de etapas, lotes, supervisores y tipos de pregunta.
|
|
La agenda y las fechas de visita usan hora local de Hermosillo.
|
|
*/
|
|
IF OBJECT_ID(N'dbo.Sis_ConfiguracionVisitas', N'U') IS NULL
|
|
BEGIN
|
|
CREATE TABLE dbo.Sis_ConfiguracionVisitas
|
|
(
|
|
CveConfiguracionVisitas int NOT NULL CONSTRAINT PK_Sis_ConfiguracionVisitas PRIMARY KEY,
|
|
DuracionPredeterminadaMinutos int NOT NULL CONSTRAINT CK_Sis_ConfiguracionVisitas_Duracion CHECK (DuracionPredeterminadaMinutos > 0),
|
|
CveUsuario int NULL REFERENCES dbo.Sis_Usuarios(CveUsuario),
|
|
FechaAlta datetime NOT NULL CONSTRAINT DF_Sis_ConfiguracionVisitas_FechaAlta DEFAULT (GETDATE()),
|
|
FechaModificacion datetime NULL,
|
|
CONSTRAINT CK_Sis_ConfiguracionVisitas_Unica CHECK (CveConfiguracionVisitas = 1)
|
|
);
|
|
END;
|
|
GO
|
|
IF OBJECT_ID(N'dbo.Sis_DiasFestivos', N'U') IS NULL
|
|
BEGIN
|
|
CREATE TABLE dbo.Sis_DiasFestivos
|
|
(
|
|
CveDiaFestivo int IDENTITY(1,1) NOT NULL CONSTRAINT PK_Sis_DiasFestivos PRIMARY KEY,
|
|
Fecha date NOT NULL,
|
|
Descripcion varchar(250) NOT NULL,
|
|
EsActivo bit NOT NULL,
|
|
CveUsuario int NULL REFERENCES dbo.Sis_Usuarios(CveUsuario),
|
|
FechaAlta datetime NOT NULL CONSTRAINT DF_Sis_DiasFestivos_FechaAlta DEFAULT (GETDATE()),
|
|
FechaModificacion datetime NULL,
|
|
CONSTRAINT UQ_Sis_DiasFestivos_Fecha UNIQUE (Fecha)
|
|
);
|
|
END;
|
|
GO
|
|
IF OBJECT_ID(N'dbo.Vis_PlantillasCuestionario', N'U') IS NULL
|
|
BEGIN
|
|
CREATE TABLE dbo.Vis_PlantillasCuestionario
|
|
(
|
|
CvePlantilla int IDENTITY(1,1) NOT NULL CONSTRAINT PK_Vis_PlantillasCuestionario PRIMARY KEY,
|
|
Nombre varchar(150) NOT NULL,
|
|
EsPorLote bit NOT NULL,
|
|
EsActivo bit NOT NULL,
|
|
CveUsuario int NULL REFERENCES dbo.Sis_Usuarios(CveUsuario),
|
|
FechaAlta datetime NOT NULL CONSTRAINT DF_Vis_PlantillasCuestionario_FechaAlta DEFAULT (GETDATE()),
|
|
FechaModificacion datetime NULL
|
|
);
|
|
END;
|
|
GO
|
|
IF OBJECT_ID(N'dbo.Vis_PreguntasPlantilla', N'U') IS NULL
|
|
BEGIN
|
|
CREATE TABLE dbo.Vis_PreguntasPlantilla
|
|
(
|
|
CvePreguntaPlantilla int IDENTITY(1,1) NOT NULL CONSTRAINT PK_Vis_PreguntasPlantilla PRIMARY KEY,
|
|
CvePlantilla int NOT NULL REFERENCES dbo.Vis_PlantillasCuestionario(CvePlantilla),
|
|
CveTipoPregunta int NOT NULL REFERENCES dbo.Tra_TiposPregunta(CveTipoPregunta),
|
|
Pregunta varchar(500) NOT NULL,
|
|
EsRequerida bit NOT NULL,
|
|
EsActivo bit NOT NULL,
|
|
Orden int NOT NULL,
|
|
CveUsuario int NULL REFERENCES dbo.Sis_Usuarios(CveUsuario),
|
|
FechaAlta datetime NOT NULL CONSTRAINT DF_Vis_PreguntasPlantilla_FechaAlta DEFAULT (GETDATE()),
|
|
FechaModificacion datetime NULL
|
|
);
|
|
END;
|
|
GO
|
|
IF OBJECT_ID(N'dbo.Vis_OpcionesPregunta', N'U') IS NULL
|
|
BEGIN
|
|
CREATE TABLE dbo.Vis_OpcionesPregunta
|
|
(
|
|
CveOpcionPregunta int IDENTITY(1,1) NOT NULL CONSTRAINT PK_Vis_OpcionesPregunta PRIMARY KEY,
|
|
CvePreguntaPlantilla int NOT NULL REFERENCES dbo.Vis_PreguntasPlantilla(CvePreguntaPlantilla),
|
|
TextoOpcion varchar(300) NOT NULL,
|
|
Orden int NOT NULL,
|
|
CveUsuario int NULL REFERENCES dbo.Sis_Usuarios(CveUsuario),
|
|
FechaAlta datetime NOT NULL CONSTRAINT DF_Vis_OpcionesPregunta_FechaAlta DEFAULT (GETDATE()),
|
|
FechaModificacion datetime NULL
|
|
);
|
|
END;
|
|
GO
|
|
IF OBJECT_ID(N'dbo.Vis_Citas', N'U') IS NULL
|
|
BEGIN
|
|
CREATE TABLE dbo.Vis_Citas
|
|
(
|
|
CveCita int IDENTITY(1,1) NOT NULL CONSTRAINT PK_Vis_Citas PRIMARY KEY,
|
|
CveFraccionamientoEtapa int NOT NULL REFERENCES dbo.FraccionamientosEtapas(CveFraccionamientoEtapa),
|
|
CveSupervisor int NOT NULL REFERENCES dbo.Sis_Usuarios(CveUsuario),
|
|
FechaInicio datetime2(0) NOT NULL,
|
|
DuracionMinutos int NOT NULL CONSTRAINT CK_Vis_Citas_Duracion CHECK (DuracionMinutos > 0),
|
|
FechaFin datetime2(0) NOT NULL,
|
|
Cancelada bit NOT NULL CONSTRAINT DF_Vis_Citas_Cancelada DEFAULT (0),
|
|
Comentarios varchar(2000) NULL,
|
|
CveUsuario int NULL REFERENCES dbo.Sis_Usuarios(CveUsuario),
|
|
FechaAlta datetime NOT NULL CONSTRAINT DF_Vis_Citas_FechaAlta DEFAULT (GETDATE()),
|
|
FechaModificacion datetime NULL,
|
|
CONSTRAINT CK_Vis_Citas_Fechas CHECK (FechaFin > FechaInicio AND DATEDIFF_BIG(SECOND, FechaInicio, FechaFin) = CONVERT(bigint, DuracionMinutos) * 60)
|
|
);
|
|
END;
|
|
GO
|
|
IF OBJECT_ID(N'dbo.Vis_Visitas', N'U') IS NULL
|
|
BEGIN
|
|
CREATE TABLE dbo.Vis_Visitas
|
|
(
|
|
CveVisita int IDENTITY(1,1) NOT NULL CONSTRAINT PK_Vis_Visitas PRIMARY KEY,
|
|
CveCita int NOT NULL REFERENCES dbo.Vis_Citas(CveCita),
|
|
SeRealizo bit NULL,
|
|
FechaReal datetime2(0) NULL,
|
|
Observaciones varchar(max) NULL,
|
|
CveUsuario int NULL REFERENCES dbo.Sis_Usuarios(CveUsuario),
|
|
FechaAlta datetime NOT NULL CONSTRAINT DF_Vis_Visitas_FechaAlta DEFAULT (GETDATE()),
|
|
FechaModificacion datetime NULL,
|
|
CONSTRAINT UQ_Vis_Visitas_Cita UNIQUE (CveCita)
|
|
);
|
|
END;
|
|
GO
|
|
IF OBJECT_ID(N'dbo.Vis_CuestionariosVisita', N'U') IS NULL
|
|
BEGIN
|
|
CREATE TABLE dbo.Vis_CuestionariosVisita
|
|
(
|
|
CveCuestionarioVisita int IDENTITY(1,1) NOT NULL CONSTRAINT PK_Vis_CuestionariosVisita PRIMARY KEY,
|
|
CveVisita int NOT NULL REFERENCES dbo.Vis_Visitas(CveVisita),
|
|
CvePlantilla int NOT NULL REFERENCES dbo.Vis_PlantillasCuestionario(CvePlantilla),
|
|
CveFraccionamientoLote int NULL REFERENCES dbo.FraccionamientosLotes(CveFraccionamientoLote),
|
|
NombrePlantilla varchar(150) NOT NULL,
|
|
DefinicionPlantilla nvarchar(max) NOT NULL,
|
|
PasoSupervision bit NULL,
|
|
AguaPotableTerminada bit NULL,
|
|
DrenajeTerminado bit NULL,
|
|
Observaciones varchar(max) NULL,
|
|
Finalizado bit NOT NULL,
|
|
CveUsuario int NULL REFERENCES dbo.Sis_Usuarios(CveUsuario),
|
|
FechaAlta datetime NOT NULL CONSTRAINT DF_Vis_CuestionariosVisita_FechaAlta DEFAULT (GETDATE()),
|
|
FechaModificacion datetime NULL,
|
|
CONSTRAINT CK_Vis_CuestionariosVisita_Definicion CHECK (ISJSON(DefinicionPlantilla) = 1),
|
|
CONSTRAINT CK_Vis_CuestionariosVisita_Cierre CHECK (Finalizado = 0 OR (PasoSupervision IS NOT NULL AND AguaPotableTerminada IS NOT NULL AND DrenajeTerminado IS NOT NULL AND NULLIF(LTRIM(RTRIM(Observaciones)), '') IS NOT NULL))
|
|
);
|
|
END;
|
|
GO
|
|
IF OBJECT_ID(N'dbo.Vis_RespuestasVisita', N'U') IS NULL
|
|
BEGIN
|
|
CREATE TABLE dbo.Vis_RespuestasVisita
|
|
(
|
|
CveRespuestaVisita int IDENTITY(1,1) NOT NULL CONSTRAINT PK_Vis_RespuestasVisita PRIMARY KEY,
|
|
CveCuestionarioVisita int NOT NULL REFERENCES dbo.Vis_CuestionariosVisita(CveCuestionarioVisita),
|
|
CvePreguntaPlantilla int NOT NULL,
|
|
Valor nvarchar(max) NULL,
|
|
CveUsuario int NULL REFERENCES dbo.Sis_Usuarios(CveUsuario),
|
|
FechaAlta datetime NOT NULL CONSTRAINT DF_Vis_RespuestasVisita_FechaAlta DEFAULT (GETDATE()),
|
|
FechaModificacion datetime NULL,
|
|
CONSTRAINT UQ_Vis_RespuestasVisita_Pregunta UNIQUE (CveCuestionarioVisita, CvePreguntaPlantilla)
|
|
);
|
|
END;
|
|
GO
|
|
IF OBJECT_ID(N'dbo.Vis_DocumentosVisita', N'U') IS NULL
|
|
BEGIN
|
|
CREATE TABLE dbo.Vis_DocumentosVisita
|
|
(
|
|
CveDocumentoVisita int IDENTITY(1,1) NOT NULL CONSTRAINT PK_Vis_DocumentosVisita PRIMARY KEY,
|
|
CveVisita int NOT NULL REFERENCES dbo.Vis_Visitas(CveVisita),
|
|
CveCuestionarioVisita int NULL REFERENCES dbo.Vis_CuestionariosVisita(CveCuestionarioVisita),
|
|
NombreArchivo varchar(255) NOT NULL,
|
|
NombreFisico varchar(100) NOT NULL,
|
|
TipoContenido varchar(100) NOT NULL,
|
|
TamanoBytes bigint NOT NULL,
|
|
CveUsuario int NULL REFERENCES dbo.Sis_Usuarios(CveUsuario),
|
|
FechaAlta datetime NOT NULL CONSTRAINT DF_Vis_DocumentosVisita_FechaAlta DEFAULT (GETDATE()),
|
|
FechaModificacion datetime NULL
|
|
);
|
|
END;
|
|
GO
|
|
IF OBJECT_ID(N'dbo.Vis_ComentariosVisita', N'U') IS NULL
|
|
BEGIN
|
|
CREATE TABLE dbo.Vis_ComentariosVisita
|
|
(
|
|
CveComentarioVisita int IDENTITY(1,1) NOT NULL CONSTRAINT PK_Vis_ComentariosVisita PRIMARY KEY,
|
|
CveVisita int NOT NULL REFERENCES dbo.Vis_Visitas(CveVisita),
|
|
Comentario varchar(max) NOT NULL,
|
|
CveUsuario int NULL REFERENCES dbo.Sis_Usuarios(CveUsuario),
|
|
FechaAlta datetime NOT NULL CONSTRAINT DF_Vis_ComentariosVisita_FechaAlta DEFAULT (GETDATE()),
|
|
FechaModificacion datetime NULL
|
|
);
|
|
END;
|
|
GO
|
|
IF NOT EXISTS (SELECT 1 FROM dbo.Sis_ConfiguracionVisitas)
|
|
BEGIN
|
|
INSERT INTO dbo.Sis_ConfiguracionVisitas(CveConfiguracionVisitas, DuracionPredeterminadaMinutos)
|
|
VALUES (1, 240);
|
|
END;
|
|
GO
|
|
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE object_id = OBJECT_ID('dbo.Vis_Citas') AND name = 'IX_Vis_Citas_Agenda')
|
|
CREATE INDEX IX_Vis_Citas_Agenda ON dbo.Vis_Citas(CveSupervisor, FechaInicio) INCLUDE (FechaFin, Cancelada);
|
|
GO
|
|
CREATE OR ALTER PROCEDURE dbo.PA_Sis_ConfiguracionVisitasObtener
|
|
@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 CveConfiguracionVisitas, DuracionPredeterminadaMinutos
|
|
FROM dbo.Sis_ConfiguracionVisitas
|
|
WHERE CveConfiguracionVisitas = 1;
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'No fue posible completar la operación. Contacte a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Sis_ConfiguracionVisitasObtener'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
GO
|
|
CREATE OR ALTER PROCEDURE dbo.PA_Sis_ConfiguracionVisitasGuardar
|
|
@DuracionPredeterminadaMinutos 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
|
|
IF @DuracionPredeterminadaMinutos IS NULL OR @DuracionPredeterminadaMinutos <= 0
|
|
BEGIN
|
|
SET @ErrorMostrar = 'La duración debe ser un número entero de minutos mayor que cero.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
UPDATE dbo.Sis_ConfiguracionVisitas
|
|
SET DuracionPredeterminadaMinutos = @DuracionPredeterminadaMinutos,
|
|
FechaModificacion = GETDATE(),
|
|
CveUsuario = @CveUsuarioEjecuta
|
|
WHERE CveConfiguracionVisitas = 1;
|
|
SELECT 1 AS CveConfiguracionVisitas;
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'No fue posible completar la operación. Contacte a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Sis_ConfiguracionVisitasGuardar'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
GO
|
|
CREATE OR ALTER PROCEDURE dbo.PA_Sis_DiaFestivoListar
|
|
@Texto varchar(250) = 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
|
|
SELECT CveDiaFestivo, Fecha, Descripcion, EsActivo
|
|
FROM dbo.Sis_DiasFestivos
|
|
WHERE @Texto IS NULL OR Descripcion LIKE '%' + @Texto + '%'
|
|
ORDER BY Fecha, CveDiaFestivo;
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'No fue posible completar la operación. Contacte a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Sis_DiaFestivoListar'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
GO
|
|
CREATE OR ALTER PROCEDURE dbo.PA_Sis_DiaFestivoObtener
|
|
@CveDiaFestivo 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 CveDiaFestivo, Fecha, Descripcion, EsActivo
|
|
FROM dbo.Sis_DiasFestivos
|
|
WHERE CveDiaFestivo = @CveDiaFestivo;
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'No fue posible completar la operación. Contacte a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Sis_DiaFestivoObtener'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
GO
|
|
CREATE OR ALTER PROCEDURE dbo.PA_Sis_DiaFestivoGuardar
|
|
@CveDiaFestivo int = 0,
|
|
@Fecha date,
|
|
@Descripcion varchar(250),
|
|
@EsActivo bit,
|
|
@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 @Fecha IS NULL OR NULLIF(LTRIM(RTRIM(@Descripcion)), '') IS NULL
|
|
BEGIN
|
|
SET @ErrorMostrar = 'Capture fecha y descripción.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
IF EXISTS (SELECT 1 FROM dbo.Sis_DiasFestivos WHERE Fecha = @Fecha AND CveDiaFestivo <> @CveDiaFestivo)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'La fecha ya está registrada.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
IF @CveDiaFestivo > 0 AND NOT EXISTS (SELECT 1 FROM dbo.Sis_DiasFestivos WHERE CveDiaFestivo = @CveDiaFestivo)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'El registro ya no existe.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
IF @CveDiaFestivo <= 0
|
|
BEGIN
|
|
INSERT INTO dbo.Sis_DiasFestivos
|
|
(Fecha, Descripcion, EsActivo, CveUsuario)
|
|
VALUES
|
|
(@Fecha, @Descripcion, @EsActivo, @CveUsuarioEjecuta);
|
|
SET @CveDiaFestivo = CONVERT(int, SCOPE_IDENTITY());
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
UPDATE dbo.Sis_DiasFestivos
|
|
SET Fecha = @Fecha,
|
|
Descripcion = @Descripcion,
|
|
EsActivo = @EsActivo,
|
|
CveUsuario = @CveUsuarioEjecuta,
|
|
FechaModificacion = GETDATE()
|
|
WHERE CveDiaFestivo = @CveDiaFestivo;
|
|
END;
|
|
SELECT @CveDiaFestivo AS CveDiaFestivo;
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'No fue posible completar la operación. Contacte a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Sis_DiaFestivoGuardar'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
GO
|
|
CREATE OR ALTER PROCEDURE dbo.PA_Sis_DiaFestivoEliminar
|
|
@CveDiaFestivo 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
|
|
DELETE FROM dbo.Sis_DiasFestivos
|
|
WHERE CveDiaFestivo = @CveDiaFestivo;
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'No fue posible completar la operación. Contacte a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Sis_DiaFestivoEliminar'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
GO
|
|
CREATE OR ALTER PROCEDURE dbo.PA_Vis_PlantillaCuestionarioListar
|
|
@Texto varchar(150) = 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
|
|
SELECT CvePlantilla, Nombre, EsPorLote, EsActivo
|
|
FROM dbo.Vis_PlantillasCuestionario
|
|
WHERE @Texto IS NULL OR Nombre LIKE '%' + @Texto + '%'
|
|
ORDER BY Nombre, CvePlantilla;
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'No fue posible completar la operación. Contacte a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Vis_PlantillaCuestionarioListar'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
GO
|
|
CREATE OR ALTER PROCEDURE dbo.PA_Vis_PlantillaCuestionarioObtener
|
|
@CvePlantilla 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 CvePlantilla, Nombre, EsPorLote, EsActivo
|
|
FROM dbo.Vis_PlantillasCuestionario
|
|
WHERE CvePlantilla = @CvePlantilla;
|
|
|
|
SELECT CvePreguntaPlantilla, CvePlantilla, CveTipoPregunta, Pregunta, EsRequerida, EsActivo, Orden
|
|
FROM dbo.Vis_PreguntasPlantilla
|
|
WHERE CvePlantilla = @CvePlantilla
|
|
ORDER BY Orden, CvePreguntaPlantilla;
|
|
|
|
SELECT O.CveOpcionPregunta, O.CvePreguntaPlantilla, O.TextoOpcion, O.Orden
|
|
FROM dbo.Vis_OpcionesPregunta AS O
|
|
INNER JOIN dbo.Vis_PreguntasPlantilla AS P ON P.CvePreguntaPlantilla = O.CvePreguntaPlantilla
|
|
WHERE P.CvePlantilla = @CvePlantilla
|
|
ORDER BY O.Orden, O.CveOpcionPregunta;
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'No fue posible completar la operación. Contacte a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Vis_PlantillaCuestionarioObtener'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
GO
|
|
CREATE OR ALTER PROCEDURE dbo.PA_Vis_PlantillaCuestionarioGuardar
|
|
@CvePlantilla int = 0,
|
|
@Nombre varchar(150),
|
|
@EsPorLote bit,
|
|
@EsActivo bit,
|
|
@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 NULLIF(LTRIM(RTRIM(@Nombre)), '') IS NULL
|
|
BEGIN
|
|
SET @ErrorMostrar = 'Capture el nombre de la plantilla.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
IF @CvePlantilla > 0 AND NOT EXISTS (SELECT 1 FROM dbo.Vis_PlantillasCuestionario WHERE CvePlantilla = @CvePlantilla)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'El registro ya no existe.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
IF @CvePlantilla <= 0
|
|
BEGIN
|
|
INSERT INTO dbo.Vis_PlantillasCuestionario
|
|
(Nombre, EsPorLote, EsActivo, CveUsuario)
|
|
VALUES
|
|
(@Nombre, @EsPorLote, @EsActivo, @CveUsuarioEjecuta);
|
|
SET @CvePlantilla = CONVERT(int, SCOPE_IDENTITY());
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
UPDATE dbo.Vis_PlantillasCuestionario
|
|
SET Nombre = @Nombre,
|
|
EsPorLote = @EsPorLote,
|
|
EsActivo = @EsActivo,
|
|
CveUsuario = @CveUsuarioEjecuta,
|
|
FechaModificacion = GETDATE()
|
|
WHERE CvePlantilla = @CvePlantilla;
|
|
END;
|
|
SELECT @CvePlantilla AS CvePlantilla;
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'No fue posible completar la operación. Contacte a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Vis_PlantillaCuestionarioGuardar'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
GO
|
|
CREATE OR ALTER PROCEDURE dbo.PA_Vis_PlantillaCuestionarioEliminar
|
|
@CvePlantilla 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
|
|
IF EXISTS (SELECT 1 FROM dbo.Vis_CuestionariosVisita WHERE CvePlantilla = @CvePlantilla)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'La plantilla tiene cuestionarios registrados; puede desactivarla para conservar su historial.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
DELETE O
|
|
FROM dbo.Vis_OpcionesPregunta AS O
|
|
INNER JOIN dbo.Vis_PreguntasPlantilla AS P ON P.CvePreguntaPlantilla = O.CvePreguntaPlantilla
|
|
WHERE P.CvePlantilla = @CvePlantilla;
|
|
DELETE FROM dbo.Vis_PreguntasPlantilla
|
|
WHERE CvePlantilla = @CvePlantilla;
|
|
DELETE FROM dbo.Vis_PlantillasCuestionario
|
|
WHERE CvePlantilla = @CvePlantilla;
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'No fue posible completar la operación. Contacte a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Vis_PlantillaCuestionarioEliminar'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
GO
|
|
CREATE OR ALTER PROCEDURE dbo.PA_Vis_PreguntaPlantillaGuardar
|
|
@CvePreguntaPlantilla int = 0,
|
|
@CvePlantilla int,
|
|
@CveTipoPregunta int,
|
|
@Pregunta varchar(500),
|
|
@EsRequerida bit,
|
|
@EsActivo bit,
|
|
@Orden int = 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
|
|
IF NULLIF(LTRIM(RTRIM(@Pregunta)), '') IS NULL
|
|
BEGIN
|
|
SET @ErrorMostrar = 'Capture la pregunta.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
IF NOT EXISTS (SELECT 1 FROM dbo.Tra_TiposPregunta WHERE CveTipoPregunta = @CveTipoPregunta AND EsActivo = 1)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'Seleccione un tipo de pregunta existente y activo.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
IF @CvePreguntaPlantilla > 0 AND NOT EXISTS (SELECT 1 FROM dbo.Vis_PreguntasPlantilla WHERE CvePreguntaPlantilla = @CvePreguntaPlantilla AND CvePlantilla = @CvePlantilla)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'La pregunta no corresponde a la plantilla.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
IF @CvePreguntaPlantilla > 0 AND NOT EXISTS (SELECT 1 FROM dbo.Vis_PreguntasPlantilla WHERE CvePreguntaPlantilla = @CvePreguntaPlantilla)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'El registro ya no existe.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
IF @CvePreguntaPlantilla <= 0
|
|
BEGIN
|
|
SELECT @Orden = ISNULL(MAX(Orden), 0) + 1
|
|
FROM dbo.Vis_PreguntasPlantilla WITH (UPDLOCK, HOLDLOCK)
|
|
WHERE CvePlantilla = @CvePlantilla;
|
|
INSERT INTO dbo.Vis_PreguntasPlantilla
|
|
(CvePlantilla, CveTipoPregunta, Pregunta, EsRequerida, EsActivo, Orden, CveUsuario)
|
|
VALUES
|
|
(@CvePlantilla, @CveTipoPregunta, @Pregunta, @EsRequerida, @EsActivo, @Orden, @CveUsuarioEjecuta);
|
|
SET @CvePreguntaPlantilla = CONVERT(int, SCOPE_IDENTITY());
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
UPDATE dbo.Vis_PreguntasPlantilla
|
|
SET CvePlantilla = @CvePlantilla,
|
|
CveTipoPregunta = @CveTipoPregunta,
|
|
Pregunta = @Pregunta,
|
|
EsRequerida = @EsRequerida,
|
|
EsActivo = @EsActivo,
|
|
CveUsuario = @CveUsuarioEjecuta,
|
|
FechaModificacion = GETDATE()
|
|
WHERE CvePreguntaPlantilla = @CvePreguntaPlantilla;
|
|
END;
|
|
SELECT @CvePreguntaPlantilla AS CvePreguntaPlantilla;
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'No fue posible completar la operación. Contacte a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Vis_PreguntaPlantillaGuardar'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
GO
|
|
CREATE OR ALTER PROCEDURE dbo.PA_Vis_PreguntaPlantillaEliminar
|
|
@CvePreguntaPlantilla 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
|
|
DELETE FROM dbo.Vis_OpcionesPregunta
|
|
WHERE CvePreguntaPlantilla = @CvePreguntaPlantilla;
|
|
DELETE FROM dbo.Vis_PreguntasPlantilla
|
|
WHERE CvePreguntaPlantilla = @CvePreguntaPlantilla;
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'No fue posible completar la operación. Contacte a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Vis_PreguntaPlantillaEliminar'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
GO
|
|
CREATE OR ALTER PROCEDURE dbo.PA_Vis_OpcionPreguntaGuardar
|
|
@CveOpcionPregunta int = 0,
|
|
@CvePreguntaPlantilla int,
|
|
@TextoOpcion varchar(300),
|
|
@Orden int = 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
|
|
IF NULLIF(LTRIM(RTRIM(@TextoOpcion)), '') IS NULL
|
|
BEGIN
|
|
SET @ErrorMostrar = 'Capture la opción.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
IF NOT EXISTS (SELECT 1 FROM dbo.Vis_PreguntasPlantilla WHERE CvePreguntaPlantilla = @CvePreguntaPlantilla AND CveTipoPregunta IN (3,4))
|
|
BEGIN
|
|
SET @ErrorMostrar = 'Seleccione una pregunta de selección.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
IF @CveOpcionPregunta > 0 AND NOT EXISTS (SELECT 1 FROM dbo.Vis_OpcionesPregunta WHERE CveOpcionPregunta = @CveOpcionPregunta AND CvePreguntaPlantilla = @CvePreguntaPlantilla)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'La opción no corresponde a la pregunta.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
IF @CveOpcionPregunta > 0 AND NOT EXISTS (SELECT 1 FROM dbo.Vis_OpcionesPregunta WHERE CveOpcionPregunta = @CveOpcionPregunta)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'El registro ya no existe.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
IF @CveOpcionPregunta <= 0
|
|
BEGIN
|
|
SELECT @Orden = ISNULL(MAX(Orden), 0) + 1
|
|
FROM dbo.Vis_OpcionesPregunta WITH (UPDLOCK, HOLDLOCK)
|
|
WHERE CvePreguntaPlantilla = @CvePreguntaPlantilla;
|
|
INSERT INTO dbo.Vis_OpcionesPregunta
|
|
(CvePreguntaPlantilla, TextoOpcion, Orden, CveUsuario)
|
|
VALUES
|
|
(@CvePreguntaPlantilla, @TextoOpcion, @Orden, @CveUsuarioEjecuta);
|
|
SET @CveOpcionPregunta = CONVERT(int, SCOPE_IDENTITY());
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
UPDATE dbo.Vis_OpcionesPregunta
|
|
SET CvePreguntaPlantilla = @CvePreguntaPlantilla,
|
|
TextoOpcion = @TextoOpcion,
|
|
CveUsuario = @CveUsuarioEjecuta,
|
|
FechaModificacion = GETDATE()
|
|
WHERE CveOpcionPregunta = @CveOpcionPregunta;
|
|
END;
|
|
SELECT @CveOpcionPregunta AS CveOpcionPregunta;
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'No fue posible completar la operación. Contacte a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Vis_OpcionPreguntaGuardar'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
GO
|
|
CREATE OR ALTER PROCEDURE dbo.PA_Vis_OpcionPreguntaEliminar
|
|
@CveOpcionPregunta 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
|
|
DELETE FROM dbo.Vis_OpcionesPregunta
|
|
WHERE CveOpcionPregunta = @CveOpcionPregunta;
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'No fue posible completar la operación. Contacte a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Vis_OpcionPreguntaEliminar'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
GO
|
|
CREATE OR ALTER PROCEDURE dbo.PA_Vis_PreguntaPlantillaActualizarOrden
|
|
@CvePreguntaPlantilla int,
|
|
@CveReferencia int,
|
|
@ColocarDespues bit,
|
|
@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 @Padre int;
|
|
DECLARE @OrdenActual int;
|
|
DECLARE @OrdenReferencia int;
|
|
SELECT @Padre = CvePlantilla, @OrdenActual = Orden
|
|
FROM dbo.Vis_PreguntasPlantilla WITH (UPDLOCK, HOLDLOCK)
|
|
WHERE CvePreguntaPlantilla = @CvePreguntaPlantilla;
|
|
SELECT @OrdenReferencia = Orden
|
|
FROM dbo.Vis_PreguntasPlantilla WITH (UPDLOCK, HOLDLOCK)
|
|
WHERE CvePreguntaPlantilla = @CveReferencia
|
|
AND CvePlantilla = @Padre;
|
|
IF @OrdenActual IS NULL OR @OrdenReferencia IS NULL OR @CveReferencia = @CvePreguntaPlantilla
|
|
BEGIN
|
|
SET @ErrorMostrar = 'Seleccione registros distintos del mismo grupo para reordenar.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
DECLARE @Destino int = @OrdenReferencia + CASE WHEN @ColocarDespues = 1 THEN 1 ELSE 0 END;
|
|
IF @OrdenActual < @Destino
|
|
SET @Destino = @Destino - 1;
|
|
UPDATE dbo.Vis_PreguntasPlantilla
|
|
SET Orden = CASE
|
|
WHEN CvePreguntaPlantilla = @CvePreguntaPlantilla THEN @Destino
|
|
WHEN @OrdenActual < @Destino AND Orden > @OrdenActual AND Orden <= @Destino THEN Orden - 1
|
|
WHEN @OrdenActual > @Destino AND Orden >= @Destino AND Orden < @OrdenActual THEN Orden + 1
|
|
ELSE Orden
|
|
END
|
|
WHERE CvePlantilla = @Padre;
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'No fue posible completar la operación. Contacte a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Vis_PreguntaPlantillaActualizarOrden'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
GO
|
|
CREATE OR ALTER PROCEDURE dbo.PA_Vis_OpcionPreguntaActualizarOrden
|
|
@CveOpcionPregunta int,
|
|
@CveReferencia int,
|
|
@ColocarDespues bit,
|
|
@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 @Padre int;
|
|
DECLARE @OrdenActual int;
|
|
DECLARE @OrdenReferencia int;
|
|
SELECT @Padre = CvePreguntaPlantilla, @OrdenActual = Orden
|
|
FROM dbo.Vis_OpcionesPregunta WITH (UPDLOCK, HOLDLOCK)
|
|
WHERE CveOpcionPregunta = @CveOpcionPregunta;
|
|
SELECT @OrdenReferencia = Orden
|
|
FROM dbo.Vis_OpcionesPregunta WITH (UPDLOCK, HOLDLOCK)
|
|
WHERE CveOpcionPregunta = @CveReferencia
|
|
AND CvePreguntaPlantilla = @Padre;
|
|
IF @OrdenActual IS NULL OR @OrdenReferencia IS NULL OR @CveReferencia = @CveOpcionPregunta
|
|
BEGIN
|
|
SET @ErrorMostrar = 'Seleccione registros distintos del mismo grupo para reordenar.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
DECLARE @Destino int = @OrdenReferencia + CASE WHEN @ColocarDespues = 1 THEN 1 ELSE 0 END;
|
|
IF @OrdenActual < @Destino
|
|
SET @Destino = @Destino - 1;
|
|
UPDATE dbo.Vis_OpcionesPregunta
|
|
SET Orden = CASE
|
|
WHEN CveOpcionPregunta = @CveOpcionPregunta THEN @Destino
|
|
WHEN @OrdenActual < @Destino AND Orden > @OrdenActual AND Orden <= @Destino THEN Orden - 1
|
|
WHEN @OrdenActual > @Destino AND Orden >= @Destino AND Orden < @OrdenActual THEN Orden + 1
|
|
ELSE Orden
|
|
END
|
|
WHERE CvePreguntaPlantilla = @Padre;
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'No fue posible completar la operación. Contacte a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Vis_OpcionPreguntaActualizarOrden'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
GO
|
|
CREATE OR ALTER PROCEDURE dbo.PA_Vis_CitaListar
|
|
@Texto varchar(250) = NULL,
|
|
@Desde date = NULL,
|
|
@Hasta date = 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
|
|
SELECT C.CveCita, V.CveVisita, F.CveCliente, F.CveFraccionamiento,
|
|
C.CveFraccionamientoEtapa, F.Fraccionamiento, E.Etapa,
|
|
C.CveSupervisor, U.NombreUsuario AS Supervisor, C.FechaInicio,
|
|
C.FechaFin, C.DuracionMinutos, C.Cancelada, V.SeRealizo, C.Comentarios
|
|
FROM dbo.Vis_Citas AS C
|
|
INNER JOIN dbo.FraccionamientosEtapas AS E ON E.CveFraccionamientoEtapa = C.CveFraccionamientoEtapa
|
|
INNER JOIN dbo.Fraccionamientos AS F ON F.CveFraccionamiento = E.CveFraccionamiento
|
|
INNER JOIN dbo.Sis_Usuarios AS U ON U.CveUsuario = C.CveSupervisor
|
|
LEFT JOIN dbo.Vis_Visitas AS V ON V.CveCita = C.CveCita
|
|
WHERE (@Texto IS NULL OR F.Fraccionamiento LIKE '%' + @Texto + '%'
|
|
OR E.Etapa LIKE '%' + @Texto + '%' OR U.NombreUsuario LIKE '%' + @Texto + '%')
|
|
AND (@Desde IS NULL OR C.FechaInicio >= @Desde)
|
|
AND (@Hasta IS NULL OR CONVERT(date, C.FechaInicio) <= @Hasta)
|
|
ORDER BY C.FechaInicio DESC, C.CveCita DESC;
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'No fue posible completar la operación. Contacte a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Vis_CitaListar'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
GO
|
|
CREATE OR ALTER PROCEDURE dbo.PA_Vis_CitaObtener
|
|
@CveCita 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 C.CveCita, V.CveVisita, F.CveCliente, F.CveFraccionamiento,
|
|
C.CveFraccionamientoEtapa, F.Fraccionamiento, E.Etapa,
|
|
C.CveSupervisor, U.NombreUsuario AS Supervisor, C.FechaInicio,
|
|
C.FechaFin, C.DuracionMinutos, C.Cancelada, V.SeRealizo, C.Comentarios
|
|
FROM dbo.Vis_Citas AS C
|
|
INNER JOIN dbo.FraccionamientosEtapas AS E ON E.CveFraccionamientoEtapa = C.CveFraccionamientoEtapa
|
|
INNER JOIN dbo.Fraccionamientos AS F ON F.CveFraccionamiento = E.CveFraccionamiento
|
|
INNER JOIN dbo.Sis_Usuarios AS U ON U.CveUsuario = C.CveSupervisor
|
|
LEFT JOIN dbo.Vis_Visitas AS V ON V.CveCita = C.CveCita
|
|
WHERE C.CveCita = @CveCita;
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'No fue posible completar la operación. Contacte a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Vis_CitaObtener'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
GO
|
|
CREATE OR ALTER PROCEDURE dbo.PA_Vis_CitaObtenerDisponibilidad
|
|
@FechaDesde datetime2(0),
|
|
@DuracionMinutos int,
|
|
@CveSupervisor int = NULL,
|
|
@CveCitaExcluir int = 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
|
|
IF @FechaDesde IS NULL OR @DuracionMinutos IS NULL OR @DuracionMinutos <= 0
|
|
BEGIN
|
|
SET @ErrorMostrar = 'Capture la fecha inicial y una duración positiva en minutos.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
DECLARE @Horarios TABLE
|
|
(
|
|
CveSupervisor int,
|
|
Supervisor varchar(100),
|
|
DiaSemana int,
|
|
InicioMinutos int,
|
|
FinMinutos int
|
|
);
|
|
;WITH Originales AS
|
|
(
|
|
SELECT U.CveUsuario AS CveSupervisor, U.NombreUsuario AS Supervisor,
|
|
(H.DiaSemana - 1) * 1440 + DATEDIFF(MINUTE, CAST('00:00' AS time), H.HoraInicio) AS Inicio,
|
|
(H.DiaSemana - 1) * 1440 + DATEDIFF(MINUTE, CAST('00:00' AS time), H.HoraFin)
|
|
+ CASE WHEN H.HoraFin < H.HoraInicio THEN 1440 ELSE 0 END AS Fin
|
|
FROM dbo.Sis_Usuarios AS U
|
|
INNER JOIN dbo.Sis_Turnos AS T ON T.CveTurno = U.CveTurno
|
|
INNER JOIN dbo.Sis_TurnosHorarios AS H ON H.CveTurno = T.CveTurno
|
|
WHERE U.Activo = 1 AND U.EsSupervisor = 1 AND T.EsActivo = 1
|
|
AND (@CveSupervisor IS NULL OR U.CveUsuario = @CveSupervisor)
|
|
),
|
|
Copias AS
|
|
(
|
|
SELECT O.CveSupervisor, O.Supervisor, O.Inicio + D.Minutos AS Inicio, O.Fin + D.Minutos AS Fin
|
|
FROM Originales AS O
|
|
CROSS JOIN (VALUES (-10080), (0), (10080)) AS D(Minutos)
|
|
),
|
|
Limites AS
|
|
(
|
|
SELECT CveSupervisor, Supervisor, Inicio, Fin,
|
|
MAX(Fin) OVER (PARTITION BY CveSupervisor ORDER BY Inicio, Fin
|
|
ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS FinAnterior
|
|
FROM Copias
|
|
),
|
|
Grupos AS
|
|
(
|
|
SELECT CveSupervisor, Supervisor, Inicio, Fin,
|
|
SUM(CASE WHEN FinAnterior IS NULL OR Inicio > FinAnterior THEN 1 ELSE 0 END)
|
|
OVER (PARTITION BY CveSupervisor ORDER BY Inicio, Fin ROWS UNBOUNDED PRECEDING) AS Grupo
|
|
FROM Limites
|
|
),
|
|
Tramos AS
|
|
(
|
|
SELECT CveSupervisor, Supervisor, MIN(Inicio) AS Inicio, MAX(Fin) AS Fin
|
|
FROM Grupos
|
|
GROUP BY CveSupervisor, Supervisor, Grupo
|
|
)
|
|
INSERT INTO @Horarios(CveSupervisor, Supervisor, DiaSemana, InicioMinutos, FinMinutos)
|
|
SELECT T.CveSupervisor, T.Supervisor,
|
|
CASE WHEN T.Fin - T.Inicio >= 10080 THEN D.Dia + 1 ELSE T.Inicio / 1440 + 1 END,
|
|
CASE WHEN T.Fin - T.Inicio >= 10080 THEN 0 ELSE T.Inicio % 1440 END,
|
|
CASE WHEN T.Fin - T.Inicio >= 10080 THEN
|
|
CASE WHEN @DuracionMinutos > 2147482207 THEN 2147483647 ELSE @DuracionMinutos + 1440 END
|
|
ELSE T.Inicio % 1440 + T.Fin - T.Inicio END
|
|
FROM Tramos AS T
|
|
CROSS JOIN (VALUES (0), (1), (2), (3), (4), (5), (6)) AS D(Dia)
|
|
WHERE (T.Inicio >= 0 AND T.Inicio < 10080 AND T.Fin - T.Inicio < 10080 AND D.Dia = 0)
|
|
OR T.Fin - T.Inicio >= 10080;
|
|
DECLARE @Opciones TABLE
|
|
(
|
|
CveSupervisor int,
|
|
Supervisor varchar(100),
|
|
FechaInicio datetime2(0),
|
|
FechaFin datetime2(0)
|
|
);
|
|
-- Se unen intervalos contiguos, incluyendo medianoche y cambio de semana.
|
|
IF EXISTS (SELECT 1 FROM @Horarios WHERE FinMinutos - InicioMinutos >= @DuracionMinutos)
|
|
BEGIN
|
|
-- Un tramo continuo puede haber comenzado hasta una semana antes.
|
|
DECLARE @Dia date = DATEADD(DAY, -7, CONVERT(date, @FechaDesde));
|
|
DECLARE @UltimoBloqueo date = CONVERT(date, @FechaDesde);
|
|
SELECT @UltimoBloqueo = MAX(Fecha)
|
|
FROM
|
|
(
|
|
SELECT @UltimoBloqueo AS Fecha
|
|
UNION ALL
|
|
SELECT CONVERT(date, C.FechaFin)
|
|
FROM dbo.Vis_Citas AS C
|
|
WHERE C.Cancelada = 0 AND C.CveCita <> @CveCitaExcluir
|
|
AND EXISTS (SELECT 1 FROM @Horarios AS H WHERE H.CveSupervisor = C.CveSupervisor)
|
|
UNION ALL
|
|
SELECT Fecha
|
|
FROM dbo.Sis_DiasFestivos
|
|
WHERE EsActivo = 1
|
|
) AS Bloqueos;
|
|
DECLARE @Limite date = DATEADD(DAY, 8, @UltimoBloqueo);
|
|
DECLARE @MejorInicio datetime2(0);
|
|
WHILE @Dia <= @Limite AND (@MejorInicio IS NULL OR CONVERT(datetime2(0), @Dia) <= @MejorInicio)
|
|
BEGIN
|
|
;WITH Intervalos AS
|
|
(
|
|
SELECT CveSupervisor, Supervisor,
|
|
DATEADD(MINUTE, InicioMinutos, CONVERT(datetime2(0), @Dia)) AS Inicio,
|
|
DATEADD(MINUTE, FinMinutos, CONVERT(datetime2(0), @Dia)) AS Fin
|
|
FROM @Horarios
|
|
WHERE DiaSemana = ((DATEDIFF(DAY, '19000101', @Dia) % 7 + 7) % 7) + 1
|
|
AND FinMinutos - InicioMinutos >= @DuracionMinutos
|
|
),
|
|
Candidatos AS
|
|
(
|
|
SELECT I.CveSupervisor, I.Supervisor, I.Fin,
|
|
CASE WHEN I.Inicio < @FechaDesde THEN @FechaDesde ELSE I.Inicio END AS Inicio
|
|
FROM Intervalos AS I
|
|
UNION
|
|
SELECT I.CveSupervisor, I.Supervisor, I.Fin, C.FechaFin
|
|
FROM Intervalos AS I
|
|
INNER JOIN dbo.Vis_Citas AS C ON C.CveSupervisor = I.CveSupervisor
|
|
AND C.FechaFin >= I.Inicio AND C.FechaFin < I.Fin
|
|
AND C.Cancelada = 0 AND C.CveCita <> @CveCitaExcluir
|
|
UNION
|
|
SELECT I.CveSupervisor, I.Supervisor, I.Fin, DATEADD(DAY, 1, CONVERT(datetime2(0), F.Fecha))
|
|
FROM Intervalos AS I
|
|
INNER JOIN dbo.Sis_DiasFestivos AS F ON F.EsActivo = 1
|
|
AND DATEADD(DAY, 1, CONVERT(datetime2(0), F.Fecha)) >= I.Inicio
|
|
AND DATEADD(DAY, 1, CONVERT(datetime2(0), F.Fecha)) < I.Fin
|
|
)
|
|
INSERT INTO @Opciones(CveSupervisor, Supervisor, FechaInicio, FechaFin)
|
|
SELECT C.CveSupervisor, C.Supervisor, C.Inicio, DATEADD(MINUTE, @DuracionMinutos, C.Inicio)
|
|
FROM Candidatos AS C
|
|
WHERE C.Inicio >= @FechaDesde
|
|
AND DATEADD(MINUTE, @DuracionMinutos, C.Inicio) <= C.Fin
|
|
AND NOT EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM dbo.Vis_Citas AS O
|
|
WHERE O.CveSupervisor = C.CveSupervisor
|
|
AND O.Cancelada = 0 AND O.CveCita <> @CveCitaExcluir
|
|
AND O.FechaInicio < DATEADD(MINUTE, @DuracionMinutos, C.Inicio)
|
|
AND O.FechaFin > C.Inicio
|
|
)
|
|
AND NOT EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM dbo.Sis_DiasFestivos AS F
|
|
WHERE F.EsActivo = 1
|
|
AND CONVERT(datetime2(0), F.Fecha) < DATEADD(MINUTE, @DuracionMinutos, C.Inicio)
|
|
AND DATEADD(DAY, 1, CONVERT(datetime2(0), F.Fecha)) > C.Inicio
|
|
);
|
|
SELECT @MejorInicio = MIN(FechaInicio)
|
|
FROM @Opciones;
|
|
SET @Dia = DATEADD(DAY, 1, @Dia);
|
|
END;
|
|
END;
|
|
SELECT TOP (1) CveSupervisor, Supervisor, FechaInicio, FechaFin
|
|
FROM @Opciones
|
|
ORDER BY FechaInicio, CveSupervisor;
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'No fue posible completar la operación. Contacte a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Vis_CitaObtenerDisponibilidad'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
GO
|
|
CREATE OR ALTER PROCEDURE dbo.PA_Vis_CitaGuardar
|
|
@CveCita int = 0,
|
|
@CveFraccionamientoEtapa int,
|
|
@CveSupervisor int,
|
|
@FechaInicio datetime2(0),
|
|
@DuracionMinutos int,
|
|
@Comentarios 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
|
|
IF @@TRANCOUNT = 0
|
|
BEGIN
|
|
SET @ErrorMostrar = 'La programación requiere una transacción de aplicación.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
DECLARE @Bloqueo int;
|
|
EXEC @Bloqueo = sys.sp_getapplock
|
|
@Resource = 'Vis_Citas_Agenda',
|
|
@LockMode = 'Exclusive',
|
|
@LockOwner = 'Transaction',
|
|
@LockTimeout = 10000;
|
|
IF @Bloqueo < 0
|
|
BEGIN
|
|
SET @ErrorMostrar = 'La agenda está siendo actualizada. Intente nuevamente.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
IF @CveCita > 0 AND NOT EXISTS (SELECT 1 FROM dbo.Vis_Citas WHERE CveCita = @CveCita)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'La cita ya no existe.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
IF EXISTS (SELECT 1 FROM dbo.Vis_Citas WHERE CveCita = @CveCita AND CveFraccionamientoEtapa <> @CveFraccionamientoEtapa)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'La etapa de una cita existente se conserva para proteger su historial.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
DECLARE @Disponible TABLE
|
|
(
|
|
CveSupervisor int,
|
|
Supervisor varchar(100),
|
|
FechaInicio datetime2(0),
|
|
FechaFin datetime2(0)
|
|
);
|
|
INSERT INTO @Disponible
|
|
EXEC dbo.PA_Vis_CitaObtenerDisponibilidad
|
|
@FechaDesde = @FechaInicio,
|
|
@DuracionMinutos = @DuracionMinutos,
|
|
@CveSupervisor = @CveSupervisor,
|
|
@CveCitaExcluir = @CveCita,
|
|
@CveUsuarioEjecuta = @CveUsuarioEjecuta,
|
|
@ErrorMostrar = @ErrorMostrar OUTPUT,
|
|
@ErrorTipo = @ErrorTipo OUTPUT,
|
|
@Return = @Return OUTPUT;
|
|
IF @Return = 0
|
|
RETURN;
|
|
SET @Return = 0;
|
|
IF NOT EXISTS (SELECT 1 FROM @Disponible WHERE FechaInicio = @FechaInicio AND CveSupervisor = @CveSupervisor)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'El horario ya no está disponible o no cabe en el turno. Consulte otra opción.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
IF @CveCita = 0
|
|
BEGIN
|
|
INSERT INTO dbo.Vis_Citas
|
|
(CveFraccionamientoEtapa, CveSupervisor, FechaInicio, DuracionMinutos, FechaFin, Comentarios, CveUsuario)
|
|
VALUES
|
|
(@CveFraccionamientoEtapa, @CveSupervisor, @FechaInicio, @DuracionMinutos,
|
|
DATEADD(MINUTE, @DuracionMinutos, @FechaInicio), @Comentarios, @CveUsuarioEjecuta);
|
|
SET @CveCita = CONVERT(int, SCOPE_IDENTITY());
|
|
INSERT INTO dbo.Vis_Visitas(CveCita, CveUsuario)
|
|
VALUES (@CveCita, @CveUsuarioEjecuta);
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
UPDATE dbo.Vis_Citas
|
|
SET CveSupervisor = @CveSupervisor,
|
|
FechaInicio = @FechaInicio,
|
|
DuracionMinutos = @DuracionMinutos,
|
|
FechaFin = DATEADD(MINUTE, @DuracionMinutos, @FechaInicio),
|
|
Comentarios = @Comentarios,
|
|
Cancelada = 0,
|
|
CveUsuario = @CveUsuarioEjecuta,
|
|
FechaModificacion = GETDATE()
|
|
WHERE CveCita = @CveCita;
|
|
END;
|
|
SELECT @CveCita AS CveCita;
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'No fue posible completar la operación. Contacte a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Vis_CitaGuardar'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
GO
|
|
CREATE OR ALTER PROCEDURE dbo.PA_Vis_CitaCancelar
|
|
@CveCita 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
|
|
UPDATE dbo.Vis_Citas
|
|
SET Cancelada = 1,
|
|
CveUsuario = @CveUsuarioEjecuta,
|
|
FechaModificacion = GETDATE()
|
|
WHERE CveCita = @CveCita;
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'No fue posible completar la operación. Contacte a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Vis_CitaCancelar'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
GO
|
|
CREATE OR ALTER PROCEDURE dbo.PA_Vis_VisitaObtener
|
|
@CveVisita 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 V.CveVisita, V.CveCita, F.CveCliente, F.CveFraccionamiento, E.CveFraccionamientoEtapa,
|
|
F.Fraccionamiento, E.Etapa, U.NombreUsuario AS Supervisor, C.FechaInicio,
|
|
V.SeRealizo, V.FechaReal, V.Observaciones
|
|
FROM dbo.Vis_Visitas AS V
|
|
INNER JOIN dbo.Vis_Citas AS C ON C.CveCita = V.CveCita
|
|
INNER JOIN dbo.FraccionamientosEtapas AS E ON E.CveFraccionamientoEtapa = C.CveFraccionamientoEtapa
|
|
INNER JOIN dbo.Fraccionamientos AS F ON F.CveFraccionamiento = E.CveFraccionamiento
|
|
INNER JOIN dbo.Sis_Usuarios AS U ON U.CveUsuario = C.CveSupervisor
|
|
WHERE V.CveVisita = @CveVisita;
|
|
|
|
SELECT Q.*, L.Numero AS Lote
|
|
FROM dbo.Vis_CuestionariosVisita AS Q
|
|
LEFT JOIN dbo.FraccionamientosLotes AS L ON L.CveFraccionamientoLote = Q.CveFraccionamientoLote
|
|
WHERE Q.CveVisita = @CveVisita
|
|
ORDER BY Q.CveCuestionarioVisita;
|
|
|
|
SELECT CveDocumentoVisita, CveVisita, CveCuestionarioVisita, NombreArchivo, TipoContenido, TamanoBytes
|
|
FROM dbo.Vis_DocumentosVisita
|
|
WHERE CveVisita = @CveVisita
|
|
ORDER BY CveDocumentoVisita;
|
|
|
|
SELECT C.CveComentarioVisita, C.CveVisita, C.Comentario, C.FechaAlta, U.NombreUsuario AS Usuario
|
|
FROM dbo.Vis_ComentariosVisita AS C
|
|
LEFT JOIN dbo.Sis_Usuarios AS U ON U.CveUsuario = C.CveUsuario
|
|
WHERE C.CveVisita = @CveVisita
|
|
ORDER BY C.FechaAlta, C.CveComentarioVisita;
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'No fue posible completar la operación. Contacte a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Vis_VisitaObtener'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
GO
|
|
CREATE OR ALTER PROCEDURE dbo.PA_Vis_VisitaGuardar
|
|
@CveVisita int,
|
|
@SeRealizo bit = NULL,
|
|
@FechaReal datetime2(0) = NULL,
|
|
@Observaciones varchar(max) = 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
|
|
IF @SeRealizo = 1 AND @FechaReal IS NULL
|
|
BEGIN
|
|
SET @ErrorMostrar = 'Indique cuándo se realizó la visita.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
IF @SeRealizo = 1 AND EXISTS (SELECT 1 FROM dbo.Vis_Visitas AS V INNER JOIN dbo.Vis_Citas AS C ON C.CveCita = V.CveCita WHERE V.CveVisita = @CveVisita AND C.Cancelada = 1)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'La cita está cancelada.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
UPDATE dbo.Vis_Visitas
|
|
SET SeRealizo = @SeRealizo,
|
|
FechaReal = CASE WHEN @SeRealizo = 1 THEN @FechaReal ELSE NULL END,
|
|
Observaciones = @Observaciones,
|
|
CveUsuario = @CveUsuarioEjecuta,
|
|
FechaModificacion = GETDATE()
|
|
WHERE CveVisita = @CveVisita;
|
|
SELECT @CveVisita AS CveVisita;
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'No fue posible completar la operación. Contacte a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Vis_VisitaGuardar'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
GO
|
|
CREATE OR ALTER PROCEDURE dbo.PA_Vis_CuestionarioVisitaObtener
|
|
@CveCuestionarioVisita 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 Q.*, L.Numero AS Lote
|
|
FROM dbo.Vis_CuestionariosVisita AS Q
|
|
LEFT JOIN dbo.FraccionamientosLotes AS L ON L.CveFraccionamientoLote = Q.CveFraccionamientoLote
|
|
WHERE Q.CveCuestionarioVisita = @CveCuestionarioVisita;
|
|
|
|
SELECT CveRespuestaVisita, CveCuestionarioVisita, CvePreguntaPlantilla, Valor
|
|
FROM dbo.Vis_RespuestasVisita
|
|
WHERE CveCuestionarioVisita = @CveCuestionarioVisita;
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'No fue posible completar la operación. Contacte a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Vis_CuestionarioVisitaObtener'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
GO
|
|
CREATE OR ALTER PROCEDURE dbo.PA_Vis_CuestionarioVisitaGuardar
|
|
@CveCuestionarioVisita int = 0,
|
|
@CveVisita int,
|
|
@CvePlantilla int,
|
|
@CveFraccionamientoLote int = NULL,
|
|
@PasoSupervision bit = NULL,
|
|
@AguaPotableTerminada bit = NULL,
|
|
@DrenajeTerminado bit = NULL,
|
|
@Observaciones varchar(max) = NULL,
|
|
@Finalizado bit = 0,
|
|
@RespuestasJson nvarchar(max),
|
|
@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 @Definicion nvarchar(max);
|
|
DECLARE @NombrePlantilla varchar(150);
|
|
DECLARE @EsPorLote bit;
|
|
IF @CveCuestionarioVisita > 0
|
|
BEGIN
|
|
SELECT @Definicion = DefinicionPlantilla, @NombrePlantilla = NombrePlantilla,
|
|
@EsPorLote = CASE WHEN CveFraccionamientoLote IS NULL THEN 0 ELSE 1 END
|
|
FROM dbo.Vis_CuestionariosVisita WITH (UPDLOCK, HOLDLOCK)
|
|
WHERE CveCuestionarioVisita = @CveCuestionarioVisita
|
|
AND CveVisita = @CveVisita
|
|
AND CvePlantilla = @CvePlantilla
|
|
AND ISNULL(CveFraccionamientoLote, 0) = ISNULL(@CveFraccionamientoLote, 0);
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SELECT @NombrePlantilla = Nombre, @EsPorLote = EsPorLote
|
|
FROM dbo.Vis_PlantillasCuestionario
|
|
WHERE CvePlantilla = @CvePlantilla AND EsActivo = 1;
|
|
SET @Definicion =
|
|
(
|
|
SELECT P.CvePlantilla, P.Nombre, P.EsPorLote, P.EsActivo,
|
|
JSON_QUERY
|
|
(
|
|
(
|
|
SELECT Q.CvePreguntaPlantilla, Q.CvePlantilla, Q.CveTipoPregunta, Q.Pregunta,
|
|
Q.EsRequerida, Q.EsActivo, Q.Orden,
|
|
JSON_QUERY
|
|
(
|
|
(
|
|
SELECT O.CveOpcionPregunta, O.CvePreguntaPlantilla, O.TextoOpcion, O.Orden
|
|
FROM dbo.Vis_OpcionesPregunta AS O
|
|
WHERE O.CvePreguntaPlantilla = Q.CvePreguntaPlantilla
|
|
ORDER BY O.Orden, O.CveOpcionPregunta
|
|
FOR JSON PATH
|
|
)
|
|
) AS Opciones
|
|
FROM dbo.Vis_PreguntasPlantilla AS Q
|
|
WHERE Q.CvePlantilla = P.CvePlantilla AND Q.EsActivo = 1
|
|
ORDER BY Q.Orden, Q.CvePreguntaPlantilla
|
|
FOR JSON PATH
|
|
)
|
|
) AS Preguntas
|
|
FROM dbo.Vis_PlantillasCuestionario AS P
|
|
WHERE P.CvePlantilla = @CvePlantilla AND P.EsActivo = 1
|
|
FOR JSON PATH, WITHOUT_ARRAY_WRAPPER
|
|
);
|
|
END;
|
|
IF @NombrePlantilla IS NULL OR ISJSON(@Definicion) <> 1
|
|
BEGIN
|
|
SET @ErrorMostrar = 'No se encontró la plantilla o el cuestionario solicitado.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
IF (@EsPorLote = 1 AND @CveFraccionamientoLote IS NULL) OR (@EsPorLote = 0 AND @CveFraccionamientoLote IS NOT NULL)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'Seleccione el alcance correcto: etapa o lote.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
IF @CveFraccionamientoLote IS NOT NULL AND NOT EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM dbo.FraccionamientosLotes AS L
|
|
INNER JOIN dbo.Vis_Citas AS C ON C.CveFraccionamientoEtapa = L.CveFraccionamientoEtapa
|
|
INNER JOIN dbo.Vis_Visitas AS V ON V.CveCita = C.CveCita
|
|
WHERE V.CveVisita = @CveVisita AND L.CveFraccionamientoLote = @CveFraccionamientoLote
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'El lote no pertenece a la etapa de esta visita.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
IF @Finalizado = 1 AND (@PasoSupervision IS NULL OR @AguaPotableTerminada IS NULL OR @DrenajeTerminado IS NULL OR NULLIF(LTRIM(RTRIM(@Observaciones)), '') IS NULL)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'Conteste las tres conclusiones obligatorias y capture observaciones.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
IF @RespuestasJson IS NULL OR ISJSON(@RespuestasJson) <> 1
|
|
BEGIN
|
|
SET @ErrorMostrar = 'Las respuestas no tienen un formato válido.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
DECLARE @Respuestas TABLE (CvePreguntaPlantilla int, Valor nvarchar(max));
|
|
INSERT INTO @Respuestas(CvePreguntaPlantilla, Valor)
|
|
SELECT CvePreguntaPlantilla, Valor
|
|
FROM OPENJSON(@RespuestasJson)
|
|
WITH (CvePreguntaPlantilla int, Valor nvarchar(max));
|
|
IF EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM @Respuestas AS R
|
|
WHERE NOT EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM OPENJSON(@Definicion, '$.Preguntas')
|
|
WITH (CvePreguntaPlantilla int) AS P
|
|
WHERE P.CvePreguntaPlantilla = R.CvePreguntaPlantilla
|
|
)
|
|
) OR EXISTS (SELECT CvePreguntaPlantilla FROM @Respuestas GROUP BY CvePreguntaPlantilla HAVING COUNT(*) > 1)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'Las respuestas no corresponden al cuestionario.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
IF @Finalizado = 1 AND EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM OPENJSON(@Definicion, '$.Preguntas')
|
|
WITH (CvePreguntaPlantilla int, EsRequerida bit) AS P
|
|
WHERE P.EsRequerida = 1 AND NOT EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM @Respuestas AS R
|
|
WHERE R.CvePreguntaPlantilla = P.CvePreguntaPlantilla
|
|
AND NULLIF(LTRIM(RTRIM(R.Valor)), '') IS NOT NULL
|
|
AND R.Valor <> '[]'
|
|
)
|
|
)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'Conteste las preguntas obligatorias antes de finalizar.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
IF @CveCuestionarioVisita = 0
|
|
BEGIN
|
|
INSERT INTO dbo.Vis_CuestionariosVisita
|
|
(CveVisita, CvePlantilla, CveFraccionamientoLote, NombrePlantilla, DefinicionPlantilla,
|
|
PasoSupervision, AguaPotableTerminada, DrenajeTerminado, Observaciones, Finalizado, CveUsuario)
|
|
VALUES
|
|
(@CveVisita, @CvePlantilla, @CveFraccionamientoLote, @NombrePlantilla, @Definicion,
|
|
@PasoSupervision, @AguaPotableTerminada, @DrenajeTerminado, @Observaciones, @Finalizado, @CveUsuarioEjecuta);
|
|
SET @CveCuestionarioVisita = CONVERT(int, SCOPE_IDENTITY());
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
UPDATE dbo.Vis_CuestionariosVisita
|
|
SET PasoSupervision = @PasoSupervision,
|
|
AguaPotableTerminada = @AguaPotableTerminada,
|
|
DrenajeTerminado = @DrenajeTerminado,
|
|
Observaciones = @Observaciones,
|
|
Finalizado = @Finalizado,
|
|
CveUsuario = @CveUsuarioEjecuta,
|
|
FechaModificacion = GETDATE()
|
|
WHERE CveCuestionarioVisita = @CveCuestionarioVisita;
|
|
END;
|
|
DELETE A
|
|
FROM dbo.Vis_RespuestasVisita AS A
|
|
WHERE A.CveCuestionarioVisita = @CveCuestionarioVisita
|
|
AND NOT EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM @Respuestas AS R
|
|
WHERE R.CvePreguntaPlantilla = A.CvePreguntaPlantilla
|
|
);
|
|
UPDATE A
|
|
SET Valor = R.Valor,
|
|
CveUsuario = @CveUsuarioEjecuta,
|
|
FechaModificacion = GETDATE()
|
|
FROM dbo.Vis_RespuestasVisita AS A
|
|
INNER JOIN @Respuestas AS R ON R.CvePreguntaPlantilla = A.CvePreguntaPlantilla
|
|
WHERE A.CveCuestionarioVisita = @CveCuestionarioVisita;
|
|
INSERT INTO dbo.Vis_RespuestasVisita(CveCuestionarioVisita, CvePreguntaPlantilla, Valor, CveUsuario)
|
|
SELECT @CveCuestionarioVisita, R.CvePreguntaPlantilla, R.Valor, @CveUsuarioEjecuta
|
|
FROM @Respuestas AS R
|
|
WHERE NOT EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM dbo.Vis_RespuestasVisita AS A
|
|
WHERE A.CveCuestionarioVisita = @CveCuestionarioVisita
|
|
AND A.CvePreguntaPlantilla = R.CvePreguntaPlantilla
|
|
);
|
|
SELECT @CveCuestionarioVisita AS CveCuestionarioVisita;
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'No fue posible completar la operación. Contacte a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Vis_CuestionarioVisitaGuardar'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
GO
|
|
CREATE OR ALTER PROCEDURE dbo.PA_Vis_CuestionarioVisitaEliminar
|
|
@CveCuestionarioVisita 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
|
|
IF EXISTS (SELECT 1 FROM dbo.Vis_DocumentosVisita WHERE CveCuestionarioVisita = @CveCuestionarioVisita)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'El cuestionario tiene documentos asociados. Retírelos antes de eliminarlo.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
DELETE FROM dbo.Vis_RespuestasVisita
|
|
WHERE CveCuestionarioVisita = @CveCuestionarioVisita;
|
|
DELETE FROM dbo.Vis_CuestionariosVisita
|
|
WHERE CveCuestionarioVisita = @CveCuestionarioVisita;
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'No fue posible completar la operación. Contacte a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Vis_CuestionarioVisitaEliminar'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
GO
|
|
CREATE OR ALTER PROCEDURE dbo.PA_Vis_DocumentoVisitaObtener
|
|
@CveDocumentoVisita 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 D.*, F.CveCliente
|
|
FROM dbo.Vis_DocumentosVisita AS D
|
|
INNER JOIN dbo.Vis_Visitas AS V ON V.CveVisita = D.CveVisita
|
|
INNER JOIN dbo.Vis_Citas AS C ON C.CveCita = V.CveCita
|
|
INNER JOIN dbo.FraccionamientosEtapas AS E ON E.CveFraccionamientoEtapa = C.CveFraccionamientoEtapa
|
|
INNER JOIN dbo.Fraccionamientos AS F ON F.CveFraccionamiento = E.CveFraccionamiento
|
|
WHERE D.CveDocumentoVisita = @CveDocumentoVisita;
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'No fue posible completar la operación. Contacte a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Vis_DocumentoVisitaObtener'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
GO
|
|
CREATE OR ALTER PROCEDURE dbo.PA_Vis_DocumentoVisitaGuardar
|
|
@CveVisita int,
|
|
@CveCuestionarioVisita int = NULL,
|
|
@NombreArchivo varchar(255),
|
|
@NombreFisico varchar(100),
|
|
@TipoContenido varchar(100),
|
|
@TamanoBytes bigint,
|
|
@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 @CveCuestionarioVisita IS NOT NULL AND NOT EXISTS (SELECT 1 FROM dbo.Vis_CuestionariosVisita WHERE CveCuestionarioVisita = @CveCuestionarioVisita AND CveVisita = @CveVisita)
|
|
BEGIN
|
|
SET @ErrorMostrar = 'El cuestionario no corresponde a esta visita.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
INSERT INTO dbo.Vis_DocumentosVisita
|
|
(CveVisita, CveCuestionarioVisita, NombreArchivo, NombreFisico, TipoContenido, TamanoBytes, CveUsuario)
|
|
VALUES
|
|
(@CveVisita, @CveCuestionarioVisita, @NombreArchivo, @NombreFisico, @TipoContenido, @TamanoBytes, @CveUsuarioEjecuta);
|
|
SELECT CONVERT(int, SCOPE_IDENTITY()) AS CveDocumentoVisita;
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'No fue posible completar la operación. Contacte a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Vis_DocumentoVisitaGuardar'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
GO
|
|
CREATE OR ALTER PROCEDURE dbo.PA_Vis_DocumentoVisitaEliminar
|
|
@CveDocumentoVisita 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
|
|
DELETE FROM dbo.Vis_DocumentosVisita
|
|
WHERE CveDocumentoVisita = @CveDocumentoVisita;
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'No fue posible completar la operación. Contacte a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Vis_DocumentoVisitaEliminar'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
GO
|
|
CREATE OR ALTER PROCEDURE dbo.PA_Vis_ComentarioVisitaGuardar
|
|
@CveComentarioVisita int = 0,
|
|
@CveVisita int,
|
|
@Comentario varchar(max),
|
|
@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 NULLIF(LTRIM(RTRIM(@Comentario)), '') IS NULL
|
|
BEGIN
|
|
SET @ErrorMostrar = 'Capture el comentario.';
|
|
SET @ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
IF @CveComentarioVisita = 0
|
|
BEGIN
|
|
INSERT INTO dbo.Vis_ComentariosVisita(CveVisita, Comentario, CveUsuario)
|
|
VALUES (@CveVisita, @Comentario, @CveUsuarioEjecuta);
|
|
SET @CveComentarioVisita = CONVERT(int, SCOPE_IDENTITY());
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
UPDATE dbo.Vis_ComentariosVisita
|
|
SET Comentario = @Comentario,
|
|
CveUsuario = @CveUsuarioEjecuta,
|
|
FechaModificacion = GETDATE()
|
|
WHERE CveComentarioVisita = @CveComentarioVisita AND CveVisita = @CveVisita;
|
|
END;
|
|
SELECT @CveComentarioVisita AS CveComentarioVisita;
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'No fue posible completar la operación. Contacte a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Vis_ComentarioVisitaGuardar'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
GO
|
|
CREATE OR ALTER PROCEDURE dbo.PA_Vis_ComentarioVisitaEliminar
|
|
@CveComentarioVisita 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
|
|
DELETE FROM dbo.Vis_ComentariosVisita
|
|
WHERE CveComentarioVisita = @CveComentarioVisita;
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @ErrorMostrar = 'No fue posible completar la operación. Contacte a Sistemas.';
|
|
SET @ErrorTipo = 1;
|
|
SET @Return = 0;
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(ERROR_PROCEDURE(), 'PA_Vis_ComentarioVisitaEliminar'),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
GO
|
|
|
|
-- Catálogo de bitácora. Se resuelven las claves desde los registros existentes.
|
|
DECLARE @Tablas TABLE
|
|
(
|
|
Tabla varchar(128),
|
|
Nombre varchar(150),
|
|
Llave varchar(128)
|
|
);
|
|
INSERT INTO @Tablas(Tabla, Nombre, Llave)
|
|
VALUES
|
|
('Sis_ConfiguracionVisitas', 'Configuración de visitas', 'CveConfiguracionVisitas'),
|
|
('Sis_DiasFestivos', 'Días festivos', 'CveDiaFestivo'),
|
|
('Vis_PlantillasCuestionario', 'Plantillas de visita', 'CvePlantilla'),
|
|
('Vis_PreguntasPlantilla', 'Preguntas de plantilla', 'CvePreguntaPlantilla'),
|
|
('Vis_OpcionesPregunta', 'Opciones de pregunta', 'CveOpcionPregunta'),
|
|
('Vis_Citas', 'Citas', 'CveCita'),
|
|
('Vis_Visitas', 'Visitas', 'CveVisita'),
|
|
('Vis_CuestionariosVisita', 'Cuestionarios de visita', 'CveCuestionarioVisita'),
|
|
('Vis_RespuestasVisita', 'Respuestas de visita', 'CveRespuestaVisita'),
|
|
('Vis_DocumentosVisita', 'Documentos de visita', 'CveDocumentoVisita'),
|
|
('Vis_ComentariosVisita', 'Comentarios de visita', 'CveComentarioVisita');
|
|
INSERT INTO dbo.Bit_Tablas(NombreTablaSQL, NombreMostrar, NombreCampoLlaveSQL, Activo, FechaAlta)
|
|
SELECT T.Tabla, T.Nombre, T.Llave, 1, GETDATE()
|
|
FROM @Tablas AS T
|
|
WHERE NOT EXISTS (SELECT 1 FROM dbo.Bit_Tablas AS B WHERE B.NombreTablaSQL = T.Tabla);
|
|
UPDATE B
|
|
SET Activo = 1,
|
|
NombreCampoLlaveSQL = T.Llave,
|
|
FechaMod = GETDATE()
|
|
FROM dbo.Bit_Tablas AS B
|
|
INNER JOIN @Tablas AS T ON T.Tabla = B.NombreTablaSQL
|
|
WHERE B.Activo = 0 OR ISNULL(B.NombreCampoLlaveSQL, '') <> T.Llave;
|
|
|
|
DECLARE @Campos TABLE
|
|
(
|
|
Tabla varchar(128),
|
|
Campo varchar(128),
|
|
Tipo varchar(128)
|
|
);
|
|
INSERT INTO @Campos(Tabla, Campo, Tipo)
|
|
VALUES
|
|
('Sis_ConfiguracionVisitas', 'CveConfiguracionVisitas', 'int'),
|
|
('Sis_ConfiguracionVisitas', 'DuracionPredeterminadaMinutos', 'int'),
|
|
('Sis_DiasFestivos', 'CveDiaFestivo', 'int'),
|
|
('Sis_DiasFestivos', 'Fecha', 'date'),
|
|
('Sis_DiasFestivos', 'Descripcion', 'varchar'),
|
|
('Sis_DiasFestivos', 'EsActivo', 'bit'),
|
|
('Vis_PlantillasCuestionario', 'CvePlantilla', 'int'),
|
|
('Vis_PlantillasCuestionario', 'Nombre', 'varchar'),
|
|
('Vis_PlantillasCuestionario', 'EsPorLote', 'bit'),
|
|
('Vis_PlantillasCuestionario', 'EsActivo', 'bit'),
|
|
('Vis_PreguntasPlantilla', 'CvePreguntaPlantilla', 'int'),
|
|
('Vis_PreguntasPlantilla', 'CvePlantilla', 'int'),
|
|
('Vis_PreguntasPlantilla', 'CveTipoPregunta', 'int'),
|
|
('Vis_PreguntasPlantilla', 'Pregunta', 'varchar'),
|
|
('Vis_PreguntasPlantilla', 'EsRequerida', 'bit'),
|
|
('Vis_PreguntasPlantilla', 'EsActivo', 'bit'),
|
|
('Vis_PreguntasPlantilla', 'Orden', 'int'),
|
|
('Vis_OpcionesPregunta', 'CveOpcionPregunta', 'int'),
|
|
('Vis_OpcionesPregunta', 'CvePreguntaPlantilla', 'int'),
|
|
('Vis_OpcionesPregunta', 'TextoOpcion', 'varchar'),
|
|
('Vis_OpcionesPregunta', 'Orden', 'int'),
|
|
('Vis_Citas', 'CveCita', 'int'),
|
|
('Vis_Citas', 'CveFraccionamientoEtapa', 'int'),
|
|
('Vis_Citas', 'CveSupervisor', 'int'),
|
|
('Vis_Citas', 'FechaInicio', 'datetime2'),
|
|
('Vis_Citas', 'DuracionMinutos', 'int'),
|
|
('Vis_Citas', 'FechaFin', 'datetime2'),
|
|
('Vis_Citas', 'Cancelada', 'bit'),
|
|
('Vis_Citas', 'Comentarios', 'varchar'),
|
|
('Vis_Visitas', 'CveVisita', 'int'),
|
|
('Vis_Visitas', 'CveCita', 'int'),
|
|
('Vis_Visitas', 'SeRealizo', 'bit'),
|
|
('Vis_Visitas', 'FechaReal', 'datetime2'),
|
|
('Vis_Visitas', 'Observaciones', 'varchar'),
|
|
('Vis_CuestionariosVisita', 'CveCuestionarioVisita', 'int'),
|
|
('Vis_CuestionariosVisita', 'CveVisita', 'int'),
|
|
('Vis_CuestionariosVisita', 'CvePlantilla', 'int'),
|
|
('Vis_CuestionariosVisita', 'CveFraccionamientoLote', 'int'),
|
|
('Vis_CuestionariosVisita', 'NombrePlantilla', 'varchar'),
|
|
('Vis_CuestionariosVisita', 'DefinicionPlantilla', 'nvarchar'),
|
|
('Vis_CuestionariosVisita', 'PasoSupervision', 'bit'),
|
|
('Vis_CuestionariosVisita', 'AguaPotableTerminada', 'bit'),
|
|
('Vis_CuestionariosVisita', 'DrenajeTerminado', 'bit'),
|
|
('Vis_CuestionariosVisita', 'Observaciones', 'varchar'),
|
|
('Vis_CuestionariosVisita', 'Finalizado', 'bit'),
|
|
('Vis_RespuestasVisita', 'CveRespuestaVisita', 'int'),
|
|
('Vis_RespuestasVisita', 'CveCuestionarioVisita', 'int'),
|
|
('Vis_RespuestasVisita', 'CvePreguntaPlantilla', 'int'),
|
|
('Vis_RespuestasVisita', 'Valor', 'nvarchar'),
|
|
('Vis_DocumentosVisita', 'CveDocumentoVisita', 'int'),
|
|
('Vis_DocumentosVisita', 'CveVisita', 'int'),
|
|
('Vis_DocumentosVisita', 'CveCuestionarioVisita', 'int'),
|
|
('Vis_DocumentosVisita', 'NombreArchivo', 'varchar'),
|
|
('Vis_DocumentosVisita', 'NombreFisico', 'varchar'),
|
|
('Vis_DocumentosVisita', 'TipoContenido', 'varchar'),
|
|
('Vis_DocumentosVisita', 'TamanoBytes', 'bigint'),
|
|
('Vis_ComentariosVisita', 'CveComentarioVisita', 'int'),
|
|
('Vis_ComentariosVisita', 'CveVisita', 'int'),
|
|
('Vis_ComentariosVisita', 'Comentario', 'varchar');
|
|
INSERT INTO dbo.Bit_Campos
|
|
(CveTabla, NombreCampoSQL, NombreMostrar, TipoDatoSQL, MostrarEnBitacora, Activo, FechaAlta)
|
|
SELECT T.CveTabla, C.Campo, C.Campo, C.Tipo, 1, 1, GETDATE()
|
|
FROM @Campos AS C
|
|
INNER JOIN dbo.Bit_Tablas AS T ON T.NombreTablaSQL = C.Tabla
|
|
WHERE NOT EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM dbo.Bit_Campos AS B
|
|
WHERE B.CveTabla = T.CveTabla AND B.NombreCampoSQL = C.Campo
|
|
);
|
|
UPDATE B
|
|
SET Activo = 1,
|
|
MostrarEnBitacora = 1,
|
|
FechaMod = GETDATE()
|
|
FROM dbo.Bit_Campos AS B
|
|
INNER JOIN dbo.Bit_Tablas AS T ON T.CveTabla = B.CveTabla
|
|
INNER JOIN @Campos AS C ON C.Tabla = T.NombreTablaSQL AND C.Campo = B.NombreCampoSQL
|
|
WHERE B.Activo = 0 OR B.MostrarEnBitacora = 0;
|
|
GO
|
|
|
|
-- Menús y acceso a las seis pantallas nuevas para los roles internos existentes.
|
|
DECLARE @Catalogos int;
|
|
DECLARE @Desarrolladores int;
|
|
DECLARE @Plataforma int;
|
|
IF (SELECT COUNT(*) FROM dbo.Sis_Modulos WHERE NombreModulo = 'Catálogos' AND Activo = 1) <> 1
|
|
THROW 51200, 'No se encontró el contenedor único de Catálogos.', 1;
|
|
IF (SELECT COUNT(*) FROM dbo.Sis_Modulos WHERE NombreModulo = 'Desarrolladores' AND Activo = 1 AND CveModuloPadre IS NULL) <> 1
|
|
THROW 51201, 'No se encontró el contenedor único de Desarrolladores.', 1;
|
|
SELECT @Catalogos = CveModulo, @Plataforma = CvePlataforma
|
|
FROM dbo.Sis_Modulos
|
|
WHERE NombreModulo = 'Catálogos' AND Activo = 1;
|
|
SELECT @Desarrolladores = CveModulo
|
|
FROM dbo.Sis_Modulos
|
|
WHERE NombreModulo = 'Desarrolladores' AND Activo = 1 AND CveModuloPadre IS NULL;
|
|
DECLARE @Pantallas TABLE
|
|
(
|
|
Nombre varchar(150),
|
|
Url varchar(500),
|
|
Padre int,
|
|
Visible bit,
|
|
Posicion int
|
|
);
|
|
INSERT INTO @Pantallas(Nombre, Url, Padre, Visible, Posicion)
|
|
VALUES
|
|
('Días festivos', '~/Pages/Catalogos/DiasFestivos.aspx', @Catalogos, 1, 1),
|
|
('Plantillas de visita', '~/Pages/Catalogos/PlantillasVisita.aspx', @Catalogos, 1, 2),
|
|
('Detalle de plantilla de visita', '~/Pages/Catalogos/PlantillaVisitaDetalle.aspx', @Catalogos, 0, 3),
|
|
('Citas de supervisión', '~/Pages/Visitas/Citas.aspx', @Desarrolladores, 1, 1),
|
|
('Programar cita', '~/Pages/Visitas/CitaDetalle.aspx', @Desarrolladores, 0, 2),
|
|
('Detalle de visita', '~/Pages/Visitas/VisitaDetalle.aspx', @Desarrolladores, 0, 3);
|
|
DECLARE @OrdenCatalogos int = ISNULL((SELECT MAX(OrdenVisualizacion) FROM dbo.Sis_Modulos WHERE CveModuloPadre = @Catalogos), 0);
|
|
DECLARE @OrdenDesarrolladores int = ISNULL((SELECT MAX(OrdenVisualizacion) FROM dbo.Sis_Modulos WHERE CveModuloPadre = @Desarrolladores), 0);
|
|
INSERT INTO dbo.Sis_Modulos
|
|
(CveModuloPadre, CvePlataforma, NombreModulo, Url, ClaseCssIcono, OrdenVisualizacion, Visible, Activo, FechaCreacion)
|
|
SELECT P.Padre, @Plataforma, P.Nombre, P.Url, 'fa fa-calendar',
|
|
CASE WHEN P.Padre = @Catalogos THEN @OrdenCatalogos ELSE @OrdenDesarrolladores END + P.Posicion,
|
|
P.Visible, 1, GETDATE()
|
|
FROM @Pantallas AS P
|
|
WHERE NOT EXISTS (SELECT 1 FROM dbo.Sis_Modulos AS M WHERE M.Url = P.Url);
|
|
UPDATE D
|
|
SET CveModuloPadre = L.CveModulo
|
|
FROM dbo.Sis_Modulos AS D
|
|
INNER JOIN @Pantallas AS P ON P.Url = D.Url AND P.Visible = 0
|
|
INNER JOIN dbo.Sis_Modulos AS L ON L.Url = CASE
|
|
WHEN P.Url = '~/Pages/Catalogos/PlantillaVisitaDetalle.aspx' THEN '~/Pages/Catalogos/PlantillasVisita.aspx'
|
|
ELSE '~/Pages/Visitas/Citas.aspx'
|
|
END
|
|
WHERE ISNULL(D.CveModuloPadre, 0) <> L.CveModulo;
|
|
INSERT INTO dbo.Sis_RolesModulos
|
|
(CveRol, CveModulo, PuedeVer, PuedeCrear, PuedeModificar, PuedeEliminar, PuedeImprimir, PuedeExportar, FechaCreacion)
|
|
SELECT R.CveRol, M.CveModulo, 1, 1, 1, 1, 0, 0, GETDATE()
|
|
FROM dbo.Sis_Modulos AS M
|
|
INNER JOIN @Pantallas AS P ON P.Url = M.Url
|
|
CROSS JOIN dbo.Sis_Roles AS R
|
|
WHERE R.Activo = 1 AND R.NombreRol IN ('SuperUsuario', 'Administrador')
|
|
AND NOT EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM dbo.Sis_RolesModulos AS RM
|
|
WHERE RM.CveRol = R.CveRol AND RM.CveModulo = M.CveModulo
|
|
);
|
|
GO
|