Un cas pour parcourir le bouton pas à pas
Exemple Cas illustratif : l'entreprise et ses chiffres sont inventés pour expliquer le flux.
Librería Faro est une boutique fictive qui vend sur Shopify et suit ses commandes dans Odoo avec ce module. Un client demande le remboursement d'une commande entière et Ana, de l'administration, ouvre cette commande de vente dans Odoo. Voici ce que fait le module à chaque étape, d'après son code d'Odoo 20.
D'abord : le bouton apparaît-il ?
Le bouton Rembourser dans Shopify se trouve dans la vue de la commande de vente et il est masqué quand le champ Réf. commande Shopify est vide. Avec les valeurs par défaut, ce champ est vide : sur une commande sans lien avec Shopify, vous ne verrez donc pas le bouton. Ce champ et Instance Shopify se trouvent sur la fiche de la commande, dans le groupe Shopify ; ils sont en lecture seule et masqués tant que la référence est vide. La même condition de vue vaut pour Odoo 17, 18, 19 et 20.

Ensuite : la confirmation
Quand vous cliquez sur le bouton, Odoo demande Créer un remboursement complet de cette commande dans Shopify ?. Si vous acceptez, Odoo exécute l'action du bouton.
Puis : ce qu'il vérifie, dans cet ordre
- Droits. La première chose que fait l'action est de vérifier que votre utilisateur a l'accès Shopify Operator ou Manager. Sinon, elle s'arrête avec
You need Shopify Operator (or Manager) access to push changes to Shopify.Le commentaire du code en explique la raison : un utilisateur avec l'accès normal aux Ventes, sans aucun rôle Shopify, pourrait sinon lancer un véritable appel à Shopify avec les identifiants de la boutique. C'est pourquoi la vérification est dans l'action elle-même et ne dépend pas de l'affichage du bouton. - Lien avec Shopify. Pour chaque commande, l'action exige que la référence Shopify et l'instance soient renseignées. S'il en manque une, elle s'arrête avec
La commande de vente … n'est pas liée à une commande Shopify., avec le nom de la commande à la place des points de suspension. Comme le bouton n'est visible que si la référence est renseignée, si ce message apparaît quand vous cliquez depuis la fiche, regardez dans le groupeShopifysiInstance Shopifya une valeur.
Quand un message arrête l'action, le processus s'interrompt là et ne va pas jusqu'à demander le remboursement de cette commande.
Enfin : ce qu'il demande à Shopify
Si la commande passe ces vérifications, son instance Shopify reçoit l'ordre de créer le remboursement. D'après le code :
- Lignes. Toutes les lignes importées sont remboursées : celles qui ne sont ni des sections ni des notes, ne sont pas des lignes d'expédition et portent un identifiant de ligne Shopify. La quantité est celle de la ligne, arrondie à l'entier.
- Expédition. Les lignes d'expédition sont exclues et la demande ne réclame pas le remboursement des frais d'expédition.
- Note. Sauf indication contraire, la note envoyée à Shopify est
Refunded from Odoo. - Avis au client et solde de boutique. Ils sont repris des options de l'instance : prévenir le client du remboursement et rembourser en solde de boutique plutôt que sur le moyen de paiement d'origine.
- Devise. Le module interroge Shopify sur le remboursement suggéré et, si Shopify renvoie une devise, l'inclut dans la demande.
- Nouvelles tentatives. La demande porte une clé qui décrit exactement ce remboursement (commande, lignes, quantités, expédition et méthode). Si elle est répétée, à cause d'une réponse perdue ou d'un second clic impatient, elle porte la même clé et Shopify ne rembourse qu'une fois, d'après le commentaire du code.
Si Ana n'a pas le rôle
Si Ana voit le message de droits, le remboursement n'a pas été demandé. Elle a besoin que la personne qui administre Odoo lui donne l'accès Shopify Operator (ou Manager), comme le dit le message lui-même, puis de cliquer de nouveau sur le bouton.

Ce qu'il faut retenir du cas
- Le bouton n'est pas disponible pour n'importe quelle commande : il dépend de
Réf. commande Shopify, et cette référence ne se remplit pas à la main car le champ est en lecture seule. - Vos droits et le lien de la commande (référence et instance) sont vérifiés avant de parler à Shopify, et si l'un échoue, l'action s'arrête.
- Le remboursement demandé est complet pour les lignes importées, sans les lignes d'expédition ni les frais d'expédition.
- L'avis au client et le remboursement en solde de boutique ne se choisissent pas au clic : ils viennent des options de l'instance.
- Une nouvelle tentative identique ne duplique pas le remboursement dans Shopify, grâce à la clé que porte la demande.
Avant de l'essayer dans votre Odoo
Le bouton existe dans les branches d'Odoo 17, 18, 19 et 20, qui sont les versions publiées du module sur Odoo Apps ; le code que j'ai décrit est celui d'Odoo 20. Avec Odoo en français, il s'appelle Rembourser dans Shopify ; dans les autres langues, le libellé change, comme le montre le schéma.

Le module est en paiement unique par version d'Odoo et nécessite l'abonnement à FlexigoTech Cloud, plan Connecteur : 49 €/mois ou 490 €/an HT. La connexion passe par FlexigoTech Cloud, qui conserve les identifiants chiffrés, surveille la synchronisation et prévient par e-mail en cas d'échec. Tout est dans la fiche Odoo Apps et sur la page du module.
Si votre question porte sur un autre aspect des commandes, consultez le message sur les données Shopify pour créer la commande de vente. Et si vous mettez en place Odoo avec Shopify et souhaitez revoir les droits, les instances ou un flux de retours sur mesure, FlexigoTech déploie Odoo 17, 18, 19 et 20 et développe des connecteurs et des intégrations sur mesure.
Questions rapides
Pourquoi je ne vois pas le bouton sur une commande ?
Parce que le bouton est masqué quand Réf. commande Shopify est vide, et avec les valeurs par défaut il l'est.
Demande-t-il une confirmation ?
Oui : Créer un remboursement complet de cette commande dans Shopify ?.
À lire aussi
Vérifié dans le code du connecteur (version 20.0) et dans les sources citées
Sources
- Code du module : flexigobe_shopify_seller_connector 20.0 (d7e627b4): views/sale_order_views.xml
- Code du module : flexigobe_shopify_seller_connector 20.0 (d7e627b4): models/sale_order.py
- apps.odoo.com/apps/modules/20.0/flexigobe_shopify_seller_connector
- flexigotech.com/precios.html
- flexigotech.com/en/services.html
