--
-- Script was generated by Devart dbForge Studio for SQL Server, Version 6.5.140.0
-- Product home page: http://www.devart.com/dbforge/sql/studio
-- Script date 9/3/2025 10:24:44
--


SET DATEFORMAT ymd
SET ARITHABORT, ANSI_PADDING, ANSI_WARNINGS, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER, ANSI_NULLS, NOCOUNT ON
SET NUMERIC_ROUNDABORT, IMPLICIT_TRANSACTIONS, XACT_ABORT OFF
GO

USE testing_votaciones
GO

IF DB_NAME() <> N'testing_votaciones' SET NOEXEC ON
GO

--
-- Create table [dbo].[elecciones_proceso_acta_control]
--
PRINT (N'Create table [dbo].[elecciones_proceso_acta_control]')
GO
CREATE TABLE dbo.elecciones_proceso_acta_control (
  pk_control int IDENTITY,
  pk_tipo int NULL,
  pk_proceso int NULL,
  pk_partido int NULL,
  pk_jrv int NULL,
  pk_user int NULL,
  estado_control int NULL,
  estado int NULL DEFAULT (1),
  creado_por int NULL,
  fecha_hora_creado datetime NULL DEFAULT (getdate()),
  modificado_por int NULL,
  fecha_hora_modificado datetime NULL,
  PRIMARY KEY CLUSTERED (pk_control)
)
ON [PRIMARY]
GO

SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO

--
-- Create or alter procedure [dbo].[VOT_insert_update_elecciones_proceso_acta_control]
--
GO
PRINT (N'Create or alter procedure [dbo].[VOT_insert_update_elecciones_proceso_acta_control]')
GO
CREATE OR ALTER PROCEDURE dbo.VOT_insert_update_elecciones_proceso_acta_control
    @varPkControl INT OUTPUT,
    @varUsuario INT,
    @varPkTipo INT, -- Agregado pk_tipo
    @varPkProceso INT,
    @varPkPartido INT,
    @varPkJrv INT,
    @varEstadoControl INT, -- Cambié el nombre de estado_compartido por estado_control
    @varOpc INT
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @result NVARCHAR(200), @save INT = 0;
    DECLARE @existe INT;

    -- VALIDAR SI YA EXISTE
    SELECT @existe = COUNT(*)
    FROM elecciones_proceso_acta_control
    WHERE pk_tipo = @varPkTipo
        AND pk_proceso = @varPkProceso
        AND pk_partido = @varPkPartido
        AND pk_jrv = @varPkJrv
        AND estado <> 3
        AND (@varOpc = 1 OR pk_control <> @varPkControl);

    IF @existe > 0
    BEGIN
        SET @result = 'El registro ya existe.';
        SELECT @save AS 'save', @result AS result;
        RETURN;
    END

    IF @varOpc = 1 -- INSERTAR
    BEGIN
        INSERT INTO elecciones_proceso_acta_control (pk_tipo, pk_proceso, pk_partido, pk_jrv, pk_user, estado_control, creado_por)
        VALUES (@varPkTipo, @varPkProceso, @varPkPartido, @varPkJrv, @varUsuario, @varEstadoControl, @varUsuario);

        SET @varPkControl = SCOPE_IDENTITY();
        SET @save = 1;
        SET @result = 'Registro insertado correctamente';
    END
    ELSE IF @varOpc = 2 -- ACTUALIZAR
    BEGIN
        UPDATE elecciones_proceso_acta_control
        SET pk_partido = @varPkPartido,
            pk_jrv = @varPkJrv,
            pk_user = @varUsuario,
            estado_control = @varEstadoControl,
            modificado_por = @varUsuario,
            fecha_hora_modificado = GETDATE()
        WHERE pk_control = @varPkControl AND pk_proceso = @varPkProceso AND pk_tipo = @varPkTipo;

        SET @save = 1;
        SET @result = 'Registro actualizado correctamente';
    END
    ELSE
    BEGIN
        SET @result = 'Opción no válida';
    END

    SELECT @save AS 'save', @result AS result, @varPkControl AS pk;
END;
GO

--
-- Create or alter procedure [dbo].[VOT_get_elecciones_proceso_acta_control]
--
GO
PRINT (N'Create or alter procedure [dbo].[VOT_get_elecciones_proceso_acta_control]')
GO
CREATE OR ALTER PROCEDURE dbo.VOT_get_elecciones_proceso_acta_control
    @varUsuario INT,  -- Usuario que hace la solicitud
    @varPkTipo INT,
    @varPkProceso INT,
    @varPkPartido INT,
    @varPkJrv INT,
    @opc INT
AS
BEGIN
    DECLARE @result NVARCHAR(200), @save INT, @usuario INT;

    -- Verificar si existen registros que coinciden con los filtros
    SELECT TOP 1 @usuario = pk_user
    FROM elecciones_proceso_acta_control
    WHERE (@varPkTipo = 0 OR pk_tipo = @varPkTipo)
        AND (@varPkProceso = 0 OR pk_proceso = @varPkProceso)
        AND (@varPkPartido = 0 OR pk_partido = @varPkPartido)
        AND (@varPkJrv = 0 OR pk_jrv = @varPkJrv)
        AND (@opc = 0 OR estado <> 3);

    -- Si no se encontró ningún registro o si el registro pertenece al mismo usuario
    IF @usuario IS NULL OR @usuario = @varUsuario
    BEGIN
        SET @save = 1;
        SET @result = 'No se encontraron registros o el registro pertenece al mismo usuario.';
        
        -- Si la opción es 2 y no hay registros existentes
        IF @opc = 2 AND @usuario IS NULL
        BEGIN
            -- Llamar al SP para agregar el registro
            EXEC VOT_insert_update_elecciones_proceso_acta_control 
                0, 
                @varUsuario = @varUsuario, 
                @varPkTipo = @varPkTipo, 
                @varPkProceso = @varPkProceso, 
                @varPkPartido = @varPkPartido, 
                @varPkJrv = @varPkJrv, 
                @varEstadoControl = 1,  -- Establecer el estado_control como 1 (si es necesario)
                @varOpc = 1;  -- La opción 1 para inserción
        END
    END
    ELSE
    BEGIN
        SET @save = 0;
        SET @result = 'Esta acta está siendo editada por otro usuario.';
    END

    -- Devolver el resultado
    SELECT @save AS 'save', @result AS result;
END;
GO

--
-- Create or alter procedure [dbo].[VOT_delete_elecciones_proceso_acta_control]
--
GO
PRINT (N'Create or alter procedure [dbo].[VOT_delete_elecciones_proceso_acta_control]')
GO
CREATE OR ALTER PROCEDURE dbo.VOT_delete_elecciones_proceso_acta_control
    @varUsuario INT,  -- Parámetro para el usuario
    @varPkTipo INT,   -- Parámetro para pk_tipo
    @varPkProceso INT, -- Parámetro para pk_proceso
    @varPkPartido INT, -- Parámetro para pk_partido
    @varPkJrv INT,     -- Parámetro para pk_jrv
    @varOpc INT         -- Opción: 1 para borrado lógico, 2 para borrado físico
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @result NVARCHAR(200), @save INT = 0;

    -- Verificar si el usuario es el propietario del registro con los parámetros dados
    IF EXISTS (
        SELECT 1
        FROM elecciones_proceso_acta_control
        WHERE pk_user = @varUsuario
          AND pk_tipo = @varPkTipo
          AND pk_proceso = @varPkProceso
          AND pk_partido = @varPkPartido
          AND pk_jrv = @varPkJrv
          AND estado <> 3 -- Verificar que no esté en estado 3 (borrado)
    )
    BEGIN
        IF @varOpc = 1  -- Borrado lógico
        BEGIN
            UPDATE elecciones_proceso_acta_control
            SET estado = 3, -- Establecer el estado a 3 para borrado lógico
                modificado_por = @varUsuario,
                fecha_hora_modificado = GETDATE()
            WHERE pk_user = @varUsuario
              AND pk_tipo = @varPkTipo
              AND pk_proceso = @varPkProceso
              AND pk_partido = @varPkPartido
              AND pk_jrv = @varPkJrv;

            SET @save = 1;
            SET @result = 'Borrado lógico realizado correctamente';
        END
        ELSE IF @varOpc = 2  -- Borrado físico
        BEGIN
            DELETE FROM elecciones_proceso_acta_control
            WHERE pk_user = @varUsuario
              AND pk_tipo = @varPkTipo
              AND pk_proceso = @varPkProceso
              AND pk_partido = @varPkPartido
              AND pk_jrv = @varPkJrv;

            SET @save = 1;
            SET @result = 'Borrado físico realizado correctamente';
        END
        ELSE
        BEGIN
            SET @result = 'Opción no válida';
        END
    END
    ELSE
    BEGIN
        SET @result = 'No se encontró ningún registro para este usuario con los parámetros dados.';
    END

    SELECT @save AS 'save', @result AS result;
END;
GO

--
-- Create table [dbo].[tipo_rol]
--
PRINT (N'Create table [dbo].[tipo_rol]')
GO
CREATE TABLE dbo.tipo_rol (
  id int IDENTITY,
  nombre_tipo_rol varchar(100) NOT NULL,
  id_mayor int NULL,
  PRIMARY KEY CLUSTERED (id)
)
ON [PRIMARY]
GO

--
-- Create table [dbo].[tipo_personal_confiable]
--
PRINT (N'Create table [dbo].[tipo_personal_confiable]')
GO
CREATE TABLE dbo.tipo_personal_confiable (
  id int IDENTITY,
  nombre varchar(100) NOT NULL,
  descripcion varchar(255) NULL,
  PRIMARY KEY CLUSTERED (id)
)
ON [PRIMARY]
GO

--
-- Create or alter procedure [dbo].[sp_get_tipo_personal_confiable]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_get_tipo_personal_confiable]')
GO
CREATE OR ALTER PROCEDURE dbo.sp_get_tipo_personal_confiable
AS
BEGIN
    SELECT 
        id, 
        nombre AS text
    FROM dbo.tipo_personal_confiable
    ORDER BY nombre;
END
GO

--
-- Create table [dbo].[tipo_miembro]
--
PRINT (N'Create table [dbo].[tipo_miembro]')
GO
CREATE TABLE dbo.tipo_miembro (
  id int IDENTITY,
  nombre varchar(255) NOT NULL,
  descripcion varchar(500) NULL,
  PRIMARY KEY CLUSTERED (id)
)
ON [PRIMARY]
GO

--
-- Create or alter procedure [dbo].[sp_get_capacitadores_all]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_get_capacitadores_all]')
GO
CREATE OR ALTER PROCEDURE dbo.sp_get_capacitadores_all
AS
BEGIN
    SET NOCOUNT ON;

    SELECT 
        m.id AS miembro_id,
        m.nombres AS nombre_miembro,
        m.apellidos,
        m.dni AS identidad,
        m.telefono1,
        m.telefono2,
        m.direccion,
        m.sexo,
        m.estado,
        m.creado_por,
        m.fecha_hora_creacion AS fecha_hora_creado,
        tm.nombre AS tipo_nombre
    FROM dbo.miembro m
    INNER JOIN dbo.tipo_miembro tm ON m.tipo_miembro_id = tm.id
    WHERE m.estado <> 3 
      AND m.tipo_miembro_id = 2
    ORDER BY m.fecha_hora_creacion DESC;
END;
GO

--
-- Create or alter procedure [dbo].[MBR_get_tipo_miembros]
--
GO
PRINT (N'Create or alter procedure [dbo].[MBR_get_tipo_miembros]')
GO
CREATE OR ALTER PROCEDURE dbo.MBR_get_tipo_miembros
AS
BEGIN
    SELECT * FROM dbo.tipo_miembro;
END;
GO

--
-- Create table [dbo].[rol_jrv]
--
PRINT (N'Create table [dbo].[rol_jrv]')
GO
CREATE TABLE dbo.rol_jrv (
  id int IDENTITY,
  nombre_rol varchar(100) NOT NULL,
  estado int NULL,
  creado_por varchar(100) NULL,
  fecha_hora_creado datetime NULL DEFAULT (getdate()),
  modificado_por varchar(100) NULL,
  fecha_hora_modifcado datetime NULL,
  id_tipo_rol int NULL,
  PRIMARY KEY CLUSTERED (id)
)
ON [PRIMARY]
GO

--
-- Create or alter procedure [dbo].[sp_get_roles]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_get_roles]')
GO
CREATE OR ALTER PROCEDURE dbo.sp_get_roles
AS
BEGIN
    SET NOCOUNT ON;

    SELECT 
        r.id, 
        r.nombre_rol + ' - ' + ISNULL(tr.nombre_tipo_rol, '') AS nombre_rol
    FROM dbo.rol_jrv r
    LEFT JOIN dbo.tipo_rol tr
        ON r.id_tipo_rol = tr.id
    WHERE r.estado <> 3;
END;
GO

--
-- Create table [dbo].[persona_jrv_pendiente]
--
PRINT (N'Create table [dbo].[persona_jrv_pendiente]')
GO
CREATE TABLE dbo.persona_jrv_pendiente (
  id int IDENTITY,
  nombre varchar(255) NOT NULL,
  dni varchar(20) NOT NULL,
  direccion varchar(255) NULL,
  catalogo_profesion_id int NULL,
  telefono1 varchar(20) NULL,
  telefono2 varchar(20) NULL,
  telefono3 varchar(20) NULL,
  horario_trabajo_estudio varchar(100) NULL,
  disponibilidad_capacitacion datetime NULL,
  ha_participado_procesos_electorales bit NULL DEFAULT (0),
  ha_sido_miembro_mer bit NULL DEFAULT (0),
  ultimo_proceso date NULL,
  uso_manejo_computador bit NULL DEFAULT (0),
  lo_basico bit NULL DEFAULT (0),
  tiene_experiencia_trep bit NULL DEFAULT (0),
  entrega_materiales bit NULL DEFAULT (0),
  grupo varchar(50) NULL,
  referido varchar(100) NULL,
  centro_votacion_id int NULL,
  telefono varchar(20) NULL,
  observaciones varchar(max) NULL,
  estado int NULL,
  creado_por varchar(100) NOT NULL,
  fecha_hora_creacion datetime NULL DEFAULT (getdate()),
  modificado_por varchar(100) NULL,
  fecha_hora_modificado datetime NULL,
  foto_url varchar(255) NULL,
  foto_imagen varbinary(max) NULL,
  capacitador_id int NULL,
  empresa_id int NULL,
  foto_url_2 varchar(255) NULL,
  sexo varchar(20) NULL,
  token varchar(255) NOT NULL,
  estado_pendiente int NOT NULL,
  fecha_solicitud datetime NOT NULL DEFAULT (getdate()),
  catalogo_escolaridad_id int NULL,
  PRIMARY KEY CLUSTERED (id)
)
ON [PRIMARY]
TEXTIMAGE_ON [PRIMARY]
GO

--
-- Create table [dbo].[persona_jrv_eliminar_pendiente]
--
PRINT (N'Create table [dbo].[persona_jrv_eliminar_pendiente]')
GO
CREATE TABLE dbo.persona_jrv_eliminar_pendiente (
  id int IDENTITY,
  persona_jrv_id int NOT NULL,
  creado_por varchar(100) NOT NULL,
  empresa_id int NOT NULL,
  token varchar(255) NOT NULL,
  estado_pendiente int NOT NULL,
  fecha_solicitud datetime NOT NULL DEFAULT (getdate()),
  PRIMARY KEY CLUSTERED (id)
)
ON [PRIMARY]
GO

--
-- Create table [dbo].[persona_jrv]
--
PRINT (N'Create table [dbo].[persona_jrv]')
GO
CREATE TABLE dbo.persona_jrv (
  id int IDENTITY,
  nombre varchar(255) NOT NULL,
  dni varchar(20) NOT NULL,
  direccion varchar(255) NULL,
  catalogo_profesion_id int NULL,
  telefono1 int NULL,
  telefono2 int NULL,
  telefono3 int NULL,
  horario_trabajo_estudio varchar(100) NULL,
  disponibilidad_capacitacion datetime NULL,
  ha_participado_procesos_electorales bit NULL DEFAULT (0),
  ha_sido_miembro_mer bit NULL DEFAULT (0),
  ultimo_proceso date NULL,
  uso_manejo_computador bit NULL DEFAULT (0),
  lo_basico bit NULL DEFAULT (0),
  tiene_experiencia_trep bit NULL DEFAULT (0),
  entrega_materiales bit NULL DEFAULT (0),
  grupo varchar(50) NULL,
  referido varchar(100) NULL,
  centro_votacion_id int NULL,
  telefono int NULL,
  observaciones varchar(max) NULL,
  estado int NOT NULL DEFAULT (1),
  creado_por varchar(100) NOT NULL,
  fecha_hora_creacion datetime NULL DEFAULT (getdate()),
  modificado_por varchar(100) NULL,
  fecha_hora_modificado datetime NULL,
  foto_url varchar(255) NULL,
  foto_imagen varbinary(max) NULL,
  capacitador_id int NULL,
  empresa_id int NULL,
  foto_url_2 varchar(255) NULL,
  sexo varchar(20) NULL,
  catalogo_escolaridad_id int NULL DEFAULT (0),
  horario_texto varchar(500) NULL DEFAULT ('.'),
  persona_confiable_id int NULL DEFAULT (0),
  capacitacion_id int NULL DEFAULT (0),
  PRIMARY KEY CLUSTERED (id)
)
ON [PRIMARY]
TEXTIMAGE_ON [PRIMARY]
GO

--
-- Create or alter procedure [dbo].[sp_get_personal_confiable_tipo1]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_get_personal_confiable_tipo1]')
GO
CREATE OR ALTER PROCEDURE dbo.sp_get_personal_confiable_tipo1
    @busqueda VARCHAR(255)
AS
BEGIN
    SET NOCOUNT ON;

    SELECT 
        pc.id AS personal_confiable_id,
        p.nombre,
        p.dni,
        p.telefono1,
        p.direccion,
        p.sexo
    FROM dbo.personal_confiable pc
    INNER JOIN dbo.persona_jrv p ON pc.persona_id = p.id
    WHERE (p.nombre LIKE '%' + @busqueda + '%'
           OR p.dni LIKE '%' + @busqueda + '%')
      AND pc.estado <> 3 
      AND p.estado <> 3
      AND pc.tipo_id = 1
    ORDER BY p.nombre;
END;
GO

--
-- Create or alter procedure [dbo].[sp_get_personal_confiable_all]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_get_personal_confiable_all]')
GO
CREATE OR ALTER PROCEDURE dbo.sp_get_personal_confiable_all
AS
BEGIN
    SET NOCOUNT ON;

    SELECT 
        pc.id,
        p.id AS persona_id,
        p.nombre AS nombre_miembro,
        p.dni AS identidad,
        p.telefono1,
        p.direccion,
        p.sexo,
        pc.estado,
        pc.creado_por,
        pc.fecha_hora_creado,
        tpc.nombre AS tipo_nombre
    FROM dbo.personal_confiable pc
    INNER JOIN dbo.persona_jrv p ON pc.persona_id = p.id
    INNER JOIN dbo.tipo_personal_confiable tpc ON pc.tipo_id = tpc.id
    WHERE pc.estado <> 3 AND p.estado <> 3
    ORDER BY pc.fecha_hora_creado DESC;
END;
GO

--
-- Create or alter procedure [dbo].[sp_get_persona_jrv]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_get_persona_jrv]')
GO

CREATE OR ALTER PROCEDURE dbo.sp_get_persona_jrv
    @nombre_busqueda VARCHAR(255)
AS
BEGIN
    SET NOCOUNT ON;

    SELECT TOP 10 
           id, 
           nombre,
           dni,
           telefono1,
           direccion,
           sexo
    FROM dbo.persona_jrv
    WHERE (nombre LIKE '%' + @nombre_busqueda + '%'
        OR dni LIKE '%' + @nombre_busqueda + '%')
        AND persona_jrv.estado <> 3  -- Agregamos la condición para excluir estado 3
    ORDER BY nombre;
END;
GO

--
-- Create or alter procedure [dbo].[sp_borrar_persona_jrv]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_borrar_persona_jrv]')
GO

CREATE OR ALTER PROCEDURE dbo.sp_borrar_persona_jrv
    @persona_id INT,
    @modificado_por VARCHAR(100)
AS
BEGIN
    SET NOCOUNT ON;

    UPDATE dbo.persona_jrv
    SET estado = 3,
        modificado_por = @modificado_por,
        fecha_hora_modificado = GETDATE()
    WHERE id = @persona_id;
END;
GO

--
-- Create or alter procedure [dbo].[sp_actualizar_persona_jrv]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_actualizar_persona_jrv]')
GO

CREATE OR ALTER PROCEDURE dbo.sp_actualizar_persona_jrv
    @id INT,
    @nombre VARCHAR(255),
    @dni VARCHAR(20),
    @direccion VARCHAR(255) = NULL,
    @catalogo_escolaridad_id INT = NULL,  -- NUEVO: ID de escolaridad
    @sexo VARCHAR(20) = NULL,              -- NUEVO: Sexo
    @catalogo_profesion_id INT = NULL,     -- ID de la profesión
    @telefono1 INT = NULL,                 -- Cambiado a INT
    @telefono2 INT = NULL,                 -- Cambiado a INT
    @telefono3 INT = NULL,                 -- Cambiado a INT
    @horario_trabajo_estudio VARCHAR(100) = NULL,
    @horario_texto VARCHAR(500) = NULL,      -- NUEVO: Horario en texto plano
    @disponibilidad_capacitacion DATETIME = NULL,
    @ha_participado_procesos_electorales BIT = 0,
    @ha_sido_miembro_mer BIT = 0,
    @ultimo_proceso DATE = NULL,
    @uso_manejo_computador BIT = 0,
    @lo_basico BIT = 0,
    @tiene_experiencia_trep BIT = 0,
    @entrega_materiales BIT = 0,
    @capacitacion_id INT = NULL, 
    @referido VARCHAR(100) = NULL,
    @centro_votacion_id INT = NULL,    -- ID del centro de votación
    @telefono INT = NULL,                -- Cambiado a INT
    @observaciones VARCHAR(MAX) = NULL,
    @estado INT = NULL,
    @modificado_por VARCHAR(100),
    @capacitador_id INT = NULL
AS
BEGIN
    SET NOCOUNT ON;
    
    UPDATE dbo.persona_jrv
    SET
        nombre = @nombre,
        dni = @dni,
        direccion = @direccion,
        catalogo_escolaridad_id = @catalogo_escolaridad_id,  -- Asigna el ID de escolaridad
        sexo = @sexo,                                          -- Asigna el sexo
        catalogo_profesion_id = @catalogo_profesion_id,
        telefono1 = @telefono1,
        telefono2 = @telefono2,
        telefono3 = @telefono3,
        horario_trabajo_estudio = @horario_trabajo_estudio,
        horario_texto = @horario_texto,                        -- Asigna el horario en texto plano
        disponibilidad_capacitacion = @disponibilidad_capacitacion,
        ha_participado_procesos_electorales = @ha_participado_procesos_electorales,
        ha_sido_miembro_mer = @ha_sido_miembro_mer,
        ultimo_proceso = @ultimo_proceso,
        uso_manejo_computador = @uso_manejo_computador,
        lo_basico = @lo_basico,
        tiene_experiencia_trep = @tiene_experiencia_trep,
        entrega_materiales = @entrega_materiales,
        capacitacion_id = @capacitacion_id,
        referido = @referido,
        centro_votacion_id = @centro_votacion_id,
        telefono = @telefono,
        observaciones = @observaciones,
        estado = 2,
        modificado_por = @modificado_por,
        capacitador_id = @capacitador_id,
        fecha_hora_modificado = GETDATE()
    WHERE id = @id;
END;
GO

--
-- Create table [dbo].[persona_confiable]
--
PRINT (N'Create table [dbo].[persona_confiable]')
GO
CREATE TABLE dbo.persona_confiable (
  id int IDENTITY,
  nombre_miembro varchar(100) NOT NULL,
  identidad varchar(50) NOT NULL,
  telefono varchar(20) NOT NULL,
  direccion varchar(255) NOT NULL,
  sexo varchar(50) NOT NULL,
  tipo_personal_confiable_id int NOT NULL,
  foto_url varchar(255) NULL,
  nivel_confianza varchar(50) NULL,
  estado int NOT NULL DEFAULT (1),
  creado_por varchar(100) NOT NULL,
  fecha_hora_creacion datetime NULL DEFAULT (getdate()),
  modificado_por varchar(100) NULL,
  fecha_hora_modificacion datetime NULL,
  CONSTRAINT PK_persona_confiable PRIMARY KEY CLUSTERED (id)
)
ON [PRIMARY]
GO

--
-- Create or alter procedure [dbo].[sp_update_personal_confiable]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_update_personal_confiable]')
GO
CREATE OR ALTER PROCEDURE dbo.sp_update_personal_confiable
(
    @id INT,
    @nombre_miembro              VARCHAR(100),
    @identidad                   VARCHAR(50),
    @telefono                    VARCHAR(20),
    @direccion                   VARCHAR(255),
    @sexo                        VARCHAR(50),
    @tipo_personal_confiable_id  INT,
    @foto_url                    VARCHAR(255) = NULL,
    @nivel_confianza             VARCHAR(50), 
    @estado                      INT = NULL,
    @modificado_por              VARCHAR(100)
)
AS
BEGIN
    SET NOCOUNT ON;

    -- Validar si el ID existe antes de actualizar
    IF NOT EXISTS (SELECT 1 FROM dbo.persona_confiable WHERE id = @id)
    BEGIN
        RAISERROR('La persona confiable no existe.', 16, 1);
        RETURN;
    END;

    UPDATE dbo.persona_confiable
    SET 
        nombre_miembro = @nombre_miembro,
        identidad = @identidad,
        telefono = @telefono,
        direccion = @direccion,
        sexo = @sexo,
        tipo_personal_confiable_id = @tipo_personal_confiable_id,
        nivel_confianza = @nivel_confianza,
        foto_url = @foto_url,
        estado = ISNULL(@estado, estado),  -- Mantiene el estado si no se envía
        modificado_por = @modificado_por,
        fecha_hora_modificacion = GETDATE()
    WHERE id = @id;
END;
GO

--
-- Create or alter procedure [dbo].[sp_update_foto_persona_confiable]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_update_foto_persona_confiable]')
GO
CREATE OR ALTER PROCEDURE dbo.sp_update_foto_persona_confiable
    @persona_id INT,
    @foto_url VARCHAR(255),
    @modificado_por VARCHAR(20)
AS
BEGIN
    UPDATE dbo.persona_confiable
    SET foto_url = @foto_url,
        modificado_por = @modificado_por,  
        fecha_hora_modificacion = GETDATE()
    WHERE id = @persona_id;
END
GO

--
-- Create or alter procedure [dbo].[sp_insert_personal_confiable]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_insert_personal_confiable]')
GO
CREATE OR ALTER PROCEDURE dbo.sp_insert_personal_confiable
(
    @nombre_miembro              VARCHAR(100),
    @identidad                   VARCHAR(50),
    @telefono                    VARCHAR(20),
    @direccion                   VARCHAR(255),
    @sexo                        VARCHAR(50),
    @tipo_personal_confiable_id  INT,
    @foto_url                    VARCHAR(255) = NULL,
    @nivel_confianza             VARCHAR(50),
    @creado_por                  VARCHAR(100)
)
AS
BEGIN
    SET NOCOUNT ON;

    -- Validar que no exista ya un registro con la misma identidad y tipo
    IF EXISTS (
        SELECT 1
        FROM dbo.persona_confiable
        WHERE identidad = @identidad
          AND tipo_personal_confiable_id = @tipo_personal_confiable_id
    )
    BEGIN
        RAISERROR('Ya existe una persona confiable con la misma identidad y tipo.', 16, 1);
        RETURN;
    END;

    INSERT INTO dbo.persona_confiable (
        nombre_miembro,
        identidad,
        telefono,
        direccion,
        sexo,
        tipo_personal_confiable_id,
        foto_url,
        nivel_confianza,
        estado,
        creado_por,
        fecha_hora_creacion
    )
    VALUES (
        @nombre_miembro,
        @identidad,
        @telefono,
        @direccion,
        @sexo,
        @tipo_personal_confiable_id,
        @foto_url,
        @nivel_confianza,
        1, -- Activo por defecto
        @creado_por,
        GETDATE()
    );

    SELECT SCOPE_IDENTITY() AS nuevo_id;
END;
GO

--
-- Create or alter procedure [dbo].[sp_get_personal_confiable]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_get_personal_confiable]')
GO

CREATE OR ALTER PROCEDURE dbo.sp_get_personal_confiable
AS
BEGIN
    SELECT 
        pc.id,
        pc.nombre_miembro,
        pc.identidad,
        pc.telefono,
        pc.direccion,
        pc.sexo,
        pc.foto_url,
        pc.estado,
        pc.creado_por,
        pc.fecha_hora_creacion,
        pc.modificado_por,
        pc.fecha_hora_modificacion,
        tpc.nombre AS tipo_nombre,
        pc.tipo_personal_confiable_id
    FROM dbo.persona_confiable pc
    INNER JOIN dbo.tipo_personal_confiable tpc 
        ON pc.tipo_personal_confiable_id = tpc.id
    WHERE pc.estado <> 3
END
GO

--
-- Create or alter procedure [dbo].[sp_get_all_personal_confiable]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_get_all_personal_confiable]')
GO

CREATE OR ALTER PROCEDURE dbo.sp_get_all_personal_confiable
AS
BEGIN
    SELECT 
        pc.id,
        pc.nombre_miembro,
        pc.identidad,
        pc.telefono,
        pc.direccion,
        pc.sexo,
        pc.foto_url,
        pc.estado,
        pc.creado_por,
        pc.fecha_hora_creacion,
        pc.modificado_por,
        pc.fecha_hora_modificacion,
        tpc.nombre AS tipo_nombre,
        pc.tipo_personal_confiable_id
    FROM dbo.persona_confiable pc
    INNER JOIN dbo.tipo_personal_confiable tpc 
        ON pc.tipo_personal_confiable_id = tpc.id
    WHERE pc.estado <> 3
END
GO

--
-- Create or alter procedure [dbo].[sp_delete_personal_confiable]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_delete_personal_confiable]')
GO
CREATE OR ALTER PROCEDURE dbo.sp_delete_personal_confiable
(
    @id INT,
    @modificado_por VARCHAR(100)
)
AS
BEGIN
    SET NOCOUNT ON;

    -- Validar si el ID existe antes de eliminar
    IF NOT EXISTS (SELECT 1 FROM dbo.persona_confiable WHERE id = @id)
    BEGIN
        RAISERROR('La persona confiable no existe.', 16, 1);
        RETURN;
    END;

    -- Borrado lógico cambiando estado a 3 (Eliminado)
    UPDATE dbo.persona_confiable
    SET 
        estado = 3,
        modificado_por = @modificado_por,
        fecha_hora_modificacion = GETDATE()
    WHERE id = @id;
END;
GO

--
-- Create table [dbo].[partidos]
--
PRINT (N'Create table [dbo].[partidos]')
GO
CREATE TABLE dbo.partidos (
  pk_partido int IDENTITY,
  nombre nvarchar(100) NULL,
  abreviatura nvarchar(20) NULL,
  pk_region int NULL,
  url_foto nvarchar(255) NULL,
  estado int NULL DEFAULT (1),
  creado_por int NULL,
  fecha_hora_creado datetime NULL DEFAULT (getdate()),
  modificado_por int NULL,
  fecha_hora_modificado datetime NULL,
  PRIMARY KEY CLUSTERED (pk_partido)
)
ON [PRIMARY]
GO

--
-- Create or alter procedure [dbo].[VOT_delete_partidos]
--
GO
PRINT (N'Create or alter procedure [dbo].[VOT_delete_partidos]')
GO
CREATE OR ALTER PROCEDURE dbo.VOT_delete_partidos
    @varPk INT,
    @varUsuario INT,
    @varOpc INT -- 1 Borrado lógico, 2 Borrado físico
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @result NVARCHAR(200), @save INT = 0;

    IF @varOpc = 1 -- Borrado lógico
    BEGIN
        UPDATE partidos
        SET estado = 3,
            modificado_por = @varUsuario,
            fecha_hora_modificado = GETDATE()
        WHERE pk_partido = @varPk;

        SET @save = 1;
        SET @result = 'Borrado lógico realizado correctamente';
    END
    ELSE IF @varOpc = 2 -- Borrado físico
    BEGIN
        DELETE FROM partidos
        WHERE pk_partido = @varPk;

        SET @save = 1;
        SET @result = 'Borrado físico realizado correctamente';
    END
    ELSE
    BEGIN
        SET @result = 'Opción no válida';
    END

    SELECT @save AS 'save', @result AS result;
END;
GO

--
-- Create table [dbo].[movimientos]
--
PRINT (N'Create table [dbo].[movimientos]')
GO
CREATE TABLE dbo.movimientos (
  pk_movimiento int IDENTITY,
  pk_partido int NULL,
  nombre nvarchar(100) NULL,
  partido int NULL,
  url_foto nvarchar(255) NULL,
  estado int NULL DEFAULT (1),
  creado_por int NULL,
  fecha_hora_creado datetime NULL DEFAULT (getdate()),
  modificado_por int NULL,
  fecha_hora_modificado datetime NULL,
  PRIMARY KEY CLUSTERED (pk_movimiento)
)
ON [PRIMARY]
GO

--
-- Add extended property [MS_Description] on column [dbo].[movimientos].[partido]
--
PRINT (N'Add extended property [MS_Description] on column [dbo].[movimientos].[partido]')
GO
EXEC sys.sp_addextendedproperty N'MS_Description', 'partido = 1 significa que el movimiento se toma a nivel de partido', 'SCHEMA', N'dbo', 'TABLE', N'movimientos', 'COLUMN', N'partido'
GO

--
-- Create or alter procedure [dbo].[VOT_insert_update_movimientos]
--
GO
PRINT (N'Create or alter procedure [dbo].[VOT_insert_update_movimientos]')
GO
CREATE OR ALTER PROCEDURE dbo.VOT_insert_update_movimientos
    @varPkMovimiento INT OUTPUT,
    @varNombre NVARCHAR(100),
    @varPkPartido INT,
    @varPartido INT,
    @varUrlFoto NVARCHAR(255),
    @varUsuario INT,
    @varOpc INT
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @result NVARCHAR(200), @save INT = 0;
    DECLARE @existe INT;

    -- MAYÚSCULAS
    SET @varNombre = UPPER(@varNombre);

    -- VALIDAR SI EL REGISTRO YA EXISTE
    SELECT @existe = COUNT(*)
    FROM movimientos
    WHERE nombre = @varNombre
        AND pk_partido = @varPkPartido
        AND estado <> 3
        AND (@varOpc = 1 OR pk_movimiento <> @varPkMovimiento);

    IF @existe > 0
    BEGIN
        SET @result = 'El nombre de ese movimiento ya está en uso en el mismo partido político.';
        SELECT @save AS 'save', @result AS result;
        RETURN;
    END

    IF @varOpc = 1
    BEGIN
        INSERT INTO movimientos
            (nombre, pk_partido, partido, url_foto, creado_por)
        VALUES
            (@varNombre, @varPkPartido, @varPartido, @varUrlFoto, @varUsuario);

        SET @varPkMovimiento = SCOPE_IDENTITY();
        SET @save = 1;
        SET @result = 'Registro insertado correctamente';
    END
    ELSE IF @varOpc = 2
    BEGIN
        UPDATE movimientos
        SET nombre = @varNombre,
            pk_partido = @varPkPartido,
            partido = @varPartido,
            url_foto = @varUrlFoto,
            modificado_por = @varUsuario,
            fecha_hora_modificado = GETDATE()
        WHERE pk_movimiento = @varPkMovimiento;

        SET @save = 1;
        SET @result = 'Registro actualizado correctamente';
        SET @varPkMovimiento = @varPkMovimiento;
    END
    ELSE
    BEGIN
        SET @result = 'Opción no válida';
    END

    SELECT @save AS 'save', @result AS result, @varPkMovimiento AS pk;
END;
GO

--
-- Create or alter procedure [dbo].[VOT_get_movimientos]
--
GO
PRINT (N'Create or alter procedure [dbo].[VOT_get_movimientos]')
GO
CREATE OR ALTER PROCEDURE dbo.VOT_get_movimientos
    @varPK INT,
    @opc INT
AS
BEGIN
    SELECT
    movimiento.*,
    partido.nombre AS pk_partido_nombre,
    partido.abreviatura AS pk_partido_abreviatura
    FROM movimientos movimiento
    LEFT JOIN partidos partido ON partido.pk_partido = movimiento.pk_partido
    WHERE (@varPK = 0 OR movimiento.pk_movimiento = @varPK)
    AND (@opc = 0 OR movimiento.estado <> 3);
END;
GO

