Een voorbeeld om de knop stap voor stap te doorlopen
Voorbeeld Fictief geval: het bedrijf en de cijfers zijn verzonnen om de werkwijze uit te leggen.
Librería Faro is een fictieve winkel die via Shopify verkoopt en de bestellingen met deze module in Odoo beheert. Een klant vraagt om het bedrag van een volledige bestelling terug te krijgen en Ana van de administratie opent dat verkooporder in Odoo. Wat hieronder volgt is wat de module op elk punt doet, volgens de code van Odoo 20.
Eerst: verschijnt de knop?
De knop Terugbetalen in Shopify staat in de weergave van het verkooporder en wordt verborgen als het veld Shopify-orderref. leeg is. Met de standaardwaarden is dat veld leeg, dus bij een order zonder koppeling met Shopify zie je de knop niet. Dat veld en Shopify-instantie (Shopify Instance) staan op het order, in de groep Shopify; ze zijn alleen-lezen en worden verborgen zolang de referentie leeg is. Dezelfde weergavevoorwaarde geldt voor Odoo 17, 18, 19 en 20.

Tweede: de bevestiging
Als je op de knop klikt, vraagt Odoo Een volledige terugbetaling van deze bestelling in Shopify aanmaken? (Create a full refund of this order in Shopify?). Als je akkoord gaat, voert Odoo de actie van de knop uit.
Derde: wat hij controleert, in deze volgorde
- Rechten. Het eerste wat de actie doet, is controleren of je gebruiker Shopify Operator- of Manager-toegang heeft. Zo niet, dan stopt hij met
You need Shopify Operator (or Manager) access to push changes to Shopify.De opmerking in de code legt de reden uit: een gebruiker met gewone toegang tot Verkoop, zonder enige Shopify-rol, zou anders een echte aanroep naar Shopify kunnen starten met de inloggegevens van de winkel. Daarom zit de controle in de actie zelf en hangt ze er niet van af of de knop zichtbaar is. - Koppeling met Shopify. Voor elk order eist de actie dat de Shopify-referentie en de instantie zijn ingevuld. Ontbreekt er een, dan stopt hij met
Verkooporder … is niet gekoppeld aan een Shopify-bestelling.(Sale order … is not linked to a Shopify order.), met de naam van het order in plaats van de beletselteken. Omdat de knop alleen zichtbaar is met een ingevulde referentie, kijk je in de groepShopifyofShopify-instantieeen waarde heeft als je vanaf het order klikt en deze melding krijgt.
Als een melding de actie stopt, eindigt het proces daar en wordt de terugbetaling van dat order niet aangevraagd.
Vierde: wat hij bij Shopify aanvraagt
Als het order deze controles doorstaat, krijgt zijn Shopify-instantie de opdracht om de terugbetaling aan te maken. Volgens de code:
- Regels. Alle geïmporteerde regels worden terugbetaald: die geen sectie- of notitieregel zijn, geen verzendregel zijn en een Shopify-regelidentificatie hebben. De hoeveelheid is die van de regel, afgerond op een geheel getal.
- Verzending. Verzendregels blijven erbuiten en het verzoek vraagt niet om de verzendkosten terug te betalen.
- Notitie. Tenzij een andere wordt opgegeven, is de notitie die naar Shopify gaat
Refunded from Odoo. - Melding aan de klant en winkeltegoed. Deze komen uit de opties van de instantie: de klant op de hoogte brengen van de terugbetaling en terugbetalen als winkeltegoed in plaats van via de oorspronkelijke betaalmethode.
- Valuta. De module vraagt Shopify om de voorgestelde terugbetaling en neemt, als Shopify een valuta teruggeeft, die op in het verzoek.
- Herhalingen. Het verzoek bevat een sleutel die precies deze terugbetaling beschrijft (order, regels, hoeveelheden, verzending en methode). Als het wordt herhaald, door een verloren antwoord of een ongeduldige tweede klik, bevat het dezelfde sleutel en betaalt Shopify maar één keer terug, volgens de opmerking in de code.
Als Ana de rol niet heeft
Als Ana de rechtenmelding ziet, is de terugbetaling niet aangevraagd. Ze heeft iemand nodig die Odoo beheert om haar Shopify Operator- (of Manager-)toegang te geven, zoals de melding zelf zegt, en daarna opnieuw op de knop te klikken.

Wat je van dit voorbeeld leert
- De knop is niet voor elk order: hij hangt af van
Shopify-orderref., en die referentie vul je niet met de hand in omdat het veld alleen-lezen is. - Je rechten en de koppeling van het order (referentie en instantie) worden gecontroleerd voordat er met Shopify wordt gesproken, en als een van beide faalt, stopt de actie.
- De terugbetaling die hij aanvraagt is volledig voor de geïmporteerde regels, zonder de verzendregels of verzendkosten.
- De melding aan de klant en de terugbetaling als winkeltegoed kies je niet bij het klikken: ze komen uit de opties van de instantie.
- Een identieke herhaling dupliceert de terugbetaling in Shopify niet, dankzij de sleutel in het verzoek.
Voordat je het in jouw Odoo probeert
De knop zit in de branches van Odoo 17, 18, 19 en 20, de gepubliceerde versies van de module in Odoo Apps; de code die ik heb beschreven is die van Odoo 20. Met Odoo in het Spaans heet hij Reembolsar en Shopify; in andere talen verandert het label, zoals het schema laat zien.

De module is een eenmalige aankoop per Odoo-versie en vereist het abonnement op FlexigoTech Cloud, plan Connector: € 49 per maand of € 490 per jaar, excl. btw. De verbinding loopt via FlexigoTech Cloud, dat de inloggegevens versleuteld bewaart, de synchronisatie bewaakt en per e-mail waarschuwt als die faalt. Alles staat op de Odoo Apps-pagina en op de modulepagina.
Als je vraag over een andere kant van de bestellingen gaat, kijk dan naar de melding over Shopify-gegevens om het verkooporder aan te maken. En als je Odoo met Shopify implementeert en rechten, instanties of een terugbetalingsflow op maat wilt laten nakijken, implementeert FlexigoTech Odoo 17, 18, 19 en 20 en ontwikkelt het connectoren en integraties op maat.
Snelle vragen
Waarom zie ik de knop niet bij een order?
Omdat de knop wordt verborgen als Shopify-orderref. leeg is, en met de standaardwaarden is dat zo.
Vraagt hij om bevestiging?
Ja: Een volledige terugbetaling van deze bestelling in Shopify aanmaken?.
Lees verder
Gecontroleerd in de broncode van de connector (versie 20.0) en in de gelinkte bronnen
Bronnen
- Broncode van de module: flexigobe_shopify_seller_connector 20.0 (d7e627b4): views/sale_order_views.xml
- Broncode van de 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
