# BIX-IO · Guía para instalar y personalizar en cada cliente

BIX-IO se instala sobre bases de Dolibarr que se usan de maneras muy distintas. Esta guía separa tres cosas:

1. Lo que **se configura sin programar**.
2. Lo que se entrega como **perfil del cliente**.
3. Lo que **requiere desarrollo**.

También incluye la lista de lo que hay que averiguar en cada instalación.

---

## 1. Los tres niveles de personalización

| Nivel | Qué cubre | Dónde vive | Quién lo hace |
|---|---|---|---|
| **Configuración** | Fuente de venta, costo de respaldo, tableros visibles, nombre de la etiqueta, cuentas, reglas de gasto, líneas del estado de resultados, presupuestos, conceptos del flujo, roles, proveedor de IA | Configuración en BIX-IO (tabla `bixio_setting` y catálogos) | Consultor o el propio cliente |
| **Perfil del cliente** | Arranque repetible: etiquetas, roles de cuentas, reglas y presupuestos propios, decisiones de la Fase 0 | `sql/perfiles_<cliente>.sql` + `php cli/install.php --perfil <cliente>` | Consultor de FLIA |
| **Extensión** | Indicadores o reportes que no existen: MRP, proyectos, formatos de Excel propios, KPIs de su industria | Desarrollo (ver sección 6) | Equipo de desarrollo |

**Regla de oro:** el núcleo nunca se modifica para un cliente. Lo que es de un solo cliente va en su perfil o en una extensión, para que todos reciban las mejoras del núcleo sin conflictos.

---

## 2. Qué averiguar en cada instalación (Fase 0 por cliente)

Primero corre `php cli/diagnostico.php` con un usuario de solo lectura. Reporta versión, módulos, qué tableros funcionarán, volumen y calidad de captura. Después resuelve con el cliente:

### Técnico
- **Versiones.** Versión de Dolibarr, PHP y MySQL/MariaDB. BIX-IO está validado en Dolibarr 19 con PHP 7.2 a 8.3. En otras versiones corre el diagnóstico y `install.php --views`; si una columna cambió de nombre, se ajusta solo la vista afectada.
- **Esquema.** Prefijo de tablas (`llx_` u otro) y número de **entidad** si usan multiempresa.
- **Red.** Salida a internet del servidor (para la IA) y extensiones `pdo_mysql`, `mbstring`, `curl`; `zip` es opcional.
- **Base de datos.** Usuario con `SELECT` sobre Dolibarr y `ALL` sobre el esquema `bixio`.

### Cómo venden
- **¿La venta oficial es el pedido o la factura?** Es la decisión más importante: cambia todas las cifras.
  - Pedido: distribuidoras que facturan después, como Pepusco.
  - Factura: servicios, comercios, empresas que facturan al momento.
- **Notas de crédito, anticipos, facturas de reemplazo.** En modo facturas, las notas de crédito restan y los anticipos se excluyen para no contar doble.
- **Punto de venta.** ¿Venden en mostrador con TakePOS? Esa venta aparece como "mostrador" en el estado de resultados.
- **Moneda.** ¿Una sola moneda? Multimoneda aún no está soportada (sección 5).

### Cómo costean
- **Precio de compra en cada línea.** ¿Se captura? Depende del módulo Márgenes y de la costumbre de captura. Si no, activa el **costo de respaldo** (costo promedio o precio de costo del producto).
- **Manufactura.** ¿El costo viene de una lista de materiales (MRP)? BIX-IO todavía no calcula costo de producción.

### Cómo agrupan
- **La etiqueta.** ¿Qué significa la categoría de producto? En Pepusco es el proveedor; en otros es línea, marca o familia. Se configura su **nombre en pantalla** y si **identifica al proveedor**.
- **Extracampos propios.** ¿Usan alguno que importe? Pepusco usa `almacen` en pedidos. Los extracampos son de cada cliente y van en su perfil.

### Cómo manejan el dinero
- **Bancos.** ¿Capturan los movimientos en Dolibarr o hay que importar estados de cuenta? ¿Qué cuentas son de proveedores, de crédito o de caja?
- **Gastos.** ¿Cómo registran gastos: pagos varios, notas de gastos, facturas de proveedor de servicios? Las etiquetas definen las **reglas de clasificación**.
- **Plazos de crédito.** ¿Los capturan bien? En Pepusco el 99 % de las facturas tiene plazo de 1 día, así que la cobranza se proyecta con el **historial de pago** de cada cliente.

### Qué reporta dirección hoy
- **Formatos actuales.** Pedir sus Excel o reportes. Se replican como exportaciones del perfil y se concilian **dos cortes seguidos** antes de retirar el proceso manual.
- **Indicadores y metas.** Cuáles miran y con qué metas (margen, gasto, días de cobro).

---

## 3. Qué tableros aplican según el tipo de empresa

BIX-IO oculta solo los tableros cuyo módulo de Dolibarr no está activo. Además, en Configuración → Instancia hay **perfiles de arranque**.

| Tipo de empresa | Fuente de venta | Tableros útiles | Indicadores clave | Qué falta hoy |
|---|---|---|---|---|
| **Distribución con pedidos** (Pepusco) | Pedidos | Todos | Margen por etiqueta, cartera, pagos a proveedores, dinero de proveedores en cuentas, inventario detenido | — |
| **Solo facturación / servicios** | Facturas | Resumen, Ventas, Gastos, Tesorería, Flujo, Estado de resultados | Facturación por cliente y servicio, horas o servicios vendidos, días de cobro, recurrencia | Ingresos recurrentes (contratos), utilidad por proyecto |
| **Comercio con punto de venta** | Facturas (TakePOS = mostrador) | Todos | Venta por día, hora y cajero; ticket promedio; rotación; cortes de caja | Venta por hora y cajero, cortes de caja de TakePOS |
| **Manufactura** | Pedidos | Todos + producción | Costo real contra estándar, consumo de materiales, mermas, órdenes a tiempo | **Tablero de producción (MRP)** |
| **Obras / proyectos** | Facturas o pedidos | Ventas, Gastos, Flujo, Estado de resultados | Utilidad por obra, avance contra facturado, gasto por obra | **Tablero por proyecto** |

