Ce que c'est et quand elle s'exécute
La tâche planifiée Importer le stock Shopify (Shopify → Odoo) s'exécute toutes les six heures et est active dès l'installation du module. Elle existe dans toutes les branches publiées : 17.0, 18.0, 19.0 et 20.0. Dans Odoo 17.0, elle porte en plus le nombre de répétitions à -1, c'est-à-dire qu'elle se répète sans fin.

Avec Odoo en français, la tâche s'appelle Importer le stock Shopify (Shopify → Odoo). Le schéma suivant montre comment elle s'appelle dans d'autres langues.

La connexion avec la boutique passe par FlexigoTech Cloud, qui conserve les identifiants chiffrés, surveille la synchronisation et envoie un e-mail en cas d'échec. Le module nécessite l'abonnement à FlexigoTech Cloud (plan Connecteur : 49 €/mois ou 490 €/an HT).

Un cas à parcourir de bout en bout
Exemple Cas illustratif : l'entreprise et ses chiffres sont inventés pour expliquer le flux.
Casa Moreno est une entreprise fictive qui vend des articles de maison dans une boutique Shopify et gère son inventaire dans Odoo. Un matin, Laura, qui administre le système, constate que la quantité d'un produit dans Odoo n'a pas bougé alors que dans Shopify elle a changé. Au lieu de lancer quoi que ce soit à l'aveugle, elle repasse la tâche dans l'ordre où l'exécute le code publié pour Odoo 20.0, qui est celui décrit à partir d'ici.
Premier filtre : qui l'exécute
Dans Odoo 20.0, la première chose que fait la tâche est de vérifier que la personne qui l'exécute est administrateur du système. Sinon, elle s'arrête avec Only an administrator can run this scheduled action. et ne regarde aucune boutique. Laura est administratrice, elle passe donc au point suivant.
Deuxième filtre : quelles boutiques entrent dans le passage
Dans Odoo 20.0, la tâche ne parcourt pas toutes les boutiques, seulement celles qui remplissent à la fois trois conditions :
- La boutique est active.
- Elle a la synchronisation du stock activée.
- Elle a des identifiants : un jeton d'accès enregistré ou le secret de l'API de l'application enregistré.
L'une des deux choses suffit dans la troisième condition, car une boutique avec des identifiants client peut ne pas avoir de jeton enregistré tant que son premier appel ne l'a pas généré. Les boutiques s'ouvrent depuis le menu Shopify › Configuration › Boutiques. Si vous ne voyez pas une partie de ce chemin, il vous manque une autorisation : Configuration demande Opérateur et Shopify demande Lecteur.
Laura vérifie que la boutique de Casa Moreno remplit les trois conditions. Si l'une échoue, la boutique reste en dehors du passage.
Troisième étape : une boutique en échec ne bloque pas les autres
Dans Odoo 20.0, pour chaque boutique retenue, la tâche appelle l'importation dans un bloc qui intercepte toute erreur. Si une boutique provoque une erreur, l'échec est consigné dans le journal du serveur avec le nom de la boutique et la tâche continue avec la suivante.
Ce que fait l'importation pour chaque boutique
Dans Odoo 20.0, pour chaque boutique, l'importation fait ceci dans cet ordre :
- Si la boutique n'a pas la synchronisation du stock activée, elle l'ignore.
- Elle cherche les produits liés à Shopify qui sont actifs, ont un article d'inventaire Shopify et appartiennent à la société de la boutique : un produit d'une autre société n'entre pas, même si le lien existait auparavant. S'il n'y en a aucun, elle passe à la boutique suivante.
- Elle détermine l'emplacement Odoo. D'abord, elle cherche l'emplacement Shopify principal de cette boutique qui a un emplacement Odoo assigné. S'il n'y en a pas, elle utilise l'emplacement de stock de l'entrepôt de la boutique ou, si la boutique n'a pas d'entrepôt, celui du premier entrepôt de sa société. Si elle ne trouve aucun emplacement, elle laisse cette boutique et continue avec la suivante.
- Elle demande à Shopify la quantité disponible des articles d'inventaire, pour l'emplacement Shopify de la boutique (celui par défaut, s'il est enregistré) et par lots de 100 articles. Chaque quantité reçue est convertie en nombre entier.
Le bouton pour obtenir le stock à la main a son propre pas à pas. Et si vous vous interrogez sur l'emplacement Shopify principal, le message qui le mentionne a son propre article.
Que vérifier si la tâche ne fait rien
À la fin de la revue, Laura dispose d'une liste de points où, selon le code d'Odoo 20.0, un passage peut être interrompu :
- Qui la lance. Seul un administrateur peut l'exécuter ; sinon,
Only an administrator can run this scheduled action.s'affiche. - La boutique. Elle doit être active, avec la synchronisation du stock activée et avec un jeton ou un secret de l'API enregistré.
- Les produits. Ils doivent être liés, actifs, avec un article d'inventaire Shopify et appartenir à la société de la boutique.
- L'emplacement. Il faut un emplacement Shopify principal avec un emplacement Odoo assigné, ou un entrepôt qui serve de solution de repli.
- La fréquence. La tâche s'exécute toutes les six heures, donc un changement récent dans Shopify peut ne pas être encore arrivé dans Odoo.
Avec cette liste, Laura peut écarter les points un par un au lieu de deviner. Pour commencer par le plus simple, elle peut ouvrir Shopify › Configuration › Boutiques et vérifier la boutique avant de toucher à autre chose.
Comment FlexigoTech vous aide
FlexigoTech met en place Odoo 17, 18, 19 et 20 et développe des connecteurs et des intégrations sur mesure. Si vous souhaitez vérifier la configuration de vos boutiques ou ajuster le flux de stock à votre activité, vous pouvez voir le module sur sa page ou sur la fiche Odoo Apps.
Le module est publié sur Odoo Apps pour 17.0, 18.0, 19.0 et 20.0.
À lire aussi
Vérifié dans le code du connecteur (version 17.0 et 20.0) et dans les sources citées
Sources
- Code du module : flexigobe_shopify_seller_connector 20.0 (d7e627b4): data/ir_cron_data.xml
- Code du module : flexigobe_shopify_seller_connector 17.0 (437257e3): data/ir_cron_data.xml
- Code du module : flexigobe_shopify_seller_connector 20.0 (d7e627b4): models/shopify_instance.py
- Code du module : flexigobe_shopify_seller_connector 20.0 (d7e627b4): models/fgt_cloud.py
- apps.odoo.com/apps/modules/20.0/flexigobe_shopify_seller_connector
- flexigotech.com/en/services.html
- flexigotech.com/precios.html
