# Integración Shopify → SAP Business One Descarga órdenes de tiendas Shopify y crea en SAP Business One (Service Layer) los documentos de venta: Invoice (reserva), pago con tarjeta o transferencia, solicitud de traslado (ITR) y, si se despacha desde una tienda física, traslado de stock y entrega. Una tienda = un archivo en `config/stores/`. Tiendas actuales: `snobbycl` y `on-chile-distributor-prod`. ## Puesta en marcha ```bash python -m venv .venv && .venv/bin/pip install -r requirements.txt cp .env.example .env # completar tokens y contraseñas de cada tienda ``` 1. Copiar `config/stores/_example.json` a `config/stores/.json` y completarlo (`docs/configuracion_tienda.md`). Los secretos van como `${VARIABLE}` y su valor en `.env`. 2. Ejecutar el scheduler: `.venv/bin/python main.py` (ventanas y frecuencia en `scheduler.json`; una sola instancia a la vez, con lock). Variables opcionales: `LOG_LEVEL`, `APP_TIMEZONE` (zona para mostrar horas, ej. `America/Santiago`). ## Cómo funciona (resumen) 1. Cada ciclo baja cabeceras nuevas (desde `max(id en BD, initial_since_id)`) a SQLite (`data/shopify_sap.db`). 2. Toma las órdenes no terminales, trae el detalle y las transacciones de pago, y crea los documentos en SAP. Retoma donde quedó si un documento falló, y adopta documentos que ya existan en SAP para no duplicar. 3. Estados: `pending`, `not_eligible`, `in_progress`, `error` (se reintentan) e `integrated`, `timeout`, `ignored`, `cancelled` (terminales). ## Herramientas (`tools/`, ejecutar con `.venv/bin/python -m tools.`) | Herramienta | Uso | |---|---| | `consultar` | `resumen`, `descargadas`, `integradas`, `errores`, `orden --name "#8064"` (solo lectura) | | `integrar_ordenes` | dry-run o integración (`--apply`) de órdenes puntuales | | `probar_pago` | payload del pago sobre la Invoice real | | `descargar_ordenes_especiales` | guarda en `download/` el JSON de los casos especiales | | `cargar_items_faltantes`, `entrada_mercancia_ordenes` | artículos y stock para pruebas | Las herramientas que escriben en SAP son dry-run por defecto y requieren `--apply`. ## Documentación (`docs/`) | Documento | Contenido | |---|---| | `flujo_pipeline.md` | flujo caso por caso y reglas vigentes | | `casos_especiales.md` | casos fuera del flujo normal, con órdenes de ejemplo de cada tienda | | `mapeo_campos.md` | campos de Shopify → SAP por documento | | `configuracion_tienda.md` | guía del archivo de cada tienda, `payment_methods` y secretos | | `esquema_base_datos.md` | tablas y estados de SQLite | | `pendientes.md` | roadmap, decisiones abiertas y pruebas pendientes | | `analisis_tiempos.md` | capacidad y tiempos por orden |