CAJIO V10.1.0 - BASE REFACTORIZADA
================================

Esta versión reorganiza internamente el proyecto sin cambiar deliberadamente el
comportamiento funcional de Cajio. El objetivo es que el código sea más fácil de
entender, mantener, probar y rediseñar en las próximas versiones.

EJECUTAR
--------
1. Ejecutar ejecutar.bat.
2. El script instala/verifica las dependencias de requirements.txt.
3. Cajio usa la carpeta Datos ubicada junto al proyecto / ejecutable.

COMPILAR PORTABLE
-----------------
1. Ejecutar compilar_exe.bat.
2. PyInstaller genera Cajio.exe.
3. El script prepara la carpeta "Cajio Portable" y conserva Datos cuando encuentra
   una instalación anterior dentro del proyecto.

DATOS
-----
- Base principal: Datos/caja.db
- Configuración local: Datos/config.json
- Los formatos de base de datos existentes se mantienen compatibles.
- Para actualizar desde otra versión, conservar/copiar la carpeta Datos.

ARQUITECTURA
------------
El código principal ahora vive dentro del paquete cajio/:

cajio/
  paths.py             Rutas de ejecución, assets, Datos y configuración.
  formatting.py        Dinero, fechas y parseo compartido.
  storage.py           Base SQLite común.
  theme.py             Paletas visuales centralizadas.

  business/
    repository*.py     Datos administrativos separados por responsabilidad.
    charts.py          Render y helpers de gráficos.
    ui_helpers.py      Componentes UI compartidos.
    pages.py           Resumen, Caja administrativa, Análisis, Egresos, Turnos, Reportes.
    auth_dialogs.py    Login, PIN y reautorización.
    admin_dialogs.py   Usuarios, perfil y negocio.
    startup.py         Bienvenida, onboarding y login inicial.
    shell.py           Ventana administrativa principal.
    app.py             Arranque y diagnóstico de runtime.

  cash/
    models.py          Sale, Expense y Shift.
    config.py          Preferencias de Caja.
    database*.py       Persistencia operativa separada por dominio.
    ui_common.py       Widgets reutilizables de Caja.
    dialogs.py         Diálogos operativos.
    window_*.py        Historial, ajustes, operaciones y exportación.
    window.py          Composición de la ventana de Caja.

Los archivos business_ui.py, business_data.py y cash_core.py siguen existiendo como
fachadas de compatibilidad, pero ya no contienen los monolitos anteriores.

PRUEBAS
-------
Las pruebas que no requieren interfaz Qt pueden ejecutarse con:

  python -m unittest discover -s tests -v

Cubren actualmente:
- creación/autenticación de propietario;
- coexistencia de repositorio administrativo y Caja sobre la misma base;
- venta + egreso + efectivo esperado;
- continuidad de efectivo entre turnos y faltantes;
- migración desde el esquema operativo legado;
- persistencia de config.json;
- parseo sintáctico del proyecto.

IMPORTANTE SOBRE LA INTERFAZ
----------------------------
La refactorización conserva los cuerpos de los métodos de UI de la versión base.
No es todavía el rediseño visual prometido: primero se estabilizó y ordenó el código
para que esa siguiente pasada pueda hacerse sin seguir acumulando parches.

El entorno donde se preparó esta versión no dispone de PySide6, por lo que la prueba
visual final debe realizarse en Windows ejecutando ejecutar.bat. La lógica de datos,
la sintaxis del proyecto y la estructura modular sí fueron verificadas automáticamente.
