Przykładowy scenariusz integracyjny Baselinker – Sellintegro – Subiekt

Założenia podstawowe scenariusza

Scenariusz integracji zakłada, że do statusu “Nowe zamówienia” w Baselinker wpływają wszystkie zamówienia (zapłacone i za pobraniem). Należy pamiętać, że zamówienia z Allegro i innych serwisów aukcyjnych mogą wpływać do tego statusu jako “nieopłacone” i z czasem (po 5 min) uzyskiwać potwierdzenie zapłaty.

Niezależnie jednak od tego, czy zamówienie wpływające do BL jest opłacone, nieopłacone lub za pobraniem, nasz scenariusz integracji z Subiekt GT zakłada, że każde zamówienie, które spływa do BL, trafia rówież do Subiekta W tym celu ustawiamy w konfiguratorze Sellintegro “Nowe Zamówienia”, jako status, z którego Subiekt GT ma przetwarzać dokumenty. Czyli do Subiekta trafiają wszystkie zamówienia, które spływają do Baselinker.

Można zapytać, dlaczego do Subiekta mają spływać zamówienia nieopłacone? Przede wszystkim łatwiej jest cofnąć zamówienie nieopłacone z Subiekt, aniżeli rozwikłać problem z zamówieniem opłaconym, które nie trafiło do Subiekt z jakiegoś “systemowego” powodu (brak karty produktowej, błędne powiązanie, stan zerowy).

W momencie kiedy do Subiekta wysyłamy każde nowe zamówienie z Baselinker, to ewetualny błąd w przesyle danych pojawi się zanim zakwalifikujemy zamówienie do statusu “Do pakowania”. W statusie “Do pakowania” znajdują się zamówienia już opłacone (lub za pobraniem). Jeśli więc ustawilibyśmy, aby Subiekt pobierał zamówienia właśnie z tego statusu, to niejako “cofalibyśmy proces obsługi zamówienia” (zamówienie przeskoczyłoby ze statusu”Do pakowania” do statusu “Nie wysłane do Subiekt”) i zamiast pakować zamówienie, musielibyśmy się zastanawiać, dlaczego Sellintegro zawróciło zamówienie.

Jeżeli do Subiekt będą trafiać wszystkie nowe zamówienia z BL (niepłacone, opłacone i za pobraniem), to zanim rozpoczniemy proces pakowania (tzn. zanim zamówienie trafi do statusu “Do pakowania”), otrzymamy informację, które zamówienia nie przeszły do Subiekt i dlaczego? Wtedy też, zanim chłopaki na magazynie zaczną pakować produkt (obsługują zamówienia ze statusu “Do pakowania”), administrator systemu rozpozna błąd, poprawi go i na nowo i ponowi przesył zamówienia do Subiekt. I jeśli wszystko już będzie w porządku (nastąpi przekazanie zamówienia do ERP), a samo zamówienie jest opłacone lub “za pobraniem”, to wpadnie ono też “Do pakowania”… I wtedy na pewno będzie wiadomo, że wszystko jest OK.

scenariusz integracyjny Baselinker - Sellintegro - Subiekt
Scenariusz integracyjny Baselinker – Sellintegro – Subiekt

Jeżeli zamówienie nie przeskoczy do Subiekt to z kilku powodów:

  • endpoint na komputerze użytkownika jest wyłączony lub ma niepoprawny klucz API
  • zamówienie nie zostało potwierdzone (osobiste lub telefoniczne)
  • produkt do zamówienia został wprowadzony po potwiedzeniu zamówienia (do Subiekt wysłane zostało, jako że potwierdzone, zamówienie bez produktu. W takim wypadku zamówienie nie wpadnie do żadnego statusu z błędem, nie pojawi się w statusie “Nie wysłano do Subiekt” i “Nie ma towaru w Subiekt”). Takie zamówienie “zawiśnie” w statusie pochodzenia (Nowe zamówienia) i aby ponowić proces przesyłu danych trzeba na nowo stworzyć zamówienie (dodanie produktu po potwierdzeniu nic nie da)
  • towar w zamówieniu nie został odnaleziony w Subiekt, wtedy zamówienie w Baselinker powinno “przeskoczyć” do statusu wskazanego w konfiguratorze Sellintegro (“Nie przesłano do Subiekt”). Mogą być co najmniej trzy przyczyny takiego niepowodzenia:
    • towaru nie ma na kartotece towarowej w Subiekt
    • w konfiguratorze Sellintegro wprowadzone zostały nieprawidłowe ustawienia mapowania
    • zamówienie z Baselinker nie posiada uzupełnionej zakładki “Dane do faktury”
  • towar w zamówieniu został odnaleziony w kartotece towarowej Subiekt, ale stan magazynowy wynosi 0. Wtedy też, jeżeli w konfiguratorze Sellintegro ustawiony jest odpowiedni status Baselinker, zamówienie przeskoczy w BL do tego statusu.
  • zamówienie zostało wcześniej przesłane do Subiekt (może dotyczyć zamówień anulowanych, ale z czasem opłaconych)
  • towaru z zamówienia nie ma na magazynie wewnętrznym Baselinker

