Przykład Przypadek poglądowy: firma i jej dane są zmyślone, żeby pokazać przebieg.
Co się stało
Casa Lumen sprzedaje lampy w kilku kanałach przez ChannelEngine i prowadzi magazyn w Odoo. Pewnego poniedziałku różnymi kanałami przychodzą dwa zamówienia na ten sam model. Została tylko jedna sztuka. Drugie zamówienie trzeba anulować, z negatywną oceną, jaką to oznacza w kanale.
Pierwsze podejrzenie jest zawsze to samo: „konektor nie wysłał stanów”. Sprawdzenie mówi coś innego.
Jak to wykryto
Konektor ma codzienne zadanie, które odczytuje stan, jaki ma ChannelEngine, i porównuje go z tym, co Odoo wysłałoby w tej chwili. To, co Odoo by wysłało, to ilość dostępna w magazynie konta minus otwarte dostawy i zamówienia, które wciąż są ofertami. Każde SKU z różnicą trafia do Stock Divergences z trzema liczbami: ile ma ChannelEngine, ile ma Odoo i jaka jest różnica.
W przypadku Casa Lumen lampa miała w ChannelEngine o jedną sztukę więcej. Przyczyną była oferta na sprzedaż w sklepie stacjonarnym, której nikt nie potwierdził: Odoo już ją odejmowało, a ChannelEngine nadal oferował tę sztukę.

Co ChannelEngine robi po swojej stronie
ChannelEngine ma rezerwację stanów, która według jego własnego centrum pomocy ma eliminować ryzyko sprzedaży ponad stan. Rezerwacja trwa, dopóki zamówienie nie przejdzie do „In progress”, i średnio w ciągu 1,5 godziny wraca do kanałów, zależnie od tego, jak szybko potwierdza się zamówienia i wysyła stany. Działa dobrze, jeśli Twój system regularnie wysyła stany. Jeśli stany docierają z opóźnieniem, rezerwacja tego nie naprawi.
Ustawienia, które się zmieniły
- Codziennie rano przeglądać listę Stock Divergences i jednym kliknięciem ponownie kolejkować oferty z różnicą.
- Włączyć opcję konta, która wstrzymuje zamówienia bez wystarczającego stanu, żeby zaimportowane zamówienie nie potwierdzało się automatycznie, jeśli magazyn go nie pokryje.
- Potwierdzić, że konto używa identyfikatora lokalizacji magazynowej ChannelEngine, bo Casa Lumen ma dwie lokalizacje.
- Zostawić domyślne częstotliwości: zamówienia wpadają co 15 minut, zmiany cen i stanów trafiają do kolejki co godzinę i są wysyłane co 30 minut.

Jeszcze jedno ustawienie, które Casa Lumen przejrzała: skąd biorą się ceny. Konto może pobierać ceny ofert z cennika Odoo zamiast z ceny sprzedaży produktu. Dzięki temu cenę dla ChannelEngine zmienia się w jednym miejscu.
Czego nauczył się zespół
Różnica nie leżała w konektorze, tylko w zapomnianej ofercie. Bez codziennego porównania kolejna rozbieżność znów wyglądałaby na awarię techniczną. Z listą przed oczami każda różnica ma SKU, liczby i datę sprawdzenia, i rozwiązuje się ją w kilka minut.

Casa Lumen nie zmieniła ani kanałów, ani dostawcy. Zmieniła tylko nawyk: codziennie rano sprawdza listę i dzięki temu przestała anulować zamówienia z powodu braku towaru.
Jeśli sprzedajesz ten sam produkt także poza ChannelEngine, Odoo jest jedynym miejscem, w którym widać naraz każdą wychodzącą sztukę. Dlatego porównanie robi się z poziomu Odoo.
Czytaj dalej
Sprawdzone w kodzie źródłowym konektora (wersja 20.0) i w podlinkowanych źródłach
Źródła
- Kod modułu: flexigobe_channelengine_connector (6032191c): models/channelengine_stock_reconcile.py
- support.channelengine.com/hc/en-us/articles/34273588476317-ChannelEngine-stock-reservation
- Kod modułu: flexigobe_channelengine_connector 20.0 (6032191c): data/channelengine_cron.xml
- Kod modułu: flexigobe_channelengine_connector 20.0 (6032191c): views/channelengine_stock_divergence_views.xml
- Kod modułu: flexigobe_channelengine_connector 20.0 (6032191c): views/menu.xml
- Kod modułu: flexigobe_channelengine_connector 20.0 (6032191c): models/channelengine_account.py
- apps.odoo.com/apps/modules/20.0/flexigobe_channelengine_connector
