Voorbeeld Fictief geval: het bedrijf en de cijfers zijn verzonnen om de werkwijze uit te leggen.
Wat er gebeurde
Casa Lumen verkoopt lampen op verschillende kanalen via ChannelEngine en beheert zijn magazijn in Odoo. Op een maandag komen via verschillende kanalen twee orders voor hetzelfde model binnen. Er was nog maar één stuk over. De tweede order moet worden geannuleerd, met de slechte beoordeling die dat op het kanaal oplevert.
De eerste verdenking is de gebruikelijke: "de connector heeft de voorraad niet verstuurd". De controle zegt iets anders.
Hoe het werd gevonden
De connector heeft een dagelijkse taak die de voorraad leest die ChannelEngine heeft en die vergelijkt met wat Odoo op dat moment zou versturen. Wat Odoo zou versturen, is de beschikbare hoeveelheid in het magazijn van het account min openstaande leveringen en orders die nog als offerte staan. Elke SKU met een verschil komt in Stock Divergences terecht, met drie cijfers: wat ChannelEngine heeft, wat Odoo heeft en het verschil.
Bij Casa Lumen stond de lamp in ChannelEngine met één stuk meer. De oorzaak was een offerte voor een winkelverkoop die niemand had bevestigd: Odoo boekte die al af, en ChannelEngine bood dat stuk nog steeds aan.

Wat ChannelEngine aan zijn kant doet
ChannelEngine heeft een voorraadreservering die volgens zijn eigen helpcentrum is ontworpen om het risico op overselling weg te nemen. De reservering duurt tot de order naar "In progress" gaat en komt gemiddeld binnen 1,5 uur terug naar de kanalen, afhankelijk van hoe snel orders worden bevestigd en voorraad wordt verstuurd. Dat werkt goed als je systeem regelmatig voorraad verstuurt. Komt de voorraad te laat, dan lost de reservering het niet op.
De instellingen die zijn veranderd
- Elke ochtend de lijst Stock Divergences nalopen en de aanbiedingen met een verschil met één klik opnieuw in de wachtrij zetten.
- De accountoptie aanzetten die orders zonder voldoende voorraad tegenhoudt, zodat een geïmporteerde order niet automatisch wordt bevestigd als het magazijn hem niet kan dekken.
- Controleren of het account de voorraadlocatie-ID van ChannelEngine gebruikt, want Casa Lumen heeft twee locaties.
- De standaardfrequenties aanhouden: orders komen elke 15 minuten binnen, prijs- en voorraadwijzigingen gaan elk uur in de wachtrij en worden elke 30 minuten verstuurd.

Nog een instelling die Casa Lumen naliep: waar de prijzen vandaan komen. Het account kan de prijzen van de aanbiedingen uit een Odoo-prijslijst halen in plaats van uit de verkoopprijs van het product. Zo pas je de prijs voor ChannelEngine op één plek aan.
Wat het team leerde
Het verschil zat niet in de connector, maar in een vergeten offerte. Zonder de dagelijkse vergelijking had het volgende verschil er weer uitgezien als een technische storing. Met de lijst voor ogen heeft elk verschil een SKU, cijfers en een controledatum, en is het in een paar minuten opgelost.

Casa Lumen veranderde niet van kanalen of leverancier. Alleen de gewoonte om elke ochtend de lijst te bekijken veranderde, en daarmee hielden de annuleringen wegens gebrek aan voorraad op.
Verkoop je hetzelfde product ook buiten ChannelEngine, dan is Odoo de enige plek waar elk stuk dat de deur uitgaat in één keer zichtbaar is. Daarom wordt de vergelijking vanuit Odoo gemaakt.
Lees verder
Gecontroleerd in de broncode van de connector (versie 20.0) en in de gelinkte bronnen
Bronnen
- Broncode van de module: flexigobe_channelengine_connector (6032191c): models/channelengine_stock_reconcile.py
- support.channelengine.com/hc/en-us/articles/34273588476317-ChannelEngine-stock-reservation
- Broncode van de module: flexigobe_channelengine_connector 20.0 (6032191c): data/channelengine_cron.xml
- Broncode van de module: flexigobe_channelengine_connector 20.0 (6032191c): views/channelengine_stock_divergence_views.xml
- Broncode van de module: flexigobe_channelengine_connector 20.0 (6032191c): views/menu.xml
- Broncode van de module: flexigobe_channelengine_connector 20.0 (6032191c): models/channelengine_account.py
- apps.odoo.com/apps/modules/20.0/flexigobe_channelengine_connector
