Wanneer de knop verschijnt
De knop Terug naar voorraad staat in het scherm Shopify-terugbetalingen (Shopify Refunds), dat je opent via Shopify › Bewerkingen › Terugbetalingen en retouren (Shopify › Operations › Refunds & Returns). Om de onderdelen Shopify en Bewerkingen van het menu te zien heb je de machtiging Lezer (Viewer) nodig.
De voorwaarde is hetzelfde in Odoo 17, 18, 19 en 20: de knop is verborgen, tenzij het veld Voorraadretour (Stock Return) in afwachting, in controle of mislukt is. Met de standaardwaarden van dat veld zie je hem niet. Hij hangt niet af van het veld Status (State) van de terugbetaling, dat een ander veld is en de waarden Concept, Creditnota aangemaakt, Genegeerd en Mislukt aanneemt.

Met Odoo in het Nederlands heet de knop Terug naar voorraad; de module bevat daarnaast vertalingen in andere talen.


Een voorbeeld van begin tot eind
Voorbeeld Fictief geval: het bedrijf en de cijfers zijn verzonnen om de werkwijze uit te leggen.
Velas del Sur is een verzonnen winkel die via Shopify verkoopt en het magazijn in Odoo beheert met de connector. Een klant retourneert een aantal kaarsen en zijn terugbetaling, met producten die terug de voorraad in moeten, staat al in Odoo. De magazijnmedewerker opent haar en klikt op Terug naar voorraad. Dit doet de knop, in deze volgorde:
- Als de voorraadretour mislukt was maar de bijbehorende retourtransfer al gevalideerd is, beschouwt hij die als geslaagd: hij markeert haar als afgehandeld en wist de fout. Als ze al afgehandeld was, opent hij die transfer en doet verder niets.
- Hij leest de aanvullingsregels van de terugbetaling en slaat die met aantal nul of negatief over. Voor elke regel zoekt hij het Odoo-product via het Shopify-variant-ID en, als hij dat niet vindt, via de SKU, binnen het bedrijf van de instantie. Regels die hij niet kan koppelen worden overgeslagen en de retour gaat door met de rest.
- Als er geen enkele regel gekoppeld is, stopt hij met de eerste melding uit het gedeelte over fouten en maakt hij niets aan.
- Als de terugbetaling een
Verkooporder(Sale Order) heeft met al gevalideerde uitgaande leveringen, vertrekt hij vanuit die leveringen; zo niet, dan maakt hij een handmatige retour. - Hij maakt de transfer aan, bevestigt haar, reserveert, zet het gevraagde aantal als verwerkt en valideert haar meteen.
- Hij noteert het resultaat en opent de aangemaakte transfer.
Als de bestelling het magazijn al verlaten heeft
Het veld Verkooporder staat in het formulier, in de groep Bedragen (Amounts). Als er gevalideerde leveringen zijn, berekent de knop per product wat er nog te retourneren is: wat Shopify voor die bestelling in al zijn terugbetalingen heeft aangevuld, min wat al terug is gekomen in niet-geannuleerde retouren (ook een retour die vanuit Odoo is gedaan), en nooit meer dan er geleverd is. Dat aantal verdeelt hij over de leveringen, van de oudste naar de nieuwste, en hij maakt per levering een gevalideerde retour aan; volgens de code worden ze allemaal ongedaan gemaakt als er één mislukt.
De transfer gaat van de bestemmingslocatie van de levering naar de herkomstlocatie, neemt het contact over en wordt gekoppeld aan de levering, die haar als geretourneerd telt. Als de retour vanuit Odoo gedeeltelijk was, trekt de knop het al geretourneerde af en maakt hij de transfer aan voor de rest. Als er niets meer te retourneren is omdat Odoo al alles heeft geretourneerd, markeert de knop de voorraadretour als afgehandeld, laat hij op de levering de notitie Shopify-terugbetaling …: er is niets meer te retourneren uit deze levering, Odoo heeft het al geretourneerd. achter en opent hij die levering.
Als er geen levering is om van uit te gaan
Als de terugbetaling geen verkooporder heeft, of geen enkele gevalideerde uitgaande levering, maakt de knop een handmatige ontvangst aan van de klantenlocatie naar de voorraadlocatie van het magazijn van de Shopify-instantie. Als de instantie geen magazijn heeft, zoekt hij er een van haar bedrijf. Hij gebruikt een ontvangsttype van dat magazijn, en de voorraadboekingen krijgen de omschrijving Retour: … met de naam van het product.
Wat er verandert na afloop
De voorraadretour wordt als afgehandeld gemarkeerd en het veld Retourtransfer (Return Transfer, groep Bedragen, verborgen zolang het leeg is) verwijst naar de eerste aangemaakte transfer. Ze hebben allemaal als bron Shopify-terugbetaling … (Shopify Refund …) met de naam van de terugbetaling. In de chatter van elke transfer wordt de notitie Voorraad geretourneerd van Shopify-terugbetaling …. Transfer: … geplaatst; als de retour uit een levering komt, krijgt de levering Shopify-terugbetaling …: geretourneerd in …. Daarna opent de knop de eerste transfer.
De meldingen waarmee hij kan stoppen
| Melding | Wanneer | Wat te doen |
|---|---|---|
Geen aanvulbare producten gevonden voor deze terugbetaling. Zorg ervoor dat producten zijn gekoppeld via SKU of Shopify-variant-ID. (No restockable products found for this refund. Make sure products are linked by SKU or Shopify variant ID.) | Bij het klikken op Terug naar voorraad, als geen enkele aanvulregel naar een Odoo-product wordt herleid. | De producten koppelen via SKU of via Shopify-variant-ID, zoals de melding zelf vraagt, en opnieuw klikken. |
Aanmaken voorraadretour mislukt: … (Failed to create stock return: …) | Bij het klikken op Terug naar voorraad, als er iets misgaat bij het aanmaken of valideren van de retour. Na de dubbele punt staat de reden. | De reden lezen, de oorzaak verhelpen en opnieuw klikken: de knop is ook zichtbaar bij een mislukte retour. |
De tweede melding omhult de fouten bij het aanmaken. De code houdt er bijvoorbeeld rekening mee dat de transfer niet gevalideerd raakt omdat de validatie een wizard opent (bijvoorbeeld voor deelleveringen) in plaats van af te ronden. In dat geval geldt de retour als mislukt. Bij een fout markeert de code de voorraadretour als mislukt voordat de melding wordt getoond.
Wat we van het voorbeeld leren
- Controleer vóór het klikken dat de producten van de terugbetaling gekoppeld zijn via Shopify-variant-ID of via SKU: dat is het enige wat de knop gebruikt om ze te vinden.
- Bekijk de transfer die aan het eind opent: daar staat de notitie met de naam van de terugbetaling en van de transfer.
- Bij meerdere terugbetalingen op dezelfde bestelling wordt het al geretourneerde afgetrokken; het aantal overschrijdt nooit wat er geleverd is.
- Een eerdere retour vanuit Odoo telt mee: ze wordt afgetrokken van wat er nog te retourneren is en, als alles al geretourneerd is, maakt de knop geen tweede transfer aan en noteert hij dat op de levering.
Kosten en hulp van FlexigoTech
De module (vermelding in Odoo Apps, pagina op flexigotech.com) is gepubliceerd voor Odoo 17, 18, 19 en 20. Het is een eenmalige betaling per 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 opslaat, de synchronisatie bewaakt en per e-mail waarschuwt als het misgaat.
FlexigoTech implementeert Odoo 17, 18, 19 en 20 en ontwikkelt connectoren en maatwerkintegraties. Als je met de Shopify-voorraad in Odoo werkt, bekijk dan ook wat de knop «Voorraad ophalen» doet.
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/shopify_refund_views.xml
- Broncode van de 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
