Quand le bouton apparaît
Le bouton Retourner au stock se trouve dans l'écran Remboursements Shopify (Shopify Refunds), qui s'ouvre depuis Shopify › Opérations › Remboursements et retours. Pour voir les sections Shopify et Opérations du menu, il faut le droit Lecteur.
La condition est la même dans Odoo 17, 18, 19 et 20 : le bouton est masqué sauf si le champ Retour en stock (Stock Return) est en attente, en révision ou échoué. Avec les valeurs par défaut de ce champ, il n'est pas visible. Il ne dépend pas du champ État du remboursement, qui est un autre champ et prend les valeurs Brouillon, Avoir créé, Ignoré et Échoué.

Avec Odoo en français, le bouton s'appelle Retourner au stock ; le module propose en outre des traductions dans d'autres langues.


Un cas de bout en bout
Exemple Cas illustratif : l'entreprise et ses chiffres sont inventés pour expliquer le flux.
Velas del Sur est une boutique inventée qui vend via Shopify et gère son entrepôt dans Odoo avec le connecteur. Un client retourne des bougies et son remboursement, avec des produits à réapprovisionner, est déjà dans Odoo. La personne de l'entrepôt l'ouvre et clique sur Retourner au stock. Voici ce que fait le bouton, dans cet ordre :
- Si le retour en stock était échoué mais que son transfert de retour était déjà validé, il le considère comme bon : il le marque comme effectué et efface l'erreur. S'il était déjà effectué, il ouvre ce transfert et ne fait rien d'autre.
- Il lit les lignes de réapprovisionnement du remboursement et ignore celles dont la quantité est nulle ou négative. Pour chacune, il cherche le produit Odoo par l'identifiant de variante Shopify et, s'il ne le trouve pas, par le SKU, dans la société de l'instance. Les lignes qu'il ne résout pas sont omises et le retour continue avec les autres.
- Si aucune ligne n'est résolue, il s'arrête avec le premier message de la section des erreurs et ne crée rien.
- Si le remboursement a un
Bon de commande(Sale Order) avec des livraisons sortantes déjà validées, il part de celles-ci ; sinon, il fait un retour manuel. - Il crée le transfert, le confirme, le réserve, donne comme faite la quantité demandée et le valide directement.
- Il note le résultat et ouvre le transfert créé.
Quand la commande a déjà quitté l'entrepôt
Le champ Bon de commande se trouve dans la fiche, groupe Montants (Amounts). S'il y a des livraisons validées, le bouton calcule ce qu'il reste à retourner pour chaque produit : ce que Shopify a réapprovisionné pour cette commande dans tous ses remboursements, moins ce qui est déjà revenu dans des retours non annulés (y compris un retour fait depuis Odoo), et jamais plus que ce qui a été livré. Il répartit cette quantité entre les livraisons, de la plus ancienne à la plus récente, et crée un retour validé pour chacune ; d'après le code, si l'une échoue, toutes sont annulées.
Le transfert va de l'emplacement de destination de la livraison à son emplacement d'origine, hérite du contact et reste lié à la livraison, qui le compte comme retourné. Si le retour fait depuis Odoo était partiel, le bouton déduit ce qui a déjà été retourné et crée le transfert pour le reste. S'il ne reste rien à retourner parce qu'Odoo a déjà tout retourné, le bouton marque le retour en stock comme effectué, laisse sur la livraison la note Remboursement Shopify … : il ne reste rien à retourner de cette livraison, Odoo l'a déjà retourné. et ouvre cette livraison.
Quand il n'y a pas de livraison de départ
Si le remboursement n'a pas de bon de commande, ou aucune livraison sortante validée, le bouton crée une entrée manuelle depuis l'emplacement des clients jusqu'à l'emplacement de stock de l'entrepôt de l'instance Shopify. Si l'instance n'a pas d'entrepôt, il en cherche un de sa société. Il utilise un type d'opération d'entrée de cet entrepôt, et les mouvements portent la description Retour : … avec le nom du produit.
Ce qui change à la fin
Le retour en stock est marqué comme effectué et le champ Transfert de retour (Return Transfer, groupe Montants, masqué tant qu'il est vide) pointe vers le premier transfert créé. Tous portent comme origine Remboursement Shopify … (Shopify Refund …) avec le nom du remboursement. Sur chaque transfert, la note Stock retourné depuis le remboursement Shopify …. Transfert : … est publiée dans son chatter ; si le retour provient d'une livraison, la livraison reçoit Remboursement Shopify … : retourné dans …. Ensuite, le bouton ouvre le premier transfert.
Les messages avec lesquels il peut s'arrêter
| Message | Quand il apparaît | Que faire |
|---|---|---|
Aucun produit à réapprovisionner trouvé pour ce remboursement. Assurez-vous que les produits sont liés par SKU ou identifiant de variante Shopify. (No restockable products found for this refund. Make sure products are linked by SKU or Shopify variant ID.) | En cliquant sur Retourner au stock, lorsqu'aucune ligne de réapprovisionnement ne se résout en un produit Odoo. | Lier les produits par SKU ou par identifiant de variante Shopify, comme le demande le message lui-même, et cliquer de nouveau. |
Échec de la création du retour en stock : … (Failed to create stock return: …) | En cliquant sur Retourner au stock, lorsqu'un problème survient à la création ou à la validation du retour. Après les deux-points figure le motif. | Lire le motif, corriger la cause et cliquer de nouveau : le bouton est aussi visible avec le retour échoué. |
Le second message englobe les échecs de la création. Le code prévoit, par exemple, que le transfert ne parvienne pas à être validé parce que la validation ouvre un assistant (de livraisons partielles, par exemple) au lieu de se terminer. Dans ce cas, le retour compte comme échoué. En cas d'échec, le code marque le retour en stock comme échoué avant de lancer le message.
Ce qu'il faut retenir du cas
- Avant de cliquer, vérifie que les produits du remboursement sont liés par identifiant de variante Shopify ou par SKU : c'est la seule chose que le bouton utilise pour les trouver.
- Regarde le transfert qui s'ouvre à la fin : la note avec le nom du remboursement et du transfert s'y trouve.
- Avec plusieurs remboursements sur la même commande, ce qui a déjà été retourné est déduit ; la quantité ne dépasse pas ce qui a été livré.
- Un retour fait auparavant depuis Odoo compte : il est déduit de ce qu'il reste à retourner et, s'il a déjà tout retourné, le bouton ne crée pas de second transfert et le note sur la livraison.
Coût et aide de FlexigoTech
Le module (fiche sur Odoo Apps, page sur flexigotech.com) est publié pour Odoo 17, 18, 19 et 20. Il s'achète en paiement unique par version 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.
FlexigoTech met en place Odoo 17, 18, 19 et 20 et développe des connecteurs et des intégrations sur mesure. Si tu travailles avec le stock de Shopify dans Odoo, consulte aussi ce que fait le bouton « Récupérer le stock ».
À 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/shopify_refund_views.xml
- Code du module : flexigobe_shopify_seller_connector 20.0 (d7e627b4): models/shopify_refund.py
- apps.odoo.com/apps/modules/20.0/flexigobe_shopify_seller_connector
- flexigotech.com/precios.html
- flexigotech.com/en/services.html