---

## 4. Diferencias técnicas entre instalaciones de Dolibarr

| Tema | Riesgo | Cómo lo maneja BIX-IO |
|---|---|---|
| Versión de Dolibarr | Columnas renombradas o nuevas | Toda consulta pasa por vistas del esquema `bixio`; `cli/diagnostico.php` detecta faltantes; se ajusta solo la vista |
| Prefijo de tablas | Distinto de `llx_` | Parámetro `db.prefix` |
| Multiempresa (entidades) | Mezclar datos de varias empresas | Parámetro `db.entity` para el acceso; **las vistas aún no filtran por entidad** (pendiente) |
| Colación de la base | Error "Illegal mix of collations" | El instalador copia la colación de Dolibarr |
| Sin extensión `zip` | No se exporta a Excel | Empaquetador propio incluido |
| Módulos externos (CFDI, contabilidad) | Tablas propias | No se leen; si importan, se agregan como extensión |
| Plazos de pago mal capturados | Proyección de cobro irreal | Proyección por historial de pago del cliente |
| Precio de compra vacío | Margen inflado | Costo de respaldo del producto + regla en Salud de datos |
| Bancos sin conciliar | Saldo irreal | Reparto con "por conciliar" + importador de estados de cuenta |

---

## 5. Pendientes del núcleo (backlog)

Por prioridad, según lo que pedirán otros clientes:

1. **Multiempresa.** Filtrar todas las vistas por `entity`. Imprescindible antes de instalar en un Dolibarr multiempresa.
2. **Extensiones por cliente.** Mecanismo para agregar indicadores, pantallas y exportaciones sin tocar el núcleo (diseño en la sección 6).
3. **Tablero de producción (MRP).** Órdenes (`mrp_mo`), consumos y producción (`mrp_production`, movimientos de stock por orden), costo real contra lista de materiales, mermas y cumplimiento.
4. **Rentabilidad por proyecto.** Ventas, compras, gastos y horas ligados a `projet` mediante `fk_projet`.
5. **Embudo comercial.** Presupuestos (`propal`) → pedidos → facturas: tasa de cierre y tiempo de conversión. Pepusco tiene el módulo activo.
6. **Multimoneda.** Convertir con `multicurrency_tx` a la moneda principal.
7. **Notas de gastos** (`expensereport`) como fuente de gastos, además de pagos varios y nómina.
8. **Comercio.** Venta por hora y cajero, cortes de caja de TakePOS.
9. **Ingresos recurrentes.** Contratos y servicios con renovación.
10. **Transversales.**
    - Alertas proactivas nocturnas y resumen matutino.
    - Respuestas en streaming del copiloto.
    - Instalador web.
    - Pruebas automáticas contra varias versiones de Dolibarr.

---

## 6. Diseño propuesto para extensiones por cliente

Para agregar indicadores propios de un cliente sin ramificar el código:

```
clientes/<cliente>/
  manifiesto.php     pantallas, herramientas de BIXIO y exportaciones que agrega
  sql/vistas.sql     vistas propias sobre su Dolibarr (se instalan con --perfil)
  Metrics/*.php      cálculos propios (namespace Bix\Clientes\<Cliente>)
  Views/*.php        pantallas propias con el mismo sistema de diseño
  Excel/*.php        formatos de reporte que ese cliente ya usa
```

- **Carga.** El núcleo lee `manifiesto.php` al arrancar. Registra rutas, entradas del menú (con su módulo de Dolibarr requerido), permisos por rol y herramientas de BIXIO.
- **Formatos propios.** Los Excel de Pepusco (corte, semanal, financiero) son el primer candidato a moverse aquí; el núcleo conservaría formatos genéricos.
- **Actualizaciones.** El núcleo se actualiza igual para todos; las extensiones declaran la versión mínima del núcleo que requieren.

---

## 7. Lista de verificación de instalación

**Preparación técnica**
- [ ] `php cli/diagnostico.php` sin áreas en ✗ para los tableros que se usarán.
- [ ] `php cli/install.php [--perfil <cliente>]`: confirmar la fuente de venta detectada.

**Configuración**
- [ ] Configuración → Instancia:
  - [ ] Fuente de venta y costo de respaldo.
  - [ ] Tableros visibles.
- [ ] Configuración → Etiquetas: nombre en pantalla y qué categorías agrupan el análisis.
- [ ] Configuración → Cuentas: uso y reparto de cada cuenta.
- [ ] Reglas de gasto: categorías, reglas por etiqueta y línea del estado de resultados.
- [ ] Presupuestos, metas y conceptos del flujo semanal.
- [ ] Accesos por rol.

**Históricos**
- [ ] `php cli/snapshot.php --desde <inicio de año>` para reconstruir el histórico.
- [ ] Cron diario de `cli/snapshot.php`.

**IA**
- [ ] Llave del proveedor en `config.php`, prueba de conexión y `php cli/bixio_eval.php`. Liberar solo con 90 % o más.

**Validación con el cliente**
- [ ] Conciliar dos cortes seguidos contra sus reportes actuales.
- [ ] Revisar Salud de datos con el cliente y acordar responsables de corregir la captura.