--
-- Create or alter procedure [dbo].[VOT_delete_movimientos]
--
GO
PRINT (N'Create or alter procedure [dbo].[VOT_delete_movimientos]')
GO
CREATE OR ALTER PROCEDURE dbo.VOT_delete_movimientos
    @varPk INT,
    @varUsuario INT,
    @varOpc INT -- 1 Borrado lógico, 2 Borrado físico
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @result NVARCHAR(200), @save INT = 0;

    IF @varOpc = 1 -- Borrado lógico
    BEGIN
        UPDATE movimientos
        SET estado = 3,
            modificado_por = @varUsuario,
            fecha_hora_modificado = GETDATE()
        WHERE pk_movimiento = @varPk;

        SET @save = 1;
        SET @result = 'Borrado lógico realizado correctamente';
    END
    ELSE IF @varOpc = 2 -- Borrado físico
    BEGIN
        DELETE FROM movimientos
        WHERE pk_movimiento = @varPk;

        SET @save = 1;
        SET @result = 'Borrado físico realizado correctamente';
    END
    ELSE
    BEGIN
        SET @result = 'Opción no válida';
    END

    SELECT @save AS 'save', @result AS result;
END;
GO

--
-- Create table [dbo].[miembros]
--
PRINT (N'Create table [dbo].[miembros]')
GO
CREATE TABLE dbo.miembros (
  id_miembro int IDENTITY,
  nombres varchar(255) NOT NULL,
  apellidos varchar(50) NULL,
  dni varchar(50) NOT NULL,
  direccion varchar(255) NULL,
  catalogo_profesion_id int NULL,
  correo_electronico varchar(255) NULL,
  telefono1 varchar(100) NULL,
  telefono2 varchar(20) NULL,
  horario_trabajo_estudio varchar(100) NULL,
  disponibilidad_capacitacion datetime NULL,
  ha_participado_procesos_electorales bit NULL DEFAULT (0),
  ha_sido_miembro_mer bit NULL DEFAULT (0),
  ultimo_proceso date NULL,
  uso_manejo_computador bit NULL DEFAULT (0),
  lo_basico bit NULL DEFAULT (0),
  tiene_experiencia_trep bit NULL DEFAULT (0),
  entrega_materiales bit NULL DEFAULT (0),
  observaciones varchar(max) NULL,
  foto_url varchar(255) NULL,
  foto_url_2 varchar(255) NULL,
  empresa_id int NULL,
  catalogo_escolaridad_id int NULL DEFAULT (0),
  horario_texto varchar(500) NULL DEFAULT ('.'),
  es_candidato bit NULL DEFAULT (0),
  fecha_nacimiento date NULL,
  vehiculo bit NULL DEFAULT (0),
  estado int NULL DEFAULT (1),
  creado_por varchar(100) NULL,
  fecha_hora_creacion datetime NULL DEFAULT (getdate()),
  modificado_por varchar(100) NULL,
  fecha_hora_modificado datetime NULL,
  asignaciones varchar(50) NULL,
  id_categoria_confianza varchar(50) NULL DEFAULT (1),
  id_refiere int NULL DEFAULT (0),
  sexo int NULL DEFAULT (1),
  tipo_miembro_id int NULL DEFAULT (2),
  id_posible_rol int NULL DEFAULT (0),
  PRIMARY KEY CLUSTERED (id_miembro)
)
ON [PRIMARY]
TEXTIMAGE_ON [PRIMARY]
GO

--
-- Create or alter procedure [dbo].[sp_update_foto2]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_update_foto2]')
GO
CREATE OR ALTER PROCEDURE dbo.sp_update_foto2
    @persona_id INT,
    @foto_url VARCHAR(255)
AS
BEGIN
    SET NOCOUNT ON;

    UPDATE dbo.miembros
    SET foto_url_2 = @foto_url
    WHERE id_miembro = @persona_id;
END;
GO

--
-- Create or alter procedure [dbo].[sp_update_foto]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_update_foto]')
GO
CREATE OR ALTER PROCEDURE dbo.sp_update_foto
    @persona_id INT,
    @foto_url VARCHAR(255)
AS
BEGIN
    SET NOCOUNT ON;

    UPDATE dbo.miembros
    SET foto_url = @foto_url
    WHERE id_miembro = @persona_id;
END;
GO

--
-- Create or alter procedure [dbo].[sp_get_referentes_all]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_get_referentes_all]')
GO
CREATE OR ALTER PROCEDURE dbo.sp_get_referentes_all
AS
BEGIN
    SET NOCOUNT ON;
    SELECT *
    FROM dbo.miembros
    WHERE tipo_miembro_id = 3;
    
END;
GO

--
-- Create or alter procedure [dbo].[MBR_update_miembro]
--
GO
PRINT (N'Create or alter procedure [dbo].[MBR_update_miembro]')
GO
CREATE OR ALTER PROCEDURE dbo.MBR_update_miembro
    @id INT,
    @nombres VARCHAR(255),
    @apellidos VARCHAR(50),
    @dni VARCHAR(20),
    @direccion VARCHAR(255),
    @catalogo_profesion_id INT,
    @telefono1 VARCHAR(20),
    @telefono2 VARCHAR(20),
    @horario_trabajo_estudio VARCHAR(100),
    @disponibilidad_capacitacion DATETIME,
    @ha_participado_procesos_electorales BIT,
    @ha_sido_miembro_mer BIT,
    @ultimo_proceso DATE,
    @uso_manejo_computador BIT,
    @lo_basico BIT,
    @tiene_experiencia_trep BIT,
    @entrega_materiales BIT,
    @referido_id VARCHAR(100),
    @observaciones VARCHAR(MAX),
    @foto_url VARCHAR(255),
    @foto_url_2 VARCHAR(255),
    @empresa_id INT,
    @sexo VARCHAR(20),
    @catalogo_escolaridad_id INT,
    @horario_texto VARCHAR(500),
    @es_candidato BIT,
    @correo_electronico VARCHAR(255),
    @fecha_nacimiento DATE,
    @vehiculo BIT,
    @tipo_miembro_id VARCHAR(50),
    @estado INT,
    @asignaciones VARCHAR(50),
    @id_categoria_confianza VARCHAR(50),
    @modificado_por VARCHAR(100)
AS
BEGIN
    SET NOCOUNT ON;

    UPDATE dbo.miembros
    SET 
        nombres = UPPER(@nombres),
        apellidos = UPPER(@apellidos),
        dni = UPPER(@dni),
        direccion = UPPER(@direccion),
        catalogo_profesion_id = @catalogo_profesion_id,
        telefono1 = @telefono1,
        telefono2 = @telefono2,
        horario_trabajo_estudio = UPPER(@horario_trabajo_estudio),
        disponibilidad_capacitacion = @disponibilidad_capacitacion,
        ha_participado_procesos_electorales = @ha_participado_procesos_electorales,
        ha_sido_miembro_mer = @ha_sido_miembro_mer,
        ultimo_proceso = @ultimo_proceso,
        uso_manejo_computador = @uso_manejo_computador,
        lo_basico = @lo_basico,
        tiene_experiencia_trep = @tiene_experiencia_trep,
        entrega_materiales = @entrega_materiales,
        id_refiere = UPPER(@referido_id),
        observaciones = UPPER(@observaciones),
        foto_url = UPPER(@foto_url),
        foto_url_2 = UPPER(@foto_url_2),
        empresa_id = @empresa_id,
        sexo = UPPER(@sexo),
        catalogo_escolaridad_id = @catalogo_escolaridad_id,
        horario_texto = UPPER(@horario_texto),
        es_candidato = @es_candidato,
        correo_electronico = UPPER(@correo_electronico),
        fecha_nacimiento = @fecha_nacimiento,
        vehiculo = @vehiculo,
        tipo_miembro_id = UPPER(@tipo_miembro_id),
        estado = 2,
        asignaciones = UPPER(@asignaciones),
        id_categoria_confianza = UPPER(@id_categoria_confianza),
        modificado_por = UPPER(@modificado_por),
        fecha_hora_modificado = GETDATE()
    WHERE id_miembro = @id;
END;
GO

--
-- Create or alter procedure [dbo].[MBR_insert_miembro]
--
GO
PRINT (N'Create or alter procedure [dbo].[MBR_insert_miembro]')
GO
CREATE OR ALTER PROCEDURE dbo.MBR_insert_miembro
    @nombres                     VARCHAR(255),
    @apellidos                   VARCHAR(255),
    @dni                         VARCHAR(20),
    @direccion                   VARCHAR(255),
    @catalogo_profesion_id       INT,
    @telefono1                   VARCHAR(20),
    @telefono2                   VARCHAR(20),
    @horario_trabajo_estudio     VARCHAR(100),
    @disponibilidad_capacitacion DATETIME,
    @ha_participado_procesos_electorales BIT,
    @ha_sido_miembro_mer         BIT,
    @ultimo_proceso              DATE,
    @uso_manejo_computador       BIT,
    @lo_basico                   BIT,
    @tiene_experiencia_trep      BIT,
    @entrega_materiales          BIT,
    @id_refiere                  VARCHAR(100),
    @observaciones               VARCHAR(MAX),
    @foto_url                    VARCHAR(255),
    @foto_url_2                  VARCHAR(255),
    @empresa_id                  INT,
    @sexo                        INT,
    @catalogo_escolaridad_id     INT,
    @horario_texto               VARCHAR(500),
    @es_candidato                BIT,
    @correo_electronico          VARCHAR(255),
    @fecha_nacimiento            DATE,
    @vehiculo                    BIT,
    @id_categoria_confianza      INT,
    @asignaciones                VARCHAR(255),
    @tipo_miembro_id             VARCHAR(50),
    @estado                      INT,
    @creado_por                  VARCHAR(100),

    -- <--- NUEVO: parámetro de salida para devolver el ID recién creado
    @new_id INT = 0 OUTPUT
AS
BEGIN
    SET NOCOUNT ON;

    BEGIN TRANSACTION;

    -- Verificar si el DNI ya existe con estado diferente de 3
    IF EXISTS (
        SELECT 1 FROM dbo.miembros
        WHERE dni = @dni AND estado <> 3
    )
    BEGIN
        ROLLBACK TRANSACTION;
        RAISERROR('No se puede insertar. El DNI ya está registrado con un estado diferente de 3.', 16, 1);
        RETURN;
    END

    -- Si pasa la validación, insertar el nuevo miembro
    INSERT INTO dbo.miembros (
        nombres, apellidos, dni, direccion, catalogo_profesion_id, telefono1, telefono2,
        horario_trabajo_estudio, disponibilidad_capacitacion,
        ha_participado_procesos_electorales, ha_sido_miembro_mer, ultimo_proceso,
        uso_manejo_computador, lo_basico, tiene_experiencia_trep, entrega_materiales,
        id_refiere, observaciones, foto_url, foto_url_2, empresa_id, sexo,
        catalogo_escolaridad_id, horario_texto, es_candidato, correo_electronico,
        fecha_nacimiento, vehiculo, id_categoria_confianza, asignaciones,
        tipo_miembro_id, estado, creado_por, fecha_hora_creacion
    )
    VALUES (
        UPPER(@nombres), UPPER(@apellidos), UPPER(@dni), UPPER(@direccion),
        @catalogo_profesion_id, @telefono1, @telefono2, UPPER(@horario_trabajo_estudio),
        @disponibilidad_capacitacion, @ha_participado_procesos_electorales,
        @ha_sido_miembro_mer, @ultimo_proceso, @uso_manejo_computador,
        @lo_basico, @tiene_experiencia_trep, @entrega_materiales,
        UPPER(@id_refiere), UPPER(@observaciones), UPPER(@foto_url), UPPER(@foto_url_2),
        @empresa_id, UPPER(@sexo), @catalogo_escolaridad_id, UPPER(@horario_texto),
        @es_candidato, @correo_electronico, @fecha_nacimiento, @vehiculo,
        @id_categoria_confianza, UPPER(@asignaciones), UPPER(@tipo_miembro_id),
        @estado, UPPER(@creado_por), GETDATE()
    );

    -- Obtener el ID recién generado en la tabla miembros
    SET @new_id = SCOPE_IDENTITY();

    COMMIT TRANSACTION;
END;
GO

--
-- Create or alter procedure [dbo].[MBR_get_all_miembros]
--
GO
PRINT (N'Create or alter procedure [dbo].[MBR_get_all_miembros]')
GO
CREATE OR ALTER PROCEDURE dbo.MBR_get_all_miembros
AS
BEGIN
    SELECT * FROM dbo.miembros
    WHERE dbo.miembros.estado <>3;
END


GO

--
-- Create or alter procedure [dbo].[MBR_delete_miembro]
--
GO
PRINT (N'Create or alter procedure [dbo].[MBR_delete_miembro]')
GO
CREATE OR ALTER PROCEDURE dbo.MBR_delete_miembro
    @id INT,
    @modificado_por VARCHAR(100)
AS
BEGIN
    SET NOCOUNT ON;

    UPDATE dbo.miembros
    SET estado = 3,  -- Marcado como eliminado (borrado suave)
        modificado_por = @modificado_por,
        fecha_hora_modificado = GETDATE()
    WHERE id_miembro = @id;
END;
GO

--
-- Create table [dbo].[jrv]
--
PRINT (N'Create table [dbo].[jrv]')
GO
CREATE TABLE dbo.jrv (
  id int IDENTITY,
  codigo varchar(50) NULL,
  ubicacion varchar(255) NULL,
  carga varchar(50) NULL,
  centro_votacion_id int NULL,
  cargo_id int NULL,
  proceso_pk int NULL,
  creado_por varchar(100) NULL,
  estado int NULL,
  fecha_hora_creado datetime NULL DEFAULT (getdate()),
  modificado_por varchar(100) NULL,
  fecha_hora_modifcado datetime NULL,
  empresa_id int NULL,
  PRIMARY KEY CLUSTERED (id)
)
ON [PRIMARY]
GO

--
-- Create or alter procedure [dbo].[sp_update_jrv]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_update_jrv]')
GO
CREATE OR ALTER PROCEDURE dbo.sp_update_jrv
    @id INT,
    @codigo VARCHAR(50) = NULL,
    @ubicacion VARCHAR(255) = NULL,
    @carga VARCHAR(50) = NULL,
    @cargo_id INT = NULL,
    @proceso_pk INT = NULL,
    @modificado_por VARCHAR(100) = NULL,
    @centro_votacion_id INT = NULL  -- Actualiza el centro asociado si es necesario
AS
BEGIN
    SET NOCOUNT ON;

    UPDATE dbo.jrv
    SET codigo = UPPER(@codigo),
        ubicacion = UPPER(@ubicacion),
        carga = UPPER(@carga),
        cargo_id = @cargo_id,
        proceso_pk = @proceso_pk,
        modificado_por = UPPER(@modificado_por),
        fecha_hora_modifcado = GETDATE(),
        centro_votacion_id = @centro_votacion_id
    WHERE id = @id;
END;
GO

--
-- Create or alter procedure [dbo].[sp_insert_jrv]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_insert_jrv]')
GO
CREATE OR ALTER PROCEDURE dbo.sp_insert_jrv
    @codigo VARCHAR(50) = NULL,  
    @ubicacion VARCHAR(255) = NULL,
    @carga VARCHAR(50) = NULL,
    @centro_votacion_id INT = NULL,
    @cargo_id INT = NULL,
    @proceso_pk INT = NULL,
    @creado_por VARCHAR(100) = NULL,
    @empresa_id INT = NULL
AS
BEGIN
    SET NOCOUNT ON;

    -- Validar que no exista ya la JRV con el mismo código en el mismo centro de votación
    -- donde el estado sea distinto a 3.
    IF EXISTS (
        SELECT 1 
        FROM dbo.jrv 
        WHERE codigo = UPPER(@codigo) 
          AND centro_votacion_id = @centro_votacion_id
          AND estado <> 3
    )
    BEGIN
        RAISERROR('EL CÓDIGO YA EXISTE EN ESTE CENTRO DE VOTACIÓN.', 16, 1);
        RETURN;
    END

    INSERT INTO dbo.jrv 
        (codigo, ubicacion, carga, centro_votacion_id, cargo_id, proceso_pk, creado_por, estado, fecha_hora_creado, empresa_id)
    VALUES 
        (UPPER(@codigo), 
         UPPER(@ubicacion), 
         UPPER(@carga), 
         @centro_votacion_id, 
         @cargo_id, 
         @proceso_pk, 
         UPPER(@creado_por), 
         1, 
         GETDATE(), 
         @empresa_id);
    
    SELECT SCOPE_IDENTITY() AS nuevo_id;
END;
GO

--
-- Create or alter procedure [dbo].[sp_delete_jrv]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_delete_jrv]')
GO
CREATE OR ALTER PROCEDURE dbo.sp_delete_jrv
    @id INT
AS
BEGIN
    SET NOCOUNT ON;

    UPDATE dbo.jrv
    SET estado = 3,
        fecha_hora_modifcado = GETDATE()
    WHERE id = @id;
END
GO

--
-- Create table [dbo].[elecciones_tipo]
--
PRINT (N'Create table [dbo].[elecciones_tipo]')
GO
CREATE TABLE dbo.elecciones_tipo (
  pk_tipo int IDENTITY,
  nombre nvarchar(100) NULL,
  estado int NULL DEFAULT (1),
  creado_por int NULL,
  fecha_hora_creado datetime NULL DEFAULT (getdate()),
  modificado_por int NULL,
  fecha_hora_modificado datetime NULL,
  PRIMARY KEY CLUSTERED (pk_tipo)
)
ON [PRIMARY]
GO

--
-- Create or alter procedure [dbo].[VOT_insert_update_elecciones_tipo]
--
GO
PRINT (N'Create or alter procedure [dbo].[VOT_insert_update_elecciones_tipo]')
GO
CREATE OR ALTER PROCEDURE dbo.VOT_insert_update_elecciones_tipo
    @varPkTipo INT OUTPUT,
    @varNombre NVARCHAR(100),
    @varUsuario INT,
    @varOpc INT
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @result NVARCHAR(200), @save INT = 0;
    DECLARE @existe INT;

    -- MAYÚSCULAS
    SET @varNombre = UPPER(@varNombre);

    -- VALIDAR SI EL REGISTRO YA EXISTE
    SELECT @existe = COUNT(*)
    FROM elecciones_tipo
    WHERE nombre = @varNombre
        AND estado <> 3
        AND (@varOpc = 1 OR pk_tipo <> @varPkTipo);

    IF @existe > 0
    BEGIN
        SET @result = 'El nombre de este tipo de elecciones ya está en uso.';
        SELECT @save AS 'save', @result AS result;
        RETURN;
    END

    IF @varOpc = 1 
    BEGIN
        INSERT INTO elecciones_tipo
            (nombre, creado_por)
        VALUES
            (@varNombre, @varUsuario);

        SET @varPkTipo = SCOPE_IDENTITY();
        SET @save = 1;
        SET @result = 'Registro insertado correctamente';
    END
    ELSE IF @varOpc = 2
    BEGIN
        UPDATE elecciones_tipo
        SET nombre = @varNombre,
            modificado_por = @varUsuario,
            fecha_hora_modificado = GETDATE()
        WHERE pk_tipo = @varPkTipo;

        SET @save = 1;
        SET @result = 'Registro actualizado correctamente';
        SET @varPkTipo = @varPkTipo;
    END
    ELSE
    BEGIN
        SET @result = 'Opción no válida';
    END

    SELECT @save AS 'save', @result AS result, @varPkTipo AS pk;
END;
GO

--
-- Create or alter procedure [dbo].[VOT_get_elecciones_tipo]
--
GO
PRINT (N'Create or alter procedure [dbo].[VOT_get_elecciones_tipo]')
GO
CREATE OR ALTER PROCEDURE dbo.VOT_get_elecciones_tipo
    @varPK INT,
    @opc INT
AS
BEGIN
    SELECT * FROM elecciones_tipo
    WHERE (@varPK = 0 OR pk_tipo = @varPK)
    AND (@opc = 0 OR estado <> 3);
END;
GO

--
-- Create or alter procedure [dbo].[VOT_delete_elecciones_tipo]
--
GO
PRINT (N'Create or alter procedure [dbo].[VOT_delete_elecciones_tipo]')
GO
CREATE OR ALTER PROCEDURE dbo.VOT_delete_elecciones_tipo
    @varPk INT,
    @varUsuario INT,
    @varOpc INT -- 1 Borrado lógico, 2 Borrado físico
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @result NVARCHAR(200), @save INT = 0;

    IF @varOpc = 1 -- Borrado lógico
    BEGIN
        UPDATE elecciones_tipo
        SET estado = 3,
            modificado_por = @varUsuario,
            fecha_hora_modificado = GETDATE()
        WHERE pk_tipo = @varPk;

        SET @save = 1;
        SET @result = 'Borrado lógico realizado correctamente';
    END
    ELSE IF @varOpc = 2 -- Borrado físico
    BEGIN
        DELETE FROM elecciones_tipo
        WHERE pk_tipo = @varPk;

        SET @save = 1;
        SET @result = 'Borrado físico realizado correctamente';
    END
    ELSE
    BEGIN
        SET @result = 'Opción no válida';
    END

    SELECT @save AS 'save', @result AS result;
END;
GO

--
-- Create or alter procedure [dbo].[CAT_delete_elecciones_tipo]
--
GO
PRINT (N'Create or alter procedure [dbo].[CAT_delete_elecciones_tipo]')
GO
CREATE OR ALTER PROCEDURE dbo.CAT_delete_elecciones_tipo
    @varPk INT,
    @varOpc INT -- 1 Borrado lógico, 2 Borrado físico
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @result NVARCHAR(200), @save INT = 0;

    IF @varOpc = 1 -- Borrado lógico
    BEGIN
        UPDATE elecciones_tipo
        SET estado = 3
        WHERE pk_tipo = @varPk;

        SET @save = 1;
        SET @result = 'Borrado lógico realizado correctamente';
    END
    ELSE IF @varOpc = 2 -- Borrado físico
    BEGIN
        DELETE FROM elecciones_tipo
        WHERE pk_tipo = @varPk;

        SET @save = 1;
        SET @result = 'Borrado físico realizado correctamente';
    END
    ELSE
    BEGIN
        SET @result = 'Opción no válida';
    END

    SELECT @save AS 'save', @result AS result;
END;
GO

--
-- Create table [dbo].[elecciones_proceso_acta_tipo]
--
PRINT (N'Create table [dbo].[elecciones_proceso_acta_tipo]')
GO
CREATE TABLE dbo.elecciones_proceso_acta_tipo (
  pk_tipo int IDENTITY,
  nombre nvarchar(100) NULL,
  estado int NULL DEFAULT (1),
  creado_por int NULL,
  fecha_hora_creado datetime NULL DEFAULT (getdate()),
  modificado_por int NULL,
  fecha_hora_modificado datetime NULL,
  PRIMARY KEY CLUSTERED (pk_tipo)
)
ON [PRIMARY]
GO

--
-- Create or alter procedure [dbo].[VOT_insert_update_elecciones_proceso_acta_tipo]
--
GO
PRINT (N'Create or alter procedure [dbo].[VOT_insert_update_elecciones_proceso_acta_tipo]')
GO
CREATE OR ALTER PROCEDURE dbo.VOT_insert_update_elecciones_proceso_acta_tipo
    @varPkTipo INT OUTPUT,
    @varNombre NVARCHAR(100),
    @varUsuario INT,
    @varOpc INT
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @result NVARCHAR(200), @save INT = 0;
    DECLARE @existe INT;

    -- MAYÚSCULAS
    SET @varNombre = UPPER(@varNombre);

    -- VALIDAR SI YA EXISTE
    SELECT @existe = COUNT(*)
    FROM elecciones_proceso_acta_tipo
    WHERE nombre = @varNombre
        AND estado <> 3
        AND (@varOpc = 1 OR pk_tipo <> @varPkTipo);

    IF @existe > 0
    BEGIN
        SET @result = 'El nombre del tipo de acta ya existe.';
        SELECT @save AS 'save', @result AS result;
        RETURN;
    END

    IF @varOpc = 1 -- INSERTAR
    BEGIN
        INSERT INTO elecciones_proceso_acta_tipo (nombre, creado_por)
        VALUES (@varNombre, @varUsuario);

        SET @varPkTipo = SCOPE_IDENTITY();
        SET @save = 1;
        SET @result = 'Registro insertado correctamente';
    END
    ELSE IF @varOpc = 2 -- ACTUALIZAR
    BEGIN
        UPDATE elecciones_proceso_acta_tipo
        SET nombre = @varNombre,
            modificado_por = @varUsuario,
            fecha_hora_modificado = GETDATE()
        WHERE pk_tipo = @varPkTipo;

        SET @save = 1;
        SET @result = 'Registro actualizado correctamente';
    END
    ELSE
    BEGIN
        SET @result = 'Opción no válida';
    END

    SELECT @save AS 'save', @result AS result, @varPkTipo AS pk;
END;
GO

--
-- Create or alter procedure [dbo].[VOT_get_elecciones_proceso_acta_tipo]
--
GO
PRINT (N'Create or alter procedure [dbo].[VOT_get_elecciones_proceso_acta_tipo]')
GO
CREATE OR ALTER PROCEDURE dbo.VOT_get_elecciones_proceso_acta_tipo
    @varPK INT,
    @opc INT
AS
BEGIN
    SELECT * FROM elecciones_proceso_acta_tipo
    WHERE (@varPK = 0 OR pk_tipo = @varPK)
    AND (@opc = 0 OR estado <> 3);
END;
GO

--
-- Create or alter procedure [dbo].[VOT_delete_elecciones_proceso_acta_tipo]
--
GO
PRINT (N'Create or alter procedure [dbo].[VOT_delete_elecciones_proceso_acta_tipo]')
GO
CREATE OR ALTER PROCEDURE dbo.VOT_delete_elecciones_proceso_acta_tipo
    @varPk INT,
    @varUsuario INT,
    @varOpc INT
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @result NVARCHAR(200), @save INT = 0;

    IF @varOpc = 1
    BEGIN
        UPDATE elecciones_proceso_acta_tipo
        SET estado = 3,
            modificado_por = @varUsuario,
            fecha_hora_modificado = GETDATE()
        WHERE pk_tipo = @varPk;

        SET @save = 1;
        SET @result = 'Borrado lógico realizado correctamente';
    END
    ELSE IF @varOpc = 2
    BEGIN
        DELETE FROM elecciones_proceso_acta_tipo
        WHERE pk_tipo = @varPk;

        SET @save = 1;
        SET @result = 'Borrado físico realizado correctamente';
    END
    ELSE
    BEGIN
        SET @result = 'Opción no válida';
    END

    SELECT @save AS 'save', @result AS result;
END;
GO

--
-- Create table [dbo].[elecciones_proceso_acta]
--
PRINT (N'Create table [dbo].[elecciones_proceso_acta]')
GO
CREATE TABLE dbo.elecciones_proceso_acta (
  pk_acta int IDENTITY,
  pk_tipo int NULL,
  pk_proceso int NULL,
  pk_partido int NULL,
  pk_jrv int NULL,
  fecha_hora_inicio datetime NULL,
  fecha_hora_finalizacion datetime NULL,
  cantidad_papeletas_recibidas int NULL,
  cantidad_papeletas_sobrantes int NULL,
  cantidad_papeletas_utilizadas int NULL,
  cantidad_votantes_ciudadanos int NULL,
  cantidad_votantes_jrv int NULL,
  cantidad_votantes_informaticos_electorales int NULL,
  cantidad_votantes_total int NULL,
  cantidad_votos_en_blanco int NULL,
  cantidad_votos_nulos int NULL,
  cantidad_votos_total int NULL,
  cantidad_papeletas_validas int NULL,
  cantidad_papeletas_en_blanco int NULL,
  cantidad_papeletas_nulas int NULL,
  url_foto nvarchar(255) NULL,
  estado int NULL DEFAULT (1),
  creado_por int NULL,
  fecha_hora_creado datetime NULL DEFAULT (getdate()),
  modificado_por int NULL,
  fecha_hora_modificado datetime NULL,
  PRIMARY KEY CLUSTERED (pk_acta)
)
ON [PRIMARY]
GO

--
-- Create or alter procedure [dbo].[VOT_insert_update_elecciones_proceso_acta]
--
GO
PRINT (N'Create or alter procedure [dbo].[VOT_insert_update_elecciones_proceso_acta]')
GO

CREATE OR ALTER PROCEDURE dbo.VOT_insert_update_elecciones_proceso_acta
    @varPkActa INT OUTPUT,
    @varPkTipo INT,
    @varPkProceso INT,
    @varPkPartido INT,
    @varPkJrv INT,
    @varFechaHoraInicio DATETIME,
    @varFechaHoraFinalizacion DATETIME,
    @varCantidadPapeletasRecibidas INT,
    @varCantidadPapeletasSobrantes INT,
    @varCantidadPapeletasUtilizadas INT,
    @varCantidadVotantesCiudadanos INT,
    @varCantidadVotantesJrv INT,
    @varCantidadVotantesInformaticosElectorales INT,
    @varCantidadVotantesTotal INT,
    @varCantidadVotosEnBlanco INT,
    @varCantidadVotosNulos INT,
    @varCantidadVotosTotal INT,
    @varCantidadPapeletasValidas INT,
    @varCantidadPapeletasEnBlanco INT,
    @varCantidadPapeletasNulas INT,
    @varUrlFoto NVARCHAR(255),
    @varUsuario INT,
    @varOpc INT
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @result NVARCHAR(200), @save INT = 0;
    DECLARE @existe INT;

    -- VALIDAR SI YA EXISTE
    SELECT @existe = COUNT(*)
    FROM elecciones_proceso_acta
    WHERE pk_proceso = @varPkProceso
        AND pk_partido = @varPkPartido
        AND pk_tipo = @varPkTipo
        AND pk_jrv = @varPkJrv
        AND estado <> 3
        AND (@varOpc = 1 OR pk_acta <> @varPkActa);

    IF @existe > 0
    BEGIN
        -- CAMPOS ADICIONALES
        DECLARE @acta_tipo_nombre NVARCHAR(200),
        @partido_nombre_abreviatura NVARCHAR(200);

        SELECT @acta_tipo_nombre = tipo.nombre
        FROM elecciones_proceso_acta_tipo tipo
        WHERE tipo.pk_tipo = @varPkTipo;

        SELECT @partido_nombre_abreviatura = CONCAT(partido.nombre, ' (', partido.abreviatura, ')')
        FROM partidos partido
        WHERE partido.pk_partido = @varPkPartido;

        SET @result = CONCAT('Esta Junta Receptora de Votos ya registró una "', @acta_tipo_nombre,'" para el partido "', @partido_nombre_abreviatura,'".');
        SELECT @save AS 'save', @result AS result;
        RETURN;
    END

    IF @varOpc = 1 -- INSERTAR
    BEGIN
        INSERT INTO elecciones_proceso_acta
            (pk_tipo, pk_proceso, pk_partido, pk_jrv, fecha_hora_inicio, fecha_hora_finalizacion, cantidad_papeletas_recibidas,
             cantidad_papeletas_sobrantes, cantidad_papeletas_utilizadas, cantidad_votantes_ciudadanos, cantidad_votantes_jrv, cantidad_votantes_informaticos_electorales, cantidad_votantes_total,
             cantidad_votos_en_blanco, cantidad_votos_nulos, cantidad_votos_total, cantidad_papeletas_validas, cantidad_papeletas_en_blanco, cantidad_papeletas_nulas,
             url_foto, creado_por)
        VALUES
            (@varPkTipo, @varPkProceso, @varPkPartido, @varPkJrv, @varFechaHoraInicio, @varFechaHoraFinalizacion, @varCantidadPapeletasRecibidas,
             @varCantidadPapeletasSobrantes, @varCantidadPapeletasUtilizadas, @varCantidadVotantesCiudadanos, @varCantidadVotantesJrv, @varCantidadVotantesInformaticosElectorales, @varCantidadVotantesTotal,
             @varCantidadVotosEnBlanco, @varCantidadVotosNulos, @varCantidadVotosTotal, @varCantidadPapeletasValidas, @varCantidadPapeletasEnBlanco, @varCantidadPapeletasNulas,
             @varUrlFoto, @varUsuario);

        SET @varPkActa = SCOPE_IDENTITY();
        SET @save = 1;
        SET @result = 'Registro insertado correctamente';
    END
    ELSE IF @varOpc = 2 -- ACTUALIZAR
    BEGIN
        UPDATE elecciones_proceso_acta
        SET pk_tipo = @varPkTipo,
            pk_proceso = @varPkProceso,
            pk_partido = @varPkPartido,
            pk_jrv = @varPkJrv,
            fecha_hora_inicio = @varFechaHoraInicio,
            fecha_hora_finalizacion = @varFechaHoraFinalizacion,
            cantidad_papeletas_recibidas = @varCantidadPapeletasRecibidas,
            cantidad_papeletas_sobrantes = @varCantidadPapeletasSobrantes,
            cantidad_papeletas_utilizadas = @varCantidadPapeletasUtilizadas,
            cantidad_votantes_ciudadanos = @varCantidadVotantesCiudadanos,
            cantidad_votantes_jrv = @varCantidadVotantesJrv,
            cantidad_votantes_informaticos_electorales = @varCantidadVotantesInformaticosElectorales,
            cantidad_votantes_total = @varCantidadVotantesTotal,
            cantidad_votos_en_blanco = @varCantidadVotosEnBlanco,
            cantidad_votos_nulos = @varCantidadVotosNulos,
            cantidad_votos_total = @varCantidadVotosTotal,
            cantidad_papeletas_validas = @varCantidadPapeletasValidas,
            cantidad_papeletas_en_blanco = @varCantidadPapeletasEnBlanco,
            cantidad_papeletas_nulas = @varCantidadPapeletasNulas,
            url_foto = @varUrlFoto,
            modificado_por = @varUsuario,
            fecha_hora_modificado = GETDATE()
        WHERE pk_acta = @varPkActa;

        SET @save = 1;
        SET @result = 'Registro actualizado correctamente';
    END
    ELSE
    BEGIN
        SET @result = 'Opción no válida';
    END

    SELECT @save AS 'save', @result AS result, @varPkActa AS pk;
END;
GO

--
-- Create or alter procedure [dbo].[VOT_delete_elecciones_proceso_acta]
--
GO
PRINT (N'Create or alter procedure [dbo].[VOT_delete_elecciones_proceso_acta]')
GO
CREATE OR ALTER PROCEDURE dbo.VOT_delete_elecciones_proceso_acta
    @varPk INT,
    @varUsuario INT,
    @varOpc INT -- 1 Borrado lógico, 2 Borrado físico
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @result NVARCHAR(200), @save INT = 0;

    IF @varOpc = 1 -- Borrado lógico
    BEGIN
        UPDATE elecciones_proceso_acta
        SET estado = 3,
            modificado_por = @varUsuario,
            fecha_hora_modificado = GETDATE()
        WHERE pk_acta = @varPk;

        SET @save = 1;
        SET @result = 'Borrado lógico realizado correctamente';
    END
    ELSE IF @varOpc = 2 -- Borrado físico
    BEGIN
        DELETE FROM elecciones_proceso_acta
        WHERE pk_acta = @varPk;

        SET @save = 1;
        SET @result = 'Borrado físico realizado correctamente';
    END
    ELSE
    BEGIN
        SET @result = 'Opción no válida';
    END

    SELECT @save AS 'save', @result AS result;
END;
GO

--
-- Create table [dbo].[elecciones_proceso]
--
PRINT (N'Create table [dbo].[elecciones_proceso]')
GO
CREATE TABLE dbo.elecciones_proceso (
  pk_proceso int IDENTITY,
  pk_eleccion int NULL,
  anio int NULL,
  mes nvarchar(50) NULL,
  dia int NULL,
  estado int NULL DEFAULT (1),
  creado_por int NULL,
  fecha_hora_creado datetime NULL DEFAULT (getdate()),
  modificado_por int NULL,
  fecha_hora_modificado datetime NULL,
  PRIMARY KEY CLUSTERED (pk_proceso)
)
ON [PRIMARY]
GO

--
-- Create or alter procedure [dbo].[VOT_delete_elecciones_proceso]
--
GO
PRINT (N'Create or alter procedure [dbo].[VOT_delete_elecciones_proceso]')
GO
CREATE OR ALTER PROCEDURE dbo.VOT_delete_elecciones_proceso
    @varPk INT,
    @varUsuario INT,
    @varOpc INT -- 1 Borrado lógico, 2 Borrado físico
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @result NVARCHAR(200), @save INT = 0;

    IF @varOpc = 1 -- Borrado lógico
    BEGIN
        UPDATE elecciones_proceso
        SET estado = 3,
            modificado_por = @varUsuario,
            fecha_hora_modificado = GETDATE()
        WHERE pk_proceso = @varPk;

        SET @save = 1;
        SET @result = 'Borrado lógico realizado correctamente';
    END
    ELSE IF @varOpc = 2 -- Borrado físico
    BEGIN
        DELETE FROM elecciones_proceso
        WHERE pk_proceso = @varPk;

        SET @save = 1;
        SET @result = 'Borrado físico realizado correctamente';
    END
    ELSE
    BEGIN
        SET @result = 'Opción no válida';
    END

    SELECT @save AS 'save', @result AS result;
