Przejdź do treści

Przy 50 tysiącach SKU liczy się koszt jednego zapisu

W Magento atrybut produktu nie jest kolumną w tabeli, tylko osobnym rekordem. Aktualizacja trzydziestu pól dla dużego katalogu to setki tysięcy operacji. Integracja z ERP musi więc pisać rzadziej, mądrzej i w paczkach — a ceny B2B przekazywać w formie, którą Magento potrafi policzyć w koszyku.

erp_sync.queuebulk
DIFFzmienione rekordy1 842
BULKpaczka 500 SKUkolejka
TIERceny per grupa klientówzapis
INDEXreindeks częściowyschedule
ORDEReksport do ERP + nr dokumentupowrót
Nie „wyślij wszystko co noc", tylko: policz różnicę, wyślij paczkami, zaindeksuj to, co trzeba.

Co w Magento jest tanie, a co kosztuje godziny

Ta tabela decyduje o harmonogramie integracji. Operacje z prawej kolumny planujemy w oknie nocnym albo dzielimy na etapy.

Koszt typowych operacji integracyjnych w Magento
OperacjaMechanizmKoszt przy dużym kataloguJak to prowadzimy
Aktualizacja stanusource itemsniskina bieżąco, tylko różnice
Aktualizacja ceny bazowejatrybut priceniskina bieżąco, tylko różnice
Ceny per grupa klientówtier priceśrednipaczki, poza szczytem
Masowa zmiana atrybutówEAV, wiele tabelwysokikolejka, okno nocne, etapami
Zmiana struktury kategoriireindeks kataloguwysokistaging, potem wdrożenie planowane
Eksport zamówieniaorder APIniskina zdarzenie, z idempotencją

Cena końcowa czy baza plus rabat — to trzeba ustalić raz

Od tej decyzji zależy, co partner zobaczy po zalogowaniu i czy koszyk policzy to samo, co faktura z ERP. Obie drogi są poprawne, ale nie można ich mieszać.

  • Cena końcowa z ERP — sklep tylko wyświetla; łatwa zgodność z fakturą, trudniejsze promocje.
  • Baza plus rabat — sklep liczy; elastyczne promocje, wymaga identycznej kolejności reguł po obu stronach.
  • Grupy klientów w Magento muszą odpowiadać grupom cenowym w ERP — jeden do jednego.
  • Kontrahent bez przypisanej grupy nigdy nie widzi ceny detalicznej „przypadkiem" — dostaje blokadę.
  • Zmiana cennika w ERP ma ślad w logu: kiedy weszła i ilu partnerów objęła.

Co wymieniamy i w którą stronę

DaneKierunekTryb
kartotekaERP → Magentobatch
stanyERP → Magentocyklicznie
cenniki B2BERP → Magentobatch
kontrahenciERP → Magentoprzy zmianie
zamówieniaMagento → ERPna zdarzenie
dokumentyERP → Magentona zdarzenie

Objawy, które w tym układzie wracają najczęściej

01

Nocny import nie kończy się do rana

Brak porównania różnic — proces wysyła cały katalog zamiast zmienionych rekordów. Rozwiązaniem jest diff i kolejka, nie mocniejszy serwer.

02

Partner widzi cenę detaliczną

Kontrahent nie ma przypisanej grupy klientów albo cennik nie dojechał. Bez reguły blokującej sklep pokazuje cenę domyślną.

03

Kolejka rośnie i nie schodzi

Consumer nie działa albo przetwarza wolniej, niż przybywa zadań. Bez monitoringu kolejki objaw widać dopiero po dniach opóźnienia.

04

Rozjazd między koszykiem a fakturą

Sklep liczy rabat, ERP też. Kolejność reguł jest inna, więc kwoty różnią się o grosze — i księgowość zgłasza to co tydzień.

05

Zamówienie w ERP dwa razy

Ponowienie po timeoucie bez klucza idempotencji tworzy drugi dokument. Zawsze zapisujemy, że pozycja została już przekazana.

06

Nowe pole z ERP nie ma gdzie trafić

Brak atrybutu w Magento zatrzymuje cały import zamiast pominąć jedno pole. Walidacja powinna zgłosić wyjątek, nie przerwać przelot.

Magento i ERP — pytania

Bo atrybut produktu nie jest kolumną w tabeli, tylko rekordem w osobnym zbiorze. Zapis kilkudziesięciu atrybutów dla dziesiątek tysięcy produktów po jednym rekordzie jest kosztowny. Dlatego przy dużych katalogach używamy operacji masowych i aktualizujemy tylko to, co faktycznie się zmieniło.
Najczęściej jako ceny per grupa klientów albo ceny specjalne per kontrahent. Ważne jest ustalenie, czy ERP wysyła cenę końcową, czy bazę plus rabat, bo to zmienia sposób liczenia w koszyku i to, co zobaczy partner po zalogowaniu.
Dużą aktualizację dzielimy na paczki, przetwarzamy przez kolejki i uruchamiamy poza szczytem. Indeksatory ustawiamy na harmonogram, a nie na zapis, żeby jeden import nie wywoływał pełnej reindeksacji katalogu w środku dnia.
Zamówienie eksportujemy po zmianie statusu na uzgodniony, z pełnym kompletem: pozycje, SKU, ceny, rabaty, VAT, adresy i forma płatności. Każdy eksport dostaje klucz idempotencji, a numer dokumentu z ERP wraca do Magento, żeby dało się połączyć dokument ze sprzedażą.
Z tego, że ERP zna stan magazynowy, a Magento operuje na salable quantity pomniejszonej o rezerwacje z niezrealizowanych zamówień. Jeżeli ERP nadpisze stan bez uwzględnienia rezerwacji, sklep pokaże towar, który jest już sprzedany.

Podaj liczbę SKU, liczbę grup klientów i nazwę ERP

Trzy liczby wystarczą, żeby ocenić, czy wystarczy nocny batch, czy potrzebna jest kolejka i warstwa pośrednia.