WhatsApp

Integracja WooCommerce z Subiektem GT: pięć rzeczy, które wyjdą dopiero w praktyce

Sklep motoryzacyjny, 1 800 produktów, 40 zamówień dziennie i faktury wystawiane ręcznie. Integracja miała zająć osiem dni, zajęła jedenaście. Opisuję pięć niespodzianek: grosz, wyścig o ostatnią sztukę, statusy, adres zmieniony po zamówieniu i emoji w uwagach.

Okładka: WooCommerce i Subiekt, 5 rzeczy, które wyjdą dopiero w praktyce

Sklep internetowy z olejami, filtrami i częściami eksploatacyjnymi: 1 800 produktów na WooCommerce, około 40 zamówień dziennie, magazyn i faktury w Subiekcie GT. Przed integracją działało to tak: pani Ewa rano drukowała zamówienia ze sklepu i wystawiała do nich faktury w Subiekcie, jedna po drugiej. Czterdzieści faktur to około dwóch godzin. Stany magazynowe w sklepie aktualizowała raz dziennie z eksportu, więc przez resztę dnia sklep sprzedawał czasem to, czego już nie było.

Plan był na osiem dni. Wyszło jedenaście, i te trzy dni to temat tego wpisu, bo każda integracja sklepu z ERP, którą robiłem, miała własne wersje tych samych pięciu problemów.

CO PŁYNIE W KTÓRĄ STRONĘWooCommercesklep, koszyk, płatnościPrzelewy24, kurierzySubiekt GTmagazyn, faktury, cennikprzez dodatek SferaIntegratorn8n + skrypt Sfera, co 2 minutyzamówienia + płatnośćstany magazynoweceny, nowe produktystatusy, numery fakturCztery strumienie, każdy ze swoim harmonogramem: zamówienia i stany co 2 minuty, ceny raz na godzinę,faktury od razu po zmianie statusu.
Cztery strumienie danych, każdy w swoją stronę i ze swoim harmonogramem.

Jak to jest spięte

Subiekt GT sam z siebie nie ma API; potrzebny jest dodatek Sfera od InsERT-u, który pozwala skryptowi rozmawiać z programem. Po stronie sklepu jest zwykłe REST API WooCommerce. Pomiędzy stoi n8n z kilkoma skryptami na serwerze klienta. Co dwie minuty pobiera nowe zamówienia do Subiekta i wypycha stany magazynowe do sklepu, raz na godzinę synchronizuje ceny i nowe produkty, a przy zmianie statusu wystawia fakturę i odsyła jej numer do zamówienia w sklepie.

Brzmi prosto. Przez pierwsze cztery dni było prosto.

Niespodzianka 1: grosz

Dzień piąty, pierwsze faktury z automatu. Dzwoni księgowa: faktura na 123,46 zł, przelew na 123,45 zł, w Subiekcie zamówienie „niezapłacone”. Różnica jednego grosza w 7 % zamówień.

NIESPODZIANKA NR 1: GROSZWooCommerce (klient zapłacił)3 × filtr oleju 41,15 brutto123,45VAT liczony od sumy23,08Razem brutto123,45 złtak policzył koszyk, tyle poszło przelewemSubiekt (faktura z netto)3 × 33,46 netto100,38VAT 23 % od pozycji23,09Razem brutto123,46 zło grosz więcej niż wpłata: faktura „niezapłacona”Rozwiązanie: integrator przekazuje ceny brutto pozycja po pozycji i wymusza w Subiekcie liczenie „od brutto”, tak jak liczy sklep.
Ten sam koszyk policzony przez sklep i przez Subiekta. Grosz bierze się z zaokrągleń VAT.

WooCommerce liczy ceny od brutto i zaokrągla sumę. Subiekt domyślnie liczy od netto, pozycja po pozycji, i zaokrągla każdą z osobna. Przy trzech sztukach po 41,15 wychodzi inaczej. Rozwiązaniem jest przekazywanie do Subiekta cen brutto z ustawieniem „licz od brutto” na dokumencie, dokładnie tak, jak liczy sklep. Jedno pole w Sferze i pół dnia szukania, dlaczego.

Niespodzianka 2: ostatnia sztuka sprzedana dwa razy

Dzień szósty. Dwóch klientów kupiło ten sam filtr w odstępie dwóch sekund, a na stanie była jedna sztuka. Sklep przyjął oba zamówienia, bo ostatnia synchronizacja stanów była dwie minuty wcześniej. Oba zapłacone.

NIESPODZIANKA NR 2: OSTATNIA SZTUKA SPRZEDANA DWA RAZY10:00:01Zamówienie #5121: ostatni filtr PF-20 na staniesklep pokazuje „1 szt.”, przyjmuje10:00:03Zamówienie #5122: ten sam filtrsklep dalej pokazuje „1 szt.”, bo synchronizacja była o 9:5810:02:00Synchronizacja stanów: Subiekt → sklepstan 1 − 2 = −1. Dwóch klientów zapłaciło, towar jest jeden.potemRezerwacja w Subiekcie od razu po zamówieniuplus stany dla 60 „gorących” produktów co 30 s zamiast co 2 min
Dwie sekundy różnicy, dwa zapłacone zamówienia, jeden filtr.