END;
GO

--
-- Create table [dbo].[centro_votacion]
--
PRINT (N'Create table [dbo].[centro_votacion]')
GO
CREATE TABLE dbo.centro_votacion (
  id int IDENTITY,
  nombre varchar(255) NOT NULL,
  ubicacion varchar(255) NULL,
  direccion varchar(255) NULL,
  descripcion varchar(max) NULL,
  estado int NOT NULL CONSTRAINT DF_centro_estado DEFAULT (1),
  fecha_hora_creacion datetime NOT NULL DEFAULT (getdate()),
  creado_por varchar(100) NULL,
  fecha_hora_modificacion datetime NULL,
  modificado_por varchar(100) NULL,
  pk_region int NULL,
  estado_nuevo int NOT NULL DEFAULT (1),
  empresa_id int NULL,
  PRIMARY KEY CLUSTERED (id)
)
ON [PRIMARY]
TEXTIMAGE_ON [PRIMARY]
GO

--
-- Create or alter procedure [dbo].[sp_update_centro_votacion]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_update_centro_votacion]')
GO
CREATE OR ALTER PROCEDURE dbo.sp_update_centro_votacion
    @id INT,
    @nombre VARCHAR(255),
    @ubicacion VARCHAR(255) = NULL,
    @direccion VARCHAR(255) = NULL,
    @descripcion VARCHAR(MAX) = NULL,
    @modificado_por VARCHAR(100) = NULL,
    @pk_region INT = NULL  -- Actualización de la región asociada
AS
BEGIN
    SET NOCOUNT ON;

    UPDATE dbo.centro_votacion
    SET nombre = @nombre,
        ubicacion = @ubicacion,
        direccion = @direccion,
        descripcion = @descripcion,
        modificado_por = @modificado_por,
        fecha_hora_modificacion = GETDATE(),
        pk_region = @pk_region
    WHERE id = @id;
END
GO

--
-- Create or alter procedure [dbo].[sp_insert_centro_votacion]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_insert_centro_votacion]')
GO
CREATE OR ALTER PROCEDURE dbo.sp_insert_centro_votacion
    @nombre VARCHAR(255),
    @ubicacion VARCHAR(255) = NULL,
    @direccion VARCHAR(255) = NULL,
    @descripcion VARCHAR(MAX) = NULL,
    @creado_por VARCHAR(100) = NULL,
    @pk_region INT = NULL,  
    @empresa_id INT = NULL  
AS
BEGIN
    SET NOCOUNT ON;

    INSERT INTO dbo.centro_votacion 
        (nombre, ubicacion, direccion, descripcion, estado, fecha_hora_creacion, creado_por, pk_region, empresa_id)
    VALUES 
        (UPPER(@nombre), 
         UPPER(@ubicacion), 
         UPPER(@direccion), 
         UPPER(@descripcion), 
         1, 
         GETDATE(), 
         UPPER(@creado_por), 
         @pk_region, 
         @empresa_id);
    
    SELECT SCOPE_IDENTITY() AS nuevo_id;
END
GO

--
-- Create or alter procedure [dbo].[sp_get_centro_votacion]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_get_centro_votacion]')
GO

CREATE OR ALTER PROCEDURE dbo.sp_get_centro_votacion
AS
BEGIN
    SET NOCOUNT ON;
    SELECT * FROM dbo.centro_votacion
    WHERE estado <> 3;
END
GO

--
-- Create or alter procedure [dbo].[sp_delete_centro_votacion]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_delete_centro_votacion]')
GO
CREATE OR ALTER PROCEDURE dbo.sp_delete_centro_votacion
    @id INT
AS
BEGIN
    SET NOCOUNT ON;

    UPDATE dbo.centro_votacion
    SET estado = 3,
        fecha_hora_modificacion = GETDATE()
    WHERE id = @id;
END
GO

--
-- Create table [dbo].[categoria_confianza]
--
PRINT (N'Create table [dbo].[categoria_confianza]')
GO
CREATE TABLE dbo.categoria_confianza (
  id int IDENTITY,
  nombre varchar(50) NULL,
  valor varchar(50) NULL,
  CONSTRAINT PK_categoria_confianza_id PRIMARY KEY CLUSTERED (id)
)
ON [PRIMARY]
GO

--
-- Create or alter procedure [dbo].[MRB_get_categorias_confianza]
--
GO
PRINT (N'Create or alter procedure [dbo].[MRB_get_categorias_confianza]')
GO
CREATE OR ALTER PROCEDURE dbo.MRB_get_categorias_confianza
AS
BEGIN
    

     SELECT *
       
    FROM dbo.categoria_confianza pc
END;
GO

--
-- Create table [dbo].[catalogo_sexos]
--
PRINT (N'Create table [dbo].[catalogo_sexos]')
GO
CREATE TABLE dbo.catalogo_sexos (
  pk_sexo int IDENTITY,
  nombre nvarchar(50) NULL,
  estado int NULL DEFAULT (1),
  creado_por int NULL,
  fecha_hora_creado datetime NULL DEFAULT (getdate()),
  modificado_por int NULL,
  fecha_hora_modificado datetime NULL,
  PRIMARY KEY CLUSTERED (pk_sexo)
)
ON [PRIMARY]
GO

--
-- Create or alter procedure [dbo].[CAT_insert_update_sexos]
--
GO
PRINT (N'Create or alter procedure [dbo].[CAT_insert_update_sexos]')
GO
CREATE OR ALTER PROCEDURE dbo.CAT_insert_update_sexos
    @varPkSexo INT OUTPUT,
    @varNombre NVARCHAR(50),
    @varUsuario INT,
    @varOpc INT
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @result NVARCHAR(200), @save INT = 0;
    DECLARE @existe INT;

    -- MAYÚSCULAS
    SET @varNombre = UPPER(@varNombre);

    -- VALIDAR SI EL REGISTRO YA EXISTE
    SELECT @existe = COUNT(*)
    FROM catalogo_sexos
    WHERE nombre = @varNombre
        AND estado <> 3
        AND (@varOpc = 1 OR pk_sexo <> @varPkSexo);

    IF @existe > 0
    BEGIN
        SET @result = 'El nombre de ese sexo ya está en uso.';
        SELECT @save AS 'save', @result AS result;
        RETURN;
    END

    IF @varOpc = 1 
    BEGIN
        INSERT INTO catalogo_sexos
            (nombre, creado_por)
        VALUES
            (@varNombre, @varUsuario);

        SET @varPkSexo = SCOPE_IDENTITY();
        SET @save = 1;
        SET @result = 'Registro insertado correctamente';
    END
    ELSE IF @varOpc = 2
    BEGIN
        UPDATE catalogo_sexos
        SET nombre = @varNombre,
            modificado_por = @varUsuario,
            fecha_hora_modificado = GETDATE()
        WHERE pk_sexo = @varPkSexo;

        SET @save = 1;
        SET @result = 'Registro actualizado correctamente';
        SET @varPkSexo = @varPkSexo;
    END
    ELSE
    BEGIN
        SET @result = 'Opción no válida';
    END

    SELECT @save AS 'save', @result AS result, @varPkSexo AS pk;
END;
GO

--
-- Create or alter procedure [dbo].[CAT_get_sexos]
--
GO
PRINT (N'Create or alter procedure [dbo].[CAT_get_sexos]')
GO
CREATE OR ALTER PROCEDURE dbo.CAT_get_sexos
    @varPK INT,
    @opc INT
AS
BEGIN
    SELECT * FROM catalogo_sexos
    WHERE (@varPK = 0 OR pk_sexo = @varPK)
    AND (@opc = 0 OR estado <> 3);
END;
GO

--
-- Create or alter procedure [dbo].[CAT_delete_sexos]
--
GO
PRINT (N'Create or alter procedure [dbo].[CAT_delete_sexos]')
GO
CREATE OR ALTER PROCEDURE dbo.CAT_delete_sexos
    @varPk INT,
    @varUsuario INT,
    @varOpc INT -- 1 Borrado lógico, 2 Borrado físico
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @result NVARCHAR(200), @save INT = 0;

    IF @varOpc = 1 -- Borrado lógico
    BEGIN
        UPDATE catalogo_sexos
        SET estado = 3,
            modificado_por = @varUsuario,
            fecha_hora_modificado = GETDATE()
        WHERE pk_sexo = @varPk;

        SET @save = 1;
        SET @result = 'Borrado lógico realizado correctamente';
    END
    ELSE IF @varOpc = 2 -- Borrado físico
    BEGIN
        DELETE FROM catalogo_sexos
        WHERE pk_sexo = @varPk;

        SET @save = 1;
        SET @result = 'Borrado físico realizado correctamente';
    END
    ELSE
    BEGIN
        SET @result = 'Opción no válida';
    END

    SELECT @save AS 'save', @result AS result;
END;
GO

--
-- Create table [dbo].[catalogo_regiones_tipo]
--
PRINT (N'Create table [dbo].[catalogo_regiones_tipo]')
GO
CREATE TABLE dbo.catalogo_regiones_tipo (
  pk_tipo int IDENTITY,
  nombre nvarchar(100) NULL,
  estado int NULL DEFAULT (1),
  creado_por int NULL,
  fecha_hora_creado datetime NULL DEFAULT (getdate()),
  modificado_por int NULL,
  fecha_hora_modificado datetime NULL,
  PRIMARY KEY CLUSTERED (pk_tipo)
)
ON [PRIMARY]
GO

--
-- Create or alter procedure [dbo].[CAT_insert_update_regiones_tipo]
--
GO
PRINT (N'Create or alter procedure [dbo].[CAT_insert_update_regiones_tipo]')
GO
CREATE OR ALTER PROCEDURE dbo.CAT_insert_update_regiones_tipo
    @varPkTipo INT OUTPUT,
    @varNombre NVARCHAR(100),
    @varUsuario INT,
    @varOpc INT
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @result NVARCHAR(200), @save INT = 0;
    DECLARE @existe INT;

    -- MAYÚSCULAS
    SET @varNombre = UPPER(@varNombre);

    -- VALIDAR SI EL REGISTRO YA EXISTE
    SELECT @existe = COUNT(*)
    FROM catalogo_regiones_tipo
    WHERE nombre = @varNombre
        AND estado <> 3
        AND (@varOpc = 1 OR pk_tipo <> @varPkTipo);

    IF @existe > 0
    BEGIN
        SET @result = 'El nombre de ese tipo de región ya está en uso.';
        SELECT @save AS 'save', @result AS result;
        RETURN;
    END

    IF @varOpc = 1 
    BEGIN
        INSERT INTO catalogo_regiones_tipo
            (nombre, creado_por)
        VALUES
            (@varNombre, @varUsuario);

        SET @varPkTipo = SCOPE_IDENTITY();
        SET @save = 1;
        SET @result = 'Registro insertado correctamente';
    END
    ELSE IF @varOpc = 2
    BEGIN
        UPDATE catalogo_regiones_tipo
        SET nombre = @varNombre,
            modificado_por = @varUsuario,
            fecha_hora_modificado = GETDATE()
        WHERE pk_tipo = @varPkTipo;

        SET @save = 1;
        SET @result = 'Registro actualizado correctamente';
        SET @varPkTipo = @varPkTipo;
    END
    ELSE
    BEGIN
        SET @result = 'Opción no válida';
    END

    SELECT @save AS 'save', @result AS result, @varPkTipo AS pk;
END;
GO

--
-- Create or alter procedure [dbo].[CAT_get_regiones_tipo]
--
GO
PRINT (N'Create or alter procedure [dbo].[CAT_get_regiones_tipo]')
GO
CREATE OR ALTER PROCEDURE dbo.CAT_get_regiones_tipo
    @varPK INT,
    @opc INT
AS
BEGIN
    SELECT * FROM catalogo_regiones_tipo
    WHERE (@varPK = 0 OR pk_tipo = @varPK)
    AND (@opc = 0 OR estado <> 3);
END;
GO

--
-- Create or alter procedure [dbo].[CAT_delete_regiones_tipo]
--
GO
PRINT (N'Create or alter procedure [dbo].[CAT_delete_regiones_tipo]')
GO
CREATE OR ALTER PROCEDURE dbo.CAT_delete_regiones_tipo
    @varPk INT,
    @varUsuario INT,
    @varOpc INT -- 1 Borrado lógico, 2 Borrado físico
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @result NVARCHAR(200), @save INT = 0;

    IF @varOpc = 1 -- Borrado lógico
    BEGIN
        UPDATE catalogo_regiones_tipo
        SET estado = 3,
            modificado_por = @varUsuario,
            fecha_hora_modificado = GETDATE()
        WHERE pk_tipo = @varPk;

        SET @save = 1;
        SET @result = 'Borrado lógico realizado correctamente';
    END
    ELSE IF @varOpc = 2 -- Borrado físico
    BEGIN
        DELETE FROM catalogo_regiones_tipo
        WHERE pk_tipo = @varPk;

        SET @save = 1;
        SET @result = 'Borrado físico realizado correctamente';
    END
    ELSE
    BEGIN
        SET @result = 'Opción no válida';
    END

    SELECT @save AS 'save', @result AS result;
END;
GO

--
-- Create table [dbo].[catalogo_regiones]
--
PRINT (N'Create table [dbo].[catalogo_regiones]')
GO
CREATE TABLE dbo.catalogo_regiones (
  pk_region int IDENTITY,
  codigo_region varchar(10) NULL,
  nombre nvarchar(100) NULL,
  es_urbana bit NULL DEFAULT (0),
  pk_tipo int NULL DEFAULT (0),
  pk_region_mayor int NULL DEFAULT (0),
  estado int NULL DEFAULT (1),
  creado_por varchar(50) NULL,
  fecha_hora_creado datetime NULL DEFAULT (getdate()),
  modificado_por varchar(50) NULL,
  fecha_hora_modificado datetime NULL,
  PRIMARY KEY CLUSTERED (pk_region)
)
ON [PRIMARY]
GO

--
-- Create or alter procedure [dbo].[VOT_insert_update_partidos]
--
GO
PRINT (N'Create or alter procedure [dbo].[VOT_insert_update_partidos]')
GO
CREATE OR ALTER PROCEDURE dbo.VOT_insert_update_partidos
    @varPkPartido INT OUTPUT,
    @varNombre NVARCHAR(100),
    @varAbreviatura NVARCHAR(100),
    @varPkRegion INT,
    @varUrlFoto NVARCHAR(255),
    @varUsuario INT,
    @varOpc INT
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @result NVARCHAR(200), @save INT = 0;
    DECLARE @existe INT;

    -- MAYÚSCULAS
    SET @varNombre = UPPER(@varNombre);

    -- VALIDAR SI EL REGISTRO YA EXISTE
    SELECT @existe = COUNT(*)
    FROM partidos
    WHERE nombre = @varNombre
        AND pk_region = @varPkRegion
        AND estado <> 3
        AND (@varOpc = 1 OR pk_partido <> @varPkPartido);

    IF @existe > 0
    BEGIN
        -- ADICIONALES
        DECLARE @region_nombre NVARCHAR(200), @tiporegion_nombre NVARCHAR(200);

        SELECT @region_nombre = r.nombre, @tiporegion_nombre = t.nombre
        FROM catalogo_regiones r
            LEFT JOIN catalogo_regiones_tipo t ON t.pk_tipo = r.pk_tipo
        WHERE r.pk_region = @varPkRegion;

        SET @result = CONCAT('El nombre de ese partido ya está en uso en "', @region_nombre, ' (', @tiporegion_nombre,')".');
        SELECT @save AS 'save', @result AS result;
        RETURN;
    END

    IF @varOpc = 1 
    BEGIN
        INSERT INTO partidos
            (nombre, abreviatura, pk_region, url_foto, creado_por)
        VALUES
            (@varNombre, @varAbreviatura, @varPkRegion, @varUrlFoto, @varUsuario);

        SET @varPkPartido = SCOPE_IDENTITY();
        SET @save = 1;
        SET @result = 'Registro insertado correctamente';
    END
    ELSE IF @varOpc = 2
    BEGIN
        UPDATE partidos
        SET nombre = @varNombre,
            abreviatura = @varAbreviatura,
            pk_region = @varPkRegion,
            url_foto = @varUrlFoto,
            modificado_por = @varUsuario,
            fecha_hora_modificado = GETDATE()
        WHERE pk_partido = @varPkPartido;

        SET @save = 1;
        SET @result = 'Registro actualizado correctamente';
        SET @varPkPartido = @varPkPartido;
    END
    ELSE
    BEGIN
        SET @result = 'Opción no válida';
    END

    SELECT @save AS 'save', @result AS result, @varPkPartido AS pk;
END;
GO

--
-- Create or alter procedure [dbo].[VOT_get_partidos]
--
GO
PRINT (N'Create or alter procedure [dbo].[VOT_get_partidos]')
GO
CREATE OR ALTER PROCEDURE dbo.VOT_get_partidos
    @varPK INT,
    @opc INT
AS
BEGIN
    SELECT
    partido.*,
    region.nombre AS pk_region_nombre,
    region_tipo.nombre AS pk_region_pk_tipo_nombre
    FROM partidos partido
    LEFT JOIN catalogo_regiones region ON region.pk_region = partido.pk_region
    LEFT JOIN catalogo_regiones_tipo region_tipo ON region_tipo.pk_tipo = region.pk_tipo
    WHERE (@varPK = 0 OR partido.pk_partido = @varPK)
    AND (@opc = 0 OR partido.estado <> 3);
END;
GO

--
-- Create or alter procedure [dbo].[VOT_get_jrv]
--
GO
PRINT (N'Create or alter procedure [dbo].[VOT_get_jrv]')
GO
CREATE OR ALTER PROCEDURE dbo.VOT_get_jrv
    @varPK INT,
    @opc INT
AS
BEGIN
    SELECT
        -- Actas de tipo presidencial, municipal y diputados
        acta_presidencial.pk_acta AS pk_acta_presidencial,
        acta_municipal.pk_acta AS pk_acta_municipal,
        acta_diputados.pk_acta AS pk_acta_diputados,
        
        -- Información del JRV
        jrv.id,
        jrv.codigo,
        CASE 
            WHEN sector.nombre IS NOT NULL 
              THEN sector.nombre 
                   + CASE WHEN sector.pk_region_mayor IS NOT NULL THEN ' ' + municipio.nombre ELSE '' END 
                   + ' - ' + cv.nombre
            ELSE cv.nombre
        END AS ubicacion,
        jrv.estado,
        jrv.fecha_hora_creado,
        jrv.centro_votacion_id,
        cv.nombre AS centro_votacion_nombre,
        
        -- Jerarquía de regiones asociadas al centro de votación
        sector.pk_region AS pk_sector, sector.nombre AS pk_sector_nombre, sector.es_urbana AS pk_sector_es_urbana,
        municipio.pk_region AS pk_municipio, municipio.nombre AS pk_municipio_nombre,
        departamento.pk_region AS pk_departamento, departamento.nombre AS pk_departamento_nombre,
        pais.pk_region AS pk_pais, pais.nombre AS pk_pais_nombre
    FROM jrv jrv
        LEFT JOIN centro_votacion cv ON jrv.centro_votacion_id = cv.id
        LEFT JOIN catalogo_regiones sector ON cv.pk_region = sector.pk_region -- Sector
        LEFT JOIN catalogo_regiones municipio ON sector.pk_region_mayor = municipio.pk_region AND sector.pk_tipo = 4 -- Municipio
        LEFT JOIN catalogo_regiones departamento ON municipio.pk_region_mayor = departamento.pk_region AND municipio.pk_tipo = 3 -- Departamento
        LEFT JOIN catalogo_regiones pais ON departamento.pk_region_mayor = pais.pk_region AND departamento.pk_tipo = 2 -- País
        
        -- JOINs para obtener las actas según el tipo
        LEFT JOIN elecciones_proceso_acta acta_presidencial ON jrv.id = acta_presidencial.pk_jrv AND acta_presidencial.pk_tipo = 1 AND acta_presidencial.estado <> 3
        LEFT JOIN elecciones_proceso_acta acta_municipal ON jrv.id = acta_municipal.pk_jrv AND acta_municipal.pk_tipo = 3 AND acta_municipal.estado <> 3
        LEFT JOIN elecciones_proceso_acta acta_diputados ON jrv.id = acta_diputados.pk_jrv AND acta_diputados.pk_tipo = 2 AND acta_diputados.estado <> 3
        
    WHERE (@varPK = 0 OR jrv.id = @varPK)
        AND (@opc = 0 OR jrv.estado <> 3);
END;
GO

--
-- Create or alter procedure [dbo].[VOT_get_centros_votaciones]
--
GO
PRINT (N'Create or alter procedure [dbo].[VOT_get_centros_votaciones]')
GO
CREATE OR ALTER PROCEDURE dbo.VOT_get_centros_votaciones
    @varPK INT,
    @opc INT
AS
BEGIN
    SELECT 
        cv.id,
        cv.nombre,
        cv.ubicacion,
        cv.direccion,
        cv.descripcion,
        cv.estado,
        cv.empresa_id,
        cr1.pk_region AS pk_sector,      cr1.nombre AS pk_sector_nombre, cr1.es_urbana AS pk_sector_es_urbana,
        cr2.pk_region AS pk_municipio,   cr2.nombre AS pk_municipio_nombre,
        cr3.pk_region AS pk_departamento, cr3.nombre AS pk_departamento_nombre,
        cr4.pk_region AS pk_pais,        cr4.nombre AS pk_pais_nombre
    FROM centro_votacion cv
    LEFT JOIN catalogo_regiones cr1 ON cv.pk_region = cr1.pk_region -- Sector
    LEFT JOIN catalogo_regiones cr2 ON cr1.pk_region_mayor = cr2.pk_region AND cr1.pk_tipo = 4 -- Municipio
    LEFT JOIN catalogo_regiones cr3 ON cr2.pk_region_mayor = cr3.pk_region AND cr2.pk_tipo = 3 -- Departamento
    LEFT JOIN catalogo_regiones cr4 ON cr3.pk_region_mayor = cr4.pk_region AND cr3.pk_tipo = 2 -- País
    WHERE (@varPK = 0 OR cv.id = @varPK)
    AND (@opc = 0 OR cv.estado <> 3);
END;
GO

--
-- Create or alter procedure [dbo].[sp_get_regiones_tipo3]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_get_regiones_tipo3]')
GO
CREATE OR ALTER PROCEDURE dbo.sp_get_regiones_tipo3
AS
BEGIN
    SET NOCOUNT ON;

    SELECT 
        r.pk_region,
        r.nombre + CASE 
                     WHEN r.pk_region_mayor IS NOT NULL THEN ' ' + r_mayor.nombre 
                     ELSE '' 
                   END AS nombre
    FROM dbo.catalogo_regiones r
    LEFT JOIN dbo.catalogo_regiones r_mayor ON r.pk_region_mayor = r_mayor.pk_region
    INNER JOIN dbo.catalogo_regiones_tipo t ON r.pk_tipo = t.pk_tipo
    WHERE t.pk_tipo = 4
    ORDER BY r.nombre;
END
GO

--
-- Create or alter procedure [dbo].[sp_get_jrv_regiones]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_get_jrv_regiones]')
GO
CREATE OR ALTER PROCEDURE dbo.sp_get_jrv_regiones
AS
BEGIN
    SET NOCOUNT ON;

    SELECT 
        jrv.id,
        jrv.codigo,
        jrv.ubicacion,
        jrv.estado,
        jrv.carga,
        jrv.fecha_hora_creado,
        jrv.centro_votacion_id,
        cv.nombre AS centro_nombre,
        cr.nombre + ISNULL(' ' + r_mayor.nombre, '') AS Region,
        crt.nombre AS tipo_region,
        cr.pk_region,
        crt.pk_tipo,
        jrv.cargo_id,            -- Agregamos el id del cargo (rol)
        rjv.nombre_rol AS cargo  -- Se obtiene el nombre del rol
    FROM dbo.jrv
    LEFT JOIN dbo.centro_votacion cv ON jrv.centro_votacion_id = cv.id
    LEFT JOIN dbo.catalogo_regiones cr ON cv.pk_region = cr.pk_region
    LEFT JOIN dbo.catalogo_regiones r_mayor ON cr.pk_region_mayor = r_mayor.pk_region
    LEFT JOIN dbo.catalogo_regiones_tipo crt ON cr.pk_tipo = crt.pk_tipo
    LEFT JOIN dbo.rol_jrv rjv ON jrv.cargo_id = rjv.id
    WHERE jrv.estado <> 3 AND cv.estado <> 3
    ORDER BY jrv.id;
END
GO

--
-- Create or alter procedure [dbo].[sp_get_jrv]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_get_jrv]')
GO
CREATE OR ALTER PROCEDURE dbo.sp_get_jrv
AS
BEGIN
    SET NOCOUNT ON;

    SELECT 
        jrv.id,
        jrv.codigo,
        CASE 
            WHEN r.nombre IS NOT NULL 
              THEN r.nombre 
                   + CASE WHEN r.pk_region_mayor IS NOT NULL THEN ' ' + r_mayor.nombre ELSE '' END 
                   + ' - ' + cv.nombre
            ELSE cv.nombre
        END AS ubicacion,
        jrv.carga,
        jrv.estado,
        jrv.fecha_hora_creado,
        jrv.centro_votacion_id,
        cv.nombre AS centro_nombre
    FROM dbo.jrv
    LEFT JOIN dbo.centro_votacion cv ON jrv.centro_votacion_id = cv.id
    LEFT JOIN dbo.catalogo_regiones r ON cv.pk_region = r.pk_region AND r.pk_tipo = 3
    LEFT JOIN dbo.catalogo_regiones r_mayor ON r.pk_region_mayor = r_mayor.pk_region
    WHERE jrv.estado <> 3 AND cv.estado <> 3
    ORDER BY jrv.id;
END;
GO

--
-- Create or alter procedure [dbo].[sp_get_centros]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_get_centros]')
GO
CREATE OR ALTER PROCEDURE dbo.sp_get_centros
AS
BEGIN
    SET NOCOUNT ON;

    SELECT 
        cv.id,
        cv.nombre,
        cv.ubicacion,
        cv.direccion,
        cv.descripcion,
        cv.estado,
        cv.fecha_hora_creacion,
        cr.pk_region,
        cr.nombre + ISNULL(' ' + r_mayor.nombre, '') AS nombre_region,
        crt.nombre AS tipo_region
    FROM dbo.centro_votacion cv
    LEFT JOIN dbo.catalogo_regiones cr ON cv.pk_region = cr.pk_region
    LEFT JOIN dbo.catalogo_regiones r_mayor ON cr.pk_region_mayor = r_mayor.pk_region
    LEFT JOIN dbo.catalogo_regiones_tipo crt ON cr.pk_tipo = crt.pk_tipo
    WHERE cv.estado <> 3
    ORDER BY cv.id;
END
GO

--
-- Create or alter procedure [dbo].[CAT_insert_update_regiones]
--
GO
PRINT (N'Create or alter procedure [dbo].[CAT_insert_update_regiones]')
GO
CREATE OR ALTER PROCEDURE dbo.CAT_insert_update_regiones
    @varPkRegion INT OUTPUT,
    @varNombre NVARCHAR(100),
    @varPkTipo INT,
    @varEsUrbana INT,
    @varPkRegionMayor INT,
    @varUsuario INT,
    @varOpc INT
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @result NVARCHAR(200), @save INT = 0;
    DECLARE @existe INT;

    -- MAYÚSCULAS
    SET @varNombre = UPPER(@varNombre);

    -- VALIDAR SI EL REGISTRO YA EXISTE
    SELECT @existe = COUNT(*)
    FROM catalogo_regiones
    WHERE nombre = @varNombre
        AND pk_tipo = @varPkTipo
        AND estado <> 3
        AND (@varOpc = 1 OR pk_region <> @varPkRegion);

    IF @existe > 0
    BEGIN
        -- ADICIONALES
        DECLARE @tiporegion_nombre NVARCHAR(200);

        SELECT @tiporegion_nombre = nombre
        FROM catalogo_regiones_tipo
        WHERE pk_tipo = @varPkTipo;

        SET @result = CONCAT('El nombre de ese(a) ', @tiporegion_nombre ,' ya está en uso.');
        SELECT @save AS 'save', @result AS result;
        RETURN;
    END

    IF @varOpc = 1 
    BEGIN
        INSERT INTO catalogo_regiones
            (nombre, pk_tipo, es_urbana, pk_region_mayor, creado_por)
        VALUES
            (@varNombre, @varPkTipo, @varEsUrbana, @varPkRegionMayor, @varUsuario);

        SET @varPkRegion = SCOPE_IDENTITY();
        SET @save = 1;
        SET @result = 'Registro insertado correctamente';
    END
    ELSE IF @varOpc = 2
    BEGIN
        UPDATE catalogo_regiones
        SET nombre = @varNombre,
            pk_tipo = @varPkTipo,
            es_urbana = @varEsUrbana,
            pk_region_mayor = @varPkRegionMayor,
            modificado_por = @varUsuario,
            fecha_hora_modificado = GETDATE()
        WHERE pk_region = @varPkRegion;

        SET @save = 1;
        SET @result = 'Registro actualizado correctamente';
        SET @varPkRegion = @varPkRegion;
    END
    ELSE
    BEGIN
        SET @result = 'Opción no válida';
    END

    SELECT @save AS 'save', @result AS result, @varPkRegion AS pk;
END;
GO

--
-- Create or alter procedure [dbo].[CAT_get_regiones]
--
GO
PRINT (N'Create or alter procedure [dbo].[CAT_get_regiones]')
GO
CREATE OR ALTER PROCEDURE dbo.CAT_get_regiones
    @varPK INT,
    @opc INT
AS
BEGIN
    SELECT
    region.*,
    tipo.nombre AS pk_tipo_nombre,
    mayor.nombre AS pk_region_mayor_nombre,
    mayor_tipo.nombre AS pk_region_mayor_tipo_nombre
    FROM catalogo_regiones region
    LEFT JOIN catalogo_regiones_tipo tipo ON tipo.pk_tipo = region.pk_tipo
    LEFT JOIN catalogo_regiones mayor ON mayor.pk_region = region.pk_region_mayor
    LEFT JOIN catalogo_regiones_tipo mayor_tipo ON mayor_tipo.pk_tipo = mayor.pk_tipo
    WHERE (@varPK = 0 OR region.pk_region = @varPK)
    AND (@opc = 0 OR region.estado <> 3);
END;
GO

--
-- Create or alter procedure [dbo].[CAT_delete_regiones]
--
GO
PRINT (N'Create or alter procedure [dbo].[CAT_delete_regiones]')
GO
CREATE OR ALTER PROCEDURE dbo.CAT_delete_regiones
    @varPk INT,
    @varUsuario INT,
    @varOpc INT -- 1 Borrado lógico, 2 Borrado físico
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @result NVARCHAR(200), @save INT = 0;

    IF @varOpc = 1 -- Borrado lógico
    BEGIN
        UPDATE catalogo_regiones
        SET estado = 3,
            modificado_por = @varUsuario,
            fecha_hora_modificado = GETDATE()
        WHERE pk_region = @varPk;

        SET @save = 1;
        SET @result = 'Borrado lógico realizado correctamente';
    END
    ELSE IF @varOpc = 2 -- Borrado físico
    BEGIN
        DELETE FROM catalogo_regiones
        WHERE pk_region = @varPk;

        SET @save = 1;
        SET @result = 'Borrado físico realizado correctamente';
    END
    ELSE
    BEGIN
        SET @result = 'Opción no válida';
    END

    SELECT @save AS 'save', @result AS result;
END;
GO

--
-- Create table [dbo].[catalogo_profesiones]
--
PRINT (N'Create table [dbo].[catalogo_profesiones]')
GO
CREATE TABLE dbo.catalogo_profesiones (
  id int IDENTITY,
  profesion varchar(150) NOT NULL,
  PRIMARY KEY CLUSTERED (id)
)
ON [PRIMARY]
GO

--
-- Create or alter procedure [dbo].[sp_get_personas]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_get_personas]')
GO
CREATE OR ALTER PROCEDURE dbo.sp_get_personas
AS
BEGIN
    SET NOCOUNT ON;

    SELECT 
        p.id, 
        p.nombre, 
        p.dni, 
        p.telefono1, 
        cp.profesion AS profesion, 
        cv.nombre AS centro_votacion, 
        p.foto_url
    FROM dbo.persona_jrv p
    LEFT JOIN dbo.catalogo_profesiones cp ON p.catalogo_profesion_id = cp.id
    LEFT JOIN dbo.centro_votacion cv ON p.centro_votacion_id = cv.id
    WHERE p.estado <> 3;
END;
GO

--
-- Create or alter procedure [dbo].[sp_get_persona_edit]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_get_persona_edit]')
GO
CREATE OR ALTER PROCEDURE dbo.sp_get_persona_edit
    @id INT
AS
BEGIN
    SET NOCOUNT ON;

    SELECT 
        p.id,                              -- [0]
        p.nombre,                          -- [1]
        p.dni,                             -- [2]
        p.direccion,                       -- [3]
        p.sexo,                            -- [4]
        p.catalogo_escolaridad_id,         -- [5]
        p.catalogo_profesion_id,           -- [6]
        cp.profesion AS profesion,         -- [7]
        p.telefono1,                       -- [8]
        p.telefono2,                       -- [9]
        p.telefono3,                       -- [10]
        p.horario_trabajo_estudio,         -- [11]
        p.horario_texto,                   -- [12] NUEVO: texto plano del horario
        p.disponibilidad_capacitacion,     -- [13]
        p.ha_participado_procesos_electorales, -- [14]
        p.ha_sido_miembro_mer,             -- [15]
        p.ultimo_proceso,                  -- [16]
        p.uso_manejo_computador,           -- [17]
        p.lo_basico,                       -- [18]
        p.tiene_experiencia_trep,          -- [19]
        p.entrega_materiales,              -- [20]
        p.capacitacion_id,                 -- [21] NUEVO: se retorna el ID de la capacitación
        p.persona_confiable_id,            -- [22] NUEVO: se retorna el ID del referente
        p.centro_votacion_id,              -- [23]
        cv.nombre AS centro_votacion,      -- [24]
        p.telefono,                        -- [25]
        p.observaciones,                   -- [26]
        p.estado,                          -- [27]
        p.modificado_por,                  -- [28]
        p.capacitador_id                   -- [29]
    FROM dbo.persona_jrv p
    LEFT JOIN dbo.catalogo_profesiones cp 
        ON p.catalogo_profesion_id = cp.id
    LEFT JOIN dbo.centro_votacion cv 
        ON p.centro_votacion_id = cv.id
    WHERE p.id = @id;
END;
GO

--
-- Create or alter procedure [dbo].[sp_get_catalogo_profesiones]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_get_catalogo_profesiones]')
GO

CREATE OR ALTER PROCEDURE dbo.sp_get_catalogo_profesiones
AS
BEGIN
    SET NOCOUNT ON;
    SELECT id, profesion 
    FROM dbo.catalogo_profesiones
    ORDER BY profesion ASC;
END
GO

--
-- Create or alter procedure [dbo].[MRB_get_miembros]
--
GO
PRINT (N'Create or alter procedure [dbo].[MRB_get_miembros]')
GO
CREATE OR ALTER PROCEDURE dbo.MRB_get_miembros
AS
BEGIN
    SET NOCOUNT ON;

    SELECT 
        p.id_miembro,
        CONCAT(p.nombres, ' ', p.apellidos) AS nombre,  -- Se concatenan nombres y apellidos
        p.dni,
        p.telefono1,
        cp.profesion AS profesion,                         -- Se obtiene el nombre de la profesión desde catalogo_profesiones
        p.foto_url,
        p.foto_url_2,
        CAST(p.tipo_miembro_id AS int) AS tipo_miembro_id,  -- Tipo de miembro (ID)
        tm.nombre AS tipo_miembro                         -- Nombre del tipo de miembro
    FROM dbo.miembros p
    LEFT JOIN dbo.catalogo_profesiones cp
        ON p.catalogo_profesion_id = cp.id
    LEFT JOIN dbo.tipo_miembro tm
        ON CAST(p.tipo_miembro_id AS int) = tm.id
    WHERE p.estado <> 3 OR p.estado IS NULL;
END;
GO

--
-- Create or alter procedure [dbo].[MBR_get_miembro_edit]
--
GO
PRINT (N'Create or alter procedure [dbo].[MBR_get_miembro_edit]')
GO
CREATE OR ALTER PROCEDURE dbo.MBR_get_miembro_edit
    @id INT
