Ejemplo Caso ilustrativo: la empresa y sus datos son inventados para explicar el flujo.
Lo que pasó
Casa Lumen vende lámparas en varios canales a través de ChannelEngine y lleva el almacén en Odoo. Un lunes llegan dos pedidos del mismo modelo por canales distintos. Solo quedaba una unidad. El segundo pedido hay que cancelarlo, con la mala nota que eso supone en el canal.
La primera sospecha es la de siempre: «el conector no ha mandado el stock». La comprobación dice otra cosa.
Cómo se encontró
El conector tiene una tarea diaria que lee el stock que guarda ChannelEngine y lo compara con lo que Odoo mandaría en ese momento. Lo que Odoo mandaría es lo disponible en el almacén de la cuenta menos las entregas abiertas y los pedidos que siguen como presupuesto. Cada SKU con diferencia queda en Stock Divergences, con tres cifras: lo que tiene ChannelEngine, lo que tiene Odoo y la resta.
En el caso de Casa Lumen, la lámpara aparecía con una unidad más en ChannelEngine. El motivo era un presupuesto de una venta en tienda que nadie había confirmado: Odoo ya lo descontaba, y ChannelEngine seguía ofreciendo esa unidad.

Lo que hace ChannelEngine por su lado
ChannelEngine tiene una reserva de stock pensada, según su propio centro de ayuda, para eliminar el riesgo de vender de más. La reserva dura hasta que el pedido pasa a «In progress» y, de media, se libera hacia los canales en 1,5 horas, según lo rápido que se confirmen los pedidos y se mande el stock. Funciona bien si tu sistema le manda stock con regularidad. Si el stock llega tarde, la reserva no lo arregla.
Los ajustes que cambiaron
- Revisar la lista Stock Divergences cada mañana y volver a encolar en un clic las ofertas con diferencia.
- Activar en la cuenta la opción de retener los pedidos sin stock suficiente, para que un pedido importado no se confirme solo si el almacén no llega.
- Confirmar que la cuenta usa el identificador de ubicación de stock de ChannelEngine, porque Casa Lumen tiene dos ubicaciones.
- Dejar las frecuencias de serie: los pedidos entran cada 15 minutos, los cambios de precio y stock se ponen en cola cada hora y se envían cada 30 minutos.

Un ajuste más que Casa Lumen revisó: el origen de los precios. La cuenta puede tomar los precios de las ofertas de una tarifa de Odoo, en vez del precio de venta del producto. Así, el precio para ChannelEngine se cambia en un solo sitio.
Qué aprendió el equipo
La diferencia no estaba en el conector, estaba en un presupuesto olvidado. Sin la comparación diaria, el siguiente descuadre habría vuelto a parecer un fallo técnico. Con la lista delante, cada diferencia tiene un SKU, unas cifras y una fecha de comprobación, y se resuelve en minutos.

Casa Lumen no cambió de canales ni de proveedor. Solo cambió la costumbre de mirar la lista cada mañana, y con eso dejó de cancelar pedidos por falta de stock.
Si vendes el mismo producto también fuera de ChannelEngine, Odoo es el único sitio donde se ven todas las salidas a la vez. Por eso la comparación se hace desde Odoo.
Sigue leyendo
Comprobado en el código del conector (versión 20.0) y en las fuentes enlazadas
Fuentes
- Código del módulo: flexigobe_channelengine_connector (6032191c): models/channelengine_stock_reconcile.py
- support.channelengine.com/hc/en-us/articles/34273588476317-ChannelEngine-stock-reservation
- Código del módulo: flexigobe_channelengine_connector 20.0 (6032191c): data/channelengine_cron.xml
- Código del módulo: flexigobe_channelengine_connector 20.0 (6032191c): views/channelengine_stock_divergence_views.xml
- Código del módulo: flexigobe_channelengine_connector 20.0 (6032191c): views/menu.xml
- Código del módulo: flexigobe_channelengine_connector 20.0 (6032191c): models/channelengine_account.py
- apps.odoo.com/apps/modules/20.0/flexigobe_channelengine_connector
