-- ============================================================================
-- ACTUALIZAR TABLA extractos_bancarios PARA IMPORTACIÓN
-- ============================================================================

-- Agregar columnas si no existen (para la funcionalidad de importación)
ALTER TABLE extractos_bancarios 
ADD COLUMN IF NOT EXISTS id_empresa INT AFTER id_extracto,
ADD COLUMN IF NOT EXISTS id_cuenta_bancaria INT AFTER id_empresa,
ADD COLUMN IF NOT EXISTS periodo VARCHAR(7) AFTER numero_secuencia,
ADD COLUMN IF NOT EXISTS fecha_importacion DATETIME AFTER periodo,
ADD COLUMN IF NOT EXISTS usuario_importacion INT AFTER fecha_importacion;

-- Actualizar foreign keys si es necesario
-- (Nota: Las referencias existentes pueden variar según el estado actual de la DB)

-- Crear índices para búsquedas rápidas
ALTER TABLE extractos_bancarios 
ADD INDEX IF NOT EXISTS idx_empresa (id_empresa),
ADD INDEX IF NOT EXISTS idx_periodo (periodo),
ADD INDEX IF NOT EXISTS idx_cuenta_bancaria (id_cuenta_bancaria);

-- Vista para extractos sin conciliación
CREATE OR REPLACE VIEW vw_extractos_pendientes AS
SELECT 
    e.id_extracto,
    e.id_empresa,
    e.id_cuenta_bancaria,
    e.periodo,
    e.fecha_movimiento,
    e.tipo_movimiento,
    e.referencia,
    e.descripcion,
    e.monto,
    cb.numero_cuenta,
    b.nombre_banco,
    u.nombre as usuario_importacion,
    e.fecha_importacion,
    CASE 
        WHEN e.id_conciliacion IS NULL THEN 'NO CONCILIADO'
        ELSE 'CONCILIADO'
    END as estado_conciliacion
FROM extractos_bancarios e
LEFT JOIN cuentas_bancarias cb ON e.id_cuenta_bancaria = cb.id_cuenta_bancaria
LEFT JOIN bancos b ON cb.id_banco = b.id_banco
LEFT JOIN usuarios u ON e.usuario_importacion = u.id
ORDER BY e.fecha_importacion DESC;
