Qué ves y en qué momento
Al guardar la ficha de una instancia de Shopify, Odoo puede detener el guardado con este texto: El stock tiene un solo dueño: envíelo de Odoo a Shopify o tráigalo de Shopify a Odoo, no las dos cosas. (Stock has one master: push it from Odoo to Shopify or pull it from Shopify into Odoo, not both.). La ficha no se guarda, así que lo que acabas de cambiar en ella no queda grabado.
En Odoo 20.0 la ficha se abre desde el menú Ventas (Sales), después Shopify, Control Center e Instances, en ese orden. Las dos casillas implicadas están en la pestaña Operations, dentro del grupo Configuración de sincronización (Sync Settings): Sync Stock Enabled y Traer el stock de Shopify (Pull stock from Shopify). Según el código, las dos vienen desmarcadas por defecto.


Un caso para verlo
Ejemplo Caso ilustrativo: la empresa y sus datos son inventados para explicar el flujo.
Imagina una tienda ficticia, Cerámicas del Norte, que vende en Shopify y lleva el inventario en Odoo. Quien administra la conexión tiene marcada Sync Stock Enabled: Odoo es el dueño del stock y envía a Shopify su cantidad a mano. Un día piensa que, ya puestos, también quiere que Shopify le cuente lo que pasa en la tienda. Marca Traer el stock de Shopify y pulsa guardar. Aparece el mensaje y la ficha sigue como estaba.
La conexión sigue intacta: el módulo ha impedido una configuración con dos dueños. El comentario del propio código lo explica así: con las dos activas, el envío de Odoo a Shopify y la lectura de Shopify a Odoo se escribirían el mismo número uno encima del otro.
Lo que debe aprender quien administra es que primero se decide quién manda con el stock y después se marca una sola casilla. En la tienda del ejemplo, si Odoo sigue siendo el dueño, se desmarca la que trae el stock y se guarda sin más.
Qué comprueba exactamente el módulo
Es una comprobación que se hace al guardar y que se dispara cuando cambia cualquiera de las dos casillas. El módulo mira las instancias que se están guardando: si alguna tiene a la vez activadas Sync Stock Enabled y Traer el stock de Shopify, detiene la acción con el mensaje. En ese código no hay más condición: ni el estado de la conexión, ni la tienda, ni el almacén.
La ayuda de cada casilla da el significado de cada sentido:
Sync Stock Enabled: Odoo es el dueño del stock y su cantidad a mano se envía a Shopify. La ayuda añade que no puede estar activada a la vez queTraer el stock de Shopify.Traer el stock de Shopify: Shopify es el dueño del stock. Cada lectura fija el stock a mano de la ubicación principal de Shopify en la ubicación de Odoo vinculada, con un ajuste de inventario, restando lo que Odoo ha entregado y Shopify aún no ha cumplido.
La ayuda de la segunda casilla avisa además de que el stock a mano de Shopify incluye lo que tiene como dañado, en control de calidad o como stock de seguridad, y que en Odoo es stock como el resto. También dice que no puede estar activada con otra tienda que traiga stock a la misma ubicación de Odoo.
Cómo resolverlo
- Abre la instancia desde el menú de instancias de Shopify (la ruta está más arriba).
- Ve a la pestaña
Operationsy busca el grupoConfiguración de sincronización. - Decide quién es el dueño del stock de esa tienda. Es una decisión de negocio, no del módulo.
- Si el dueño es Odoo, deja marcada
Sync Stock Enabledy desmarcaTraer el stock de Shopify. - Si el dueño es Shopify, deja marcada
Traer el stock de Shopifyy desmarcaSync Stock Enabled. - Guarda la ficha. Si ya solo queda una casilla marcada, esta comprobación deja de detener el guardado.
Si eliges que mande Shopify, la ayuda de la casilla dice que activarla no ejecuta la lectura: hay que activar también la acción programada de traída de stock que nombra esa ayuda. Sobre la lectura de stock tienes otro artículo: el botón Pull Stock, paso a paso.
Qué comprobar después
- Que la ficha se guarda sin mensaje y que en el grupo
Configuración de sincronizaciónqueda marcada una sola de las dos casillas. - Si has elegido Shopify como dueño, que la acción programada que menciona la ayuda está activada.
- Si otra tienda trae stock a la misma ubicación de Odoo, que no coinciden dos tiendas en esa ubicación: la ayuda lo señala como otra restricción de la casilla
Traer el stock de Shopify.
Con Odoo en castellano, el texto del error es el de arriba. Este esquema, hecho con código a partir de las traducciones publicadas, recoge cómo se lee en otros idiomas:

Versiones y coste
El mensaje está en el código publicado de las cuatro ramas (17.0, 18.0, 19.0 y 20.0). La condición, los campos y el menú descritos corresponden al código de Odoo 20.0. El módulo está publicado en Odoo Apps para Odoo 17, 18, 19 y 20 a 9 € por versión de Odoo, pago único, sin IVA, y necesita la suscripción a FlexigoTech Cloud: el plan Conector cuesta 49 €/mes o 490 €/año, sin IVA.
Cómo ayuda FlexigoTech
Si estás implantando Odoo y todavía no tienes claro quién debe ser el dueño del stock entre tu tienda y tu inventario, FlexigoTech implanta Odoo 17, 18, 19 y 20 y desarrolla conectores e integraciones a medida. Esa decisión conviene tomarla antes de marcar ninguna casilla.
Una casilla marcada, la otra no
El mensaje responde a una regla del módulo que se comprueba al guardar. Deja marcada solo la casilla del sentido que elijas y la ficha se guarda.
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_shopify_connector 20.0 (c7078cd8): models/shopify_instance.py
- Código del módulo: flexigobe_shopify_connector 20.0 (c7078cd8): models/fgt_cloud.py
- apps.odoo.com/apps/modules/20.0/flexigobe_shopify_connector
- apps.odoo.com/apps/modules/17.0/flexigobe_shopify_connector
- apps.odoo.com/apps/modules/18.0/flexigobe_shopify_connector
- apps.odoo.com/apps/modules/19.0/flexigobe_shopify_connector
- flexigotech.com/precios.html
- flexigotech.com/en/services.html
