Przejdź do głównej zawartości

Zapisy stanu spoza modułu

Stan produktu w Shopware może zmienić coś spoza modułu: integracja z systemem magazynowym, import, skrypt, wtyczka innego dostawcy. Taka zmiana nie uwzględnia stanu półek; nadpisuje liczbę.

Stockly potrafi to zauważyć, zareagować i zapisać do przejrzenia.

Liczba publikowana klientom powinna wynikać z tego, co leży na półkach. Kiedy zostaje wpisana z zewnątrz, istnieją dwie wartości: jedna na półce, druga na karcie produktu. Różnica nie jest widoczna od razu; ujawnia się przy kompletacji, gdy magazynier nie znajduje towaru, albo przy sprzedaży ponad stan.

Stockly → Settings → Stock → zakładka General → sekcja External stock writes → pole Reaction to external product stock writes:

  • Off — bez wykrywania. Zapisy przez API są wchłaniane jako korekty stanu, a zapisy prosto do bazy po cichu nadpisuje najbliższe przeliczenie. Tak moduł zachowuje się do czasu włączenia wykrywania.
  • Accept and correct shelveswygrywa liczba zewnętrzna: różnica jest księgowana w magazynie (do puli bez lokalizacji albo zdejmowana z najpełniejszego miejsca), a incydent trafia do rejestru.
  • Reject and restore from shelveswygrywa magazyn: nic nie jest księgowane, pole zostaje przepisane z półek, a odrzucony zapis trafia do rejestru.
  • Zapis przez API — natychmiast.
  • Zapis prosto do bazy danych — przy najbliższym zdarzeniu stanu tego produktu, czyli dokładnie w chwili, w której moduł i tak by go nadpisał.

Mechanizm celuje w źle skonfigurowaną integrację, a nie w celowe manipulacje przy bazie.

Stockly → Warehouses → External writes (pozycja w szynie sekcji magazynowej).

Kolumny: Detected, Product, Expected, Found, Difference, Source, Reaction, User.

Expected to liczba wynikająca z półek, Found — ta, którą ktoś wpisał; Difference pokazuje różnicę.

Source rozróżnia:

WartośćZnaczenie
API writezapis przez interfejs programistyczny lub panel
Direct database writezapis prosto do bazy, z pominięciem sklepu

Reaction mówi, co moduł z tym zrobił:

WartośćZnaczenie
Accepted, shelves correctedprzyjęto liczbę zewnętrzną, skorygowano półki
Rejected, value restoredodrzucono zapis, przywrócono wartość z półek

Listę można filtrować po źródle, reakcji i dacie wykrycia.

Pusty rejestr znaczy, że przy włączonym wykrywaniu nikt nie pisał po stanie z zewnątrz.

Korekta zaksięgowana przy reakcji Accept zostaje też w historii ruchów, z powodem Stock corrected after an external change: rejestr zapisuje obcy zapis, a historia reakcję modułu. → Historia ruchów

Przełącznik Daily summary notification w tej samej sekcji podnosi raz dziennie jedno powiadomienie w panelu, jeśli od poprzedniego podsumowania pojawiły się nowe incydenty — nigdy po jednym na zdarzenie.

Wysyłką zajmuje się zadanie cykliczne. → Zadania cykliczne

Każdy wykryty zapis wystawia zdarzenie dostępne w Flow Builderze, z danymi: produkt, wartość oczekiwana, wartość znaleziona, różnica, źródło i zastosowana reakcja. Można na nim zbudować własne powiadomienie, wpis w zewnętrznym systemie albo alarm dla działu IT.

To dwa różne momenty tej samej sprawy:

  • Zapisy spoza modułu działają na bieżąco: łapią zmianę w chwili, gdy się dzieje, i od razu rozstrzygają, co z nią zrobić.
  • Kontrola spójności i kreator naprawy sprzątają po fakcie, kiedy niezgodność już powstała, na przykład przy wyłączonym wykrywaniu.

Jeżeli kreator naprawy raz po raz pokazuje tę samą grupę znalezisk o publikowanej liczbie wobec półki, należy włączyć wykrywanie i rozstrzygnąć problem u źródła, zamiast naprawiać go co tydzień.

Dla programistów: mechanizm wykrywania, ładunek zdarzenia i encję rejestru opisują obce zapisy.