AS
BEGIN
    SET NOCOUNT ON;

    SELECT 
        m.id_miembro,                              -- [0] ID del miembro
        m.nombres,                         -- [1] Nombres
        m.apellidos,                       -- [2] Apellidos
        m.dni,                             -- [3] DNI
        m.direccion,                       -- [4] Dirección
        m.catalogo_profesion_id,           -- [5] ID de la Profesión
        cp.profesion AS profesion,         -- [6] Nombre de la Profesión
        m.telefono1,                       -- [7] Teléfono 1
        m.telefono2,                       -- [8] Teléfono 2
        m.horario_trabajo_estudio,         -- [9] Horario Trabajo/Estudio
        m.horario_texto,                   -- [10] Texto del Horario (Nuevo)
        m.disponibilidad_capacitacion,     -- [11] Disponibilidad para capacitación
        m.ha_participado_procesos_electorales, -- [12] Participación en procesos electorales
        m.ha_sido_miembro_mer,             -- [13] Ha sido miembro MER
        m.ultimo_proceso,                  -- [14] Último proceso electoral
        m.uso_manejo_computador,           -- [15] Manejo de computadora
        m.lo_basico,                       -- [16] Conocimiento básico
        m.tiene_experiencia_trep,          -- [17] Experiencia en TREP
        m.entrega_materiales,              -- [18] Entrega materiales
        m.id_refiere,                     -- [19] ID del referente
        m.observaciones,                   -- [20] Observaciones
        m.foto_url,                        -- [21] URL de la Foto 1
        m.foto_url_2,                      -- [22] URL de la Foto 2
        m.empresa_id,                      -- [23] ID de la Empresa
        m.sexo,                            -- [24] Género
        m.catalogo_escolaridad_id,         -- [25] ID de Escolaridad
        m.es_candidato,                    -- [26] Es candidato (1 = Sí, 0 = No)
        m.correo_electronico,              -- [27] Correo Electrónico
        m.fecha_nacimiento,                -- [28] Fecha de Nacimiento
        m.vehiculo,                        -- [29] Tiene vehículo (1 = Sí, 0 = No)
        m.tipo_miembro_id,                 -- [30] ID del Tipo de Miembro
        tm.nombre AS tipo_miembro,         -- [31] Nombre del Tipo de Miembro
        m.id_posible_rol,                  -- [32] posible rol 
        m.estado,                          -- [33] Estado del Miembro
        m.creado_por,                      -- [34] Usuario que creó el registro
        m.fecha_hora_creacion,             -- [35] Fecha de Creación
        m.modificado_por,                  -- [36] Usuario que modificó el registro
        m.fecha_hora_modificado,           -- [37] Fecha de Última Modificación
        m.asignaciones,                    -- [38] Asignaciones
        m.id_categoria_confianza           -- [39] ID Categoría de Confianza
    FROM dbo.miembros m
    LEFT JOIN dbo.catalogo_profesiones cp 
        ON m.catalogo_profesion_id = cp.id
    LEFT JOIN dbo.tipo_miembro tm
        ON m.tipo_miembro_id = tm.id
    WHERE m.id_miembro = @id;
END;
GO

--
-- Create table [dbo].[catalogo_nacionalidades]
--
PRINT (N'Create table [dbo].[catalogo_nacionalidades]')
GO
CREATE TABLE dbo.catalogo_nacionalidades (
  pk_nacionalidad int IDENTITY,
  nombre nvarchar(100) NULL,
  estado int NULL DEFAULT (1),
  creado_por int NULL,
  fecha_hora_creado datetime NULL DEFAULT (getdate()),
  modificado_por int NULL,
  fecha_hora_modificado datetime NULL,
  PRIMARY KEY CLUSTERED (pk_nacionalidad)
)
ON [PRIMARY]
GO

--
-- Create or alter procedure [dbo].[CAT_insert_update_nacionalidades]
--
GO
PRINT (N'Create or alter procedure [dbo].[CAT_insert_update_nacionalidades]')
GO
CREATE OR ALTER PROCEDURE dbo.CAT_insert_update_nacionalidades
    @varPkNacionalidad INT OUTPUT,
    @varNombre NVARCHAR(100),
    @varUsuario INT,
    @varOpc INT
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @result NVARCHAR(200), @save INT = 0;
    DECLARE @existe INT;

    -- MAYÚSCULAS
    SET @varNombre = UPPER(@varNombre);

    -- VALIDAR SI EL REGISTRO YA EXISTE
    SELECT @existe = COUNT(*)
    FROM catalogo_nacionalidades
    WHERE nombre = @varNombre
        AND estado <> 3
        AND (@varOpc = 1 OR pk_nacionalidad <> @varPkNacionalidad);

    IF @existe > 0
    BEGIN
        SET @result = 'El nombre de esa nacionalidad ya está en uso.';
        SELECT @save AS 'save', @result AS result;
        RETURN;
    END

    IF @varOpc = 1 
    BEGIN
        INSERT INTO catalogo_nacionalidades
            (nombre, creado_por)
        VALUES
            (@varNombre, @varUsuario);

        SET @varPkNacionalidad = SCOPE_IDENTITY();
        SET @save = 1;
        SET @result = 'Registro insertado correctamente';
    END
    ELSE IF @varOpc = 2
    BEGIN
        UPDATE catalogo_nacionalidades
        SET nombre = @varNombre,
            modificado_por = @varUsuario,
            fecha_hora_modificado = GETDATE()
        WHERE pk_nacionalidad = @varPkNacionalidad;

        SET @save = 1;
        SET @result = 'Registro actualizado correctamente';
        SET @varPkNacionalidad = @varPkNacionalidad;
    END
    ELSE
    BEGIN
        SET @result = 'Opción no válida';
    END

    SELECT @save AS 'save', @result AS result, @varPkNacionalidad AS pk;
END;
GO

--
-- Create or alter procedure [dbo].[CAT_get_nacionalidades]
--
GO
PRINT (N'Create or alter procedure [dbo].[CAT_get_nacionalidades]')
GO
CREATE OR ALTER PROCEDURE dbo.CAT_get_nacionalidades
    @varPK INT,
    @opc INT
AS
BEGIN
    SELECT * FROM catalogo_nacionalidades
    WHERE (@varPK = 0 OR pk_nacionalidad = @varPK)
    AND (@opc = 0 OR estado <> 3);
END;
GO

--
-- Create or alter procedure [dbo].[CAT_delete_nacionalidades]
--
GO
PRINT (N'Create or alter procedure [dbo].[CAT_delete_nacionalidades]')
GO
CREATE OR ALTER PROCEDURE dbo.CAT_delete_nacionalidades
    @varPk INT,
    @varUsuario INT,
    @varOpc INT -- 1 Borrado lógico, 2 Borrado físico -- 1 Borrado lógico ó 2 Borrado físico
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @result NVARCHAR(200), @save INT = 0;

    IF @varOpc = 1 -- Borrado lógico
    BEGIN
        UPDATE catalogo_nacionalidades
        SET estado = 3,
            modificado_por = @varUsuario,
            fecha_hora_modificado = GETDATE()
        WHERE pk_nacionalidad = @varPk;

        SET @save = 1;
        SET @result = 'Borrado lógico realizado correctamente';
    END
    ELSE IF @varOpc = 2 -- Borrado físico
    BEGIN
        DELETE FROM catalogo_nacionalidades
        WHERE pk_nacionalidad = @varPk;

        SET @save = 1;
        SET @result = 'Borrado físico realizado correctamente';
    END
    ELSE
    BEGIN
        SET @result = 'Opción no válida';
    END

    SELECT @save AS 'save', @result AS result;
END;
GO

--
-- Create table [dbo].[catalogo_escolaridad]
--
PRINT (N'Create table [dbo].[catalogo_escolaridad]')
GO
CREATE TABLE dbo.catalogo_escolaridad (
  id int IDENTITY,
  nivel varchar(100) NOT NULL,
  PRIMARY KEY CLUSTERED (id),
  UNIQUE (nivel)
)
ON [PRIMARY]
GO

--
-- Create or alter procedure [dbo].[sp_get_catalogo_escolaridad]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_get_catalogo_escolaridad]')
GO

CREATE OR ALTER PROCEDURE dbo.sp_get_catalogo_escolaridad
AS
BEGIN
    SET NOCOUNT ON;

    -- Obtener todos los registros ordenados por ID
    SELECT 
        id, 
        nivel 
    FROM dbo.catalogo_escolaridad
    ORDER BY id;
END;
GO

--
-- Create table [dbo].[capacitadores_eliminar_pendiente]
--
PRINT (N'Create table [dbo].[capacitadores_eliminar_pendiente]')
GO
CREATE TABLE dbo.capacitadores_eliminar_pendiente (
  id int IDENTITY,
  capacitador_id int NOT NULL,
  creado_por varchar(100) NOT NULL,
  empresa_id int NOT NULL,
  token varchar(255) NOT NULL,
  estado_pendiente int NOT NULL,
  fecha_solicitud datetime NOT NULL DEFAULT (getdate()),
  PRIMARY KEY CLUSTERED (id)
)
ON [PRIMARY]
GO

--
-- Create table [dbo].[capacitadores]
--
PRINT (N'Create table [dbo].[capacitadores]')
GO
CREATE TABLE dbo.capacitadores (
  id int IDENTITY,
  persona_jrv_id int NOT NULL,
  estado int NULL,
  creado_por varchar(100) NULL,
  fecha_hora_creado datetime NULL DEFAULT (getdate()),
  modificado_por varchar(100) NULL,
  fecha_hora_modifcado datetime NULL,
  empresa_id int NULL,
  PRIMARY KEY CLUSTERED (id)
)
ON [PRIMARY]
GO

--
-- Create or alter procedure [dbo].[sp_insert_capacitador]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_insert_capacitador]')
GO

CREATE OR ALTER PROCEDURE dbo.sp_insert_capacitador
    @persona_jrv_id INT,
    @estado INT,
    @creado_por VARCHAR(100),
    @empresa_id INT
AS
BEGIN
    SET NOCOUNT ON;

    -- Verificar si la persona ya existe como capacitador
    IF EXISTS (SELECT 1 FROM dbo.capacitadores WHERE persona_jrv_id = @persona_jrv_id AND estado <> 3)
    BEGIN
        -- Si la persona ya existe y no está en estado 3, no se inserta
        PRINT 'La persona ya está registrada como capacitador.';
        RETURN;
    END

    -- Si la persona existe pero está en estado 3, actualizar a estado 1
    IF EXISTS (SELECT 1 FROM dbo.capacitadores WHERE persona_jrv_id = @persona_jrv_id AND estado = 3)
    BEGIN
        UPDATE dbo.capacitadores
        SET estado = 1, 
            modificado_por = @creado_por,
            fecha_hora_modifcado = GETDATE()
        WHERE persona_jrv_id = @persona_jrv_id AND estado = 3;
        
        PRINT 'La persona se ha reactivado como capacitador.';
        RETURN;
    END

    -- Insertar nueva persona como capacitador si no existe
    INSERT INTO dbo.capacitadores (persona_jrv_id, estado, creado_por, fecha_hora_creado, empresa_id)
    VALUES (@persona_jrv_id, @estado, @creado_por, GETDATE(), @empresa_id);
END;
GO

--
-- Create or alter procedure [dbo].[sp_delete_capacitador]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_delete_capacitador]')
GO
CREATE OR ALTER PROCEDURE dbo.sp_delete_capacitador
    @id INT,
    @modificado_por VARCHAR(100)
AS
BEGIN
    SET NOCOUNT ON;

    UPDATE dbo.capacitadores
    SET estado = 3, 
        modificado_por = @modificado_por, 
        fecha_hora_modifcado = GETDATE()
    WHERE id = @id;
END;
GO

--
-- Create or alter procedure [dbo].[sp_borrar_capacitador]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_borrar_capacitador]')
GO

CREATE OR ALTER PROCEDURE dbo.sp_borrar_capacitador
    @capacitador_id INT,
    @modificado_por VARCHAR(100)
AS
BEGIN
    SET NOCOUNT ON;

    -- Realizar borrado suave: actualizar estado a 3 (o el valor que convenga)
    UPDATE dbo.capacitadores
    SET estado = 3,
        modificado_por = @modificado_por,
        fecha_hora_modifcado = GETDATE()
    WHERE id = @capacitador_id;
END;
GO

--
-- Create table [dbo].[capacitacion_pendiente]
--
PRINT (N'Create table [dbo].[capacitacion_pendiente]')
GO
CREATE TABLE dbo.capacitacion_pendiente (
  id int IDENTITY,
  nombre varchar(255) NOT NULL,
  fecha datetime NOT NULL,
  lugar varchar(255) NULL,
  capacitador_id int NULL,
  overall_progress varchar(255) NULL,
  estado int NULL,
  creado_por varchar(100) NULL,
  fecha_hora_creado datetime NULL DEFAULT (getdate()),
  modificado_por varchar(100) NULL,
  fecha_hora_modifcado datetime NULL,
  empresa_id int NULL,
  token varchar(255) NOT NULL,
  estado_pendiente int NOT NULL,
  fecha_solicitud datetime NOT NULL DEFAULT (getdate()),
  PRIMARY KEY CLUSTERED (id)
)
ON [PRIMARY]
GO

--
-- Create table [dbo].[capacitacion_eliminar_pendiente]
--
PRINT (N'Create table [dbo].[capacitacion_eliminar_pendiente]')
GO
CREATE TABLE dbo.capacitacion_eliminar_pendiente (
  id int IDENTITY,
  capacitacion_id int NOT NULL,
  creado_por varchar(100) NOT NULL,
  empresa_id int NOT NULL,
  token varchar(255) NOT NULL,
  estado_pendiente int NOT NULL,
  fecha_solicitud datetime NOT NULL DEFAULT (getdate()),
  PRIMARY KEY CLUSTERED (id)
)
ON [PRIMARY]
GO

--
-- Create table [dbo].[capacitacion_copy]
--
PRINT (N'Create table [dbo].[capacitacion_copy]')
GO
CREATE TABLE dbo.capacitacion_copy (
  id int IDENTITY,
  nombre varchar(255) NOT NULL,
  fecha datetime NOT NULL,
  lugar varchar(255) NULL,
  capacitador_id int NULL,
  overall_progress varchar(255) NULL,
  estado int NULL,
  creado_por varchar(100) NULL,
  fecha_hora_creado datetime NULL DEFAULT (getdate()),
  modificado_por varchar(100) NULL,
  fecha_hora_modifcado datetime NULL,
  empresa_id int NULL,
  PRIMARY KEY CLUSTERED (id)
)
ON [PRIMARY]
GO

--
-- Create table [dbo].[capacitacion]
--
PRINT (N'Create table [dbo].[capacitacion]')
GO
CREATE TABLE dbo.capacitacion (
  id int IDENTITY,
  nombre varchar(255) NOT NULL,
  fecha datetime NOT NULL,
  lugar varchar(255) NULL,
  id_miembro_capacitador int NULL,
  overall_progress varchar(255) NULL,
  estado int NULL,
  creado_por varchar(100) NULL,
  fecha_hora_creado datetime NULL DEFAULT (getdate()),
  modificado_por varchar(100) NULL,
  fecha_hora_modifcado datetime NULL,
  empresa_id int NULL,
  fk_eleccion_id varchar(50) NULL,
  PRIMARY KEY CLUSTERED (id)
)
ON [PRIMARY]
GO

--
-- Create or alter procedure [dbo].[sp_insert_capacitacion]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_insert_capacitacion]')
GO
CREATE OR ALTER PROCEDURE dbo.sp_insert_capacitacion
    @p_nombre VARCHAR(255),
    @p_fecha DATETIME,
    @p_lugar VARCHAR(255),
    @p_capacitador_id INT,
    @p_overall_progress VARCHAR(255),
    @p_creado_por VARCHAR(100) = NULL,
    @p_empresa_id INT
AS
BEGIN
    SET NOCOUNT ON;
    BEGIN TRY
        INSERT INTO capacitacion (
            nombre, fecha, lugar, id_miembro_capacitador, overall_progress, estado, creado_por, fecha_hora_creado, empresa_id
        )
        VALUES (
            UPPER(@p_nombre), 
            @p_fecha, 
            UPPER(@p_lugar), 
            @p_capacitador_id, 
            UPPER(@p_overall_progress), 
            1, 
            UPPER(@p_creado_por), 
            GETDATE(), 
            @p_empresa_id
        );
    END TRY
    BEGIN CATCH
        -- Capturar el error y devolverlo como mensaje
        DECLARE @ErrorMessage NVARCHAR(4000) = ERROR_MESSAGE();
        RAISERROR (@ErrorMessage, 16, 1);
    END CATCH
END;
GO

--
-- Create or alter procedure [dbo].[sp_get_capacitaciones_all]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_get_capacitaciones_all]')
GO
CREATE OR ALTER PROCEDURE dbo.sp_get_capacitaciones_all
AS
BEGIN
    SET NOCOUNT ON;

    SELECT 
        c.id AS capacitacion_id,
        c.nombre AS capacitacion_nombre,
        FORMAT(c.fecha, 'yyyy-MM-dd HH:mm:ss') AS fecha,  -- Se formatea la fecha
        c.lugar,
        c.id_miembro_capacitador,  -- Se mantiene el ID del capacitador
        (m.nombres + ' ' + ISNULL(m.apellidos, '')) AS capacitador_nombre,  -- Concatena nombres y apellidos
        c.overall_progress
    FROM dbo.capacitacion c
    LEFT JOIN dbo.miembros m ON c.id_miembro_capacitador = m.id_miembro  -- Relación corregida
    WHERE c.estado <> 3 
    ORDER BY c.fecha DESC;
END;
GO

--
-- Create or alter procedure [dbo].[sp_get_capacitaciones]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_get_capacitaciones]')
GO
CREATE OR ALTER PROCEDURE dbo.sp_get_capacitaciones
    @busqueda VARCHAR(255)
AS
BEGIN
    SET NOCOUNT ON;

    SELECT 
        c.id AS capacitacion_id,
        c.nombre AS capacitacion_nombre,
        c.lugar,
        FORMAT(c.fecha, 'yyyy-MM-dd HH:mm:ss') AS fecha,  -- Se formatea bien la fecha
        c.id_miembro_capacitador,
        (m.nombres + ' ' + ISNULL(m.apellidos, '')) AS capacitador_nombre,  -- Concatena nombres y apellidos
        c.overall_progress
    FROM dbo.capacitacion c
    LEFT JOIN dbo.miembros m ON c.id_miembro_capacitador = m.id_miembro  -- Relación corregida
    WHERE 
        (c.nombre LIKE '%' + @busqueda + '%' 
         OR c.lugar LIKE '%' + @busqueda + '%')
        AND c.estado <> 3
    ORDER BY c.fecha DESC;
END;
GO

--
-- Create or alter procedure [dbo].[sp_borrar_capacitacion]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_borrar_capacitacion]')
GO

CREATE OR ALTER PROCEDURE dbo.sp_borrar_capacitacion
    @id INT,
    @modificado_por VARCHAR(100)
AS
BEGIN
    SET NOCOUNT ON;

    UPDATE capacitacion
    SET estado = 3, -- Estado 3 significa "eliminado"
        modificado_por = @modificado_por,
        fecha_hora_modifcado = GETDATE()
    WHERE id = @id;
END;
GO

--
-- Create or alter procedure [dbo].[sp_actualizar_capacitacion]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_actualizar_capacitacion]')
GO
CREATE OR ALTER PROCEDURE dbo.sp_actualizar_capacitacion
    @id INT,
    @nombre VARCHAR(255),
    @fecha DATETIME,
    @lugar VARCHAR(255) = NULL,
    @id_miembro_capacitador INT = NULL,  -- Cambio aquí
    @overall_progress VARCHAR(255) = NULL,
    @estado INT = NULL,
    @modificado_por VARCHAR(100)
AS
BEGIN
    SET NOCOUNT ON;

    UPDATE capacitacion
    SET 
        nombre = @nombre,
        fecha = @fecha,
        lugar = @lugar,
        id_miembro_capacitador = @id_miembro_capacitador,  -- Cambio aquí
        overall_progress = @overall_progress,
        estado = @estado,
        modificado_por = @modificado_por,
        fecha_hora_modifcado = GETDATE()
    WHERE id = @id;
END;
GO

--
-- Create table [dbo].[candidatos_tipo]
--
PRINT (N'Create table [dbo].[candidatos_tipo]')
GO
CREATE TABLE dbo.candidatos_tipo (
  pk_tipo int IDENTITY,
  nombre nvarchar(100) NULL,
  pk_region_tipo int NULL,
  pk_tipo_mayor int NULL,
  estado int NULL DEFAULT (1),
  creado_por int NULL,
  fecha_hora_creado datetime NULL DEFAULT (getdate()),
  modificado_por int NULL,
  fecha_hora_modificado datetime NULL,
  PRIMARY KEY CLUSTERED (pk_tipo)
)
ON [PRIMARY]
GO

--
-- Create or alter procedure [dbo].[VOT_insert_update_candidatos_tipo]
--
GO
PRINT (N'Create or alter procedure [dbo].[VOT_insert_update_candidatos_tipo]')
GO
CREATE OR ALTER PROCEDURE dbo.VOT_insert_update_candidatos_tipo
    @varPkTipo INT OUTPUT,
    @varNombre NVARCHAR(100),
    @varPkRegionTipo INT,
    @varPkTipoMayor INT,
    @varUsuario INT,
    @varOpc INT
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @result NVARCHAR(200), @save INT = 0;
    DECLARE @existe INT;

    -- MAYÚSCULAS
    SET @varNombre = UPPER(@varNombre);

    -- VALIDAR SI EL REGISTRO YA EXISTE
    SELECT @existe = COUNT(*)
    FROM candidatos_tipo
    WHERE nombre = @varNombre -- Solo con el nombre es motivo suficiente para no permitir considero yo
        AND estado <> 3
        AND (@varOpc = 1 OR pk_tipo <> @varPkTipo);

    IF @existe > 0
    BEGIN
        SET @result = 'El nombre de ese tipo de candidato ya está en uso.';
        SELECT @save AS 'save', @result AS result;
        RETURN;
    END

    IF @varOpc = 1 
    BEGIN
        INSERT INTO candidatos_tipo
            (nombre, pk_region_tipo, pk_tipo_mayor, creado_por)
        VALUES
            (@varNombre, @varPkRegionTipo, @varPkTipoMayor, @varUsuario);

        SET @varPkTipo = SCOPE_IDENTITY();
        SET @save = 1;
        SET @result = 'Registro insertado correctamente';
    END
    ELSE IF @varOpc = 2
    BEGIN
        UPDATE candidatos_tipo
        SET nombre = @varNombre,
            pk_region_tipo = @varPkRegionTipo,
            pk_tipo_mayor = @varPkTipoMayor,
            modificado_por = @varUsuario,
            fecha_hora_modificado = GETDATE()
        WHERE pk_tipo = @varPkTipo;

        SET @save = 1;
        SET @result = 'Registro actualizado correctamente';
        SET @varPkTipo = @varPkTipo;
    END
    ELSE
    BEGIN
        SET @result = 'Opción no válida';
    END

    SELECT @save AS 'save', @result AS result, @varPkTipo AS pk;
END;
GO

--
-- Create or alter procedure [dbo].[VOT_get_candidatos_tipo]
--
GO
PRINT (N'Create or alter procedure [dbo].[VOT_get_candidatos_tipo]')
GO
CREATE OR ALTER PROCEDURE dbo.VOT_get_candidatos_tipo
    @varPK INT,
    @opc INT
AS
BEGIN
    SELECT * FROM candidatos_tipo
    WHERE (@varPK = 0 OR pk_tipo = @varPK)
    AND (@opc = 0 OR estado <> 3);
END;
GO

--
-- Create or alter procedure [dbo].[VOT_delete_candidatos_tipo]
--
GO
PRINT (N'Create or alter procedure [dbo].[VOT_delete_candidatos_tipo]')
GO
CREATE OR ALTER PROCEDURE dbo.VOT_delete_candidatos_tipo
    @varPk INT,
    @varUsuario INT,
    @varOpc INT -- 1 Borrado lógico, 2 Borrado físico
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @result NVARCHAR(200), @save INT = 0;

    IF @varOpc = 1 -- Borrado lógico
    BEGIN
        UPDATE candidatos_tipo
        SET estado = 3,
            modificado_por = @varUsuario,
            fecha_hora_modificado = GETDATE()
        WHERE pk_tipo = @varPk;

        SET @save = 1;
        SET @result = 'Borrado lógico realizado correctamente';
    END
    ELSE IF @varOpc = 2 -- Borrado físico
    BEGIN
        DELETE FROM candidatos_tipo
        WHERE pk_tipo = @varPk;

        SET @save = 1;
        SET @result = 'Borrado físico realizado correctamente';
    END
    ELSE
    BEGIN
        SET @result = 'Opción no válida';
    END

    SELECT @save AS 'save', @result AS result;
END;
GO

--
-- Create table [dbo].[candidatos]
--
PRINT (N'Create table [dbo].[candidatos]')
GO
CREATE TABLE dbo.candidatos (
  pk_candidato int IDENTITY,
  pk_movimiento int NULL,
  pk_eleccion_proceso int NULL,
  pk_region int NULL,
  pk_tipo int NULL,
  pk_candidato_mayor int NULL,
  pk_sexo int NULL,
  pk_nacionalidad int NULL,
  nombres nvarchar(100) NULL,
  apellidos nvarchar(100) NULL,
  direccion nvarchar(255) NULL,
  telefono nvarchar(20) NULL,
  celular nvarchar(20) NULL,
  email nvarchar(100) NULL,
  identidad nvarchar(20) NULL,
  rtn nvarchar(20) NULL,
  fecha_nacimiento date NULL,
  casilla int NULL,
  url_foto_papeleta nvarchar(255) NULL,
  url_foto_perfil nvarchar(255) NULL,
  url_foto_identidad_anverso nvarchar(255) NULL,
  url_foto_identidad_reverso nvarchar(255) NULL,
  url_archivo_adicional nvarchar(255) NULL,
  estado int NULL DEFAULT (1),
  creado_por varchar(50) NULL,
  fecha_hora_creado datetime NULL DEFAULT (getdate()),
  modificado_por varchar(50) NULL,
  fecha_hora_modificado datetime NULL,
  PRIMARY KEY CLUSTERED (pk_candidato)
)
ON [PRIMARY]
GO

--
-- Create or alter procedure [dbo].[VOT_search_candidatos]
--
GO
PRINT (N'Create or alter procedure [dbo].[VOT_search_candidatos]')
GO
CREATE OR ALTER PROCEDURE dbo.VOT_search_candidatos
    @term VARCHAR(100)
AS
BEGIN
    SET NOCOUNT ON;

    SELECT TOP 50
        candidato.pk_candidato AS id,
        CONCAT(candidato.nombres, ' ', candidato.apellidos) AS label,
        candidato.nombres,
        candidato.apellidos,
        candidato.direccion,
        candidato.identidad,
        candidato.email,
        candidato.telefono
    FROM candidatos candidato
    WHERE candidato.estado <> 3
      AND (candidato.nombres LIKE '%' + @term + '%'
           OR candidato.apellidos LIKE '%' + @term + '%'
           OR candidato.identidad LIKE '%' + @term + '%')
    ORDER BY candidato.nombres, candidato.apellidos;
END;
GO

--
-- Create or alter procedure [dbo].[VOT_get_candidatos]
--
GO
PRINT (N'Create or alter procedure [dbo].[VOT_get_candidatos]')
GO
CREATE OR ALTER PROCEDURE dbo.VOT_get_candidatos
    @varPK INT,
    @opc INT
AS
BEGIN
    SELECT
    candidato.*,
    tipo.nombre AS pk_tipo_nombre,
    region.nombre AS pk_region_nombre,
    region_tipo.nombre AS pk_region_pk_tipo_nombre,
    movimiento.nombre AS pk_movimiento_nombre,
    movimiento_partido.nombre AS pk_movimiento_pk_partido_nombre,
    movimiento_partido.abreviatura AS pk_movimiento_pk_partido_abreviatura
    FROM candidatos candidato
    LEFT JOIN candidatos_tipo tipo ON tipo.pk_tipo = candidato.pk_tipo
    LEFT JOIN catalogo_regiones region ON region.pk_region = candidato.pk_region
    LEFT JOIN catalogo_regiones_tipo region_tipo ON region_tipo.pk_tipo = region.pk_tipo
    LEFT JOIN movimientos movimiento ON movimiento.pk_movimiento = candidato.pk_movimiento
    LEFT JOIN partidos movimiento_partido ON movimiento_partido.pk_partido = movimiento.pk_partido
    WHERE (@varPK = 0 OR candidato.pk_candidato = @varPK)
    AND (@opc = 0 OR candidato.estado <> 3);
END;
GO

--
-- Create or alter procedure [dbo].[VOT_delete_candidatos]
--
GO
PRINT (N'Create or alter procedure [dbo].[VOT_delete_candidatos]')
GO
CREATE OR ALTER PROCEDURE dbo.VOT_delete_candidatos
    @varPk INT,
    @varUsuario INT,
    @varOpc INT -- 1 Borrado lógico, 2 Borrado físico
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @result NVARCHAR(200), @save INT = 0;

    IF @varOpc = 1 -- Borrado lógico
    BEGIN
        UPDATE candidatos
        SET estado = 3,
            modificado_por = @varUsuario,
            fecha_hora_modificado = GETDATE()
        WHERE pk_candidato = @varPk;

        SET @save = 1;
        SET @result = 'Borrado lógico realizado correctamente';
    END
    ELSE IF @varOpc = 2 -- Borrado físico
    BEGIN
        DELETE FROM candidatos
        WHERE pk_candidato = @varPk;

        SET @save = 1;
        SET @result = 'Borrado físico realizado correctamente';
    END
    ELSE
    BEGIN
        SET @result = 'Opción no válida';
    END

    SELECT @save AS 'save', @result AS result;
END;
GO

--
-- Create table [dbo].[asistencia_pendiente]
--
PRINT (N'Create table [dbo].[asistencia_pendiente]')
GO
CREATE TABLE dbo.asistencia_pendiente (
  id int IDENTITY,
  capacitacion_id int NOT NULL,
  persona_jrv_id int NOT NULL,
  estado_asistencia varchar(50) NOT NULL,
  entrega_manual bit NULL DEFAULT (0),
  firma varchar(255) NULL,
  duracion varchar(50) NULL,
  observaciones varchar(max) NULL,
  estado int NULL,
  creado_por varchar(100) NULL,
  fecha_hora_creado datetime NULL DEFAULT (getdate()),
  modificado_por varchar(100) NULL,
  fecha_hora_modifcado datetime NULL,
  empresa_id int NULL,
  token varchar(255) NOT NULL,
  estado_pendiente int NOT NULL,
  fecha_solicitud datetime NOT NULL DEFAULT (getdate()),
  PRIMARY KEY CLUSTERED (id)
)
ON [PRIMARY]
TEXTIMAGE_ON [PRIMARY]
GO

--
-- Create table [dbo].[asistencia_eliminar_pendiente]
--
PRINT (N'Create table [dbo].[asistencia_eliminar_pendiente]')
GO
CREATE TABLE dbo.asistencia_eliminar_pendiente (
  id int IDENTITY,
  asistencia_id int NOT NULL,
  creado_por varchar(100) NOT NULL,
  empresa_id int NOT NULL,
  token varchar(255) NOT NULL,
  estado_pendiente int NOT NULL,
  fecha_solicitud datetime NOT NULL DEFAULT (getdate()),
  PRIMARY KEY CLUSTERED (id)
)
ON [PRIMARY]
GO

--
-- Create table [dbo].[asistencia]
--
PRINT (N'Create table [dbo].[asistencia]')
GO
CREATE TABLE dbo.asistencia (
  id int IDENTITY,
  capacitacion_id int NOT NULL,
  id_miembro int NOT NULL,
  estado_asistencia varchar(50) NOT NULL,
  entrega_manual bit NULL DEFAULT (0),
  firma varchar(255) NULL,
  duracion varchar(50) NULL,
  observaciones varchar(max) NULL,
  estado int NULL,
  creado_por varchar(100) NULL,
  fecha_hora_creado datetime NULL DEFAULT (getdate()),
  modificado_por varchar(100) NULL,
  fecha_hora_modifcado datetime NULL,
  empresa_id int NULL,
  PRIMARY KEY CLUSTERED (id)
)
ON [PRIMARY]
TEXTIMAGE_ON [PRIMARY]
GO

--
-- Create or alter procedure [dbo].[sp_insert_asistencia]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_insert_asistencia]')
GO
CREATE OR ALTER PROCEDURE dbo.sp_insert_asistencia
    @p_capacitacion_id INT,
    @p_id_miembro INT,  -- Cambio de persona_jrv_id a id_miembro
    @p_estado_asistencia VARCHAR(50),
    @p_entrega_manual BIT,
    @p_firma VARCHAR(255),
    @p_duracion VARCHAR(50),
    @p_observaciones VARCHAR(MAX),
    @p_creado_por VARCHAR(100) = NULL,
    @p_empresa_id INT
AS
BEGIN
    SET NOCOUNT ON;

    -- Verificar si ya existe una asistencia válida para esa persona en la misma capacitación
    IF EXISTS(
        SELECT 1
        FROM asistencia
        WHERE capacitacion_id = @p_capacitacion_id
          AND id_miembro = @p_id_miembro  -- Cambio aquí
          AND (estado = 1 OR estado IS NULL) -- Permitir si el estado NO es 3
    )
    BEGIN
        RAISERROR('Esta persona ya tiene asistencia registrada para esta capacitación.', 16, 1);
        RETURN;
    END

    -- Insertar la nueva asistencia si no hay una activa
    INSERT INTO asistencia (
        capacitacion_id,
        id_miembro,  -- Cambio aquí
        estado_asistencia,
        entrega_manual,
        firma,
        duracion,
        observaciones,
        estado,
        creado_por, 
        fecha_hora_creado,
        empresa_id
    )
    VALUES (
        @p_capacitacion_id,
        @p_id_miembro,  -- Cambio aquí
        @p_estado_asistencia,
        @p_entrega_manual,
        @p_firma,
        @p_duracion,
        @p_observaciones,
        1,  -- Estado activo por defecto
        @p_creado_por,
        GETDATE(),
        @p_empresa_id
    );
END;
GO

--
-- Create or alter procedure [dbo].[sp_get_miembros_no_asistentes]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_get_miembros_no_asistentes]')
GO
CREATE OR ALTER PROCEDURE dbo.sp_get_miembros_no_asistentes
    @capacitacion_id INT
AS
BEGIN
    SET NOCOUNT ON;
    
    SELECT 
        m.id_miembro,
        CONCAT(m.nombres, ' ', ISNULL(m.apellidos, '')) AS nombre, -- Se agrega ISNULL para evitar NULL en apellidos
        m.dni
    FROM dbo.miembros m
    WHERE m.estado = 1
      AND m.id_miembro NOT IN (
          SELECT id_miembro  -- Cambio aquí: antes era persona_jrv_id
          FROM dbo.asistencia 
          WHERE capacitacion_id = @capacitacion_id
            AND estado <> 3
      )
    ORDER BY m.nombres ASC;
END;
GO

--
-- Create or alter procedure [dbo].[sp_get_asistencias_por_capacitacion]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_get_asistencias_por_capacitacion]')
GO
CREATE OR ALTER PROCEDURE dbo.sp_get_asistencias_por_capacitacion
    @capacitacion_id INT
AS
BEGIN
    SET NOCOUNT ON;

    SELECT 
        a.id,                           -- índice 0
        a.firma,                        -- índice 1
        a.capacitacion_id,              -- índice 2
        CONCAT(m.nombres, ' ', ISNULL(m.apellidos, '')) AS nombre_miembro,  -- índice 3 (Se usa ISNULL para evitar NULL)
        '' AS dummy_col,                -- índice 4 (columna dummy, si aún se requiere)
        a.estado_asistencia,            -- índice 5
        a.entrega_manual,               -- índice 6
        a.observaciones,                -- índice 7
        a.duracion,                     -- índice 8
        a.creado_por,                   -- índice 9
        a.fecha_hora_creado,            -- índice 10
        a.estado,                       -- índice 11
        m.dni,                          -- índice 12 (DNI)
        m.telefono1,                    -- índice 13 (Teléfono 1)
        m.telefono2                     -- índice 14 (Teléfono 2)
    FROM dbo.asistencia a
    INNER JOIN dbo.miembros m 
        ON a.id_miembro = m.id_miembro  -- Cambio aquí (antes era persona_jrv_id)
    WHERE a.capacitacion_id = @capacitacion_id 
      AND a.estado <> 3
    ORDER BY a.fecha_hora_creado DESC;
END;
GO

--
-- Create or alter procedure [dbo].[sp_get_asistencias]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_get_asistencias]')
GO

CREATE OR ALTER PROCEDURE dbo.sp_get_asistencias
    @capacitacion_id INT,
    @term VARCHAR(100) = ''
AS
BEGIN
    SET NOCOUNT ON;
    SELECT 
        a.id,
        a.estado_asistencia,
        a.entrega_manual,
        a.firma,
        a.duracion,
        a.observaciones,
        p.nombres AS nombre_miembro,
        p.dni
    FROM asistencia a
    INNER JOIN miembros p ON a.id_miembro = p.id_miembro
    ORDER BY a.fecha_hora_creado DESC;
