Ce que vous voyez et à quel moment
À l'enregistrement de la fiche d'une instance Shopify, Odoo peut interrompre la sauvegarde avec ce texte : Le stock n'a qu'une seule source : envoyez-le d'Odoo vers Shopify ou récupérez-le de Shopify dans Odoo, pas les deux. (Stock has one master: push it from Odoo to Shopify or pull it from Shopify into Odoo, not both.). La fiche n'est pas enregistrée : ce que vous venez de modifier n'est donc pas conservé.
Dans Odoo 20.0, la fiche s'ouvre depuis le menu Ventes (Sales), puis Shopify, Control Center et Instances, dans cet ordre. Les deux cases concernées se trouvent dans l'onglet Operations, dans le groupe Paramètres de synchronisation (Sync Settings) : Sync Stock Enabled et Récupérer le stock depuis Shopify (Pull stock from Shopify). D'après le code, les deux sont décochées par défaut.


Un cas pour comprendre
Exemple Cas illustratif : l'entreprise et ses chiffres sont inventés pour expliquer le flux.
Imaginez une boutique fictive, Cerámicas del Norte, qui vend sur Shopify et gère son inventaire dans Odoo. La personne qui administre la connexion a coché Sync Stock Enabled : Odoo est la source du stock et envoie à Shopify sa quantité disponible. Un jour, elle se dit que, tant qu'à faire, elle voudrait aussi que Shopify lui remonte ce qui se passe en boutique. Elle coche Récupérer le stock depuis Shopify et clique sur enregistrer. Le message apparaît et la fiche reste comme elle était.
La connexion est intacte : le module a empêché une configuration à deux sources. Le commentaire du code l'explique ainsi : avec les deux actives, l'envoi d'Odoo vers Shopify et la lecture de Shopify vers Odoo s'écraseraient mutuellement le même chiffre.
Ce que l'administrateur doit retenir, c'est qu'on décide d'abord qui fait foi pour le stock, puis qu'on ne coche qu'une seule case. Dans la boutique de l'exemple, si Odoo reste la source, on décoche celle qui récupère le stock et on enregistre, sans rien d'autre.
Ce que vérifie exactement le module
C'est une vérification faite à l'enregistrement, qui se déclenche quand l'une des deux cases change. Le module examine les instances en cours d'enregistrement : si l'une d'elles a à la fois Sync Stock Enabled et Récupérer le stock depuis Shopify activées, il interrompt l'action avec le message. Dans ce code, il n'y a aucune autre condition : ni l'état de la connexion, ni la boutique, ni l'entrepôt.
L'aide de chaque case donne la signification de chaque sens :
Sync Stock Enabled: Odoo est la source du stock et sa quantité disponible est envoyée à Shopify. L'aide ajoute qu'elle ne peut pas être activée en même temps queRécupérer le stock depuis Shopify.Récupérer le stock depuis Shopify: Shopify est la source du stock. Chaque lecture fixe le stock disponible de l'emplacement principal de Shopify dans l'emplacement Odoo lié, au moyen d'un ajustement d'inventaire, en retranchant ce qu'Odoo a livré et que Shopify n'a pas encore honoré.
L'aide de la seconde case avertit aussi que le stock disponible de Shopify inclut ce qu'il compte comme endommagé, en contrôle qualité ou en stock de sécurité, et que dans Odoo c'est du stock comme le reste. Elle précise également qu'elle ne peut pas être activée si une autre boutique récupère du stock vers le même emplacement Odoo.
Comment le résoudre
- Ouvrez l'instance depuis le menu des instances Shopify (le chemin est indiqué plus haut).
- Allez dans l'onglet
Operationset repérez le groupeParamètres de synchronisation. - Décidez qui est la source du stock de cette boutique. C'est une décision métier, pas une décision du module.
- Si la source est Odoo, laissez
Sync Stock Enabledcochée et décochezRécupérer le stock depuis Shopify. - Si la source est Shopify, laissez
Récupérer le stock depuis Shopifycochée et décochezSync Stock Enabled. - Enregistrez la fiche. Dès qu'une seule case reste cochée, cette vérification n'interrompt plus l'enregistrement.
Si vous choisissez Shopify comme source, l'aide de la case indique que l'activer ne lance pas la lecture : il faut aussi activer l'action planifiée de récupération du stock que cette aide nomme. Sur la lecture du stock, vous avez un autre article : le bouton Pull Stock, pas à pas.
À vérifier ensuite
- Que la fiche s'enregistre sans message et que, dans le groupe
Paramètres de synchronisation, une seule des deux cases reste cochée. - Si vous avez choisi Shopify comme source, que l'action planifiée mentionnée par l'aide est activée.
- Si une autre boutique récupère du stock vers le même emplacement Odoo, que deux boutiques ne coïncident pas sur cet emplacement : l'aide le signale comme une autre restriction de la case
Récupérer le stock depuis Shopify.
Avec Odoo en espagnol, le texte de l'erreur est celui indiqué plus haut. Ce schéma, réalisé avec du code à partir des traductions publiées, montre comment il se lit dans d'autres langues :

Versions et coût
Le message figure dans le code publié des quatre branches (17.0, 18.0, 19.0 et 20.0). La condition, les champs et le menu décrits correspondent au code d'Odoo 20.0. Le module est publié sur Odoo Apps pour Odoo 17, 18, 19 et 20 à 9 € par version d'Odoo, paiement unique, HT, et nécessite l'abonnement à FlexigoTech Cloud : le plan Connecteur coûte 49 €/mois ou 490 €/an, HT.
Comment FlexigoTech vous aide
Si vous êtes en train de déployer Odoo et que vous ne savez pas encore qui doit être la source du stock entre votre boutique et votre inventaire, FlexigoTech déploie Odoo 17, 18, 19 et 20 et développe des connecteurs et des intégrations sur mesure. Mieux vaut prendre cette décision avant de cocher la moindre case.
Une case cochée, l'autre non
Le message répond à une règle du module vérifiée à l'enregistrement. Ne laissez cochée que la case du sens que vous choisissez et la fiche s'enregistre.
À lire aussi
Vérifié dans le code du connecteur (version 20.0) et dans les sources citées
Sources
- Code du module : flexigobe_shopify_connector 20.0 (c7078cd8): models/shopify_instance.py
- Code du module : 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