Pełnej gwarancji nie da się tu dostać bez przebudowy sklepu, ale da się zejść z ryzykiem prawie do zera. Zamówienie od razu po złożeniu tworzy rezerwację w Subiekcie, a dla 60 produktów, które sprzedają się najczęściej, stany idą do sklepu co 30 sekund zamiast co dwie minuty. Od tej zmiany przez dwa miesiące nie było podwójnej sprzedaży. Była jedna sytuacja, w której towar okazał się uszkodzony na półce, ale tego żadna integracja nie wyłapie.

Niespodzianka 3: statusy

Sklep ma pięć statusów zamówienia, Subiekt ma dokumenty: ZK, FS, WZ, korekty. Mapowanie ustaliliśmy czwartego dnia i wydawało się oczywiste.

MAPA STATUSÓW (USTALONA W DNIU 4, ZMIENIONA W DNIU 9)Oczekujące na płatnośćZK (zamówienie od klienta)PrzetwarzaneZK + rezerwacja towaruZrealizowaneFS (faktura) + WZ, numer wraca do sklepuZwróconekorekta FS, towar wraca na stanAnulowaneZK anulowane, rezerwacja zwolnionaZmiana z dnia 9: klient, który zmienił adres po złożeniu zamówienia, dostawał WZ ze starym adresem.Teraz adres idzie do Subiekta dopiero przy statusie „Zrealizowane”.
Mapa statusów. Oczywista do momentu, w którym klient zmienia adres.

Dziewiątego dnia klient złożył zamówienie, a po godzinie zmienił adres dostawy przez konto w sklepie. Zamówienie było już w Subiekcie z pierwszym adresem, więc WZ i etykieta kuriera poszły na stary. Paczka wróciła. Teraz adres idzie do Subiekta dopiero przy zmianie statusu na „Zrealizowane”, czyli wtedy, kiedy ktoś faktycznie pakuje, a integrator sprawdza, czy adres w sklepie nie zmienił się od utworzenia ZK.

Niespodzianka 4: emoji w uwagach

Pole „uwagi do zamówienia”. Klient wpisał „proszę zostawić u sąsiada 🙏”. Sfera przyjęła, Subiekt zapisał, a przy drukowaniu WZ wyskoczył błąd, bo ta wersja nie radzi sobie z takimi znakami. Trzy zamówienia stanęły w kolejce, zanim ktoś zauważył. Teraz integrator czyści uwagi ze znaków spoza polskiego alfabetu, a oryginał zostaje w sklepie.

Drobiazg, ale dokładnie ten typ rzeczy, którego nie ma w żadnej dokumentacji i który wychodzi dopiero na prawdziwych zamówieniach.

Niespodzianka 5: zwroty

Zwrot w sklepie to status „Zwrócone”, a w Subiekcie to korekta faktury plus przyjęcie towaru na magazyn. Przez pierwsze dwa tygodnie korekty robiła ręcznie pani Ewa, bo chcieliśmy najpierw zobaczyć, jak wyglądają prawdziwe zwroty: częściowe, z wymianą, „zwrot, ale klient chce inny olej”. Automat obsługuje teraz pełne zwroty. Częściowe nadal dostają szkic korekty do kliknięcia i tak zostało celowo, bo jest ich sześć miesięcznie i każdy jest inny.

Po dwóch miesiącach

PO DWÓCH MIESIĄCACH0faktur wystawianych ręczniebyło: około 40 dziennie30 sopóźnienie stanówbyło: raz dziennie rano11 dniwdrożenieplan: 85niespodzianek po drodzewszystkie w tym wpisie
Liczby po dwóch miesiącach. Jedenaście dni zamiast ośmiu.

Efekt: Zero faktur wystawianych ręcznie (było około 40 dziennie). Stany w sklepie z opóźnieniem 30 sekund dla gorących produktów i dwóch minut dla reszty. Pani Ewa robi teraz opisy produktów, których w sklepie brakowało od dwóch lat. Sprzedaży nie policzę uczciwie, bo w tym samym czasie sklep ruszył z reklamami, ale zwroty z powodu „nie było na stanie” spadły z kilkunastu miesięcznie do zera.

Zanim zamówisz integrację

Sprawdź, czy masz Sferę (albo Subiekta nexo, który ma API w standardzie). Zobacz, jak sklep liczy VAT, i ustaw to samo w Subiekcie. Zaplanuj dwa, trzy dni na niespodzianki, bo będą. U mnie były zawsze, a to szósta taka integracja.

Masz podobny proces? Pogadajmy, policzę, ile da się oddać automatom.

Tomasz Stachowiak

Automatyzuję nudną robotę w firmach: spinam systemy, dokładam AI i buduję narzędzia, które oddają ludziom godziny. Piszę o tym, co naprawdę działa u klientów.

30 procesów, które da się zautomatyzować w tydzień

Darmowy PDF: konkretne procesy z sześciu obszarów firmy, z czasem wdrożenia i efektem.

Wyślij mi PDF

Masz proces, który Cię wkurza?

Napisz w dwóch zdaniach, co zabiera najwięcej czasu. Odpiszę, co da się zautomatyzować i od czego zacząć.

Pogadajmy

Nowe wpisy na maila, raz w tygodniu

Jeden mail z tym, co napisałem w tym tygodniu. Bez „ofert specjalnych”, z linkiem do wypisania w każdej wiadomości.