END
GO

--
-- Create or alter procedure [dbo].[sp_borrar_asistencia]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_borrar_asistencia]')
GO

CREATE OR ALTER PROCEDURE dbo.sp_borrar_asistencia
  @id INT,
  @modificado_por VARCHAR(100)
AS
BEGIN
  SET NOCOUNT ON;

  UPDATE dbo.asistencia
  SET estado = 3,
      modificado_por = @modificado_por,
      fecha_hora_modifcado = GETDATE()
  WHERE id = @id;
END;
GO

--
-- Create or alter procedure [dbo].[sp_actualizar_asistencia]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_actualizar_asistencia]')
GO
CREATE OR ALTER PROCEDURE dbo.sp_actualizar_asistencia
  @id INT,
  @estado_asistencia VARCHAR(50),
  @entrega_manual BIT,
  @duracion VARCHAR(50),
  @observaciones VARCHAR(MAX),
  @modificado_por VARCHAR(100)
AS
BEGIN
  SET NOCOUNT ON;

  UPDATE dbo.asistencia
  SET 
    estado_asistencia = @estado_asistencia,
    entrega_manual = @entrega_manual,
    duracion = @duracion,
    observaciones = @observaciones,
    modificado_por = @modificado_por,
    fecha_hora_modifcado = GETDATE()
  WHERE id = @id;
END;
GO

--
-- Create table [dbo].[asignacion_jrv_pendiente]
--
PRINT (N'Create table [dbo].[asignacion_jrv_pendiente]')
GO
CREATE TABLE dbo.asignacion_jrv_pendiente (
  id int IDENTITY,
  persona_jrv_id int NOT NULL,
  jrv_id int NOT NULL,
  rol_jrv_id int NOT NULL,
  fecha_asignacion date NOT NULL,
  observaciones varchar(max) NULL,
  creado_por varchar(100) NULL,
  empresa_id int NOT NULL,
  token varchar(255) NOT NULL,
  estado int NULL DEFAULT (0),
  fecha_solicitud datetime NULL DEFAULT (getdate()),
  PRIMARY KEY CLUSTERED (id)
)
ON [PRIMARY]
TEXTIMAGE_ON [PRIMARY]
GO

--
-- Create table [dbo].[asignacion_jrv_Auditoria]
--
PRINT (N'Create table [dbo].[asignacion_jrv_Auditoria]')
GO
CREATE TABLE dbo.asignacion_jrv_Auditoria (
  id int IDENTITY,
  asignacionjrv_id int NOT NULL,
  operacion varchar(50) NOT NULL,
  fecha datetime NULL DEFAULT (getdate()),
  realizado_por varchar(100) NULL,
  persona_jrv_id int NULL,
  jrv_id int NULL,
  rol_jrv_id int NULL,
  fecha_asignacion date NULL,
  observaciones varchar(max) NULL,
  PRIMARY KEY CLUSTERED (id)
)
ON [PRIMARY]
TEXTIMAGE_ON [PRIMARY]
GO

--
-- Create table [dbo].[asignacion_jrv]
--
PRINT (N'Create table [dbo].[asignacion_jrv]')
GO
CREATE TABLE dbo.asignacion_jrv (
  id int IDENTITY,
  id_miembro int NULL,
  jrv_id int NOT NULL,
  rol_jrv_id int NOT NULL,
  id_asignacion_padre int NULL,
  fecha_asignacion date NULL,
  observaciones varchar(max) NULL,
  estado int NULL DEFAULT (1),
  creado_por varchar(100) NULL,
  fecha_hora_creado datetime NULL DEFAULT (getdate()),
  modificador_por varchar(100) NULL,
  fecha_hora_modifcado datetime NULL,
  empresa_id int NULL,
  pk_proceso varchar(50) NULL,
  pk_movimiento varchar(50) NULL,
  PRIMARY KEY CLUSTERED (id)
)
ON [PRIMARY]
TEXTIMAGE_ON [PRIMARY]
GO

--
-- Create or alter procedure [dbo].[sp_update_asignacion_jrv]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_update_asignacion_jrv]')
GO
CREATE OR ALTER PROCEDURE dbo.sp_update_asignacion_jrv
  @asignacion_id INT,
  @id_miembro INT,
  @pk_movimiento VARCHAR(50),
  @modificador_por VARCHAR(100) = NULL,
  @fecha_asignacion DATE = NULL,
  @observaciones VARCHAR(MAX) = NULL
AS
BEGIN
    SET NOCOUNT ON;

    ------------------------------------------------------------------------
    -- 1. Obtenemos el jrv_id de la asignación que se quiere actualizar
    ------------------------------------------------------------------------
    DECLARE @jrv_id INT;

    SELECT @jrv_id = aj.jrv_id
    FROM dbo.asignacion_jrv aj
    WHERE aj.id = @asignacion_id;

    IF @jrv_id IS NULL
    BEGIN
        RAISERROR('No se encontró la asignación para el ID especificado.', 16, 1);
        RETURN;
    END;

    ------------------------------------------------------------------------
    -- 2. Verificamos si ya existe una asignación activa con ese miembro
    --    en la misma JRV, diferente a la que se está actualizando
    ------------------------------------------------------------------------
    IF EXISTS (
        SELECT 1
        FROM dbo.asignacion_jrv aj
        WHERE aj.jrv_id = @jrv_id
          AND aj.id_miembro = @id_miembro
          AND aj.estado = 1             -- Ajusta la condición de estado si es necesario
          AND aj.id <> @asignacion_id   -- Para ignorar la misma asignación que estamos actualizando
    )
    BEGIN
        RAISERROR('El miembro ya está asignado a esta JRV.', 16, 1);
        RETURN;
    END;

    ------------------------------------------------------------------------
    -- 3. Realizamos la actualización si pasa la validación anterior
    ------------------------------------------------------------------------
    UPDATE dbo.asignacion_jrv
    SET id_miembro = @id_miembro,
        pk_movimiento = @pk_movimiento,
        modificador_por = @modificador_por,
        fecha_hora_modifcado = GETDATE(),
        fecha_asignacion = @fecha_asignacion,
        observaciones = @observaciones
    WHERE id = @asignacion_id;

    SELECT @@ROWCOUNT AS AffectedRows;
END;
GO

--
-- Create or alter procedure [dbo].[sp_insert_asignacion_jrv]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_insert_asignacion_jrv]')
GO
CREATE OR ALTER PROCEDURE dbo.sp_insert_asignacion_jrv
  @id_miembro INT = NULL,
  @jrv_id INT,
  @rol_jrv_id INT,  -- Este valor corresponde a la fila en rol_jrv, la cual ya tiene su id_tipo_rol
  @fecha_asignacion DATE = NULL,
  @observaciones VARCHAR(MAX) = NULL,
  @estado INT = 1,
  @creado_por VARCHAR(100) = NULL,
  @modificador_por VARCHAR(100) = NULL,
  @empresa_id INT = NULL,
  @pk_proceso INT = NULL,
  @pk_movimiento INT = NULL
AS
BEGIN
    SET NOCOUNT ON;

    -- 1. Obtener el id_tipo_rol del rol que se desea asignar
    DECLARE @child_tipo_rol VARCHAR(50);
    SELECT @child_tipo_rol = r.id_tipo_rol
    FROM dbo.rol_jrv r
    WHERE r.id = @rol_jrv_id;

    IF @child_tipo_rol IS NULL
    BEGIN
        RAISERROR('No se encontró id_tipo_rol para el rol_jrv_id especificado.', 16, 1);
        RETURN;
    END

    -- 2. Verificar que no exista ya una asignación en la misma JRV con ese mismo tipo de rol
    IF EXISTS (
        SELECT 1 
        FROM dbo.asignacion_jrv aj
        JOIN dbo.rol_jrv r ON aj.rol_jrv_id = r.id
        WHERE aj.jrv_id = @jrv_id
          AND r.id_tipo_rol = @child_tipo_rol
          AND aj.estado = 1
    )
    BEGIN
        RAISERROR('Ya existe un rol de ese tipo asignado a la JRV.', 16, 1);
        RETURN;
    END

    -- 3. Insertar la asignación
    INSERT INTO dbo.asignacion_jrv (
      id_miembro,
      jrv_id,
      rol_jrv_id,
      fecha_asignacion,
      observaciones,
      estado,
      creado_por,
      fecha_hora_creado,
      modificador_por,
      empresa_id,
      pk_proceso,
      pk_movimiento
    )
    VALUES (
      @id_miembro,
      @jrv_id,
      @rol_jrv_id,
      @fecha_asignacion,
      @observaciones,
      @estado,
      @creado_por,
      GETDATE(),
      @modificador_por,
      @empresa_id,
      @pk_proceso,
      @pk_movimiento
    );

    SELECT SCOPE_IDENTITY() AS NewID;
END;
GO

--
-- Create or alter procedure [dbo].[sp_get_personas_con_rol]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_get_personas_con_rol]')
GO

CREATE OR ALTER PROCEDURE dbo.sp_get_personas_con_rol
AS
BEGIN
    SET NOCOUNT ON;

    SELECT 
        p.id,
        p.nombre,
        p.dni,
        p.telefono1,
        cp.profesion AS profesion,       -- Se obtiene el nombre de la profesión desde catalogo_profesiones
        cv.nombre AS centro_votacion,      -- Se obtiene el nombre del centro desde centro_votacion
        p.foto_url,
        p.foto_url_2,
        ISNULL(r.nombre_rol, 'Sin rol') AS rol_asignado,
        ISNULL(j.codigo, 'N/A')        AS jrv_codigo
    FROM dbo.persona_jrv p
    LEFT JOIN dbo.catalogo_profesiones cp
        ON p.catalogo_profesion_id = cp.id
    LEFT JOIN dbo.centro_votacion cv
        ON p.centro_votacion_id = cv.id
    LEFT JOIN dbo.asignacion_jrv aj 
        ON p.id = aj.id_miembro 
       AND (aj.estado <> 3 OR aj.estado IS NULL)
    LEFT JOIN dbo.rol_jrv r 
        ON aj.rol_jrv_id = r.id
    LEFT JOIN dbo.jrv j
        ON aj.jrv_id = j.id
    WHERE p.estado <>3 OR p.estado IS NULL;
END;
GO

--
-- Create or alter procedure [dbo].[sp_get_miembros_no_jrv]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_get_miembros_no_jrv]')
GO
CREATE OR ALTER PROCEDURE dbo.sp_get_miembros_no_jrv
AS
BEGIN
    SET NOCOUNT ON;

    SELECT TOP 1
        m.id_miembro, 
        m.nombres, 
        m.apellidos, 
        m.dni
    FROM dbo.miembros m
    LEFT JOIN dbo.asignacion_jrv aj
        ON m.id_miembro = aj.id_miembro 
           AND aj.estado <> 1
    WHERE m.estado <> 3
      AND aj.id IS NULL
    ORDER BY m.nombres ASC;
END;
GO

--
-- Create or alter procedure [dbo].[sp_get_asignacion]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_get_asignacion]')
GO
CREATE OR ALTER PROCEDURE dbo.sp_get_asignacion
  @p_persona_jrv_id INT
AS
BEGIN
    SET NOCOUNT ON;

    SELECT TOP 1
        id_miembro,
        jrv_id,
        rol_jrv_id,
        CONVERT(VARCHAR(10), fecha_asignacion, 120) AS fecha_asignacion, -- Formato YYYY-MM-DD
        observaciones
    FROM dbo.asignacion_jrv
    WHERE id_miembro = @p_persona_jrv_id
      AND (estado <>3 OR estado IS NULL)
    ORDER BY id DESC;
END
GO

--
-- Create or alter procedure [dbo].[sp_delete_asignacion_jrv]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_delete_asignacion_jrv]')
GO
CREATE OR ALTER PROCEDURE dbo.sp_delete_asignacion_jrv
  @asignacion_id INT,
  @modificador_por VARCHAR(100) = NULL
AS
BEGIN
    SET NOCOUNT ON;

    UPDATE dbo.asignacion_jrv
    SET id_miembro = NULL, pk_movimiento=null,
        modificador_por = @modificador_por,
        fecha_hora_modifcado = GETDATE()
    WHERE id = @asignacion_id;

    SELECT @@ROWCOUNT AS AffectedRows;
END;
GO

--
-- Create or alter procedure [dbo].[JRV_get_roles_x_mesa2]
--
GO
PRINT (N'Create or alter procedure [dbo].[JRV_get_roles_x_mesa2]')
GO
CREATE OR ALTER PROCEDURE dbo.JRV_get_roles_x_mesa2
    @jrv_id INT  -- Parámetro para filtrar por JRV específica
AS
BEGIN
    SET NOCOUNT ON;

    SELECT 
        aj.id AS AsignacionID,
        j.codigo AS CodigoJRV,
        j.carga,
        r.nombre_rol AS Rol,
        tr.nombre_tipo_rol AS TipoRol,
        aj.id_asignacion_padre AS PadreAsignacionID,
        aj.id_miembro AS MiembroID, -- Para saber a quién está asignado
        m.nombres + ' ' + m.apellidos AS Miembro,
        aj.fecha_hora_modifcado AS fecha_asignacion,
        aj.estado,
        aj.observaciones,
        mo.nombre AS Movimiento,
        mo.pk_movimiento
    FROM dbo.asignacion_jrv aj
    JOIN dbo.jrv j 
      ON aj.jrv_id = j.id
    JOIN dbo.rol_jrv r 
      ON aj.rol_jrv_id = r.id
    JOIN dbo.tipo_rol tr 
      ON r.id_tipo_rol = tr.id
    LEFT JOIN dbo.miembros m 
      ON aj.id_miembro = m.id_miembro
    LEFT JOIN dbo.movimientos mo
      ON aj.pk_movimiento = mo.pk_movimiento
    WHERE aj.estado <> 3
      AND (@jrv_id = 0 OR aj.jrv_id = @jrv_id)  -- Filtrar por JRV específica o mostrar todas si es 0
    ORDER BY aj.id;
END;
GO

--
-- Create or alter procedure [dbo].[JRV_get_roles_x_mesa]
--
GO
PRINT (N'Create or alter procedure [dbo].[JRV_get_roles_x_mesa]')
GO
CREATE OR ALTER PROCEDURE dbo.JRV_get_roles_x_mesa
    @jrv_id INT  -- Parámetro para filtrar por JRV específica
AS
BEGIN
    SET NOCOUNT ON;

    SELECT 
        aj.id AS AsignacionID,
        j.codigo AS CodigoJRV,
        j.carga,
        r.nombre_rol AS Rol,
        tr.nombre_tipo_rol AS TipoRol,
        aj.id_asignacion_padre AS PadreAsignacionID,
        m.nombres + ' ' + m.apellidos AS Miembro,
        m.dni AS MiembroDNI,
        aj.rol_jrv_id,
        aj.fecha_asignacion,
        aj.estado,
        aj.observaciones
    FROM dbo.asignacion_jrv aj
    JOIN dbo.jrv j 
      ON aj.jrv_id = j.id
    JOIN dbo.rol_jrv r 
      ON aj.rol_jrv_id = r.id
    -- Se une con tipo_rol usando id_tipo_rol
    JOIN dbo.tipo_rol tr 
      ON r.id_tipo_rol = tr.id
    LEFT JOIN dbo.miembros m 
      ON aj.id_miembro = m.id_miembro
    WHERE aj.estado <> 3
      AND (@jrv_id = 0 OR aj.jrv_id = @jrv_id)  -- Filtrar por JRV específica o mostrar todas si es 0
    ORDER BY aj.id;
END;
GO

--
-- Create table [dbo].[elecciones_proceso_acta_conteo]
--
PRINT (N'Create table [dbo].[elecciones_proceso_acta_conteo]')
GO
CREATE TABLE dbo.elecciones_proceso_acta_conteo (
  pk_conteo int IDENTITY,
  pk_acta int NULL,
  pk_candidato int NULL,
  cantidad int NULL,
  estado int NULL DEFAULT (1),
  creado_por int NULL,
  fecha_hora_creado datetime NULL DEFAULT (getdate()),
  modificado_por int NULL,
  fecha_hora_modificado datetime NULL,
  PRIMARY KEY CLUSTERED (pk_conteo)
)
ON [PRIMARY]
GO

--
-- Create or alter procedure [dbo].[VOT_insert_update_elecciones_proceso_acta_conteo]
--
GO
PRINT (N'Create or alter procedure [dbo].[VOT_insert_update_elecciones_proceso_acta_conteo]')
GO
CREATE OR ALTER PROCEDURE dbo.VOT_insert_update_elecciones_proceso_acta_conteo
    @varPkConteo INT OUTPUT,
    @varPkActa INT,
    @varPkCandidato INT,
    @varCantidad INT,
    @varUsuario INT,
    @varOpc INT
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @result NVARCHAR(200), @save INT = 0;
    DECLARE @existe INT;

    -- VALIDAR SI YA EXISTE
    SELECT @existe = COUNT(*)
    FROM elecciones_proceso_acta_conteo
    WHERE pk_acta = @varPkActa
        AND pk_candidato = @varPkCandidato
        AND estado <> 3
        AND (@varOpc = 1 OR pk_conteo <> @varPkConteo);

    IF @existe > 0
    BEGIN
        SET @result = 'Ya existe un conteo para ese candidato en la misma acta.';
        SELECT @save AS 'save', @result AS result;
        RETURN;
    END

    IF @varOpc = 1 -- INSERTAR
    BEGIN
        INSERT INTO elecciones_proceso_acta_conteo (pk_acta, pk_candidato, cantidad, creado_por)
        VALUES (@varPkActa, @varPkCandidato, @varCantidad, @varUsuario);

        SET @varPkConteo = SCOPE_IDENTITY();
        SET @save = 1;
        SET @result = 'Registro insertado correctamente';
    END
    ELSE IF @varOpc = 2 -- ACTUALIZAR
    BEGIN
        UPDATE elecciones_proceso_acta_conteo
        SET pk_acta = @varPkActa,
            pk_candidato = @varPkCandidato,
            cantidad = @varCantidad,
            modificado_por = @varUsuario,
            fecha_hora_modificado = GETDATE()
        WHERE pk_conteo = @varPkConteo;

        SET @save = 1;
        SET @result = 'Registro actualizado correctamente';
    END
    ELSE
    BEGIN
        SET @result = 'Opción no válida';
    END

    SELECT @save AS 'save', @result AS result, @varPkConteo AS pk;
END;
GO

--
-- Create or alter procedure [dbo].[VOT_get_elecciones_proceso_acta_conteo]
--
GO
PRINT (N'Create or alter procedure [dbo].[VOT_get_elecciones_proceso_acta_conteo]')
GO
CREATE OR ALTER PROCEDURE dbo.VOT_get_elecciones_proceso_acta_conteo
    @varPK INT,
    @opc INT
AS
BEGIN
    SELECT * FROM elecciones_proceso_acta_conteo
    WHERE (@varPK = 0 OR pk_conteo = @varPK)
    AND (@opc = 0 OR estado <> 3);
END;
GO

--
-- Create or alter procedure [dbo].[VOT_get_candidatos_x_partido]
--
GO
PRINT (N'Create or alter procedure [dbo].[VOT_get_candidatos_x_partido]')
GO

CREATE OR ALTER PROCEDURE dbo.VOT_get_candidatos_x_partido
    @varPKProceso INT,
    @varPKTipo INT,
    @varPKPartido INT,
    @varPKActa INT,
    @varPKJRV INT, -- Junta Receptora de Votos
    @varOpc INT
AS
BEGIN
    DECLARE 
        @regionSector INT,
        @regionMunicipio INT,
        @regionDepartamento INT,
        @regionPais INT,
        @regionFiltro INT,
        @regionTipoCandidato INT;

    -- Obtener la región SECTOR de la JRV (Tipo 4)
    SELECT @regionSector = cv.pk_region
    FROM jrv jrv
    LEFT JOIN centro_votacion cv ON cv.id = jrv.centro_votacion_id
    WHERE jrv.id = @varPKJRV;

    -- Obtener la región MUNICIPIO (Tipo 3) a la que pertenece el sector
    SELECT @regionMunicipio = reg_mun.pk_region
    FROM catalogo_regiones reg
    LEFT JOIN catalogo_regiones reg_mun ON reg.pk_region_mayor = reg_mun.pk_region
    WHERE reg.pk_region = @regionSector AND reg_mun.pk_tipo = 3;

    -- Obtener la región DEPARTAMENTO (Tipo 2) a la que pertenece el municipio
    SELECT @regionDepartamento = reg_dep.pk_region
    FROM catalogo_regiones reg
    LEFT JOIN catalogo_regiones reg_dep ON reg.pk_region_mayor = reg_dep.pk_region
    WHERE reg.pk_region = @regionMunicipio AND reg_dep.pk_tipo = 2;

    -- Obtener la región PAÍS (Tipo 1) a la que pertenece el departamento
    SELECT @regionPais = reg_pais.pk_region
    FROM catalogo_regiones reg
    LEFT JOIN catalogo_regiones reg_pais ON reg.pk_region_mayor = reg_pais.pk_region
    WHERE reg.pk_region = @regionDepartamento AND reg_pais.pk_tipo = 1;

    -- Obtener el tipo de región desde la tabla candidatos_tipo
    SELECT @regionTipoCandidato = pk_region_tipo
    FROM candidatos_tipo
    WHERE pk_tipo = @varPKTipo;

    -- Determinar la región de filtro de acuerdo al tipo de candidato
    IF @regionTipoCandidato = 1 
        SET @regionFiltro = @regionPais;         -- País
    ELSE IF @regionTipoCandidato = 2 
        SET @regionFiltro = @regionDepartamento; -- Departamento
    ELSE IF @regionTipoCandidato = 3 
        SET @regionFiltro = @regionMunicipio;    -- Municipio
    ELSE 
        SET @regionFiltro = @regionSector;       -- Sector (Default)

    -- Consultar los candidatos que pertenecen a la región determinada
    SELECT 
        cand.pk_candidato,
        cand.pk_tipo,
        cand.nombres,
        cand.apellidos,
        cand.url_foto_papeleta,
        cand.casilla,
        mov.nombre AS movimiento_nombre,
        mov.url_foto AS movimiento_url_foto,
        mov.pk_movimiento,
        conteo.cantidad AS votos
    FROM candidatos cand
    LEFT JOIN movimientos mov ON cand.pk_movimiento = mov.pk_movimiento AND mov.estado <> 3
    LEFT JOIN partidos part ON mov.pk_partido = part.pk_partido AND part.estado <> 3
    LEFT JOIN elecciones_proceso_acta_conteo conteo ON conteo.pk_acta = @varPKActa AND conteo.pk_candidato = cand.pk_candidato
    LEFT JOIN candidatos_tipo ct ON cand.pk_tipo = ct.pk_tipo
    WHERE cand.pk_eleccion_proceso = @varPKProceso
        AND cand.pk_tipo = @varPKTipo
        AND mov.pk_partido = @varPKPartido
        AND (@varOpc = 0 OR cand.estado <> 3)
        -- Filtrar por la región determinada
        AND cand.pk_region = @regionFiltro
    ORDER BY cand.casilla DESC;
END;
GO

--
-- Create or alter procedure [dbo].[VOT_delete_elecciones_proceso_acta_conteo]
--
GO
PRINT (N'Create or alter procedure [dbo].[VOT_delete_elecciones_proceso_acta_conteo]')
GO
CREATE OR ALTER PROCEDURE dbo.VOT_delete_elecciones_proceso_acta_conteo
    @varPkActa INT,
    @varUsuario INT,
    @varOpc INT
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @result NVARCHAR(200), @save INT = 0;

    IF @varOpc = 1
    BEGIN
        UPDATE elecciones_proceso_acta_conteo
        SET estado = 3,
            modificado_por = @varUsuario,
            fecha_hora_modificado = GETDATE()
        WHERE pk_acta = @varPkActa;

        SET @save = 1;
        SET @result = 'Borrado lógico realizado correctamente';
    END
    ELSE IF @varOpc = 2
    BEGIN
        DELETE FROM elecciones_proceso_acta_conteo
        WHERE pk_acta = @varPkActa;

        SET @save = 1;
        SET @result = 'Borrado físico realizado correctamente';
    END
    ELSE
    BEGIN
        SET @result = 'Opción no válida';
    END

    SELECT @save AS 'save', @result AS result;
END;
GO

--
-- Create table [dbo].[elecciones_candidatos_x_region]
--
PRINT (N'Create table [dbo].[elecciones_candidatos_x_region]')
GO
CREATE TABLE dbo.elecciones_candidatos_x_region (
  pk_configuracion int IDENTITY,
  pk_eleccion int NULL,
  pk_region int NULL,
  pk_candidato_tipo int NULL,
  cantidad int NULL,
  estado int NULL DEFAULT (1),
  creado_por int NULL,
  fecha_hora_creado datetime NULL DEFAULT (getdate()),
  modificado_por int NULL,
  fecha_hora_modificado datetime NULL,
  PRIMARY KEY CLUSTERED (pk_configuracion)
)
ON [PRIMARY]
GO

--
-- Create or alter procedure [dbo].[VOT_delete_elecciones_candidatos_x_region]
--
GO
PRINT (N'Create or alter procedure [dbo].[VOT_delete_elecciones_candidatos_x_region]')
GO
CREATE OR ALTER PROCEDURE dbo.VOT_delete_elecciones_candidatos_x_region
    @varPk INT,
    @varUsuario INT,
    @varOpc INT -- 1 Borrado lógico, 2 Borrado físico
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @result NVARCHAR(200), @save INT = 0;

    IF @varOpc = 1 -- Borrado lógico
    BEGIN
        UPDATE elecciones_candidatos_x_region
        SET estado = 3,
            modificado_por = @varUsuario,
            fecha_hora_modificado = GETDATE()
        WHERE pk_configuracion = @varPk;

        SET @save = 1;
        SET @result = 'Borrado lógico realizado correctamente';
    END
    ELSE IF @varOpc = 2 -- Borrado físico
    BEGIN
        DELETE FROM elecciones_candidatos_x_region
        WHERE pk_configuracion = @varPk;

        SET @save = 1;
        SET @result = 'Borrado físico realizado correctamente';
    END
    ELSE
    BEGIN
        SET @result = 'Opción no válida';
    END

    SELECT @save AS 'save', @result AS result;
END;
GO

--
-- Create table [dbo].[elecciones]
--
PRINT (N'Create table [dbo].[elecciones]')
GO
CREATE TABLE dbo.elecciones (
  pk_eleccion int IDENTITY,
  pk_region int NULL,
  pk_tipo int NULL,
  estado int NULL DEFAULT (1),
  creado_por int NULL,
  fecha_hora_creado datetime NULL DEFAULT (getdate()),
  modificado_por int NULL,
  fecha_hora_modificado datetime NULL,
  PRIMARY KEY CLUSTERED (pk_eleccion)
)
ON [PRIMARY]
GO

--
-- Create or alter procedure [dbo].[VOT_insert_update_elecciones_proceso]
--
GO
PRINT (N'Create or alter procedure [dbo].[VOT_insert_update_elecciones_proceso]')
GO
CREATE OR ALTER PROCEDURE dbo.VOT_insert_update_elecciones_proceso
    @varPkProceso INT OUTPUT,
    @varPkEleccion INT,
    @varAnio INT,
    @varMes NVARCHAR(50),
    @varDia INT,
    @varUsuario INT,
    @varOpc INT
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @result NVARCHAR(200), @save INT = 0;
    DECLARE @existe INT;

    -- VALIDAR SI EL REGISTRO YA EXISTE
    SELECT @existe = COUNT(*)
    FROM elecciones_proceso
    WHERE pk_eleccion = @varPkEleccion
        AND anio = @varAnio
        AND mes = @varMes
        AND dia = @varDia
        AND estado <> 3
        AND (@varOpc = 1 OR pk_proceso <> @varPkProceso);

    IF @existe > 0
    BEGIN
        -- ADICIONALES
        DECLARE @elecciontipo_nombre NVARCHAR(200), @eleccionregion_nombre NVARCHAR(200), @procesomes_nombre NVARCHAR(200);

        SELECT @elecciontipo_nombre = et.nombre,
            @eleccionregion_nombre = er.nombre,
            @procesomes_nombre = CASE @varMes
            WHEN 1 THEN 'Enero'
            WHEN 2 THEN 'Febrero'
            WHEN 3 THEN 'Marzo'
            WHEN 4 THEN 'Abril'
            WHEN 5 THEN 'Mayo'
            WHEN 6 THEN 'Junio'
            WHEN 7 THEN 'Julio'
            WHEN 8 THEN 'Agosto'
            WHEN 9 THEN 'Septiembre'
            WHEN 10 THEN 'Octubre'
            WHEN 11 THEN 'Noviembre'
            WHEN 12 THEN 'Diciembre'
            ELSE 'Desconocido'
        END
        FROM elecciones e
            LEFT JOIN elecciones_tipo et ON et.pk_tipo = e.pk_tipo
            LEFT JOIN catalogo_regiones er ON er.pk_region = e.pk_region
        WHERE e.pk_eleccion = @varPkEleccion;

        SET @result = CONCAT(
            'Ya existe el proceso electoral "', @elecciontipo_nombre, ' ', @eleccionregion_nombre,
            ', ', @varDia, ' de ', @procesomes_nombre, ' ', @varAnio, '".'
        );

        SELECT @save AS 'save', @result AS result;
        RETURN;
    END

    IF @varOpc = 1 
    BEGIN
        INSERT INTO elecciones_proceso
            (pk_eleccion, anio, mes, dia, creado_por)
        VALUES
            (@varPkEleccion, @varAnio, @varMes, @varDia, @varUsuario);

        SET @varPkProceso = SCOPE_IDENTITY();
        SET @save = 1;
        SET @result = 'Registro insertado correctamente';
    END
    ELSE IF @varOpc = 2
    BEGIN
        UPDATE elecciones_proceso
        SET pk_eleccion = @varPkEleccion,
            anio = @varAnio,
            mes = @varMes,
            dia = @varDia,
            modificado_por = @varUsuario,
            fecha_hora_modificado = GETDATE()
        WHERE pk_proceso = @varPkProceso;

        SET @save = 1;
        SET @result = 'Registro actualizado correctamente';
        SET @varPkProceso = @varPkProceso;
    END
    ELSE
    BEGIN
        SET @result = 'Opción no válida';
    END

    SELECT @save AS 'save', @result AS result, @varPkProceso AS pk;
END;
GO

--
-- Create or alter procedure [dbo].[VOT_insert_update_elecciones_candidatos_x_region]
--
GO
PRINT (N'Create or alter procedure [dbo].[VOT_insert_update_elecciones_candidatos_x_region]')
GO
CREATE OR ALTER PROCEDURE dbo.VOT_insert_update_elecciones_candidatos_x_region
    @varPkConfiguracion INT OUTPUT,
    @varPkEleccion INT,
    @varPkRegion INT,
    @varPkCandidatoTipo INT,
    @varCantidad INT,
    @varUsuario INT,
    @varOpc INT
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @result NVARCHAR(200), @save INT = 0;
    DECLARE @existe INT;

    -- VALIDAR SI EL REGISTRO YA EXISTE
    SELECT @existe = COUNT(*)
    FROM elecciones_candidatos_x_region
    WHERE pk_eleccion = @varPkEleccion
        AND pk_region = @varPkRegion
        AND pk_candidato_tipo = @varPkCandidatoTipo
        AND estado <> 3
        AND (@varOpc = 1 OR pk_configuracion <> @varPkConfiguracion);

    IF @existe > 0
    BEGIN
        -- ADICIONALES
        DECLARE @candidatotipo_nombre NVARCHAR(200), 
        @candidatoregion_nombre NVARCHAR(200), 
        @candidatoregiontipo_nombre NVARCHAR(200), 
        @elecciontipo_nombre NVARCHAR(200), 
        @eleccion_region_nombre NVARCHAR(200);

        SELECT
            @candidatotipo_nombre = ct.nombre,
            @candidatoregion_nombre = cr.nombre,
            @candidatoregiontipo_nombre = crt.nombre,
            @elecciontipo_nombre = et.nombre,
            @eleccion_region_nombre = er.nombre
        FROM elecciones e
            LEFT JOIN candidatos_tipo ct ON ct.pk_tipo = @varPkCandidatoTipo
            LEFT JOIN catalogo_regiones cr ON cr.pk_region = @varPkRegion
            LEFT JOIN catalogo_regiones_tipo crt ON crt.pk_tipo = cr.pk_tipo
            LEFT JOIN elecciones_tipo et ON et.pk_tipo = e.pk_tipo
            LEFT JOIN catalogo_regiones er ON er.pk_region = e.pk_region
        WHERE e.pk_eleccion = @varPkEleccion;

        SET @result = CONCAT(
            'Ya existe la regla de "', @candidatotipo_nombre, '(s)',
            ' para ', @candidatoregion_nombre, ' (', @candidatoregiontipo_nombre, ')',
            ' en las elecciones ', @elecciontipo_nombre, ' ', @eleccion_region_nombre, '".'
        );

        SELECT @save AS 'save', @result AS result;
        RETURN;
    END

    IF @varOpc = 1 
    BEGIN
        INSERT INTO elecciones_candidatos_x_region
            (pk_eleccion, pk_region, pk_candidato_tipo, cantidad, creado_por)
        VALUES
            (@varPkEleccion, @varPkRegion, @varPkCandidatoTipo, @varCantidad, @varUsuario);

        SET @varPkConfiguracion = SCOPE_IDENTITY();
        SET @save = 1;
        SET @result = 'Registro insertado correctamente';
    END
    ELSE IF @varOpc = 2
    BEGIN
        UPDATE elecciones_candidatos_x_region
        SET pk_eleccion = @varPkEleccion,
            pk_region = @varPkRegion,
            pk_candidato_tipo = @varPkCandidatoTipo,
            cantidad = @varCantidad,
            modificado_por = @varUsuario,
            fecha_hora_modificado = GETDATE()
        WHERE pk_configuracion = @varPkConfiguracion;

        SET @save = 1;
        SET @result = 'Registro actualizado correctamente';
        SET @varPkConfiguracion = @varPkConfiguracion;
    END
    ELSE
    BEGIN
        SET @result = 'Opción no válida';
    END

    SELECT @save AS 'save', @result AS result, @varPkConfiguracion AS pk;
END;
GO

--
-- Create or alter procedure [dbo].[VOT_insert_update_elecciones]
--
GO
PRINT (N'Create or alter procedure [dbo].[VOT_insert_update_elecciones]')
GO
CREATE OR ALTER PROCEDURE dbo.VOT_insert_update_elecciones
    @varPkEleccion INT OUTPUT,
    @varPkRegion INT,
    @varPkTipo INT,
    @varUsuario INT,
    @varOpc INT
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @result NVARCHAR(200), @save INT = 0;
    DECLARE @existe INT;

    -- VALIDAR SI EL REGISTRO YA EXISTE
    SELECT @existe = COUNT(*)
    FROM elecciones
    WHERE pk_region = @varPkRegion
        AND pk_tipo = @varPkTipo
        AND estado <> 3
        AND (@varOpc = 1 OR pk_eleccion <> @varPkEleccion);

    IF @existe > 0
    BEGIN
        -- ADICIONALES
        DECLARE @tipoeleccion_nombre NVARCHAR(200), @region_nombre NVARCHAR(200), @tiporegion_nombre NVARCHAR(200);

        SELECT @tipoeleccion_nombre = nombre
        FROM elecciones_tipo
        WHERE pk_tipo = @varPkTipo;

        SELECT @region_nombre = r.nombre, @tiporegion_nombre = t.nombre
        FROM catalogo_regiones r
            LEFT JOIN catalogo_regiones_tipo t ON t.pk_tipo = r.pk_tipo
        WHERE r.pk_region = @varPkRegion;

        SET @result = CONCAT('Ya existen las elecciones "', @tipoeleccion_nombre,' - ', @region_nombre,' (', @tiporegion_nombre,')".');
        SELECT @save AS 'save', @result AS result;
        RETURN;
    END

    IF @varOpc = 1 
    BEGIN
        INSERT INTO elecciones
            (pk_region, pk_tipo, creado_por)
        VALUES
            (@varPkRegion, @varPkTipo, @varUsuario);

        SET @varPkEleccion = SCOPE_IDENTITY();
        SET @save = 1;
        SET @result = 'Registro insertado correctamente';
    END
    ELSE IF @varOpc = 2
    BEGIN
        UPDATE elecciones
        SET pk_region = @varPkRegion,
            pk_tipo = @varPkTipo,
            modificado_por = @varUsuario,
            fecha_hora_modificado = GETDATE()
        WHERE pk_eleccion = @varPkEleccion;

        SET @save = 1;
        SET @result = 'Registro actualizado correctamente';
        SET @varPkEleccion = @varPkEleccion;
    END
    ELSE
    BEGIN
        SET @result = 'Opción no válida';
    END

    SELECT @save AS 'save', @result AS result, @varPkEleccion AS pk;
