CREATE TABLE clientes (
    id_cliente INT AUTO_INCREMENT PRIMARY KEY,
    codigo_cliente VARCHAR(20) UNIQUE NOT NULL,           -- Código interno del sistema
    ci_cliente VARCHAR(20) NOT NULL,                      -- Carnet de identidad
    extension_ci VARCHAR(10) DEFAULT NULL,                -- Extensión del CI (ej: LP, SCZ)
    complemento_ci VARCHAR(10) DEFAULT NULL,              -- Si hay letras adicionales en el CI
    nombre_completo VARCHAR(100) NOT NULL,
    fecha_nacimiento DATE DEFAULT NULL,
    genero ENUM('Masculino', 'Femenino', 'Otro') DEFAULT NULL,
    estado_civil ENUM('Soltero', 'Casado', 'Divorciado', 'Viudo', 'Unión Libre') DEFAULT NULL,
    telefono VARCHAR(20) DEFAULT NULL,
    whatsapp VARCHAR(20) DEFAULT NULL,
    correo VARCHAR(100) DEFAULT NULL,
    domicilio VARCHAR(255) DEFAULT NULL,
    direccion_negocio VARCHAR(255) DEFAULT NULL,
    ubicacion_gps VARCHAR(100) DEFAULT NULL,              -- Coordenadas GPS (lat,long)
    detalle TEXT DEFAULT NULL,                            -- Detalles adicionales o notas
    ocupacion VARCHAR(100) DEFAULT NULL,                  -- Ocupación o profesión
    ingreso_mensual DECIMAL(10,2) DEFAULT NULL,           -- Ingreso promedio
    referencia_personal VARCHAR(100) DEFAULT NULL,        -- Referencia personal
    telefono_referencia VARCHAR(20) DEFAULT NULL,
    estado_cliente ENUM('Activo','Inactivo','Moroso') DEFAULT 'Activo',
    fecha_reg TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    registrado_por VARCHAR(50) DEFAULT NULL               -- Usuario que registró el cliente
);


-----------------------------------------------------------
CREATE TABLE clientes_fotos (
    id_foto INT AUTO_INCREMENT PRIMARY KEY,
    id_cliente INT NOT NULL,
    nombre_archivo VARCHAR(150) NOT NULL,                  -- Nombre del archivo guardado
    ruta_archivo VARCHAR(255) NOT NULL,                    -- Ruta completa (ej: ../fotosclientes/)
    fecha_subida TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    subido_por VARCHAR(50) DEFAULT NULL
);
-------------------------------------------------------
CREATE TABLE grupos (
    id_grupo INT AUTO_INCREMENT PRIMARY KEY,
    codigo_grupo VARCHAR(20) UNIQUE NOT NULL,              -- Ejemplo: GRP-001
    nombre_grupo VARCHAR(100) NOT NULL,                    -- Ejemplo: "Grupo Mariposas"
    descripcion TEXT DEFAULT NULL,                         -- Notas o detalle adicional
    id_asesor INT NOT NULL,                                -- FK al usuario con rol asesor
    fecha_creacion DATE DEFAULT CURRENT_DATE,
    estado_grupo ENUM('Activo','Inactivo','Cerrado') DEFAULT 'Activo',
    sucursal_asignada INT DEFAULT NULL                    -- FK opcional a sucursal
);

---------------------------------------------------
CREATE TABLE grupos_clientes (
    id_grupo_cliente INT AUTO_INCREMENT PRIMARY KEY,
    id_grupo INT NOT NULL,
    id_cliente INT NOT NULL,
    rol_en_grupo ENUM('Miembro','Presidente','Secretario','Tesorero') DEFAULT 'Miembro',
    fecha_union DATE DEFAULT CURRENT_DATE,
    estado ENUM('Activo','Retirado') DEFAULT 'Activo',
    UNIQUE (id_grupo, id_cliente) -- Evita duplicados
);
-----------------------------------------------------
CREATE TABLE grupos_documentos (
    id_acta INT AUTO_INCREMENT PRIMARY KEY,
    id_grupo INT NOT NULL,
    titulo VARCHAR(150) NOT NULL,
    descripcion TEXT DEFAULT NULL,
    tipo_documento ENUM('Acta de Reunión','Lista de Asistencia','Compromiso','Otro') DEFAULT 'Acta de Reunión',
    nombre_archivo VARCHAR(150) DEFAULT NULL,             -- Nombre del archivo físico
    ruta_archivo VARCHAR(255) DEFAULT NULL,               -- Ruta del archivo
    fecha_subida TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    subido_por INT DEFAULT NULL
);

