Przejdź do treści

Jak synchronizować stany między ERP, sklepem i BaseLinkerem?

Stan magazynowy nie jest jedną liczbą. Trzeba odróżnić stan fizyczny, dostępny do sprzedaży, zarezerwowany, oczekiwany i bufor bezpieczeństwa. Gdy ERP, sklep i BaseLinker zapisują to samo pole bez ustalonego właściciela, systemy zaczynają nadpisywać się wzajemnie i sprzedawać produkty, których faktycznie nie ma.

Overselling najczęściej powstaje między zamówieniem a aktualizacją ERP

Jeżeli dwa kanały widzą ostatnią sztukę, oba mogą ją sprzedać. Pełny eksport co godzinę nie rozwiązuje tego problemu — potrzebna jest rezerwacja albo bufor w krótszym oknie czasowym.

Objaw

Sklep sprzedaje produkt niedostępny w magazynie, a po korekcie w ERP stan wraca do starej wartości.

Pierwszy test

Sprawdź, czy wiadomości mają znacznik czasu lub wersję rekordu i czy proces odrzuca aktualizację starszą od już zapisanej.

01

Najpierw zdefiniuj rodzaje stanów

Jeżeli integracja przesyła tylko liczbę stock, trzeba wiedzieć, którą z wielu wartości reprezentuje. Najczęściej do kanałów sprzedaży powinien trafiać stan dostępny po odjęciu rezerwacji i bufora.

  • stan fizyczny
  • rezerwacje do zamówień
  • stan dostępny
  • towar w drodze
  • stan marketplace
  • bufor bezpieczeństwa
  • stan wirtualny lub dropshippingowy
02

Jedno źródło prawdy dla pola stanu

Dla większości firm źródłem prawdy jest ERP albo WMS. Sklep i BaseLinker powinny publikować wynik, a nie samodzielnie ustalać stan bazowy. Wyjątki, na przykład magazyn dropshippingowy albo osobna pula marketplace, trzeba opisać osobnymi regułami.

Szerszą matrycę odpowiedzialności — dla ceny, opisu i zamówienia, nie tylko stanu — opisuje poradnik o źródle prawdy między sklepem, ERP i BaseLinkerem.

Macierz własności pól stanu
PoleŹródłoOdbiorcy
stan fizycznyERP / WMSwarstwa integracji
rezerwacjasystem przyjmujący zamówienie + ERPagregator
stan dostępnyobliczenie integracji albo ERPsklep, BaseLinker
buforkonfiguracja kanałusklep / marketplace
03

Rezerwacja musi powstać przed kolejną sprzedażą

Największe ryzyko występuje między złożeniem zamówienia a aktualizacją ERP. Nie wystarczy uruchamiać pełnego eksportu co godzinę, jeżeli produkty sprzedają się w kilku kanałach jednocześnie.

  • natychmiastowa rezerwacja w centralnym systemie
  • lokalna rezerwacja w brokerze integracji
  • bufor bezpieczeństwa
  • szybsza synchronizacja dla produktów niskostanowych
  • blokada sprzedaży przy niepewnym stanie
04

Aktualizacja powinna być zdarzeniowa albo przyrostowa

Pełny eksport całego katalogu co kilka minut jest kosztowny i utrudnia diagnozę. Proces przyrostowy aktualizuje tylko SKU, które się zmieniły. Pełne porównanie raz na dobę albo tydzień wykrywa rozjazdy, które ominęły kolejkę.

  • zdarzenie po zmianie stanu
  • kolejka zmian
  • okresowy reconciliation pełnego katalogu
  • osobna kolejka błędów
  • checkpoint ostatniego poprawnego przetworzenia
05

Konflikty i starsze dane

Każda wiadomość powinna mieć znacznik czasu albo wersję rekordu. Jeżeli opóźniona aktualizacja ze stanem 8 przyjdzie po nowszej aktualizacji ze stanem 3, nie może przywrócić starej wartości.

  • odrzucaj starszą wersję
  • zapisuj źródło i czas zmiany
  • nie używaj czasu serwera odbiorcy jako jedynego kryterium
  • zachowuj historię ostatnich operacji
  • przy konflikcie zatrzymaj rekord albo wybierz zdefiniowanego właściciela
06

SKU i mapowanie muszą być stabilne

Aktualizacja stanu po złym SKU jest gorsza niż jej brak. Przed synchronizacją stanu system powinien korzystać z utrwalonej mapy identyfikatorów między ERP, sklepem i BaseLinkerem.

Rekord bez jednoznacznego dopasowania powinien trafić do kolejki błędów. Nie wolno automatycznie przypisywać stanu po podobnej nazwie produktu — patrz hierarchia matchingu SKU i EAN.

07

Ujemny stan i brak danych to różne sytuacje

Wartości 0, -2, null i brak rekordu nie mogą automatycznie znaczyć tego samego. Dla każdej sytuacji ustal decyzję: publikuj zero, zachowaj poprzedni stan, zablokuj sprzedaż albo zgłoś alarm.

0

Brak dostępnej sztuki. Wartość poprawna i jednoznaczna.

wartość ujemna

Błąd, backorder albo specyficzny model ERP. Wymaga reguły, nie ignorowania.

null

Brak obliczenia. Nie to samo co zero.

brak rekordu

Produkt nie został zwrócony przez źródło. Może oznaczać awarię, nie wyczerpanie stanu.

08

Monitoring musi mierzyć opóźnienie i kompletność

Alert powinien reagować również na ciszę. Jeżeli zwykle pojawia się tysiąc zmian dziennie, brak jakiejkolwiek wiadomości przez kilka godzin może oznaczać awarię źródła.

  • czas od zmiany w ERP do publikacji w sklepie
  • liczba zmian w kolejce
  • najstarsza nieprzetworzona wiadomość
  • liczba błędów mapowania
  • liczba retry
  • liczba SKU z rozjazdem
  • data ostatniego pełnego uzgodnienia
09

Testy przed uruchomieniem

Scenariusze poniżej wychodzą poza „czy stan się zaktualizował”. Każdy z nich sprawdza inną regułę procesu.

  • ostatnia sztuka sprzedana równolegle w dwóch kanałach
  • anulowanie zamówienia i zwolnienie rezerwacji
  • zwrot
  • korekta ręczna w ERP
  • opóźniona wiadomość
  • duplikat zdarzenia
  • brak mapy SKU
  • ujemny stan
  • awaria jednego kanału
  • ponowne uruchomienie kolejki

FAQ: synchronizacja stanów

Tylko jeśli tak zaprojektowano proces. W wielu firmach źródłem prawdy jest ERP albo WMS, a BaseLinker dystrybuuje stan do kanałów sprzedaży. Kluczowe jest to, żeby właściciel pola był ustalony i tylko jeden.
Zależy od rotacji i liczby kanałów. Produkty niskostanowe wymagają szybkiej aktualizacji albo rezerwacji zdarzeniowej, a pełne uzgodnienie katalogu może działać okresowo, na przykład raz na dobę.
Ogranicza ryzyko, ale nie zastępuje poprawnych rezerwacji, kolejek i monitoringu. Przy sprzedaży w kilku kanałach jednocześnie sam bufor nie wystarczy dla produktów z jedną sztuką na stanie.
Zdefiniować tryb awaryjny: zachowanie poprzedniego stanu przez określony czas, blokadę sprzedaży albo publikację zera dla wybranych grup. Decyzja musi być podjęta zawczasu, nie w trakcie awarii.