END;
GO

--
-- Create or alter procedure [dbo].[VOT_insert_update_candidatos]
--
GO
PRINT (N'Create or alter procedure [dbo].[VOT_insert_update_candidatos]')
GO
CREATE OR ALTER PROCEDURE dbo.VOT_insert_update_candidatos
    @varPkCandidato INT OUTPUT,
    @varPkMovimiento INT,
    @varPkEleccionProceso INT,
    @varPkRegion INT,
    @varPkTipo INT,
    @varPkCandidatoMayor INT,
    @varPkSexo INT,
    @varPkNacionalidad INT,
    @varNombres NVARCHAR(100),
    @varApellidos NVARCHAR(100),
    @varDireccion NVARCHAR(255),
    @varTelefono NVARCHAR(20),
    @varCelular NVARCHAR(20),
    @varEmail NVARCHAR(100),
    @varUrlFotoPerfil NVARCHAR(255),
    @varIdentidad NVARCHAR(20),
    @varRtn NVARCHAR(20),
    @varCasilla INT,
    @varUrlFotoPapeleta NVARCHAR(255),
    @varUrlFotoIdentidadAnverso NVARCHAR(255),
    @varUrlFotoIdentidadReverso NVARCHAR(255),
    @varUrlArchivoAdicional NVARCHAR(255),
    @varFechaNacimiento DATE,
    @varUsuario INT,
    @varOpc INT
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @result NVARCHAR(200), @save INT = 0;
    DECLARE @existe INT;

    DECLARE @tipoCandidatoNombre NVARCHAR(100);
    DECLARE @regionNombre NVARCHAR(100);
    DECLARE @regionTipoNombre NVARCHAR(100);
    DECLARE @movimientoNombre NVARCHAR(100);
    DECLARE @movimientoPartidoAbreviatura NVARCHAR(100);
    DECLARE @movimientoPartidoPk INT;
    DECLARE @movimientoPartidoNombre NVARCHAR(100);
    DECLARE @eleccionTipoNombre NVARCHAR(100);
    DECLARE @eleccionRegionNombre NVARCHAR(100);
    DECLARE @procesoAnio NVARCHAR(100);

    DECLARE @maxCantidad INT;
    DECLARE @cantidadActual INT;

    DECLARE @existeCasilla INT;

    -- MAYÚSCULAS
    SET @varNombres = UPPER(@varNombres)
    SET @varApellidos = UPPER(@varApellidos)
    SET @varDireccion = UPPER(@varDireccion)

    -- VALIDAR SI EL REGISTRO YA EXISTE
    SELECT @existe = COUNT(*)
    FROM candidatos
    WHERE identidad = @varIdentidad
        AND estado <> 3
        AND (@varOpc = 1 OR pk_candidato <> @varPkCandidato);

    IF @existe > 0
    BEGIN
        -- ADICIONALES
        DECLARE @tiporegion_nombre NVARCHAR(200);

        SELECT @tiporegion_nombre = nombre
        FROM catalogo_regiones_tipo
        WHERE pk_tipo = @varPkTipo;

        SET @result = CONCAT('Ya existe un candidato con el número de identidad ', @varIdentidad, '.');
        SELECT @save AS 'save', @result AS result;
        RETURN;
    END

    -- OBTENER REGLA
    SELECT
        @maxCantidad = ecr.cantidad
    FROM elecciones_candidatos_x_region ecr
        LEFT JOIN catalogo_regiones cr ON ecr.pk_region = cr.pk_region AND cr.estado <> 3
        LEFT JOIN catalogo_regiones_tipo crt ON cr.pk_tipo = crt.pk_tipo AND crt.estado <> 3
    WHERE ecr.pk_eleccion = @varPkEleccionProceso
        AND ecr.pk_region = @varPkRegion
        AND ecr.pk_candidato_tipo = @varPkTipo
        AND ecr.estado <> 3;

    SELECT @tipoCandidatoNombre = nombre
    FROM candidatos_tipo
    WHERE pk_tipo = @varPkTipo AND estado <> 3;

    SELECT @regionNombre = r.nombre, @regionTipoNombre = rt.nombre
    FROM catalogo_regiones r
        LEFT JOIN catalogo_regiones_tipo rt ON rt.pk_tipo = r.pk_tipo AND rt.estado <> 3
    WHERE r.pk_region = @varPkRegion AND r.estado <> 3;

    SELECT
        @movimientoNombre = m.nombre,
        @movimientoPartidoAbreviatura = p.abreviatura,
        @movimientoPartidoPk = p.pk_partido,
        @movimientoPartidoNombre = p.nombre
    FROM movimientos m
        LEFT JOIN partidos p ON p.pk_partido = m.pk_partido AND p.estado <> 3
    WHERE m.pk_movimiento = @varPkMovimiento AND m.estado <> 3;

    SELECT
        @eleccionTipoNombre = et.nombre,
        @eleccionRegionNombre = cr.nombre,
        @procesoAnio = ep.anio
    FROM elecciones_proceso ep
        LEFT JOIN elecciones e ON ep.pk_eleccion = e.pk_eleccion AND e.estado <> 3
        LEFT JOIN elecciones_tipo et ON e.pk_tipo = et.pk_tipo AND et.estado <> 3
        LEFT JOIN catalogo_regiones cr ON e.pk_region = cr.pk_region AND cr.estado <> 3
    WHERE ep.pk_proceso = @varPkEleccionProceso AND ep.estado <> 3;

    -- REGLA NO EXISTE
    IF @maxCantidad IS NULL
    BEGIN
        SET @result = CONCAT('No existe una regla de cantidad máxima de "', @tipoCandidatoNombre,'" para la región "', @regionNombre, ' (', @regionTipoNombre, ')"');
        SELECT @save AS 'save', @result AS result;
        RETURN;
    END

    -- CANDIDATOS ACTUALES
    SELECT @cantidadActual = COUNT(*)
    FROM candidatos
    WHERE pk_eleccion_proceso = @varPkEleccionProceso
        AND pk_region = @varPkRegion
        AND pk_tipo = @varPkTipo
        AND pk_movimiento = @varPkMovimiento -- ✅ Se añadió la validación por movimiento
        AND estado <> 3
        AND (@varOpc = 1 OR pk_candidato <> @varPkCandidato);

    -- MÁXIMO CANDIDATOS ALCANZADO
    IF @cantidadActual >= @maxCantidad
    BEGIN
        SET @result = CONCAT('Se alcanzó el máximo de "', @tipoCandidatoNombre, '" para la región "', @regionNombre, ' (', @regionTipoNombre, ')" en el movimiento "', @movimientoNombre, ' (',@movimientoPartidoAbreviatura,')".');
        SELECT @save AS 'save', @result AS result;
        RETURN;
    END

    -- CASILLA YA EXISTE
    SELECT @existeCasilla = COUNT(*)
    FROM candidatos c
        LEFT JOIN movimientos m ON c.pk_movimiento = m.pk_movimiento AND m.estado <> 3
    WHERE @varCasilla <> 0 -- si es casilla 0 no valida
        AND c.pk_eleccion_proceso = @varPkEleccionProceso
        AND c.pk_region = @varPkRegion
        AND m.pk_partido = @movimientoPartidoPk -- Validación a nivel de partido político
        AND c.casilla = @varCasilla
        AND c.estado <> 3
        AND (@varOpc = 1 OR c.pk_candidato <> @varPkCandidato);

    IF @existeCasilla > 0
    BEGIN
        SET @result = CONCAT(
            'Ya existe un candidato en la casilla #', @varCasilla,
            ' para la región "', @regionNombre, ' (', @regionTipoNombre, ')"',
            -- ' para el proceso electoral "', @eleccionTipoNombre, ' ', @eleccionRegionNombre, ' ', @procesoAnio, '" ',
            ' dentro del partido "', @movimientoPartidoNombre, '".'
        );

        SELECT @save AS 'save', @result AS result;
        RETURN;
    END


    IF @varOpc = 1
    BEGIN
        INSERT INTO candidatos
            (
            pk_movimiento, pk_eleccion_proceso, pk_region, pk_tipo, pk_candidato_mayor, pk_sexo, pk_nacionalidad,
            nombres, apellidos, direccion, telefono, celular, email, url_foto_perfil, identidad,
            rtn, casilla, url_foto_papeleta, url_foto_identidad_anverso, url_foto_identidad_reverso, url_archivo_adicional,
            fecha_nacimiento, creado_por
            )
        VALUES
            (
                @varPkMovimiento, @varPkEleccionProceso, @varPkRegion, @varPkTipo, @varPkCandidatoMayor, @varPkSexo, @varPkNacionalidad,
                @varNombres, @varApellidos, @varDireccion, @varTelefono, @varCelular, @varEmail, @varUrlFotoPerfil, @varIdentidad,
                @varRtn, @varCasilla, @varUrlFotoPapeleta, @varUrlFotoIdentidadAnverso, @varUrlFotoIdentidadReverso, @varUrlArchivoAdicional,
                @varFechaNacimiento, @varUsuario
        );

        SET @varPkCandidato = SCOPE_IDENTITY();
        SET @save = 1;
        SET @result = 'Registro insertado correctamente';
    END
    ELSE IF @varOpc = 2
    BEGIN
        UPDATE candidatos
        SET pk_movimiento = @varPkMovimiento,
            pk_eleccion_proceso = @varPkEleccionProceso,
            pk_region = @varPkRegion,
            pk_tipo = @varPkTipo,
            pk_candidato_mayor = @varPkCandidatoMayor,
            pk_sexo = @varPkSexo,
            pk_nacionalidad = @varPkNacionalidad,
            nombres = @varNombres,
            apellidos = @varApellidos,
            direccion = @varDireccion,
            telefono = @varTelefono,
            celular = @varCelular,
            email = @varEmail,
            url_foto_perfil = @varUrlFotoPerfil,
            identidad = @varIdentidad,
            rtn = @varRtn,
            casilla = @varCasilla,
            url_foto_papeleta = @varUrlFotoPapeleta,
            url_foto_identidad_anverso = @varUrlFotoIdentidadAnverso,
            url_foto_identidad_reverso = @varUrlFotoIdentidadReverso,
            url_archivo_adicional = @varUrlArchivoAdicional,
            fecha_nacimiento = @varFechaNacimiento,
            modificado_por = @varUsuario,
            fecha_hora_modificado = GETDATE()
        WHERE pk_candidato = @varPkCandidato;

        SET @save = 1;
        SET @result = 'Registro actualizado correctamente';
        SET @varPkCandidato = @varPkCandidato;
    END
    ELSE
    BEGIN
        SET @result = 'Opción no válida';
    END

    SELECT @save AS 'save', @result AS result, @varPkCandidato AS pk;
END;
GO

--
-- Create or alter procedure [dbo].[VOT_get_elecciones_proceso_acta]
--
GO
PRINT (N'Create or alter procedure [dbo].[VOT_get_elecciones_proceso_acta]')
GO
CREATE OR ALTER PROCEDURE dbo.VOT_get_elecciones_proceso_acta
    @varPK INT,
    @opc INT
AS
BEGIN
    SELECT 
        acta.pk_acta,
        acta_tipo.pk_tipo,
        partido.pk_partido,
        proceso.pk_proceso,
        j.id AS pk_jrv,
        acta_tipo.nombre AS pk_tipo_nombre,
        eleccion_tipo.nombre AS pk_proceso_pk_eleccion_pk_tipo_nombre,
        eleccion_region.nombre AS pk_proceso_pk_eleccion_pk_region_nombre,
        CONCAT(proceso.dia, ' de ', 
               CASE proceso.mes 
                   WHEN '1' THEN 'Enero' 
                   WHEN '2' THEN 'Febrero' 
                   WHEN '3' THEN 'Marzo' 
                   WHEN '4' THEN 'Abril' 
                   WHEN '5' THEN 'Mayo' 
                   WHEN '6' THEN 'Junio' 
                   WHEN '7' THEN 'Julio' 
                   WHEN '8' THEN 'Agosto' 
                   WHEN '9' THEN 'Sprocesotiembre' 
                   WHEN '10' THEN 'Octubre' 
                   WHEN '11' THEN 'Noviembre' 
                   WHEN '12' THEN 'Diciembre' 
               END, ' del ', proceso.anio) AS pk_proceso_fecha,
        proceso.anio AS pk_proceso_anio,
        partido.nombre AS pk_partido_nombre,
        partido.abreviatura AS pk_partido_abreviatura,
        j.codigo AS pk_jrv_codigo,
        -- CAMPOS ADICIONALES
        acta.fecha_hora_inicio,
        acta.fecha_hora_finalizacion,
        acta.cantidad_papeletas_recibidas,
        acta.cantidad_papeletas_sobrantes,
        acta.cantidad_papeletas_utilizadas,
        acta.cantidad_votantes_ciudadanos,
        acta.cantidad_votantes_jrv,
        acta.cantidad_votantes_informaticos_electorales,
        acta.cantidad_votantes_total,
        acta.cantidad_votos_en_blanco,
        acta.cantidad_votos_nulos,
        acta.cantidad_votos_total,
        acta.cantidad_papeletas_validas,
        acta.cantidad_papeletas_en_blanco,
        acta.cantidad_papeletas_nulas,
        acta.url_foto
    FROM elecciones_proceso_acta acta
    LEFT JOIN elecciones_proceso_acta_tipo acta_tipo ON acta_tipo.pk_tipo = acta.pk_tipo AND acta_tipo.estado <> 3
    LEFT JOIN elecciones_proceso proceso ON acta.pk_proceso = proceso.pk_proceso AND proceso.estado <> 3
    LEFT JOIN elecciones eleccion ON proceso.pk_eleccion = eleccion.pk_eleccion AND eleccion.estado <> 3
    LEFT JOIN elecciones_tipo eleccion_tipo ON eleccion.pk_tipo = eleccion_tipo.pk_tipo AND eleccion_tipo.estado <> 3
    LEFT JOIN catalogo_regiones eleccion_region ON eleccion.pk_region = eleccion_region.pk_region AND eleccion_region.estado <> 3
    LEFT JOIN partidos partido ON acta.pk_partido = partido.pk_partido AND partido.estado <> 3
    LEFT JOIN jrv j ON j.id = acta.pk_jrv AND j.estado <> 3
    WHERE (@varPK = 0 OR acta.pk_acta = @varPK)
        AND (@opc = 0 OR acta.estado <> 3);
END;
GO

--
-- Create or alter procedure [dbo].[VOT_get_elecciones_proceso]
--
GO
PRINT (N'Create or alter procedure [dbo].[VOT_get_elecciones_proceso]')
GO
CREATE OR ALTER PROCEDURE dbo.VOT_get_elecciones_proceso
    @varPK INT,
    @opc INT
AS
BEGIN
    SELECT
    proceso.*,
    UPPER(
        CASE proceso.mes
            WHEN 1 THEN 'Enero'
            WHEN 2 THEN 'Febrero'
            WHEN 3 THEN 'Marzo'
            WHEN 4 THEN 'Abril'
            WHEN 5 THEN 'Mayo'
            WHEN 6 THEN 'Junio'
            WHEN 7 THEN 'Julio'
            WHEN 8 THEN 'Agosto'
            WHEN 9 THEN 'Septiembre'
            WHEN 10 THEN 'Octubre'
            WHEN 11 THEN 'Noviembre'
            WHEN 12 THEN 'Diciembre'
            ELSE 'Desconocido'
        END
    ) AS mes_verbose,
    eleccion_tipo.nombre AS pk_eleccion_pk_tipo_nombre,
    region.nombre AS pk_eleccion_pk_region_nombre
    FROM elecciones_proceso proceso
    LEFT JOIN elecciones eleccion ON eleccion.pk_eleccion = proceso.pk_eleccion
    LEFT JOIN elecciones_tipo eleccion_tipo ON eleccion_tipo.pk_tipo = eleccion.pk_tipo
    LEFT JOIN catalogo_regiones region ON region.pk_region = eleccion.pk_region
    WHERE (@varPK = 0 OR proceso.pk_proceso = @varPK)
    AND (@opc = 0 OR proceso.estado <> 3);
END;
GO

--
-- Create or alter procedure [dbo].[VOT_get_elecciones_candidatos_x_region]
--
GO
PRINT (N'Create or alter procedure [dbo].[VOT_get_elecciones_candidatos_x_region]')
GO
CREATE OR ALTER PROCEDURE dbo.VOT_get_elecciones_candidatos_x_region
    @varPK INT,
    @opc INT
AS
BEGIN
    SELECT
    configuracion.*,
    eleccion_tipo.nombre AS pk_eleccion_pk_tipo_nombre,
    eleccion_region.nombre AS pk_eleccion_pk_region_nombre,
    region.nombre AS pk_region_nombre,
    region_tipo.nombre AS pk_region_pk_tipo_nombre,
    candidato_tipo.nombre AS pk_candidato_pk_tipo_nombre
    FROM elecciones_candidatos_x_region configuracion
    LEFT JOIN elecciones eleccion ON eleccion.pk_eleccion = configuracion.pk_eleccion
    LEFT JOIN elecciones_tipo eleccion_tipo ON eleccion_tipo.pk_tipo = eleccion.pk_tipo
    LEFT JOIN catalogo_regiones eleccion_region ON eleccion_region.pk_region = eleccion.pk_region
    LEFT JOIN catalogo_regiones region ON region.pk_region = configuracion.pk_region
    LEFT JOIN catalogo_regiones_tipo region_tipo ON region_tipo.pk_tipo = region.pk_tipo
    LEFT JOIN candidatos_tipo candidato_tipo ON candidato_tipo.pk_tipo = configuracion.pk_candidato_tipo
    WHERE (@varPK = 0 OR configuracion.pk_configuracion = @varPK)
    AND (@opc = 0 OR configuracion.estado <> 3);
END;
GO

--
-- Create or alter procedure [dbo].[VOT_get_elecciones]
--
GO
PRINT (N'Create or alter procedure [dbo].[VOT_get_elecciones]')
GO
CREATE OR ALTER PROCEDURE dbo.VOT_get_elecciones
    @varPK INT,
    @opc INT
AS
BEGIN
    SELECT
    eleccion.*,
    region.nombre AS pk_region_nombre,
    region_tipo.nombre AS pk_region_pk_tipo_nombre,
    tipo.nombre AS pk_tipo_nombre
    FROM elecciones eleccion
    LEFT JOIN elecciones_tipo tipo ON tipo.pk_tipo = eleccion.pk_tipo
    LEFT JOIN catalogo_regiones region ON region.pk_region = eleccion.pk_region
    LEFT JOIN catalogo_regiones_tipo region_tipo ON region_tipo.pk_tipo = region.pk_tipo
    WHERE (@varPK = 0 OR eleccion.pk_eleccion = @varPK)
    AND (@opc = 0 OR eleccion.estado <> 3);
END;
GO

--
-- Create or alter procedure [dbo].[VOT_delete_elecciones]
--
GO
PRINT (N'Create or alter procedure [dbo].[VOT_delete_elecciones]')
GO
CREATE OR ALTER PROCEDURE dbo.VOT_delete_elecciones
    @varPk INT,
    @varUsuario INT,
    @varOpc INT -- 1 Borrado lógico, 2 Borrado físico
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @result NVARCHAR(200), @save INT = 0;

    IF @varOpc = 1 -- Borrado lógico
    BEGIN
        UPDATE elecciones
        SET estado = 3,
            modificado_por = @varUsuario,
            fecha_hora_modificado = GETDATE()
        WHERE pk_eleccion = @varPk;

        SET @save = 1;
        SET @result = 'Borrado lógico realizado correctamente';
    END
    ELSE IF @varOpc = 2 -- Borrado físico
    BEGIN
        DELETE FROM elecciones
        WHERE pk_eleccion = @varPk;

        SET @save = 1;
        SET @result = 'Borrado físico realizado correctamente';
    END
    ELSE
    BEGIN
        SET @result = 'Opción no válida';
    END

    SELECT @save AS 'save', @result AS result;
END;
GO

--
-- Create or alter procedure [dbo].[sp_get_referentes]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_get_referentes]')
GO
CREATE OR ALTER PROCEDURE dbo.sp_get_referentes
    @busqueda VARCHAR(255)
AS
BEGIN
    SET NOCOUNT ON;

    SELECT *
    FROM dbo.miembro
    WHERE tipo_miembro_id = 3;
END;
GO

--
-- Create or alter procedure [dbo].[sp_get_capacitadores]
--
GO
PRINT (N'Create or alter procedure [dbo].[sp_get_capacitadores]')
GO
CREATE OR ALTER PROCEDURE dbo.sp_get_capacitadores
    @busqueda VARCHAR(255)
AS
BEGIN
    SET NOCOUNT ON;

    SELECT 
        m.id AS miembro_id,
        m.nombres,
        m.apellidos,
        m.dni,
        m.telefono1,
        m.telefono2,
        m.direccion,
        m.sexo,
        m.correo_electronico,
        m.fecha_nacimiento
    FROM dbo.miembro m
    WHERE (m.nombres LIKE '%' + @busqueda + '%'
           OR m.apellidos LIKE '%' + @busqueda + '%'
           OR m.dni LIKE '%' + @busqueda + '%')
      AND m.estado <> 3  -- Filtramos registros activos
      AND m.tipo_miembro_id = 2 -- Solo capacitadores
    ORDER BY m.nombres;
END;
GO

-- 
-- Dumping data for table tipo_rol
--
PRINT (N'Dumping data for table tipo_rol')
SET IDENTITY_INSERT dbo.tipo_rol ON
GO
INSERT dbo.tipo_rol(id, nombre_tipo_rol, id_mayor) VALUES (1, 'Titular', NULL)
INSERT dbo.tipo_rol(id, nombre_tipo_rol, id_mayor) VALUES (2, 'Suplente', 1)
INSERT dbo.tipo_rol(id, nombre_tipo_rol, id_mayor) VALUES (3, 'Reemplazo', 2)
GO
SET IDENTITY_INSERT dbo.tipo_rol OFF
GO

-- 
-- Dumping data for table tipo_personal_confiable
--
PRINT (N'Dumping data for table tipo_personal_confiable')
SET IDENTITY_INSERT dbo.tipo_personal_confiable ON
GO
INSERT dbo.tipo_personal_confiable(id, nombre, descripcion) VALUES (1, 'CAPACITADOR', NULL)
INSERT dbo.tipo_personal_confiable(id, nombre, descripcion) VALUES (2, 'REFERIDO', NULL)
GO
SET IDENTITY_INSERT dbo.tipo_personal_confiable OFF
GO

-- 
-- Dumping data for table tipo_miembro
--
PRINT (N'Dumping data for table tipo_miembro')
SET IDENTITY_INSERT dbo.tipo_miembro ON
GO
INSERT dbo.tipo_miembro(id, nombre, descripcion) VALUES (1, 'MIEMBRO', NULL)
INSERT dbo.tipo_miembro(id, nombre, descripcion) VALUES (2, 'CAPACITADOR', NULL)
INSERT dbo.tipo_miembro(id, nombre, descripcion) VALUES (3, 'REFIERE', NULL)
INSERT dbo.tipo_miembro(id, nombre, descripcion) VALUES (4, 'LOGISTICA', NULL)
GO
SET IDENTITY_INSERT dbo.tipo_miembro OFF
GO

-- 
-- Dumping data for table rol_jrv
--
PRINT (N'Dumping data for table rol_jrv')
SET IDENTITY_INSERT dbo.rol_jrv ON
GO
INSERT dbo.rol_jrv(id, nombre_rol, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modifcado, id_tipo_rol) VALUES (1, 'Presidente', 1, 'Admin', '2025-02-20 21:05:33.207', NULL, NULL, 1)
INSERT dbo.rol_jrv(id, nombre_rol, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modifcado, id_tipo_rol) VALUES (3, 'Secretario', 1, 'Admin', '2025-02-20 21:05:33.207', NULL, NULL, 1)
INSERT dbo.rol_jrv(id, nombre_rol, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modifcado, id_tipo_rol) VALUES (5, 'Escrutador', 1, 'Admin', '2025-02-20 21:05:33.207', NULL, NULL, 1)
INSERT dbo.rol_jrv(id, nombre_rol, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modifcado, id_tipo_rol) VALUES (7, 'Vocal I', 1, 'Admin', '2025-02-20 21:05:33.207', NULL, NULL, 1)
INSERT dbo.rol_jrv(id, nombre_rol, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modifcado, id_tipo_rol) VALUES (8, 'Presidente', 1, 'ASTRID', '2025-03-08 13:25:31.530', NULL, NULL, 2)
INSERT dbo.rol_jrv(id, nombre_rol, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modifcado, id_tipo_rol) VALUES (9, 'Secretario', 1, 'ASTRID', '2025-03-08 13:25:37.137', NULL, NULL, 2)
INSERT dbo.rol_jrv(id, nombre_rol, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modifcado, id_tipo_rol) VALUES (10, 'Escrutador', 1, 'ASTRID', '2025-03-08 13:25:42.493', NULL, NULL, 2)
INSERT dbo.rol_jrv(id, nombre_rol, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modifcado, id_tipo_rol) VALUES (11, 'Vocal I', 1, 'ASTRID', '2025-03-08 13:25:53.953', NULL, NULL, 2)
INSERT dbo.rol_jrv(id, nombre_rol, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modifcado, id_tipo_rol) VALUES (12, 'Presidente', 1, 'ASTRID', '2025-03-08 13:26:11.920', NULL, NULL, 3)
INSERT dbo.rol_jrv(id, nombre_rol, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modifcado, id_tipo_rol) VALUES (13, 'Secretario', 1, 'ASTRID', '2025-03-08 13:26:17.887', NULL, NULL, 3)
INSERT dbo.rol_jrv(id, nombre_rol, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modifcado, id_tipo_rol) VALUES (14, 'Escrutador', 1, 'ASTRID', '2025-03-08 13:26:25.343', NULL, NULL, 3)
INSERT dbo.rol_jrv(id, nombre_rol, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modifcado, id_tipo_rol) VALUES (15, 'Vocal I', 1, 'ASTRID', '2025-03-08 13:26:32.127', NULL, NULL, 3)
GO
SET IDENTITY_INSERT dbo.rol_jrv OFF
GO

-- 
-- Dumping data for table persona_jrv_pendiente
--
PRINT (N'Dumping data for table persona_jrv_pendiente')
SET IDENTITY_INSERT dbo.persona_jrv_pendiente ON
GO
INSERT dbo.persona_jrv_pendiente(id, nombre, dni, direccion, catalogo_profesion_id, telefono1, telefono2, telefono3, horario_trabajo_estudio, disponibilidad_capacitacion, ha_participado_procesos_electorales, ha_sido_miembro_mer, ultimo_proceso, uso_manejo_computador, lo_basico, tiene_experiencia_trep, entrega_materiales, grupo, referido, centro_votacion_id, telefono, observaciones, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificado, foto_url, foto_imagen, capacitador_id, empresa_id, foto_url_2, sexo, token, estado_pendiente, fecha_solicitud, catalogo_escolaridad_id) VALUES (1, 'Maria Mercedes', '0601200509871', '', 27, '99999999', '', '', '', '1900-01-01 00:00:00.000', CONVERT(bit, 'True'), CONVERT(bit, 'True'), '1900-01-01', CONVERT(bit, 'True'), CONVERT(bit, 'True'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), '', '', 1, '', '', NULL, 'ASTRID', '2025-02-25 18:35:58.203', NULL, NULL, NULL, NULL, 7, 1, NULL, 'Femenino', '4e25d3b0-d79e-4314-b1e8-bba313520b51', 1, '2025-02-25 18:35:58.203', 3)
GO
SET IDENTITY_INSERT dbo.persona_jrv_pendiente OFF
GO

-- 
-- Dumping data for table persona_jrv_eliminar_pendiente
--
PRINT (N'Dumping data for table persona_jrv_eliminar_pendiente')
-- Table testing_votaciones.dbo.persona_jrv_eliminar_pendiente does not contain any data (it is empty)