--------------------------------------------------

CREATE TABLE configuracion_empresa (
    id_config INT AUTO_INCREMENT PRIMARY KEY,
    nombre_empresa VARCHAR(150) NOT NULL,
    razon_social VARCHAR(150) DEFAULT NULL,
    nit_empresa VARCHAR(50) DEFAULT NULL,
    telefono VARCHAR(30) DEFAULT NULL,
    correo_empresa VARCHAR(100) DEFAULT NULL,
    direccion_empresa VARCHAR(200) DEFAULT NULL,
    ciudad VARCHAR(100) DEFAULT NULL,
    pais VARCHAR(100) DEFAULT NULL,
    logo_empresa VARCHAR(255) DEFAULT NULL, -- ruta del logo (ejemplo: uploads/logo.png)
    tipo_moneda VARCHAR(50) DEFAULT 'Boliviano', -- Ej: Dólar, Euro, Peso Argentino, etc.
    sigla_moneda VARCHAR(10) DEFAULT 'Bs', -- Ej: $, €, ARS, Bs
    sitio_web VARCHAR(150) DEFAULT NULL,
    whatsapp_contacto VARCHAR(30) DEFAULT NULL,
    fecha_actualizacion DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    usuario_modificacion INT DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;


-------------------
CREATE TABLE prestamos (
    id_prestamo INT PRIMARY KEY AUTO_INCREMENT,
    id_cliente INT NOT NULL,
    codigo_prestamo VARCHAR(20) UNIQUE NOT NULL,
    monto_solicitado DECIMAL(15,2) NOT NULL,
    monto_aprobado DECIMAL(15,2) NULL,
    tasa_interes_anual DECIMAL(8,4) NOT NULL,
    tipo_interes ENUM('simple', 'compuesto', 'flat', 'frances', 'aleman', 'americano') NOT NULL,
    frecuencia_pagos ENUM('diario', 'semanal', 'quincenal', 'mensual', 'bimestral', 'trimestral') NOT NULL,
    numero_cuotas INT NOT NULL,
    dias_mes INT DEFAULT 30,
    ahorro_porcentaje DECIMAL(5,2) DEFAULT 0.00,
    descripcion TEXT,
    destino_fondos VARCHAR(255),
    
    -- Estados del préstamo
    estado ENUM(
        'pendiente_revision',    -- Pendiente de revisión por administración
        'aprobado',              -- Aprobado por administración
        'rechazado',             -- Rechazado por administración
        'desembolsado',          -- Fondos entregados al cliente
        'en_ejecucion',          -- En proceso de pago
        'refinanciado',          -- Refinanciado
        'finalizado',            -- Pagado completamente
        'cancelado',             -- Cancelado por el cliente
        'en_mora',               -- Con pagos atrasados
        'incobrable'             -- Considerado incobrable
    ) DEFAULT 'pendiente_revision',
    
    -- Fechas importantes
    fecha_solicitud DATETIME DEFAULT CURRENT_TIMESTAMP,
    fecha_aprobacion DATETIME NULL,
    fecha_desembolso DATETIME NULL,
    fecha_finalizacion DATETIME NULL,
    fecha_vencimiento DATE NOT NULL,
    
    -- Información de aprobación
    aprobado_por INT NULL,
    motivo_rechazo TEXT NULL,
    observaciones_aprobacion TEXT NULL,

    -- Índices
    INDEX idx_cliente (id_cliente),
    INDEX idx_estado (estado),
    INDEX idx_fecha_solicitud (fecha_solicitud),
    INDEX idx_codigo (codigo_prestamo)
    
);
-------------------------------------------------
-- Tabla de garantías del préstamo
CREATE TABLE garantias (
    id_garantia INT PRIMARY KEY AUTO_INCREMENT,
    id_prestamo INT NOT NULL,
    tipo_garantia ENUM(
        'hipoteca',
        'prenda',
        'fianza',
        'aval',
        'deposito',
        'otros'
    ) NOT NULL,
    descripcion TEXT NOT NULL,
    valor_estimado DECIMAL(15,2) NOT NULL,
    ubicacion VARCHAR(255),
    documento_referencia VARCHAR(100),
    -- Estado de la garantía
    estado ENUM(
        'activa',
        'liquidada',
        'cancelada',
        'en_proceso'
    ) DEFAULT 'activa',
    
    -- Fechas
    fecha_constituicion DATE NOT NULL,
    fecha_vencimiento DATE NULL,
    
    -- Documentación
    ruta_documento VARCHAR(500) NULL,
    observaciones TEXT NULL,
    
    -- Índices
    INDEX idx_prestamo (id_prestamo),
    INDEX idx_tipo (tipo_garantia)
);
--------------------------------------------------------
-- Tabla de plan de pagos (cronograma)
CREATE TABLE plan_pagos (
    id_plan_pago INT PRIMARY KEY AUTO_INCREMENT,
    id_prestamo INT NOT NULL,
    numero_cuota INT NOT NULL,
    fecha_vencimiento DATE NOT NULL,
    capital DECIMAL(15,2) NOT NULL,
    interes DECIMAL(15,2) NOT NULL,
    ahorro DECIMAL(15,2) DEFAULT 0.00,
    total_cuota DECIMAL(15,2) NOT NULL,
    saldo_capital DECIMAL(15,2) NOT NULL,
    saldo_total DECIMAL(15,2) NOT NULL,
    dias INT NOT NULL,
    -- Estado de la cuota
    estado ENUM(
        'pendiente',
        'pagado',
        'parcial',
        'vencido',
        'refinanciado',
        'condonado'
    ) DEFAULT 'pendiente',
    
    -- Información de pago
    fecha_pago DATETIME NULL,
    monto_pagado DECIMAL(15,2) DEFAULT 0.00,
    dias_mora INT DEFAULT 0,
    mora_calculada DECIMAL(15,2) DEFAULT 0.00,
   

    -- Índices
    INDEX idx_prestamo (id_prestamo),
    INDEX idx_vencimiento (fecha_vencimiento),
    INDEX idx_estado (estado),
    UNIQUE INDEX uk_prestamo_cuota (id_prestamo, numero_cuota)
);
------------------------------------------------------------
-- Tabla de transacciones de pagos
CREATE TABLE transacciones_pagos (
    id_transaccion INT PRIMARY KEY AUTO_INCREMENT,
    id_plan_pago INT NOT NULL,
    id_prestamo INT NOT NULL,
    monto_pagado DECIMAL(15,2) NOT NULL,
    fecha_pago DATETIME DEFAULT CURRENT_TIMESTAMP,
    tipo_pago ENUM(
        'efectivo',
        'transferencia',
        'cheque',
        'debito_automatico',
        'otros'
    ) NOT NULL,
    
    -- Referencias
    numero_comprobante VARCHAR(50) NULL,
    referencia_bancaria VARCHAR(100) NULL,
    
    -- Distribución del pago
    capital_pagado DECIMAL(15,2) NOT NULL,
    interes_pagado DECIMAL(15,2) NOT NULL,
    mora_pagada DECIMAL(15,2) DEFAULT 0.00,
    ahorro_pagado DECIMAL(15,2) DEFAULT 0.00,
    
    -- Estado de la transacción
    estado ENUM(
        'pendiente',
        'confirmado',
        'reversado',
        'anulado'
    ) DEFAULT 'confirmado',
    
    
    -- Índices
    INDEX idx_plan_pago (id_plan_pago),
    INDEX idx_prestamo (id_prestamo),
    INDEX idx_fecha_pago (fecha_pago),
    INDEX idx_comprobante (numero_comprobante)
);
alter table transacciones_pagos add fecha_registro date null;
-------------------------------------------------
-- Tabla de documentos del préstamo
CREATE TABLE documentos_prestamos (
    id_documento INT PRIMARY KEY AUTO_INCREMENT,
    id_prestamo INT NOT NULL,
    tipo_documento ENUM(
        'solicitud',
        'contrato',
        'pagare',
        'identificacion',
        'ingresos',
        'garantia',
        'aprobacion',
        'otros'
    ) NOT NULL,
    nombre_documento VARCHAR(255) NOT NULL,
    ruta_archivo VARCHAR(500) NOT NULL,
    descripcion TEXT NULL,
    
    -- Metadatos
    tamano_archivo INT NOT NULL,
    tipo_archivo VARCHAR(50) NOT NULL,
    
    -- Auditoría
    subido_por INT NOT NULL,
    fecha_subida DATETIME DEFAULT CURRENT_TIMESTAMP,
    
    -- Índices
    INDEX idx_prestamo (id_prestamo),
    INDEX idx_tipo (tipo_documento)
);
------------------------------------------
-- Tabla de garantías prendarias
CREATE TABLE garantias_prendarias (
    id_garantia INT PRIMARY KEY AUTO_INCREMENT,
    id_prestamo INT NOT NULL,
    tipo_articulo VARCHAR(100) NOT NULL,
    marca VARCHAR(50),
    modelo VARCHAR(50),
    serie_placa VARCHAR(100),
    descripcion TEXT NOT NULL,
    estado_articulo ENUM('Nuevo', 'Excelente', 'Bueno', 'Regular', 'Usado') DEFAULT 'Bueno',
    valor_estimado DECIMAL(15,2),
    observaciones TEXT,
    
    -- Auditoría
    creado_por INT NOT NULL,
    fecha_creacion DATETIME DEFAULT CURRENT_TIMESTAMP,
    actualizado_por INT NULL,
    fecha_actualizacion DATETIME NULL,
    
    -- Índices
    INDEX idx_prestamo (id_prestamo),
    INDEX idx_tipo (tipo_articulo),
    INDEX idx_serie (serie_placa)
);

-- Tabla de imágenes de garantías
CREATE TABLE garantia_imagenes (
    id_imagen INT PRIMARY KEY AUTO_INCREMENT,
    id_garantia INT NOT NULL,
    nombre_archivo VARCHAR(255) NOT NULL,
    ruta_archivo VARCHAR(500) NOT NULL,
    tipo_archivo VARCHAR(50) NOT NULL,
    tamano_archivo INT NOT NULL,
    es_principal BOOLEAN DEFAULT FALSE,
    descripcion VARCHAR(255),
    
    -- Auditoría
    subido_por INT NOT NULL,
    fecha_subida DATETIME DEFAULT CURRENT_TIMESTAMP,
    
    -- Índices
    INDEX idx_garantia (id_garantia),
    INDEX idx_principal (es_principal)
);
-----------------------------------------------------------------
create table usuarios_inv(
    idinversor integer not null AUTO_INCREMENT PRIMARY KEY,
    id_usu_inv integer not null,
    fechareginv datetime not null,
    montoinv decimal(15,2) not null DEFAULT 0,
    regusuario varchar(10) not null);
----------------------------------------------------------
create table movimientos_sucursal(
    idmovsuc integer not null AUTO_INCREMENT PRIMARY KEY,
    id_sucursalmov integer not null,
    tipo_movimiento varchar(100) not null,
    monto decimal(10,2) DEFAULT 0,
    descripcion varchar(200) null,
    id_prestamo integer not null,
    usuario_registro varchar(20) not null,
    fecharegistro datetime not null);
--------------------------------------------------------------
CREATE TABLE caja (
    id_caja INT AUTO_INCREMENT PRIMARY KEY,
    id_sucursal INT NOT NULL,
    id_usuario_apertura INT NOT NULL,
    id_usuario_cierre INT DEFAULT NULL,
    
    tipo_caja varchar(20) DEFAULT 'PRINCIPAL',
    numero_caja VARCHAR(20) DEFAULT NULL,
    
    fecha_apertura DATETIME NOT NULL,
    fecha_cierre DATETIME DEFAULT NULL,
    
    monto_apertura DECIMAL(12,2) NOT NULL,
    monto_efectivo_inicial DECIMAL(12,2) DEFAULT 0.00,
    monto_efectivo_final DECIMAL(12,2) DEFAULT 0.00,
    
    total_ingresos DECIMAL(12,2) DEFAULT 0.00,
    total_egresos DECIMAL(12,2) DEFAULT 0.00,
    total_transferencias DECIMAL(12,2) DEFAULT 0.00,
    total_prestamos DECIMAL(12,2) DEFAULT 0.00,
    total_abonos DECIMAL(12,2) DEFAULT 0.00,
    total_gastos DECIMAL(12,2) DEFAULT 0.00,
    
    saldo_actual DECIMAL(12,2) DEFAULT 0.00,
    diferencia_cierre DECIMAL(12,2) DEFAULT 0.00,
    
    estado ENUM('ABIERTA', 'CERRADA', 'BLOQUEADA', 'ANULADA') DEFAULT 'ABIERTA',
    metodo_cierre ENUM('MANUAL', 'AUTOMATICO') DEFAULT 'MANUAL',
    observacion_apertura TEXT DEFAULT NULL,
    observacion_cierre TEXT DEFAULT NULL,

    actualizado_en TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    eliminado TINYINT(1) DEFAULT 0
);

-----------------------------------------------------------------
CREATE TABLE permisos (
    id_permiso INT AUTO_INCREMENT PRIMARY KEY,
    nombre_permiso VARCHAR(100) NOT NULL UNIQUE,
    descripcion VARCHAR(255),
    modulo VARCHAR(50),
    fecha_creacion TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB;
CREATE TABLE usuario_permisos (
    id_usuario_permiso INT AUTO_INCREMENT PRIMARY KEY,
    id_usuario INT NOT NULL,
    id_permiso INT NOT NULL,
    fecha_asignacion TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB;
---------------------------------------------------------------
CREATE TABLE productos (
    id_producto INT PRIMARY KEY AUTO_INCREMENT,
    id_garantia INT null,
    codigo_producto VARCHAR(50) UNIQUE,
    nombre_producto VARCHAR(150) NOT NULL,
    descripcion TEXT,
    categoria VARCHAR(100),
    marca VARCHAR(100),
    modelo VARCHAR(100),
    serie_placa VARCHAR(100),
    estado_articulo ENUM('Nuevo', 'Excelente', 'Bueno', 'Regular', 'Usado') DEFAULT 'Bueno',
    
    valor_estimado DECIMAL(15,2) DEFAULT 0.00, -- Valor original de la prenda
    precio_venta DECIMAL(15,2) DEFAULT 0.00,   -- Precio al que se pondrá en venta/remate
    stock INT DEFAULT 1,                       -- Generalmente 1, porque es una prenda única
    estado_producto ENUM('Disponible', 'Vendido', 'Reservado', 'En Remate', 'Devuelto') DEFAULT 'Disponible',
    
    -- Auditoría
    fecha_registro DATETIME DEFAULT CURRENT_TIMESTAMP,
    registrado_por INT NOT NULL,
    fecha_actualizacion DATETIME NULL,
    actualizado_por INT NULL,
    INDEX idx_garantia (id_garantia),
    INDEX idx_estado (estado_producto),
    INDEX idx_categoria (categoria)
);
CREATE TABLE productos_imagenes (
    id_imagenfot INT PRIMARY KEY AUTO_INCREMENT,
    id_productofot INT NOT NULL,
    nombre_archivofot VARCHAR(255) NOT NULL,
    ruta_archivofot VARCHAR(500) NOT NULL,
    tipo_archivofot VARCHAR(50) NOT NULL,
    tamano_archivofot INT NOT NULL,
    es_principalfot BOOLEAN DEFAULT FALSE,
    descripcionfot VARCHAR(255),
    
    -- Auditoría
    subido_porfot INT NOT NULL,
    fecha_subidafot DATETIME DEFAULT CURRENT_TIMESTAMP
);
-------------------------------------------------------------------
CREATE TABLE renovaciones (
  id_renovacion INT AUTO_INCREMENT PRIMARY KEY,
  id_prestamoren INT NOT NULL,
  fecha_renovacion DATETIME DEFAULT CURRENT_TIMESTAMP,
  monto_renovado DECIMAL(15,2) NOT NULL,
  interes_pagado DECIMAL(15,2) DEFAULT 0,
  dias INT NOT NULL,
  observaciones TEXT,
  usuario_ren integer null,
  creado_por INT NOT NULL
);
----------------------------------------------------------------------------
-- Tabla de ventas (ACTUALIZADA)
CREATE TABLE ventas (
    id_venta INT PRIMARY KEY AUTO_INCREMENT,
    codigo_venta VARCHAR(20) UNIQUE NOT NULL,
    fecha_venta DATETIME DEFAULT CURRENT_TIMESTAMP,
    
    -- Totales de venta
    total_venta DECIMAL(10,2) NOT NULL,
    total_estimado DECIMAL(10,2) NOT NULL, -- NUEVO: Suma de valores estimados
    ganancia_neta DECIMAL(10,2) NOT NULL,  -- NUEVO: total_venta - total_estimado
    margen_ganancia DECIMAL(5,2) NOT NULL, -- NUEVO: (ganancia_neta / total_estimado) * 100
    
    descuento DECIMAL(10,2) DEFAULT 0,
    subtotal DECIMAL(10,2) NOT NULL,
    
    -- Datos del cliente
    nombre_cliente VARCHAR(100) NOT NULL,
    documento_cliente VARCHAR(20),
    telefono_cliente VARCHAR(20),
    email_cliente VARCHAR(100),
    
    -- Método de pago
    metodo_pago ENUM('Efectivo', 'Tarjeta', 'Transferencia', 'Mixto') NOT NULL,
    
    -- Observaciones
    observaciones TEXT,
    
    -- Usuario que realizó la venta
    id_usuario INT,
    id_sucursal INT,
    id_caja INT,
    -- Auditoría
    estado_venta ENUM('Completada', 'Anulada') DEFAULT 'Completada'
);

-- Tabla detalle_ventas (ACTUALIZADA)
CREATE TABLE detalle_ventas (
    id_detalle INT PRIMARY KEY AUTO_INCREMENT,
    id_venta INT NOT NULL,
    id_producto INT NOT NULL,
    codigo_producto VARCHAR(50) NOT NULL,
    nombre_producto VARCHAR(255) NOT NULL,
    cantidad INT NOT NULL,
    
    -- Precios
    precio_unitario DECIMAL(10,2) NOT NULL,
    valor_estimado_unitario DECIMAL(10,2) NOT NULL, -- NUEVO: Valor estimado por unidad
    ganancia_linea DECIMAL(10,2) NOT NULL,          -- NUEVO: Ganancia de esta línea
    
    -- Subtotales
    subtotal_linea DECIMAL(10,2) NOT NULL,
    subtotal_estimado DECIMAL(10,2) NOT NULL,       -- NUEVO: valor_estimado * cantidad
    
    -- Auditoría
    fecha_registro DATETIME DEFAULT CURRENT_TIMESTAMP
);
---------------------------------------------------------------------

CREATE TABLE gastos_egresos (
    id_gasto INT AUTO_INCREMENT PRIMARY KEY,
    id_cajag INT NOT NULL,
    id_sucursalg INT NOT NULL,
    id_usuariog INT NOT NULL,
    categoria VARCHAR(100) NOT NULL,       -- Ej: Servicios, Compra de insumos, Pago a proveedor
    descripcion TEXT NOT NULL,             -- Detalle del gasto
    monto DECIMAL(10,2) NOT NULL,          -- Ej: 150.50

    forma_pago ENUM('Efectivo', 'Transferencia', 'Tarjeta', 'Otro') NOT NULL DEFAULT 'Efectivo',
    nro_comprobante VARCHAR(100) NULL,     -- Si hay factura / recibo

    fecha_gasto DATE NOT NULL,             -- Fecha en que ocurrió el gasto
    fecha_registro TIMESTAMP DEFAULT CURRENT_TIMESTAMP,

    estado ENUM('Activo', 'Anulado') DEFAULT 'Activo'
);

----------------------------------------------------------------------------
create table cumplimiento(
    id integer not null AUTO_INCREMENT PRIMARY KEY,
    mes varchar(50) not null,
    gestion varchar(50) not null,
    objetivo decimal(15,2) not null DEFAULT 0,
    ac decimal(15,2) not null DEFAULT 0,
    cump_ac decimal(15,2) not null DEFAULT 0,
    bu decimal(15,2) not null DEFAULT 0,
    cbr_ac decimal(15,2) not null DEFAULT 0,
    difer decimal(15,2) not null DEFAULT 0,
    ut decimal(15,2) not null DEFAULT 0,
    ut_ac decimal(15,2) not null DEFAULT 0,
    difer_ut decimal(15,2) not null DEFAULT 0,
    estado integer(1) not null DEFAULT 0,
    fechareg datetime not null,
    usuarioreg integer not null,
    usuariocierre integer null,
    fechacierre datetime null,
    idsucursal integer not null,
    objetivo_usuarios decimal(15,2) not null DEFAULT 0,
    bu_usuarios decimal(15,2) not null DEFAULT 0);
-----------------------------------------------------------------------
CREATE TABLE prestamos_grupales (
    id_grupo_prestamo INT PRIMARY KEY AUTO_INCREMENT,
    id_grupo INT NOT NULL,
    codigo_grupo_prestamo VARCHAR(50) UNIQUE NOT NULL,
    monto_total DECIMAL(15,2) NOT NULL,
    tasa_interes_anual DECIMAL(5,2) NOT NULL,
    tipo_interes VARCHAR(20) NOT NULL,
    frecuencia_pagos VARCHAR(20) NOT NULL,
    numero_cuotas INT NOT NULL,
    dias_mes INT DEFAULT 30,
    ahorro_porcentaje DECIMAL(5,2) DEFAULT 0,
    descripcion TEXT,
    fecha_solicitud DATE NOT NULL,
    fecha_vencimiento DATE NOT NULL,
    estado VARCHAR(20) DEFAULT 'pendiente_revision',
    creado_por INT NOT NULL,
    sucursal INT NOT NULL,
    porcentajemora DECIMAL(5,2) DEFAULT 0,
    participantes integer null DEFAULT 0,
    asesorenc integer not null DEFAULT 0,
    fecha_creacion TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- Índices para mejor performance
CREATE INDEX idx_prestamos_grupales_grupo ON prestamos_grupales(id_grupo);
CREATE INDEX idx_prestamos_grupales_estado ON prestamos_grupales(estado);
CREATE INDEX idx_prestamos_grupales_fecha ON prestamos_grupales(fecha_solicitud);
alter table prestamos_grupales add monto_aprobado decimal(15,2) null DEFAULT 0;
alter table prestamos_grupales add fecha_aprobacion datetime null;
alter table prestamos_grupales add fecha_desembolso datetime null;
alter table prestamos_grupales add usuario_desembolso integer null;
alter table prestamos_grupales add aprobado_por integer null;
----------------------------------------------------------------------------------------
CREATE TABLE garantias_personales (
    id_garante_personal INT PRIMARY KEY AUTO_INCREMENT,
    id_prestamo INT NOT NULL,
    id_cliente_garante INT NOT NULL,
    cedula_garante VARCHAR(20) NOT NULL,
    nombre_garante VARCHAR(255) NOT NULL,
    telefono VARCHAR(20),
    direccion TEXT,
    parentesco VARCHAR(50) DEFAULT 'No especificado',
    fecha_registro TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
--------------------------------------------------------------------------------------
create table comisionasesor(
    idcomision integer not null AUTO_INCREMENT PRIMARY KEY,
    id_prestamoc integer not null,
    id_usuario integer not null,
    fecha_reg datetime not null,
    comision decimal(10,2) not null DEFAULT 0);
    
--------------------------------------------------------------------------------