Co jeśli zamówienie nie zostało przesłane z Baselinker do Subiekt?

Co wtedy, jeśli zamówienie nie zostało przesłane do Sellintegro? Po zidentyfikowaniu problemu należy poprawić ustawienia (zmienić API w endpoint, potwierdzić zamówienie, usunąć stare zamówienie i wprowadzić nowe [w przypadku, jeśli zamówienie zostało potwierdzone przed dodaniem produktów], dodać kartę produktową do kartoteki towarowej Subiekt lub zwiększyć stan magazynowy w Subiekt).

Po zidentyfikowaniu problemu i poprawieniu ustawień należy na nowo przenieść zamówienie do statusu wyjściowego, z którego wtyczka Sellintegro pobiera dane (domyślnie Nowe Zamówienia). Po 15 sekundach (ustawienie domyślne) zamówienie powinno zostać ponownie przetworzone i ponownie powinna nastąpić próba jego przesłania do Subiekt (o ile nie jest to zamówienie potwierdzone bez towaru lub nie jest to zamówienie wcześniej już przesłane do Subiekt).

Po tym, jak zamówienie zostanie z sukcesem przeniesione do naszego ERPa, to zmieni ono status wg ustawień konfiguracyjnych na “Przesłane do Subiekt”. Należy pamiętać, że w statusie BL “Przesłane do Subiekt” znajdują się trzy rodzaje zamówień pod względem statusu płatności: nieopłacone, opłacone i za pobraniem.

I teraz w ustawieniach automatycznych akcji Baselinker nakazujemy systemowi przeniesienie “Do pakowania” tylko dwóch rodzajów zamówień: opłacony i za pobraniem. Tego typu zamówienia, które nie dość, że zostały przesłane do Subiekt (domyślnie więc produkty z tych zamówień są na stanie), to jeszcze są opłacone (lub za pobraniem)… Możemy pakować.

Pytanie, które się nasuwa jest takie: A co z zamówieniami, które trafiły do Subiekt i “wiszą” w statusie “Przesłane do Subiekt”, bo nie zadziałała na nie automatyczna akcja zmiany statusu na “Do pakowania”? Są to bowiem zamówienia nieopłacone.

Tych zamówień nie powinno się usuwać z Subiekta (chyba, że jesteśmy pewni, że klient zrezygnował), a wręcz przeciwnie, powinny one czekać na swoją kolej… Tzn. mogą zostać z czasem opłacone i wtedy ich usunięcie będzie bezzasadne. Tym samym więc, biorąc pod uwagę fakt, że kiedyś zamówienie to może zostać opłacone, należy nadać wszystkim zamówieniom w Subiekt… funkcję reakcyjną, która aktywuje się na skutek zmiany statusu w Baselinker.

Funkcja reakcyjna polega na tym, że jeżeli zamówienie w Baselinker zmieni status na taki, który będzie w dużej mierze przesądzał o zamknięciu zamówienia (np. status “Anulowane”), to ustawienie tego statusu w BL spowoduje usunięcie zamówienia z Subiekt. Dzięki temu wyczyścimy w bazę danych w Subiekt z zamówień niezrealizowanych, bo nie opłaconych (lub z innych powodów anulowanych).

Problem polega jednak na tym, że zamówienie anulowane może zostać opłacone i jeśli ustawiona jest akcja automatycznej zmiany statusu na “Nowe zamówienie”, to pomimo usunięcia tego zamówienia z Subiekt, ERP ten nie przetworzy na nowo tego zamówienia i trzeba będzie wykonać jego kopię (a oryginał usunąć)… Niestety nie znaleźliśmy innego sposobu na ten problem.

I to w zasadzie wszystko, jeżeli chodzi o ten scenariusz. Wszystko śmiga przy odpowiednich ustawieniach… przeanalizowane, przetestowane i wdrożone.

Powodzenia!