-- 
-- Dumping data for table persona_jrv
--
PRINT (N'Dumping data for table persona_jrv')
SET IDENTITY_INSERT dbo.persona_jrv ON
GO
INSERT dbo.persona_jrv(id, nombre, dni, direccion, catalogo_profesion_id, telefono1, telefono2, telefono3, horario_trabajo_estudio, disponibilidad_capacitacion, ha_participado_procesos_electorales, ha_sido_miembro_mer, ultimo_proceso, uso_manejo_computador, lo_basico, tiene_experiencia_trep, entrega_materiales, grupo, referido, centro_votacion_id, telefono, observaciones, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificado, foto_url, foto_imagen, capacitador_id, empresa_id, foto_url_2, sexo, catalogo_escolaridad_id, horario_texto, persona_confiable_id, capacitacion_id) VALUES (1, 'Maria Mercedes', '0601200509871', '', 27, 99999999, 0, 0, '', '1900-01-01 00:00:00.000', CONVERT(bit, 'True'), CONVERT(bit, 'True'), '1900-01-01', CONVERT(bit, 'True'), CONVERT(bit, 'True'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), '', '', 1, 0, '', 3, 'ASTRID', '2025-02-24 18:54:32.293', 'ASTRID', '2025-02-25 22:41:31.730', '/media/VOLUNTARIOS/voluntario_1_1740444134.jpg', NULL, 7, 1, '/media/VOLUNTARIOS/voluntario2_1_1740444134.jpg', 'Femenino', 3, NULL, NULL, NULL)
INSERT dbo.persona_jrv(id, nombre, dni, direccion, catalogo_profesion_id, telefono1, telefono2, telefono3, horario_trabajo_estudio, disponibilidad_capacitacion, ha_participado_procesos_electorales, ha_sido_miembro_mer, ultimo_proceso, uso_manejo_computador, lo_basico, tiene_experiencia_trep, entrega_materiales, grupo, referido, centro_votacion_id, telefono, observaciones, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificado, foto_url, foto_imagen, capacitador_id, empresa_id, foto_url_2, sexo, catalogo_escolaridad_id, horario_texto, persona_confiable_id, capacitacion_id) VALUES (2, 'Antonio Mercado 2', '0601200509871', '', 28, 99124312, 0, 0, '', '1900-01-01 00:00:00.000', CONVERT(bit, 'False'), CONVERT(bit, 'False'), '1900-01-01', CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), '', '', 1, 0, '', 3, 'ASTRID', '2025-02-25 01:08:32.813', 'ASTRID', '2025-02-25 01:08:53.137', NULL, NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL)
INSERT dbo.persona_jrv(id, nombre, dni, direccion, catalogo_profesion_id, telefono1, telefono2, telefono3, horario_trabajo_estudio, disponibilidad_capacitacion, ha_participado_procesos_electorales, ha_sido_miembro_mer, ultimo_proceso, uso_manejo_computador, lo_basico, tiene_experiencia_trep, entrega_materiales, grupo, referido, centro_votacion_id, telefono, observaciones, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificado, foto_url, foto_imagen, capacitador_id, empresa_id, foto_url_2, sexo, catalogo_escolaridad_id, horario_texto, persona_confiable_id, capacitacion_id) VALUES (3, 'Maria Mercedes', '0601200509871', '', 27, 99999999, 0, 0, '', '1900-01-01 00:00:00.000', CONVERT(bit, 'True'), CONVERT(bit, 'True'), '1900-01-01', CONVERT(bit, 'True'), CONVERT(bit, 'True'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), '', '', 1, 0, '', 3, 'ASTRID', '2025-02-25 01:09:24.047', NULL, '2025-02-25 20:37:04.607', '/media/VOLUNTARIOS/voluntario_3_1740449439.jpg', NULL, NULL, 1, '/media/VOLUNTARIOS/voluntario2_3_1740449439.jpg', NULL, NULL, NULL, NULL, NULL)
INSERT dbo.persona_jrv(id, nombre, dni, direccion, catalogo_profesion_id, telefono1, telefono2, telefono3, horario_trabajo_estudio, disponibilidad_capacitacion, ha_participado_procesos_electorales, ha_sido_miembro_mer, ultimo_proceso, uso_manejo_computador, lo_basico, tiene_experiencia_trep, entrega_materiales, grupo, referido, centro_votacion_id, telefono, observaciones, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificado, foto_url, foto_imagen, capacitador_id, empresa_id, foto_url_2, sexo, catalogo_escolaridad_id, horario_texto, persona_confiable_id, capacitacion_id) VALUES (6, 'Maria Mercado', '0601200100367', '', 28, 99124312, 0, 0, '', '1900-01-01 00:00:00.000', CONVERT(bit, 'False'), CONVERT(bit, 'False'), '1900-01-01', CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), '', '', 1, 0, '', 3, 'ASTRID', '2025-02-25 01:18:14.280', 'ASTRID', '2025-02-25 02:33:44.633', NULL, NULL, NULL, 1, NULL, 'femenino', NULL, NULL, NULL, NULL)
INSERT dbo.persona_jrv(id, nombre, dni, direccion, catalogo_profesion_id, telefono1, telefono2, telefono3, horario_trabajo_estudio, disponibilidad_capacitacion, ha_participado_procesos_electorales, ha_sido_miembro_mer, ultimo_proceso, uso_manejo_computador, lo_basico, tiene_experiencia_trep, entrega_materiales, grupo, referido, centro_votacion_id, telefono, observaciones, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificado, foto_url, foto_imagen, capacitador_id, empresa_id, foto_url_2, sexo, catalogo_escolaridad_id, horario_texto, persona_confiable_id, capacitacion_id) VALUES (7, 'Veronica Castro', '0601200509871', 'Barrio La libertad', 76, 99999999, 0, 0, '', '1900-01-01 00:00:00.000', CONVERT(bit, 'False'), CONVERT(bit, 'False'), '1900-01-01', CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), 'FUERZA', '', 1, 0, '', 3, 'ASTRID', '2025-02-25 01:54:33.210', NULL, '2025-02-25 23:38:53.420', '/media/VOLUNTARIOS/voluntario_7_1740526754.jpg', NULL, NULL, 1, '/media/VOLUNTARIOS/voluntario2_7_1740526754.jpg', NULL, 3, NULL, NULL, NULL)
INSERT dbo.persona_jrv(id, nombre, dni, direccion, catalogo_profesion_id, telefono1, telefono2, telefono3, horario_trabajo_estudio, disponibilidad_capacitacion, ha_participado_procesos_electorales, ha_sido_miembro_mer, ultimo_proceso, uso_manejo_computador, lo_basico, tiene_experiencia_trep, entrega_materiales, grupo, referido, centro_votacion_id, telefono, observaciones, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificado, foto_url, foto_imagen, capacitador_id, empresa_id, foto_url_2, sexo, catalogo_escolaridad_id, horario_texto, persona_confiable_id, capacitacion_id) VALUES (10, 'Maria Edelfida', '07021993987651', 'Barrio La libertad', 28, 999999992, 0, 0, '', '1900-01-01 00:00:00.000', CONVERT(bit, 'True'), CONVERT(bit, 'True'), '1900-01-01', CONVERT(bit, 'True'), CONVERT(bit, 'True'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), '', '', 1, 0, '', 3, 'ASTRID', '2025-02-25 15:44:32.787', NULL, '2025-02-25 23:50:18.137', NULL, NULL, NULL, 1, NULL, NULL, 2, NULL, NULL, NULL)
INSERT dbo.persona_jrv(id, nombre, dni, direccion, catalogo_profesion_id, telefono1, telefono2, telefono3, horario_trabajo_estudio, disponibilidad_capacitacion, ha_participado_procesos_electorales, ha_sido_miembro_mer, ultimo_proceso, uso_manejo_computador, lo_basico, tiene_experiencia_trep, entrega_materiales, grupo, referido, centro_votacion_id, telefono, observaciones, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificado, foto_url, foto_imagen, capacitador_id, empresa_id, foto_url_2, sexo, catalogo_escolaridad_id, horario_texto, persona_confiable_id, capacitacion_id) VALUES (14, 'Antonio Mercado', '0601200509871', '', 27, 99999999, 0, 0, '', '1900-01-01 00:00:00.000', CONVERT(bit, 'False'), CONVERT(bit, 'False'), '1900-01-01', CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), '', '', 1, 0, '', 3, 'ASTRID', '2025-02-25 23:53:09.550', 'ASTRID', '2025-02-26 08:44:34.663', '/media/VOLUNTARIOS/voluntario_14_1740545432.jpg', NULL, NULL, 1, '/media/VOLUNTARIOS/voluntario2_14_1740545432.jpg', 'femenino', 5, NULL, NULL, NULL)
INSERT dbo.persona_jrv(id, nombre, dni, direccion, catalogo_profesion_id, telefono1, telefono2, telefono3, horario_trabajo_estudio, disponibilidad_capacitacion, ha_participado_procesos_electorales, ha_sido_miembro_mer, ultimo_proceso, uso_manejo_computador, lo_basico, tiene_experiencia_trep, entrega_materiales, grupo, referido, centro_votacion_id, telefono, observaciones, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificado, foto_url, foto_imagen, capacitador_id, empresa_id, foto_url_2, sexo, catalogo_escolaridad_id, horario_texto, persona_confiable_id, capacitacion_id) VALUES (15, 'Ayari Hernandez', '0601200509812', '', 27, 99124312, 0, 0, '', '1900-01-01 00:00:00.000', CONVERT(bit, 'False'), CONVERT(bit, 'False'), '1900-01-01', CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), '', '', 1, 0, '', 3, 'ASTRID', '2025-02-25 23:53:35.563', 'ASTRID', '2025-02-26 08:53:29.593', '/media/VOLUNTARIOS/voluntario_15_1740559447.jpg', NULL, NULL, 1, '/media/VOLUNTARIOS/voluntario2_15_1740559447.jpg', 'femenino', 3, NULL, NULL, NULL)
INSERT dbo.persona_jrv(id, nombre, dni, direccion, catalogo_profesion_id, telefono1, telefono2, telefono3, horario_trabajo_estudio, disponibilidad_capacitacion, ha_participado_procesos_electorales, ha_sido_miembro_mer, ultimo_proceso, uso_manejo_computador, lo_basico, tiene_experiencia_trep, entrega_materiales, grupo, referido, centro_votacion_id, telefono, observaciones, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificado, foto_url, foto_imagen, capacitador_id, empresa_id, foto_url_2, sexo, catalogo_escolaridad_id, horario_texto, persona_confiable_id, capacitacion_id) VALUES (16, 'Antonio Mercado', '0601200509812', '', 27, 99999999, 0, 0, '', '1900-01-01 00:00:00.000', CONVERT(bit, 'True'), CONVERT(bit, 'False'), '1900-01-01', CONVERT(bit, 'True'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), '', '', 3, 0, '', 3, 'ASTRID', '2025-02-26 08:54:46.557', 'ASTRID', '2025-02-26 11:26:00.320', '/media/VOLUNTARIOS/voluntario_16_1740568878.jpg', NULL, NULL, 0, '/media/VOLUNTARIOS/voluntario2_16_1740568879.jpg', 'masculino', 4, NULL, NULL, NULL)
INSERT dbo.persona_jrv(id, nombre, dni, direccion, catalogo_profesion_id, telefono1, telefono2, telefono3, horario_trabajo_estudio, disponibilidad_capacitacion, ha_participado_procesos_electorales, ha_sido_miembro_mer, ultimo_proceso, uso_manejo_computador, lo_basico, tiene_experiencia_trep, entrega_materiales, grupo, referido, centro_votacion_id, telefono, observaciones, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificado, foto_url, foto_imagen, capacitador_id, empresa_id, foto_url_2, sexo, catalogo_escolaridad_id, horario_texto, persona_confiable_id, capacitacion_id) VALUES (18, 'Gabriela Hernandez', '07021993987651', 'Choluteca', 211, 99999999, 0, 0, '', '1900-01-01 00:00:00.000', CONVERT(bit, 'True'), CONVERT(bit, 'True'), '1900-01-01', CONVERT(bit, 'True'), CONVERT(bit, 'True'), CONVERT(bit, 'True'), CONVERT(bit, 'False'), '', '', 3, 0, '', 3, 'ASTRID', '2025-02-26 11:24:20.983', 'ASTRID', '2025-02-27 02:42:43.383', '/media/VOLUNTARIOS/voluntario_18_1740569172.jpg', NULL, NULL, 0, '/media/VOLUNTARIOS/voluntario2_18_1740569172.jpg', NULL, 7, NULL, NULL, NULL)
INSERT dbo.persona_jrv(id, nombre, dni, direccion, catalogo_profesion_id, telefono1, telefono2, telefono3, horario_trabajo_estudio, disponibilidad_capacitacion, ha_participado_procesos_electorales, ha_sido_miembro_mer, ultimo_proceso, uso_manejo_computador, lo_basico, tiene_experiencia_trep, entrega_materiales, grupo, referido, centro_votacion_id, telefono, observaciones, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificado, foto_url, foto_imagen, capacitador_id, empresa_id, foto_url_2, sexo, catalogo_escolaridad_id, horario_texto, persona_confiable_id, capacitacion_id) VALUES (20, 'PRUEBA PRUEBA', '0601200509871', '', 27, 99124312, 0, 0, 'Vespertino', '1900-01-01 00:00:00.000', CONVERT(bit, 'False'), CONVERT(bit, 'False'), '1900-01-01', CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), '', '', 2, 0, '', 3, 'ASTRID', '2025-02-26 12:06:22.093', 'ASTRID', '2025-02-27 02:42:48.270', '/media/VOLUNTARIOS/voluntario_20_1740573191.jpg', NULL, NULL, 0, NULL, NULL, 5, NULL, NULL, NULL)
INSERT dbo.persona_jrv(id, nombre, dni, direccion, catalogo_profesion_id, telefono1, telefono2, telefono3, horario_trabajo_estudio, disponibilidad_capacitacion, ha_participado_procesos_electorales, ha_sido_miembro_mer, ultimo_proceso, uso_manejo_computador, lo_basico, tiene_experiencia_trep, entrega_materiales, grupo, referido, centro_votacion_id, telefono, observaciones, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificado, foto_url, foto_imagen, capacitador_id, empresa_id, foto_url_2, sexo, catalogo_escolaridad_id, horario_texto, persona_confiable_id, capacitacion_id) VALUES (21, 'Brian Mendoza', '0601200100765', 'ninguna', 211, 99921234, 0, 0, 'Vespertino', '1900-01-01 00:00:00.000', CONVERT(bit, 'True'), CONVERT(bit, 'False'), '1900-01-01', CONVERT(bit, 'True'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), '', '', 3, 0, '', 3, 'ASTRID', '2025-02-26 22:53:14.073', 'ASTRID', '2025-02-26 22:55:20.253', NULL, NULL, NULL, 0, NULL, 'femenino', 4, NULL, NULL, NULL)
INSERT dbo.persona_jrv(id, nombre, dni, direccion, catalogo_profesion_id, telefono1, telefono2, telefono3, horario_trabajo_estudio, disponibilidad_capacitacion, ha_participado_procesos_electorales, ha_sido_miembro_mer, ultimo_proceso, uso_manejo_computador, lo_basico, tiene_experiencia_trep, entrega_materiales, grupo, referido, centro_votacion_id, telefono, observaciones, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificado, foto_url, foto_imagen, capacitador_id, empresa_id, foto_url_2, sexo, catalogo_escolaridad_id, horario_texto, persona_confiable_id, capacitacion_id) VALUES (22, 'Brenda Gonzales', '0601200100678', 'Ninguna', 27, 99280912, 0, 0, 'Vespertino', '1900-01-01 00:00:00.000', CONVERT(bit, 'False'), CONVERT(bit, 'False'), '1900-01-01', CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), '', '', 4, 0, '', 3, 'ASTRID', '2025-02-26 23:21:46.177', 'ASTRID', '2025-02-27 02:43:49.517', NULL, NULL, NULL, 0, NULL, 'femenino', 4, NULL, NULL, NULL)
INSERT dbo.persona_jrv(id, nombre, dni, direccion, catalogo_profesion_id, telefono1, telefono2, telefono3, horario_trabajo_estudio, disponibilidad_capacitacion, ha_participado_procesos_electorales, ha_sido_miembro_mer, ultimo_proceso, uso_manejo_computador, lo_basico, tiene_experiencia_trep, entrega_materiales, grupo, referido, centro_votacion_id, telefono, observaciones, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificado, foto_url, foto_imagen, capacitador_id, empresa_id, foto_url_2, sexo, catalogo_escolaridad_id, horario_texto, persona_confiable_id, capacitacion_id) VALUES (23, 'Merida Martinez', '0601200145012', 'Ninguna', 28, 99999999, 0, 0, 'Vespertino', '1900-01-01 00:00:00.000', CONVERT(bit, 'False'), CONVERT(bit, 'False'), '1900-01-01', CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), '', '', 3, 0, '', 3, 'ASTRID', '2025-02-27 00:06:13.777', 'ASTRID', '2025-02-27 11:28:48.757', '/media/VOLUNTARIOS/voluntario_23_1740625175.jpg', NULL, NULL, 0, '/media/VOLUNTARIOS/voluntario2_23_1740625175.jpg', NULL, 3, 'PRUEBA 7', NULL, NULL)
INSERT dbo.persona_jrv(id, nombre, dni, direccion, catalogo_profesion_id, telefono1, telefono2, telefono3, horario_trabajo_estudio, disponibilidad_capacitacion, ha_participado_procesos_electorales, ha_sido_miembro_mer, ultimo_proceso, uso_manejo_computador, lo_basico, tiene_experiencia_trep, entrega_materiales, grupo, referido, centro_votacion_id, telefono, observaciones, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificado, foto_url, foto_imagen, capacitador_id, empresa_id, foto_url_2, sexo, catalogo_escolaridad_id, horario_texto, persona_confiable_id, capacitacion_id) VALUES (24, 'REINA GONZALEZ', '0601199867890', 'Barrio las colinas', 27, 99887766, 0, 0, 'Vespertino', '1900-01-01 00:00:00.000', CONVERT(bit, 'False'), CONVERT(bit, 'False'), '1900-01-01', CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), '', '', 5, 0, '', 3, 'ASTRID', '2025-02-27 02:44:38.060', 'ASTRID', '2025-02-27 11:29:58.127', NULL, NULL, NULL, 0, NULL, 'femenino', 2, '', NULL, NULL)
INSERT dbo.persona_jrv(id, nombre, dni, direccion, catalogo_profesion_id, telefono1, telefono2, telefono3, horario_trabajo_estudio, disponibilidad_capacitacion, ha_participado_procesos_electorales, ha_sido_miembro_mer, ultimo_proceso, uso_manejo_computador, lo_basico, tiene_experiencia_trep, entrega_materiales, grupo, referido, centro_votacion_id, telefono, observaciones, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificado, foto_url, foto_imagen, capacitador_id, empresa_id, foto_url_2, sexo, catalogo_escolaridad_id, horario_texto, persona_confiable_id, capacitacion_id) VALUES (25, 'JAIRO JOSUE HERNANDEZ MORENO', '0615197600510', 'barrio la venecia', 173, 99124312, 0, 0, 'Nocturno', '1900-01-01 00:00:00.000', CONVERT(bit, 'False'), CONVERT(bit, 'False'), '1900-01-01', CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), 'Grupo 1', NULL, 8, 0, '', 1, 'ASTRID', '2025-02-27 03:03:06.753', NULL, '2025-02-28 18:00:22.933', '/media/VOLUNTARIOS/voluntario_25_1740760352.jpg', NULL, NULL, 0, '/media/VOLUNTARIOS/voluntario2_25_1740760352.jpg', 'Masculino', 5, '', NULL, NULL)
INSERT dbo.persona_jrv(id, nombre, dni, direccion, catalogo_profesion_id, telefono1, telefono2, telefono3, horario_trabajo_estudio, disponibilidad_capacitacion, ha_participado_procesos_electorales, ha_sido_miembro_mer, ultimo_proceso, uso_manejo_computador, lo_basico, tiene_experiencia_trep, entrega_materiales, grupo, referido, centro_votacion_id, telefono, observaciones, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificado, foto_url, foto_imagen, capacitador_id, empresa_id, foto_url_2, sexo, catalogo_escolaridad_id, horario_texto, persona_confiable_id, capacitacion_id) VALUES (26, 'Juana Sanchez', '0601200509871', '', 76, 99121111, 0, 0, 'Vespertino', '2025-02-27 00:00:00.000', CONVERT(bit, 'False'), CONVERT(bit, 'False'), '2025-02-27', CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), '', '', 6, 999999882, '', 3, 'ASTRID', '2025-02-27 11:05:50.070', 'ASTRID', '2025-02-28 11:11:23.200', '/media/VOLUNTARIOS/voluntario_26_1740657534.jpg', NULL, NULL, 0, NULL, NULL, 5, '', NULL, NULL)
INSERT dbo.persona_jrv(id, nombre, dni, direccion, catalogo_profesion_id, telefono1, telefono2, telefono3, horario_trabajo_estudio, disponibilidad_capacitacion, ha_participado_procesos_electorales, ha_sido_miembro_mer, ultimo_proceso, uso_manejo_computador, lo_basico, tiene_experiencia_trep, entrega_materiales, grupo, referido, centro_votacion_id, telefono, observaciones, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificado, foto_url, foto_imagen, capacitador_id, empresa_id, foto_url_2, sexo, catalogo_escolaridad_id, horario_texto, persona_confiable_id, capacitacion_id) VALUES (27, 'Maria Edelfida', '0601200509812', 'Ninguna', 76, 999999992, 9, 9, 'Vespertino', '2025-02-27 05:06:00.000', CONVERT(bit, 'True'), CONVERT(bit, 'True'), '2025-01-27', CONVERT(bit, 'True'), CONVERT(bit, 'True'), CONVERT(bit, 'True'), CONVERT(bit, 'False'), 'm', 'm', 8, 999999882, 'm', 3, 'ASTRID', '2025-02-27 11:06:57.677', 'ASTRID', '2025-02-28 11:11:29.093', NULL, NULL, NULL, 0, NULL, '', 5, '', NULL, NULL)
INSERT dbo.persona_jrv(id, nombre, dni, direccion, catalogo_profesion_id, telefono1, telefono2, telefono3, horario_trabajo_estudio, disponibilidad_capacitacion, ha_participado_procesos_electorales, ha_sido_miembro_mer, ultimo_proceso, uso_manejo_computador, lo_basico, tiene_experiencia_trep, entrega_materiales, grupo, referido, centro_votacion_id, telefono, observaciones, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificado, foto_url, foto_imagen, capacitador_id, empresa_id, foto_url_2, sexo, catalogo_escolaridad_id, horario_texto, persona_confiable_id, capacitacion_id) VALUES (28, 'Francisco Martinez Gomez', '0601200509871', 'Choluteca, Choluteca', 162, 99121111, 0, 0, 'Vespertino', '2025-02-27 00:00:00.000', CONVERT(bit, 'False'), CONVERT(bit, 'False'), '1900-01-01', CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), '', '', 6, 0, '', 1, 'ASTRID', '2025-02-27 11:34:02.220', NULL, '2025-02-27 13:24:57.603', '/media/VOLUNTARIOS/voluntario_28_1740757589.jpg', NULL, NULL, 0, '/media/VOLUNTARIOS/voluntario2_28_1740757789.jpg', 'Masculino', 8, 'Completo', NULL, NULL)
INSERT dbo.persona_jrv(id, nombre, dni, direccion, catalogo_profesion_id, telefono1, telefono2, telefono3, horario_trabajo_estudio, disponibilidad_capacitacion, ha_participado_procesos_electorales, ha_sido_miembro_mer, ultimo_proceso, uso_manejo_computador, lo_basico, tiene_experiencia_trep, entrega_materiales, grupo, referido, centro_votacion_id, telefono, observaciones, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificado, foto_url, foto_imagen, capacitador_id, empresa_id, foto_url_2, sexo, catalogo_escolaridad_id, horario_texto, persona_confiable_id, capacitacion_id) VALUES (29, 'Juan Carlos Rosales Nuñez', '0101197501213', 'Choluteca', 26, 94870031, 0, 0, 'Matutino', '2025-02-27 08:59:00.000', CONVERT(bit, 'True'), CONVERT(bit, 'True'), '1900-01-01', CONVERT(bit, 'True'), CONVERT(bit, 'True'), CONVERT(bit, 'True'), CONVERT(bit, 'False'), '1', 'Ramón y Kelvin', 6, 0, 'Exelente', 1, 'JROSALES', '2025-02-27 15:01:06.850', NULL, '2025-02-28 00:05:31.687', NULL, NULL, NULL, 0, '/media/VOLUNTARIOS/voluntario2_29_1740757833.jpg', 'Masculino', 8, '5:00 am a 7:00 pm', NULL, NULL)
INSERT dbo.persona_jrv(id, nombre, dni, direccion, catalogo_profesion_id, telefono1, telefono2, telefono3, horario_trabajo_estudio, disponibilidad_capacitacion, ha_participado_procesos_electorales, ha_sido_miembro_mer, ultimo_proceso, uso_manejo_computador, lo_basico, tiene_experiencia_trep, entrega_materiales, grupo, referido, centro_votacion_id, telefono, observaciones, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificado, foto_url, foto_imagen, capacitador_id, empresa_id, foto_url_2, sexo, catalogo_escolaridad_id, horario_texto, persona_confiable_id, capacitacion_id) VALUES (30, 'Juan Carlos Rosales Nuñez', '0101197501213', 'Choluteca', 26, 94870031, 0, 0, 'Matutino', '2025-02-27 08:59:00.000', CONVERT(bit, 'True'), CONVERT(bit, 'True'), '1900-01-01', CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), '1', 'Ramón y Kelvin', 6, 0, 'Exelente', 3, 'JROSALES', '2025-02-27 15:02:19.740', 'ASTRID', '2025-02-28 11:11:54.610', '/media/VOLUNTARIOS/voluntario_30_1740668739.jpg', NULL, NULL, 0, NULL, 'masculino', 8, '5:00 am a 7:00 pm', NULL, NULL)
INSERT dbo.persona_jrv(id, nombre, dni, direccion, catalogo_profesion_id, telefono1, telefono2, telefono3, horario_trabajo_estudio, disponibilidad_capacitacion, ha_participado_procesos_electorales, ha_sido_miembro_mer, ultimo_proceso, uso_manejo_computador, lo_basico, tiene_experiencia_trep, entrega_materiales, grupo, referido, centro_votacion_id, telefono, observaciones, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificado, foto_url, foto_imagen, capacitador_id, empresa_id, foto_url_2, sexo, catalogo_escolaridad_id, horario_texto, persona_confiable_id, capacitacion_id) VALUES (31, 'Kelvin Osiris Vilchez Miranda', '0601198106762', 'Colonia 9 enero', 26, 99462780, 88, 888, 'Matutino', '2025-02-27 09:02:00.000', CONVERT(bit, 'True'), CONVERT(bit, 'True'), '2025-02-27', CONVERT(bit, 'True'), CONVERT(bit, 'True'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), '.', 'Kelvin Osiris Vilchez Miranda', 7, 888888, '.', 1, 'KVILCHEZ', '2025-02-27 15:16:24.813', NULL, NULL, NULL, NULL, NULL, 0, '/media/VOLUNTARIOS/voluntario2_31_1740758334.jpg', 'masculino', 8, '7 a 5 pm', NULL, NULL)
INSERT dbo.persona_jrv(id, nombre, dni, direccion, catalogo_profesion_id, telefono1, telefono2, telefono3, horario_trabajo_estudio, disponibilidad_capacitacion, ha_participado_procesos_electorales, ha_sido_miembro_mer, ultimo_proceso, uso_manejo_computador, lo_basico, tiene_experiencia_trep, entrega_materiales, grupo, referido, centro_votacion_id, telefono, observaciones, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificado, foto_url, foto_imagen, capacitador_id, empresa_id, foto_url_2, sexo, catalogo_escolaridad_id, horario_texto, persona_confiable_id, capacitacion_id) VALUES (32, 'Gisselle Gomez', '0601200509871', 'Barrio La libertad', 17, 99876543, 0, 0, 'Matutino', '1900-01-01 00:00:00.000', CONVERT(bit, 'False'), CONVERT(bit, 'False'), '1900-01-01', CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), '', '', 6, 0, '', 3, 'ASTRID', '2025-02-27 15:43:02.007', 'ASTRID', '2025-02-28 11:11:44.910', NULL, NULL, NULL, 0, NULL, 'femenino', 7, '', NULL, NULL)
INSERT dbo.persona_jrv(id, nombre, dni, direccion, catalogo_profesion_id, telefono1, telefono2, telefono3, horario_trabajo_estudio, disponibilidad_capacitacion, ha_participado_procesos_electorales, ha_sido_miembro_mer, ultimo_proceso, uso_manejo_computador, lo_basico, tiene_experiencia_trep, entrega_materiales, grupo, referido, centro_votacion_id, telefono, observaciones, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificado, foto_url, foto_imagen, capacitador_id, empresa_id, foto_url_2, sexo, catalogo_escolaridad_id, horario_texto, persona_confiable_id, capacitacion_id) VALUES (33, 'Jimena Perez', '0601200509871', 'Barrio La libertad', 27, 99999999, 0, 0, 'Matutino', '2025-02-27 10:01:00.000', CONVERT(bit, 'False'), CONVERT(bit, 'False'), '1900-01-01', CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), '', '', 7, 0, '', 3, 'ASTRID', '2025-02-27 16:01:24.040', 'ASTRID', '2025-02-28 11:12:03.703', NULL, NULL, NULL, 0, NULL, 'femenino', 6, '', NULL, NULL)
INSERT dbo.persona_jrv(id, nombre, dni, direccion, catalogo_profesion_id, telefono1, telefono2, telefono3, horario_trabajo_estudio, disponibilidad_capacitacion, ha_participado_procesos_electorales, ha_sido_miembro_mer, ultimo_proceso, uso_manejo_computador, lo_basico, tiene_experiencia_trep, entrega_materiales, grupo, referido, centro_votacion_id, telefono, observaciones, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificado, foto_url, foto_imagen, capacitador_id, empresa_id, foto_url_2, sexo, catalogo_escolaridad_id, horario_texto, persona_confiable_id, capacitacion_id) VALUES (36, 'Juan Perez', '12345678', 'Calle Falsa 123', 1, 123456789, 0, 0, 'L-V 9-5', '2025-03-01 10:00:00.000', CONVERT(bit, 'True'), CONVERT(bit, 'False'), '2025-02-25', CONVERT(bit, 'True'), CONVERT(bit, 'True'), CONVERT(bit, 'False'), CONVERT(bit, 'True'), 'A', 'Ninguno', 1, 987654321, 'Prueba rollback', 3, 'tester', '2025-02-27 17:57:57.370', 'ASTRID', '2025-02-28 03:21:12.410', NULL, NULL, NULL, 1, NULL, 'M', 1, 'Lunes a Viernes 9-5', NULL, NULL)
INSERT dbo.persona_jrv(id, nombre, dni, direccion, catalogo_profesion_id, telefono1, telefono2, telefono3, horario_trabajo_estudio, disponibilidad_capacitacion, ha_participado_procesos_electorales, ha_sido_miembro_mer, ultimo_proceso, uso_manejo_computador, lo_basico, tiene_experiencia_trep, entrega_materiales, grupo, referido, centro_votacion_id, telefono, observaciones, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificado, foto_url, foto_imagen, capacitador_id, empresa_id, foto_url_2, sexo, catalogo_escolaridad_id, horario_texto, persona_confiable_id, capacitacion_id) VALUES (44, 'Mariana Jimenez', '0601200509871', '', 27, 99124312, 0, 0, 'Vespertino', '1900-01-01 00:00:00.000', CONVERT(bit, 'False'), CONVERT(bit, 'False'), '1900-01-01', CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), '', '', 6, 0, '', 3, 'ASTRID', '2025-02-28 01:28:15.617', 'ASTRID', '2025-02-28 11:12:35.510', NULL, NULL, NULL, 0, NULL, 'femenino', 2, '', NULL, NULL)
INSERT dbo.persona_jrv(id, nombre, dni, direccion, catalogo_profesion_id, telefono1, telefono2, telefono3, horario_trabajo_estudio, disponibilidad_capacitacion, ha_participado_procesos_electorales, ha_sido_miembro_mer, ultimo_proceso, uso_manejo_computador, lo_basico, tiene_experiencia_trep, entrega_materiales, grupo, referido, centro_votacion_id, telefono, observaciones, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificado, foto_url, foto_imagen, capacitador_id, empresa_id, foto_url_2, sexo, catalogo_escolaridad_id, horario_texto, persona_confiable_id, capacitacion_id) VALUES (45, 'Maria Edelfida', '0601200509871', '', 27, 99124312, 0, 0, 'Vespertino', '1900-01-01 00:00:00.000', CONVERT(bit, 'False'), CONVERT(bit, 'False'), '1900-01-01', CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), '', '3', 7, 0, '', 3, 'ASTRID', '2025-02-28 04:41:21.240', 'ASTRID', '2025-02-28 11:12:10.507', NULL, NULL, NULL, 0, NULL, 'femenino', 4, '', NULL, NULL)
INSERT dbo.persona_jrv(id, nombre, dni, direccion, catalogo_profesion_id, telefono1, telefono2, telefono3, horario_trabajo_estudio, disponibilidad_capacitacion, ha_participado_procesos_electorales, ha_sido_miembro_mer, ultimo_proceso, uso_manejo_computador, lo_basico, tiene_experiencia_trep, entrega_materiales, grupo, referido, centro_votacion_id, telefono, observaciones, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificado, foto_url, foto_imagen, capacitador_id, empresa_id, foto_url_2, sexo, catalogo_escolaridad_id, horario_texto, persona_confiable_id, capacitacion_id) VALUES (46, 'PRUEBA', '0601200509871', 'Barrio La libertad', 27, 99999999, 0, 0, 'Matutino', '1900-01-01 00:00:00.000', CONVERT(bit, 'False'), CONVERT(bit, 'False'), '1900-01-01', CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), '', NULL, 6, 0, '', 3, 'ASTRID', '2025-02-28 05:17:01.563', 'ASTRID', '2025-02-28 11:12:29.270', NULL, NULL, NULL, 0, NULL, 'femenino', 5, '', 3, NULL)
INSERT dbo.persona_jrv(id, nombre, dni, direccion, catalogo_profesion_id, telefono1, telefono2, telefono3, horario_trabajo_estudio, disponibilidad_capacitacion, ha_participado_procesos_electorales, ha_sido_miembro_mer, ultimo_proceso, uso_manejo_computador, lo_basico, tiene_experiencia_trep, entrega_materiales, grupo, referido, centro_votacion_id, telefono, observaciones, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificado, foto_url, foto_imagen, capacitador_id, empresa_id, foto_url_2, sexo, catalogo_escolaridad_id, horario_texto, persona_confiable_id, capacitacion_id) VALUES (47, 'Hola', '0601200509871', '', 29, 99121111, 0, 0, 'Matutino', '1900-01-01 00:00:00.000', CONVERT(bit, 'False'), CONVERT(bit, 'False'), '1900-01-01', CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), NULL, NULL, 7, 0, '', 3, 'ASTRID', '2025-02-28 06:05:38.573', 'ASTRID', '2025-02-28 11:12:21.220', NULL, NULL, 1, 0, NULL, 'femenino', 3, '', 3, 17)
INSERT dbo.persona_jrv(id, nombre, dni, direccion, catalogo_profesion_id, telefono1, telefono2, telefono3, horario_trabajo_estudio, disponibilidad_capacitacion, ha_participado_procesos_electorales, ha_sido_miembro_mer, ultimo_proceso, uso_manejo_computador, lo_basico, tiene_experiencia_trep, entrega_materiales, grupo, referido, centro_votacion_id, telefono, observaciones, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificado, foto_url, foto_imagen, capacitador_id, empresa_id, foto_url_2, sexo, catalogo_escolaridad_id, horario_texto, persona_confiable_id, capacitacion_id) VALUES (48, 'PRUEBA1', '0601200509871', '', 27, 99999999, 0, 0, 'Vespertino', '1900-01-01 00:00:00.000', CONVERT(bit, 'False'), CONVERT(bit, 'False'), '1900-01-01', CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), NULL, '4', 3, 0, '', 2, 'ASTRID', '2025-02-28 11:02:52.160', NULL, '2025-02-28 19:32:40.700', NULL, NULL, NULL, 0, NULL, 'Femenino', 3, 'Casa', 3, 17)
INSERT dbo.persona_jrv(id, nombre, dni, direccion, catalogo_profesion_id, telefono1, telefono2, telefono3, horario_trabajo_estudio, disponibilidad_capacitacion, ha_participado_procesos_electorales, ha_sido_miembro_mer, ultimo_proceso, uso_manejo_computador, lo_basico, tiene_experiencia_trep, entrega_materiales, grupo, referido, centro_votacion_id, telefono, observaciones, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificado, foto_url, foto_imagen, capacitador_id, empresa_id, foto_url_2, sexo, catalogo_escolaridad_id, horario_texto, persona_confiable_id, capacitacion_id) VALUES (49, 'Karla Maradiaga', '0601200198712', 'M', 76, 99999999, 0, 0, 'Vespertino', '1900-01-01 00:00:00.000', CONVERT(bit, 'False'), CONVERT(bit, 'False'), '1900-01-01', CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), NULL, NULL, 7, 0, '', 1, 'ASTRID', '2025-02-28 16:51:03.910', NULL, NULL, NULL, NULL, NULL, 0, NULL, 'femenino', 2, 'Escuela', NULL, 17)
INSERT dbo.persona_jrv(id, nombre, dni, direccion, catalogo_profesion_id, telefono1, telefono2, telefono3, horario_trabajo_estudio, disponibilidad_capacitacion, ha_participado_procesos_electorales, ha_sido_miembro_mer, ultimo_proceso, uso_manejo_computador, lo_basico, tiene_experiencia_trep, entrega_materiales, grupo, referido, centro_votacion_id, telefono, observaciones, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificado, foto_url, foto_imagen, capacitador_id, empresa_id, foto_url_2, sexo, catalogo_escolaridad_id, horario_texto, persona_confiable_id, capacitacion_id) VALUES (50, 'Astrid Hernandez', '0601200100367', 'Ninguna', 28, 99921231, 0, 0, 'Matutino', '1900-01-01 00:00:00.000', CONVERT(bit, 'False'), CONVERT(bit, 'False'), '1900-01-01', CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), NULL, NULL, 6, 0, '', 1, 'ASTRID', '2025-02-28 17:46:53.170', NULL, NULL, '/media/VOLUNTARIOS/voluntario_50_1740766429.jpg', NULL, NULL, 0, NULL, 'femenino', 4, '', NULL, NULL)
INSERT dbo.persona_jrv(id, nombre, dni, direccion, catalogo_profesion_id, telefono1, telefono2, telefono3, horario_trabajo_estudio, disponibilidad_capacitacion, ha_participado_procesos_electorales, ha_sido_miembro_mer, ultimo_proceso, uso_manejo_computador, lo_basico, tiene_experiencia_trep, entrega_materiales, grupo, referido, centro_votacion_id, telefono, observaciones, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificado, foto_url, foto_imagen, capacitador_id, empresa_id, foto_url_2, sexo, catalogo_escolaridad_id, horario_texto, persona_confiable_id, capacitacion_id) VALUES (51, 'PREUAB', '0501', '', 27, 99999, 0, 0, 'Matutino', '1900-01-01 00:00:00.000', CONVERT(bit, 'False'), CONVERT(bit, 'False'), '1900-01-01', CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), NULL, '4', 6, 9999, '', 3, 'ASTRID', '2025-02-28 18:16:29.010', 'ASTRID', '2025-02-28 18:47:17.170', NULL, NULL, NULL, 0, NULL, 'Masculino', 3, 'prube', 4, 17)
INSERT dbo.persona_jrv(id, nombre, dni, direccion, catalogo_profesion_id, telefono1, telefono2, telefono3, horario_trabajo_estudio, disponibilidad_capacitacion, ha_participado_procesos_electorales, ha_sido_miembro_mer, ultimo_proceso, uso_manejo_computador, lo_basico, tiene_experiencia_trep, entrega_materiales, grupo, referido, centro_votacion_id, telefono, observaciones, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificado, foto_url, foto_imagen, capacitador_id, empresa_id, foto_url_2, sexo, catalogo_escolaridad_id, horario_texto, persona_confiable_id, capacitacion_id) VALUES (52, 'Prueba alguienfff', '0601200000677', 'Choluteca', 29, 828282833, 0, 0, 'Matutino', '1900-01-01 00:00:00.000', CONVERT(bit, 'False'), CONVERT(bit, 'False'), '1900-01-01', CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), NULL, NULL, 3, 0, '', 2, 'JAIRO', '2025-02-28 18:43:23.230', NULL, '2025-02-28 18:48:16.180', NULL, NULL, NULL, 0, NULL, 'Femenino', 3, '', NULL, NULL)
INSERT dbo.persona_jrv(id, nombre, dni, direccion, catalogo_profesion_id, telefono1, telefono2, telefono3, horario_trabajo_estudio, disponibilidad_capacitacion, ha_participado_procesos_electorales, ha_sido_miembro_mer, ultimo_proceso, uso_manejo_computador, lo_basico, tiene_experiencia_trep, entrega_materiales, grupo, referido, centro_votacion_id, telefono, observaciones, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificado, foto_url, foto_imagen, capacitador_id, empresa_id, foto_url_2, sexo, catalogo_escolaridad_id, horario_texto, persona_confiable_id, capacitacion_id) VALUES (54, 'Nuevo voluntario xxx', '885799999xxxcc', '', 28, 99124312, 0, 0, 'Matutino', '1900-01-01 00:00:00.000', CONVERT(bit, 'False'), CONVERT(bit, 'False'), '1900-01-01', CONVERT(bit, 'True'), CONVERT(bit, 'True'), CONVERT(bit, 'True'), CONVERT(bit, 'False'), NULL, NULL, 0, 0, '', 2, 'JAIRO', '2025-02-28 18:46:25.357', NULL, '2025-02-28 19:08:43.713', NULL, NULL, NULL, 0, NULL, 'Femenino', 3, '', NULL, NULL)
INSERT dbo.persona_jrv(id, nombre, dni, direccion, catalogo_profesion_id, telefono1, telefono2, telefono3, horario_trabajo_estudio, disponibilidad_capacitacion, ha_participado_procesos_electorales, ha_sido_miembro_mer, ultimo_proceso, uso_manejo_computador, lo_basico, tiene_experiencia_trep, entrega_materiales, grupo, referido, centro_votacion_id, telefono, observaciones, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificado, foto_url, foto_imagen, capacitador_id, empresa_id, foto_url_2, sexo, catalogo_escolaridad_id, horario_texto, persona_confiable_id, capacitacion_id) VALUES (58, 'MARIA', '2033921321', '', 0, 988778978, 0, 0, '', '1900-01-01 00:00:00.000', CONVERT(bit, 'False'), CONVERT(bit, 'False'), '1900-01-01', CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), NULL, NULL, 0, 0, '', 1, 'ASTRID', '2025-02-28 19:50:15.033', NULL, NULL, NULL, NULL, NULL, 0, NULL, 'femenino', 0, '', NULL, NULL)
INSERT dbo.persona_jrv(id, nombre, dni, direccion, catalogo_profesion_id, telefono1, telefono2, telefono3, horario_trabajo_estudio, disponibilidad_capacitacion, ha_participado_procesos_electorales, ha_sido_miembro_mer, ultimo_proceso, uso_manejo_computador, lo_basico, tiene_experiencia_trep, entrega_materiales, grupo, referido, centro_votacion_id, telefono, observaciones, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificado, foto_url, foto_imagen, capacitador_id, empresa_id, foto_url_2, sexo, catalogo_escolaridad_id, horario_texto, persona_confiable_id, capacitacion_id) VALUES (59, 'Nuevo tres', '8856899900', '', 0, 687557889, 0, 0, '', '1900-01-01 00:00:00.000', CONVERT(bit, 'False'), CONVERT(bit, 'False'), '1900-01-01', CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), NULL, NULL, 0, 0, '', 2, 'JAIRO', '2025-02-28 19:50:43.120', NULL, '2025-02-28 19:53:49.360', NULL, NULL, NULL, 0, NULL, 'Femenino', 1, '', NULL, NULL)
INSERT dbo.persona_jrv(id, nombre, dni, direccion, catalogo_profesion_id, telefono1, telefono2, telefono3, horario_trabajo_estudio, disponibilidad_capacitacion, ha_participado_procesos_electorales, ha_sido_miembro_mer, ultimo_proceso, uso_manejo_computador, lo_basico, tiene_experiencia_trep, entrega_materiales, grupo, referido, centro_votacion_id, telefono, observaciones, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificado, foto_url, foto_imagen, capacitador_id, empresa_id, foto_url_2, sexo, catalogo_escolaridad_id, horario_texto, persona_confiable_id, capacitacion_id) VALUES (60, 'Ayari Hernandez', '312213213', '', 0, 88998, 0, 0, 'Vespertino', '1900-01-01 00:00:00.000', CONVERT(bit, 'False'), CONVERT(bit, 'False'), '1900-01-01', CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), NULL, '5', 0, 0, '', 2, 'ASTRID', '2025-02-28 19:51:32.180', NULL, '2025-02-28 19:54:03.200', NULL, NULL, NULL, 0, NULL, 'Femenino', 0, '', 5, 17)
INSERT dbo.persona_jrv(id, nombre, dni, direccion, catalogo_profesion_id, telefono1, telefono2, telefono3, horario_trabajo_estudio, disponibilidad_capacitacion, ha_participado_procesos_electorales, ha_sido_miembro_mer, ultimo_proceso, uso_manejo_computador, lo_basico, tiene_experiencia_trep, entrega_materiales, grupo, referido, centro_votacion_id, telefono, observaciones, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificado, foto_url, foto_imagen, capacitador_id, empresa_id, foto_url_2, sexo, catalogo_escolaridad_id, horario_texto, persona_confiable_id, capacitacion_id) VALUES (61, 'Nuevo cuatro', '99999999990', 'Oikkk', 0, 99999999, 0, 0, '', '1900-01-01 00:00:00.000', CONVERT(bit, 'False'), CONVERT(bit, 'False'), '1900-01-01', CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), NULL, NULL, 0, 0, '', 2, 'JAIRO', '2025-02-28 19:53:38.393', NULL, '2025-02-28 19:54:24.543', '/media/VOLUNTARIOS/voluntario_61_1740772660.jpg', NULL, NULL, 0, '/media/VOLUNTARIOS/voluntario2_61_1740772660.jpg', 'Femenino', 0, '', NULL, NULL)
INSERT dbo.persona_jrv(id, nombre, dni, direccion, catalogo_profesion_id, telefono1, telefono2, telefono3, horario_trabajo_estudio, disponibilidad_capacitacion, ha_participado_procesos_electorales, ha_sido_miembro_mer, ultimo_proceso, uso_manejo_computador, lo_basico, tiene_experiencia_trep, entrega_materiales, grupo, referido, centro_votacion_id, telefono, observaciones, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificado, foto_url, foto_imagen, capacitador_id, empresa_id, foto_url_2, sexo, catalogo_escolaridad_id, horario_texto, persona_confiable_id, capacitacion_id) VALUES (62, 'PRUEBA1', '0601200509871', '', 0, 99999999, 0, 0, '', '1900-01-01 00:00:00.000', CONVERT(bit, 'False'), CONVERT(bit, 'False'), '1900-01-01', CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), NULL, NULL, 0, 0, '', 1, 'ASTRID', '2025-02-28 20:37:58.313', NULL, NULL, NULL, NULL, NULL, 0, NULL, 'femenino', 0, '', NULL, 17)
INSERT dbo.persona_jrv(id, nombre, dni, direccion, catalogo_profesion_id, telefono1, telefono2, telefono3, horario_trabajo_estudio, disponibilidad_capacitacion, ha_participado_procesos_electorales, ha_sido_miembro_mer, ultimo_proceso, uso_manejo_computador, lo_basico, tiene_experiencia_trep, entrega_materiales, grupo, referido, centro_votacion_id, telefono, observaciones, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificado, foto_url, foto_imagen, capacitador_id, empresa_id, foto_url_2, sexo, catalogo_escolaridad_id, horario_texto, persona_confiable_id, capacitacion_id) VALUES (63, 'MMIMI', '132938123', 'BARRIO LA LIBERTAD', 28, 99999999, 0, 0, '', '1900-01-01 00:00:00.000', CONVERT(bit, 'False'), CONVERT(bit, 'False'), '1900-01-01', CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), NULL, NULL, 6, 0, '', 1, 'ASTRID', '2025-02-28 20:41:12.370', NULL, NULL, NULL, NULL, NULL, 0, NULL, 'FEMENINO', 4, '', NULL, 17)
GO
SET IDENTITY_INSERT dbo.persona_jrv OFF
GO

-- 
-- Dumping data for table persona_confiable
--
PRINT (N'Dumping data for table persona_confiable')
SET IDENTITY_INSERT dbo.persona_confiable ON
GO
INSERT dbo.persona_confiable(id, nombre_miembro, identidad, telefono, direccion, sexo, tipo_personal_confiable_id, foto_url, nivel_confianza, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificacion) VALUES (1, 'Prueba', '89717327', '0123123', 'Choluteca', 'Masculino', 1, 'a', NULL, 3, 'ASTRID', '2025-02-28 16:09:37.130', 'ASTRID', '2025-02-28 16:11:04.050')
INSERT dbo.persona_confiable(id, nombre_miembro, identidad, telefono, direccion, sexo, tipo_personal_confiable_id, foto_url, nivel_confianza, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificacion) VALUES (2, 'Juana Sanchez', '0601200123123', '2123213', 'Ninguna', 'Femenino', 2, 'a', NULL, 1, 'ASTRID', '2025-02-28 16:10:35.923', NULL, NULL)
INSERT dbo.persona_confiable(id, nombre_miembro, identidad, telefono, direccion, sexo, tipo_personal_confiable_id, foto_url, nivel_confianza, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificacion) VALUES (3, 'Juana Sanchez', '321329832', '213782379813', 'Barrio La libertad', 'Masculino', 1, '', NULL, 1, 'ASTRID', '2025-02-28 16:48:25.720', NULL, NULL)
INSERT dbo.persona_confiable(id, nombre_miembro, identidad, telefono, direccion, sexo, tipo_personal_confiable_id, foto_url, nivel_confianza, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificacion) VALUES (4, 'Astrid', '28327132897', '23123221', 'Choluteca', 'Masculino', 2, '2', '', 1, 'ASTRID', '2025-03-01 08:36:34.620', NULL, NULL)
INSERT dbo.persona_confiable(id, nombre_miembro, identidad, telefono, direccion, sexo, tipo_personal_confiable_id, foto_url, nivel_confianza, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificacion) VALUES (5, 'Miranda', '372881932', '23182', 'Choluteca', 'Masculino', 2, '1', '', 1, 'ASTRID', '2025-03-01 08:39:20.120', NULL, NULL)
GO
SET IDENTITY_INSERT dbo.persona_confiable OFF
GO

-- 
-- Dumping data for table partidos
--
PRINT (N'Dumping data for table partidos')
SET IDENTITY_INSERT dbo.partidos ON
GO
INSERT dbo.partidos(pk_partido, nombre, abreviatura, pk_region, url_foto, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (1, N'PARTIDO LIBERAL DE HONDURAS', N'PLH', 3, N'/media/VOTACIONES/partidos/foto_1741453196.svg', 1, 2, '2025-02-28 17:44:15.540', 4, '2025-03-08 10:59:58.770')
INSERT dbo.partidos(pk_partido, nombre, abreviatura, pk_region, url_foto, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (2, N'PARTIDO NACIONAL DE HONDURAS', N'PNH', 3, N'/media/VOTACIONES/partidos/foto_1741453212.svg', 1, 2, '2025-02-28 17:44:46.190', 4, '2025-03-08 11:00:14.197')
INSERT dbo.partidos(pk_partido, nombre, abreviatura, pk_region, url_foto, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (3, N'PARTIDO LIBERTAD Y REFUNDACIÓN', N'LIBRE', 3, N'/media/VOTACIONES/partidos/foto_1741453228.svg', 1, 2, '2025-02-28 17:45:15.380', 4, '2025-03-08 11:00:29.870')
INSERT dbo.partidos(pk_partido, nombre, abreviatura, pk_region, url_foto, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (4, N'TEST', N'TEST', 3, NULL, 1, 2, '2025-03-08 19:17:01.243', NULL, NULL)
GO
SET IDENTITY_INSERT dbo.partidos OFF
GO

-- 
-- Dumping data for table movimientos
--
PRINT (N'Dumping data for table movimientos')
SET IDENTITY_INSERT dbo.movimientos ON
GO
INSERT dbo.movimientos(pk_movimiento, pk_partido, nombre, partido, url_foto, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (1, 1, N'JUNTOS POR EL CAMBIO', 1, N'/media/VOTACIONES/movimientos/foto_1741452813.png', 1, 2, '2025-02-28 17:51:14.603', 4, '2025-03-08 10:53:35.260')
INSERT dbo.movimientos(pk_movimiento, pk_partido, nombre, partido, url_foto, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (2, 1, N'RECUPEREMOS HONDURAS', 0, N'/media/VOTACIONES/movimientos/foto_1741452855.png', 1, 2, '2025-02-28 17:51:50.177', 4, '2025-03-08 10:54:17.130')
INSERT dbo.movimientos(pk_movimiento, pk_partido, nombre, partido, url_foto, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (3, 1, N'VAMOS HONDURAS', 0, N'/media/VOTACIONES/movimientos/foto_1741452871.png', 1, 2, '2025-02-28 17:52:12.310', 4, '2025-03-08 10:54:33.193')
INSERT dbo.movimientos(pk_movimiento, pk_partido, nombre, partido, url_foto, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (4, 1, N'TODOS POR HONDURAS', 0, N'/media/VOTACIONES/movimientos/foto_1741452888.png', 1, 2, '2025-02-28 17:52:29.370', 4, '2025-03-08 10:54:49.900')
GO
SET IDENTITY_INSERT dbo.movimientos OFF
GO

-- 
-- Dumping data for table miembros
--
PRINT (N'Dumping data for table miembros')
SET IDENTITY_INSERT dbo.miembros ON
GO
INSERT dbo.miembros(id_miembro, nombres, apellidos, dni, direccion, catalogo_profesion_id, correo_electronico, telefono1, telefono2, horario_trabajo_estudio, disponibilidad_capacitacion, ha_participado_procesos_electorales, ha_sido_miembro_mer, ultimo_proceso, uso_manejo_computador, lo_basico, tiene_experiencia_trep, entrega_materiales, observaciones, foto_url, foto_url_2, empresa_id, catalogo_escolaridad_id, horario_texto, es_candidato, fecha_nacimiento, vehiculo, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificado, asignaciones, id_categoria_confianza, id_refiere, sexo, tipo_miembro_id, id_posible_rol) VALUES (1, 'ASTRID', 'HERNANDEZ', '0601200509812', 'PLAZA VILCHEZ', 0, '', '94115159', '', '', NULL, CONVERT(bit, 'False'), CONVERT(bit, 'False'), NULL, CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), '', '', '', NULL, 0, '', CONVERT(bit, 'False'), NULL, CONVERT(bit, 'False'), 2, 'ASTRID', '2025-03-04 11:07:42.783', 'ASTRID', '2025-03-05 12:30:54.633', '', '1', NULL, 0, 1, 0)
INSERT dbo.miembros(id_miembro, nombres, apellidos, dni, direccion, catalogo_profesion_id, correo_electronico, telefono1, telefono2, horario_trabajo_estudio, disponibilidad_capacitacion, ha_participado_procesos_electorales, ha_sido_miembro_mer, ultimo_proceso, uso_manejo_computador, lo_basico, tiene_experiencia_trep, entrega_materiales, observaciones, foto_url, foto_url_2, empresa_id, catalogo_escolaridad_id, horario_texto, es_candidato, fecha_nacimiento, vehiculo, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificado, asignaciones, id_categoria_confianza, id_refiere, sexo, tipo_miembro_id, id_posible_rol) VALUES (2, 'ASTRID', 'HERNANDEZ', '0601200100367', 'PLAZA VILCHEZ', NULL, '', '94115159', '', '', NULL, CONVERT(bit, 'False'), CONVERT(bit, 'False'), NULL, CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), '', '', '', NULL, NULL, '', CONVERT(bit, 'False'), NULL, CONVERT(bit, 'False'), 3, 'ASTRID', '2025-03-04 11:08:02.363', 'ASTRID', '2025-03-04 20:57:45.337', '', '1', NULL, NULL, 2, NULL)
INSERT dbo.miembros(id_miembro, nombres, apellidos, dni, direccion, catalogo_profesion_id, correo_electronico, telefono1, telefono2, horario_trabajo_estudio, disponibilidad_capacitacion, ha_participado_procesos_electorales, ha_sido_miembro_mer, ultimo_proceso, uso_manejo_computador, lo_basico, tiene_experiencia_trep, entrega_materiales, observaciones, foto_url, foto_url_2, empresa_id, catalogo_escolaridad_id, horario_texto, es_candidato, fecha_nacimiento, vehiculo, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificado, asignaciones, id_categoria_confianza, id_refiere, sexo, tipo_miembro_id, id_posible_rol) VALUES (3, 'MARIA', 'JIMENEZ', '060102023', 'MASDASDA', NULL, '', '94115159', '', '', NULL, CONVERT(bit, 'False'), CONVERT(bit, 'False'), NULL, CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), '', '', '', NULL, NULL, '', CONVERT(bit, 'False'), NULL, CONVERT(bit, 'False'), 1, 'ASTRID', '2025-03-04 11:08:44.900', NULL, NULL, '', '1', NULL, NULL, 1, NULL)
INSERT dbo.miembros(id_miembro, nombres, apellidos, dni, direccion, catalogo_profesion_id, correo_electronico, telefono1, telefono2, horario_trabajo_estudio, disponibilidad_capacitacion, ha_participado_procesos_electorales, ha_sido_miembro_mer, ultimo_proceso, uso_manejo_computador, lo_basico, tiene_experiencia_trep, entrega_materiales, observaciones, foto_url, foto_url_2, empresa_id, catalogo_escolaridad_id, horario_texto, es_candidato, fecha_nacimiento, vehiculo, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificado, asignaciones, id_categoria_confianza, id_refiere, sexo, tipo_miembro_id, id_posible_rol) VALUES (4, 'LUISA', 'GUTIERREZ', '34232', 'PLAZA VILCHEZ', NULL, '', '94115159', '', '', NULL, CONVERT(bit, 'False'), CONVERT(bit, 'False'), NULL, CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), '', '', '', NULL, NULL, '', CONVERT(bit, 'False'), '2025-03-04', CONVERT(bit, 'False'), 1, 'ASTRID', '2025-03-04 14:33:38.800', NULL, NULL, '', '1', NULL, NULL, 1, NULL)
INSERT dbo.miembros(id_miembro, nombres, apellidos, dni, direccion, catalogo_profesion_id, correo_electronico, telefono1, telefono2, horario_trabajo_estudio, disponibilidad_capacitacion, ha_participado_procesos_electorales, ha_sido_miembro_mer, ultimo_proceso, uso_manejo_computador, lo_basico, tiene_experiencia_trep, entrega_materiales, observaciones, foto_url, foto_url_2, empresa_id, catalogo_escolaridad_id, horario_texto, es_candidato, fecha_nacimiento, vehiculo, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificado, asignaciones, id_categoria_confianza, id_refiere, sexo, tipo_miembro_id, id_posible_rol) VALUES (5, 'ASTRID', 'HERNANDEZ', '0601200509876', 'PLAZA VILCHEZ', NULL, '', '94115159', '', '', NULL, CONVERT(bit, 'False'), CONVERT(bit, 'False'), NULL, CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), '', '', '', NULL, NULL, '', CONVERT(bit, 'False'), NULL, CONVERT(bit, 'False'), 1, 'ASTRID', '2025-03-04 20:24:08.203', NULL, NULL, '', '1', NULL, NULL, 2, NULL)
INSERT dbo.miembros(id_miembro, nombres, apellidos, dni, direccion, catalogo_profesion_id, correo_electronico, telefono1, telefono2, horario_trabajo_estudio, disponibilidad_capacitacion, ha_participado_procesos_electorales, ha_sido_miembro_mer, ultimo_proceso, uso_manejo_computador, lo_basico, tiene_experiencia_trep, entrega_materiales, observaciones, foto_url, foto_url_2, empresa_id, catalogo_escolaridad_id, horario_texto, es_candidato, fecha_nacimiento, vehiculo, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificado, asignaciones, id_categoria_confianza, id_refiere, sexo, tipo_miembro_id, id_posible_rol) VALUES (6, 'GERMAN', 'NUÑEZ', '07021993987651', '51101', 0, '', '94115159', '', '', NULL, CONVERT(bit, 'False'), CONVERT(bit, 'False'), NULL, CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), '', '', '', NULL, 0, '', CONVERT(bit, 'False'), NULL, CONVERT(bit, 'False'), 2, 'ASTRID', '2025-03-04 20:24:36.943', 'ASTRID', '2025-03-05 12:36:25.427', '', '1', NULL, 0, 1, 0)
INSERT dbo.miembros(id_miembro, nombres, apellidos, dni, direccion, catalogo_profesion_id, correo_electronico, telefono1, telefono2, horario_trabajo_estudio, disponibilidad_capacitacion, ha_participado_procesos_electorales, ha_sido_miembro_mer, ultimo_proceso, uso_manejo_computador, lo_basico, tiene_experiencia_trep, entrega_materiales, observaciones, foto_url, foto_url_2, empresa_id, catalogo_escolaridad_id, horario_texto, es_candidato, fecha_nacimiento, vehiculo, estado, creado_por, fecha_hora_creacion, modificado_por, fecha_hora_modificado, asignaciones, id_categoria_confianza, id_refiere, sexo, tipo_miembro_id, id_posible_rol) VALUES (7, 'JUANA', 'LOPEZ', '43243242', '', 0, '', '9898897', '', '', NULL, CONVERT(bit, 'False'), CONVERT(bit, 'False'), NULL, CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), CONVERT(bit, 'False'), '', '', '', NULL, 0, '', CONVERT(bit, 'False'), NULL, CONVERT(bit, 'False'), 2, 'ASTRID', '2025-03-04 22:53:34.173', 'ASTRID', '2025-03-05 12:34:59.320', '', '1', NULL, 0, 1, 0)
GO
SET IDENTITY_INSERT dbo.miembros OFF
GO

-- 
-- Dumping data for table jrv
--
PRINT (N'Dumping data for table jrv')
SET IDENTITY_INSERT dbo.jrv ON
GO
INSERT dbo.jrv(id, codigo, ubicacion, carga, centro_votacion_id, cargo_id, proceso_pk, creado_por, estado, fecha_hora_creado, modificado_por, fecha_hora_modifcado, empresa_id) VALUES (1, '12343', NULL, '1500', 6, NULL, 1, 'ASTRID', 1, '2025-03-09 00:07:06.327', NULL, NULL, 0)
GO
SET IDENTITY_INSERT dbo.jrv OFF
GO

-- 
-- Dumping data for table elecciones_tipo
--
PRINT (N'Dumping data for table elecciones_tipo')
SET IDENTITY_INSERT dbo.elecciones_tipo ON
GO
INSERT dbo.elecciones_tipo(pk_tipo, nombre, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (1, N'INTERNAS', 1, 0, '2025-02-28 17:42:43.217', NULL, NULL)
GO
SET IDENTITY_INSERT dbo.elecciones_tipo OFF
GO

-- 
-- Dumping data for table elecciones_proceso_acta_tipo
--
PRINT (N'Dumping data for table elecciones_proceso_acta_tipo')
SET IDENTITY_INSERT dbo.elecciones_proceso_acta_tipo ON
GO
INSERT dbo.elecciones_proceso_acta_tipo(pk_tipo, nombre, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (1, N'ACTA DE CIERRE PRESIDENCIAL', 1, 0, '2025-03-06 02:41:03.420', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_tipo(pk_tipo, nombre, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (2, N'ACTA DE CIERRE DIPUTADOS', 1, 0, '2025-03-06 02:41:03.450', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_tipo(pk_tipo, nombre, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (3, N'ACTA DE CIERRE CORPORACIÓN MUNICIPAL', 1, 0, '2025-03-06 02:41:03.453', NULL, NULL)
GO
SET IDENTITY_INSERT dbo.elecciones_proceso_acta_tipo OFF
GO

-- 
-- Dumping data for table elecciones_proceso_acta_control
--
PRINT (N'Dumping data for table elecciones_proceso_acta_control')
SET IDENTITY_INSERT dbo.elecciones_proceso_acta_control ON
GO
INSERT dbo.elecciones_proceso_acta_control(pk_control, pk_tipo, pk_proceso, pk_partido, pk_jrv, pk_user, estado_control, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (15, 1, 1, 1, 1, 7, 1, 1, 7, '2025-03-09 09:36:32.840', NULL, NULL)
GO
SET IDENTITY_INSERT dbo.elecciones_proceso_acta_control OFF
GO

-- 
-- Dumping data for table elecciones_proceso_acta_conteo
--
PRINT (N'Dumping data for table elecciones_proceso_acta_conteo')
SET IDENTITY_INSERT dbo.elecciones_proceso_acta_conteo ON
GO
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (81, 7, 4, 990, 1, 4, '2025-03-08 00:06:43.103', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (82, 7, 3, 567, 1, 4, '2025-03-08 00:06:43.227', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (83, 7, 2, 890, 1, 4, '2025-03-08 00:06:43.350', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (84, 7, 1, 123, 1, 4, '2025-03-08 00:06:43.473', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (85, 8, 4, 111, 1, 4, '2025-03-08 00:13:13.163', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (86, 8, 3, 111, 1, 4, '2025-03-08 00:13:13.287', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (87, 8, 2, 111, 1, 4, '2025-03-08 00:13:13.410', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (88, 8, 1, 111, 1, 4, '2025-03-08 00:13:13.537', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (181, 11, 40, 711, 1, 4, '2025-03-08 11:09:22.727', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (182, 11, 39, 111, 1, 4, '2025-03-08 11:09:22.853', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (183, 11, 38, 111, 1, 4, '2025-03-08 11:09:22.970', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (184, 11, 37, 111, 1, 4, '2025-03-08 11:09:23.097', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (185, 11, 36, 111, 1, 4, '2025-03-08 11:09:23.223', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (186, 11, 35, 111, 1, 4, '2025-03-08 11:09:23.350', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (187, 11, 34, 111, 1, 4, '2025-03-08 11:09:23.477', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (188, 11, 33, 111, 1, 4, '2025-03-08 11:09:23.603', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (189, 11, 32, 118, 1, 4, '2025-03-08 11:09:23.730', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (190, 11, 31, 533, 1, 4, '2025-03-08 11:09:23.853', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (191, 11, 30, 333, 1, 4, '2025-03-08 11:09:23.987', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (192, 11, 29, 333, 1, 4, '2025-03-08 11:09:24.110', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (193, 11, 28, 333, 1, 4, '2025-03-08 11:09:24.237', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (194, 11, 27, 333, 1, 4, '2025-03-08 11:09:24.363', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (195, 11, 26, 333, 1, 4, '2025-03-08 11:09:24.490', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (196, 11, 25, 333, 1, 4, '2025-03-08 11:09:24.613', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (197, 11, 24, 333, 1, 4, '2025-03-08 11:09:24.740', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (198, 11, 23, 336, 1, 4, '2025-03-08 11:09:24.867', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (199, 11, 22, 355, 1, 4, '2025-03-08 11:09:24.987', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (200, 11, 21, 555, 1, 4, '2025-03-08 11:09:25.113', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (201, 11, 20, 555, 1, 4, '2025-03-08 11:09:25.240', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (202, 11, 19, 555, 1, 4, '2025-03-08 11:09:25.367', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (203, 11, 18, 555, 1, 4, '2025-03-08 11:09:25.490', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (204, 11, 17, 555, 1, 4, '2025-03-08 11:09:25.617', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (205, 11, 16, 555, 1, 4, '2025-03-08 11:09:25.743', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (206, 11, 15, 555, 1, 4, '2025-03-08 11:09:25.870', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (207, 11, 14, 554, 1, 4, '2025-03-08 11:09:25.987', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (208, 11, 13, 177, 1, 4, '2025-03-08 11:09:26.113', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (209, 11, 12, 777, 1, 4, '2025-03-08 11:09:26.240', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (210, 11, 11, 777, 1, 4, '2025-03-08 11:09:26.367', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (211, 11, 10, 777, 1, 4, '2025-03-08 11:09:26.493', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (212, 11, 9, 777, 1, 4, '2025-03-08 11:09:26.617', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (213, 11, 8, 777, 1, 4, '2025-03-08 11:09:26.743', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (214, 11, 7, 777, 1, 4, '2025-03-08 11:09:26.870', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (215, 11, 6, 777, 1, 4, '2025-03-08 11:09:27.003', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (216, 11, 5, 772, 1, 4, '2025-03-08 11:09:27.130', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (221, 10, 41, 888, 1, 4, '2025-03-08 12:07:49.413', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (222, 10, 43, 999, 1, 4, '2025-03-08 12:07:49.630', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (223, 10, 45, 123, 1, 4, '2025-03-08 12:07:49.840', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (224, 10, 47, 123, 1, 4, '2025-03-08 12:07:50.063', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (225, 12, 41, 444, 1, 4, '2025-03-08 18:09:30.350', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (226, 12, 43, 444, 1, 4, '2025-03-08 18:09:30.473', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (227, 12, 45, 444, 1, 4, '2025-03-08 18:09:30.597', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (228, 12, 47, 444, 1, 4, '2025-03-08 18:09:30.720', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (229, 6, 1, 200, 1, 4, '2025-03-08 20:29:30.877', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (230, 6, 2, 60, 1, 4, '2025-03-08 20:29:31.000', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (231, 6, 3, 60, 1, 4, '2025-03-08 20:29:31.127', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (232, 6, 4, 100, 1, 4, '2025-03-08 20:29:31.250', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (233, 13, 5, 0, 1, 4, '2025-03-08 20:41:00.990', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (234, 13, 6, 0, 1, 4, '2025-03-08 20:41:01.113', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (235, 13, 7, 0, 1, 4, '2025-03-08 20:41:01.237', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (236, 13, 8, 0, 1, 4, '2025-03-08 20:41:01.360', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (237, 13, 9, 0, 1, 4, '2025-03-08 20:41:01.480', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (238, 13, 10, 0, 1, 4, '2025-03-08 20:41:01.603', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (239, 13, 11, 0, 1, 4, '2025-03-08 20:41:01.723', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (240, 13, 12, 0, 1, 4, '2025-03-08 20:41:01.837', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (241, 13, 13, 0, 1, 4, '2025-03-08 20:41:01.960', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (242, 13, 14, 0, 1, 4, '2025-03-08 20:41:02.080', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (243, 13, 15, 0, 1, 4, '2025-03-08 20:41:02.200', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (244, 13, 16, 0, 1, 4, '2025-03-08 20:41:02.320', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (245, 13, 17, 0, 1, 4, '2025-03-08 20:41:02.443', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (246, 13, 18, 0, 1, 4, '2025-03-08 20:41:02.563', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (247, 13, 19, 0, 1, 4, '2025-03-08 20:41:02.687', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (248, 13, 20, 0, 1, 4, '2025-03-08 20:41:02.807', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (249, 13, 21, 0, 1, 4, '2025-03-08 20:41:02.930', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (250, 13, 22, 0, 1, 4, '2025-03-08 20:41:03.053', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (251, 13, 23, 0, 1, 4, '2025-03-08 20:41:03.177', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (252, 13, 24, 0, 1, 4, '2025-03-08 20:41:03.297', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (253, 13, 25, 0, 1, 4, '2025-03-08 20:41:03.420', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (254, 13, 26, 0, 1, 4, '2025-03-08 20:41:03.540', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (255, 13, 27, 0, 1, 4, '2025-03-08 20:41:03.660', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (256, 13, 28, 0, 1, 4, '2025-03-08 20:41:03.780', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (257, 13, 29, 0, 1, 4, '2025-03-08 20:41:03.900', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (258, 13, 30, 0, 1, 4, '2025-03-08 20:41:04.023', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (259, 13, 31, 0, 1, 4, '2025-03-08 20:41:04.147', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (260, 13, 32, 0, 1, 4, '2025-03-08 20:41:04.267', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (261, 13, 33, 0, 1, 4, '2025-03-08 20:41:04.390', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (262, 13, 34, 0, 1, 4, '2025-03-08 20:41:04.510', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (263, 13, 35, 0, 1, 4, '2025-03-08 20:41:04.633', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (264, 13, 36, 0, 1, 4, '2025-03-08 20:41:04.753', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (265, 13, 37, 0, 1, 4, '2025-03-08 20:41:04.877', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (266, 13, 38, 0, 1, 4, '2025-03-08 20:41:05.010', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (267, 13, 39, 0, 1, 4, '2025-03-08 20:41:05.130', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (268, 13, 40, 0, 1, 4, '2025-03-08 20:41:05.253', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (269, 14, 41, 111, 1, 4, '2025-03-08 20:41:38.240', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (270, 14, 43, 111, 1, 4, '2025-03-08 20:41:38.363', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (271, 14, 45, 111, 1, 4, '2025-03-08 20:41:38.483', NULL, NULL)
INSERT dbo.elecciones_proceso_acta_conteo(pk_conteo, pk_acta, pk_candidato, cantidad, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (272, 14, 47, 111, 1, 4, '2025-03-08 20:41:38.607', NULL, NULL)
GO
SET IDENTITY_INSERT dbo.elecciones_proceso_acta_conteo OFF
GO

-- 
-- Dumping data for table elecciones_proceso_acta
--
PRINT (N'Dumping data for table elecciones_proceso_acta')
SET IDENTITY_INSERT dbo.elecciones_proceso_acta ON
GO
INSERT dbo.elecciones_proceso_acta(pk_acta, pk_tipo, pk_proceso, pk_partido, pk_jrv, fecha_hora_inicio, fecha_hora_finalizacion, cantidad_papeletas_recibidas, cantidad_papeletas_sobrantes, cantidad_papeletas_utilizadas, cantidad_votantes_ciudadanos, cantidad_votantes_jrv, cantidad_votantes_informaticos_electorales, cantidad_votantes_total, cantidad_votos_en_blanco, cantidad_votos_nulos, cantidad_votos_total, cantidad_papeletas_validas, cantidad_papeletas_en_blanco, cantidad_papeletas_nulas, url_foto, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (6, 1, 1, 1, 1, '2025-03-07 11:00:00.000', '2025-03-08 01:00:00.000', 450, 17, 333, 327, 5, 1, 333, 20, 13, 222, 0, 0, 0, NULL, 1, 4, '2025-03-07 23:06:56.463', 4, '2025-03-08 20:29:30.613')
INSERT dbo.elecciones_proceso_acta(pk_acta, pk_tipo, pk_proceso, pk_partido, pk_jrv, fecha_hora_inicio, fecha_hora_finalizacion, cantidad_papeletas_recibidas, cantidad_papeletas_sobrantes, cantidad_papeletas_utilizadas, cantidad_votantes_ciudadanos, cantidad_votantes_jrv, cantidad_votantes_informaticos_electorales, cantidad_votantes_total, cantidad_votos_en_blanco, cantidad_votos_nulos, cantidad_votos_total, cantidad_papeletas_validas, cantidad_papeletas_en_blanco, cantidad_papeletas_nulas, url_foto, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (7, 1, 1, 1, 6, '2025-03-08 12:00:00.000', '2025-03-08 13:00:00.000', 123, 456, 789, 12, 345, 678, 901, 456, 789, 12, 0, 0, 0, NULL, 3, 4, '2025-03-08 00:05:59.607', 4, '2025-03-08 00:12:40.207')
INSERT dbo.elecciones_proceso_acta(pk_acta, pk_tipo, pk_proceso, pk_partido, pk_jrv, fecha_hora_inicio, fecha_hora_finalizacion, cantidad_papeletas_recibidas, cantidad_papeletas_sobrantes, cantidad_papeletas_utilizadas, cantidad_votantes_ciudadanos, cantidad_votantes_jrv, cantidad_votantes_informaticos_electorales, cantidad_votantes_total, cantidad_votos_en_blanco, cantidad_votos_nulos, cantidad_votos_total, cantidad_papeletas_validas, cantidad_papeletas_en_blanco, cantidad_papeletas_nulas, url_foto, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (8, 1, 1, 1, 6, '2025-03-08 12:00:00.000', '2025-03-08 12:00:00.000', 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 0, 0, 0, NULL, 1, 4, '2025-03-08 00:13:13.040', NULL, NULL)
INSERT dbo.elecciones_proceso_acta(pk_acta, pk_tipo, pk_proceso, pk_partido, pk_jrv, fecha_hora_inicio, fecha_hora_finalizacion, cantidad_papeletas_recibidas, cantidad_papeletas_sobrantes, cantidad_papeletas_utilizadas, cantidad_votantes_ciudadanos, cantidad_votantes_jrv, cantidad_votantes_informaticos_electorales, cantidad_votantes_total, cantidad_votos_en_blanco, cantidad_votos_nulos, cantidad_votos_total, cantidad_papeletas_validas, cantidad_papeletas_en_blanco, cantidad_papeletas_nulas, url_foto, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (9, 1, 1, 2, 1, '2025-03-08 12:00:00.000', '2025-03-08 12:00:00.000', 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, 3, 4, '2025-03-08 00:17:29.270', 4, '2025-03-08 00:18:39.010')
INSERT dbo.elecciones_proceso_acta(pk_acta, pk_tipo, pk_proceso, pk_partido, pk_jrv, fecha_hora_inicio, fecha_hora_finalizacion, cantidad_papeletas_recibidas, cantidad_papeletas_sobrantes, cantidad_papeletas_utilizadas, cantidad_votantes_ciudadanos, cantidad_votantes_jrv, cantidad_votantes_informaticos_electorales, cantidad_votantes_total, cantidad_votos_en_blanco, cantidad_votos_nulos, cantidad_votos_total, cantidad_papeletas_validas, cantidad_papeletas_en_blanco, cantidad_papeletas_nulas, url_foto, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (10, 3, 1, 1, 1, '2025-03-14 12:00:00.000', '2025-03-15 14:00:00.000', 111, 888, 777, 666, 555, 444, 333, 777, 666, 555, 0, 0, 0, NULL, 1, 4, '2025-03-08 03:11:34.247', 4, '2025-03-08 12:07:48.970')
INSERT dbo.elecciones_proceso_acta(pk_acta, pk_tipo, pk_proceso, pk_partido, pk_jrv, fecha_hora_inicio, fecha_hora_finalizacion, cantidad_papeletas_recibidas, cantidad_papeletas_sobrantes, cantidad_papeletas_utilizadas, cantidad_votantes_ciudadanos, cantidad_votantes_jrv, cantidad_votantes_informaticos_electorales, cantidad_votantes_total, cantidad_votos_en_blanco, cantidad_votos_nulos, cantidad_votos_total, cantidad_papeletas_validas, cantidad_papeletas_en_blanco, cantidad_papeletas_nulas, url_foto, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (11, 2, 1, 1, 1, '2025-03-08 13:00:00.000', '2025-03-08 14:00:00.000', 0, 0, 0, 0, 0, 0, 327, 0, 0, 0, 300, 15, 12, N'/media/VOTACIONES/actas/foto_1741453498.png', 1, 4, '2025-03-08 11:05:00.467', 4, '2025-03-08 11:09:22.477')
INSERT dbo.elecciones_proceso_acta(pk_acta, pk_tipo, pk_proceso, pk_partido, pk_jrv, fecha_hora_inicio, fecha_hora_finalizacion, cantidad_papeletas_recibidas, cantidad_papeletas_sobrantes, cantidad_papeletas_utilizadas, cantidad_votantes_ciudadanos, cantidad_votantes_jrv, cantidad_votantes_informaticos_electorales, cantidad_votantes_total, cantidad_votos_en_blanco, cantidad_votos_nulos, cantidad_votos_total, cantidad_papeletas_validas, cantidad_papeletas_en_blanco, cantidad_papeletas_nulas, url_foto, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (12, 3, 1, 1, 8, '2025-03-08 12:00:00.000', '2025-03-09 12:00:00.000', 444, 444, 444, 444, 444, 444, 444, 111, 222, 999, 0, 0, 0, N'/media/VOTACIONES/actas/foto_1741478968.png', 1, 4, '2025-03-08 18:09:30.223', NULL, NULL)
INSERT dbo.elecciones_proceso_acta(pk_acta, pk_tipo, pk_proceso, pk_partido, pk_jrv, fecha_hora_inicio, fecha_hora_finalizacion, cantidad_papeletas_recibidas, cantidad_papeletas_sobrantes, cantidad_papeletas_utilizadas, cantidad_votantes_ciudadanos, cantidad_votantes_jrv, cantidad_votantes_informaticos_electorales, cantidad_votantes_total, cantidad_votos_en_blanco, cantidad_votos_nulos, cantidad_votos_total, cantidad_papeletas_validas, cantidad_papeletas_en_blanco, cantidad_papeletas_nulas, url_foto, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (13, 2, 1, 1, 6, '2025-03-08 12:00:00.000', '2025-03-09 12:00:00.000', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, 1, 4, '2025-03-08 20:41:00.870', NULL, NULL)
INSERT dbo.elecciones_proceso_acta(pk_acta, pk_tipo, pk_proceso, pk_partido, pk_jrv, fecha_hora_inicio, fecha_hora_finalizacion, cantidad_papeletas_recibidas, cantidad_papeletas_sobrantes, cantidad_papeletas_utilizadas, cantidad_votantes_ciudadanos, cantidad_votantes_jrv, cantidad_votantes_informaticos_electorales, cantidad_votantes_total, cantidad_votos_en_blanco, cantidad_votos_nulos, cantidad_votos_total, cantidad_papeletas_validas, cantidad_papeletas_en_blanco, cantidad_papeletas_nulas, url_foto, estado, creado_por, fecha_hora_creado, modificado_por, fecha_hora_modificado) VALUES (14, 3, 1, 1, 6, '2025-03-08 12:00:00.000', '2025-03-28 12:00:00.000', 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 0, 0, 0, NULL, 1, 4, '2025-03-08 20:41:38.120', NULL, NULL)
GO
SET IDENTITY_INSERT dbo.elecciones_proceso_acta OFF
GO

-- 
