Czym jest to zadanie i kiedy działa
Shopify Connector for Odoo zawiera zaplanowane zadanie o nazwie Shopify Process Webhooks. Należy do modelu sklepów Shopify i uruchamia metodę, która przetwarza otrzymane zdarzenia webhooków. Działa co minutę i jest aktywne od momentu instalacji modułu. Istnieje we wszystkich opublikowanych gałęziach (17.0, 18.0, 19.0 i 20.0); w Odoo 17.0 jest ponadto skonfigurowane tak, by powtarzać się bez końca.

Shopify › Configuration › Stores.Przy Odoo po hiszpańsku zadanie nazywa się Procesar webhooks de Shopify; ten schemat zawiera jego nazwę w innych językach:

Procesar webhooks de Shopify; po niemiecku «Shopify-Webhooks verarbeiten»; po francusku «Traiter les webhooks Shopify»; po włosku «Elabora webhook Shopify»; po portugalsku «Processar webhooks Shopify».
Chronologia jednego przebiegu
W Odoo 20.0 przebieg wygląda następująco:
- Co minutę Odoo uruchamia zadanie. Najpierw sprawdza, czy osoba, która je uruchamia, jest administratorem systemu; jeśli nie jest, może zatrzymać się z komunikatem
Only an administrator can run this scheduled action.i niczego nie przetwarza.
- Na początku Wyszukuje zdarzenia webhooków, które oczekują na przetworzenie. Sortuje je od najstarszego do najnowszego według daty otrzymania (a przy równych datach według kolejności utworzenia) i pobiera maksymalnie 50 w jednym przebiegu.
- Zdarzenie bez sklepu Jeśli zdarzenie nie ma przypisanego sklepu, zadanie oznacza je jako zakończone błędem, ustawia godzinę przetworzenia i komunikat o błędzie, po czym przechodzi do następnego.
- Zdarzenie ze sklepem Zadanie prosi sklep o przetworzenie tego zdarzenia zgodnie z jego tematem (niżej, temat po temacie). Jeśli wszystko przebiegnie dobrze, zdarzenie zostaje oznaczone jako przetworzone, z godziną przetworzenia, zapisanym wynikiem i bez komunikatu o błędzie. Po każdym zdarzeniu zadanie zapisuje zmiany w bazie danych.
- Gdy przetwarzanie się nie powiedzie Zdarzenie zostaje oznaczone jako zakończone błędem, z godziną przetworzenia, tekstem błędu i wynikiem częściowym (liczniki zamówień, produktów i zapasów). Zadanie się nie zatrzymuje: przechodzi do następnego zdarzenia.
- Gdy zawiedzie coś innego Jeśli wyjątek wymknie się spod przetwarzania zdarzenia, zadanie zapisuje go w logu serwera, cofa oczekujące zmiany z tej rundy i kontynuuje z resztą.
- Po zakończeniu zdarzeń Wyszukuje zamówienia Shopify, które mają powiązane zamówienie sprzedaży w wersji roboczej lub wysłane, których sklep ma włączone automatyczne potwierdzanie sprzedaży i które nie mają znacznika ręcznego zamówienia sprzedaży. Pobiera je od ostatnio zaktualizowanych do najstarszych, do 50, i prosi o ich potwierdzenie; jeśli ta część zawiedzie, błąd jest zapisywany, a zadanie się nie zatrzymuje.
- Na koniec Jeśli potwierdzono jakieś zamówienie sprzedaży, kod odnotowuje to w logu serwera. Jeśli ta ostatnia część zawiedzie, błąd jest zapisywany i cofany jest tylko ten krok: to, co już zapisano dla zdarzeń, pozostaje.
Co robi z każdym zdarzeniem w zależności od tematu
Temat zdarzenia jest odczytywany wielkimi literami i decyduje o tym, co się stanie:
APP_UNINSTALLED: sklep zostaje dezaktywowany, a jego token dostępu, token odświeżania i data wygaśnięcia tokena zostają wyczyszczone.- Tematy zaczynające się od
ORDERS_: jeśli sklep ma włączoną synchronizację zamówień przez webhook, zadanie przekazuje zamówienie ze zdarzenia do procesu synchronizacji zamówień i zapisuje w wyniku, ile ich obsłużono. - Tematy zaczynające się od
PRODUCTS_: jeśli sklep ma włączoną synchronizację produktów przez webhook, zadanie przekazuje produkt ze zdarzenia do procesu synchronizacji produktów i zapisuje w wyniku, ile ich obsłużono. - Tematy zaczynające się od
INVENTORY_LEVELS: tylko jeśli sklep ma włączoną synchronizację zapasów przez webhook i dodatkowo ogólną synchronizację zapasów, zadanie przekazuje zmianę stanu magazynowego do procesu, który ją stosuje; jeśli ten proces ją potwierdzi, wynik odnotowuje jedną aktualizację zapasów.
Ważny szczegół: jeśli temat nie jest żadnym z tych albo odpowiednie ustawienie sklepu jest wyłączone, zadanie niczego nie przekazuje do synchronizacji, ale zdarzenie i tak zostaje oznaczone jako przetworzone, z licznikami na zero. Przetworzone zdarzenie nie oznacza więc, że dotknięto zamówienia, produktu lub zapasów.
Na co patrzeć, jeśli nic nie robi
- Zadanie musi być aktywne. Jest aktywne po instalacji i działa co minutę.
- Kto je uruchamia. Jeśli uruchamia je ktoś, kto nie jest administratorem systemu, może zatrzymać się z komunikatem
Only an administrator can run this scheduled action. - Pobiera tylko oczekujące zdarzenia. Zdarzenie oznaczone jako zakończone błędem nie wraca już do tego zadania. Jeśli oczekujących jest dużo, w każdym przebiegu przetwarzane są najstarsze, do 50, a reszta czeka na kolejne.
- Wynik z licznikami na zero. Dzieje się tak, gdy temat zdarzenia nie należy do obsługiwanych przez zadanie albo gdy sklep nie ma włączonej synchronizacji przez webhook tego typu (dla zapasów także ogólnej synchronizacji zapasów). Zdarzenie jest oznaczane jako przetworzone bez przekazywania czegokolwiek do synchronizacji.
- Sklep dezaktywowany. Zdarzenie
APP_UNINSTALLEDdezaktywuje sklep i usuwa jego tokeny. - Zamówienia sprzedaży, które nadal są w wersji roboczej. Automatyczne potwierdzanie wymaga, aby sklep miał je włączone, aby zamówienie sprzedaży było w wersji roboczej lub wysłane i aby zamówienie Shopify nie miało znacznika ręcznego zamówienia sprzedaży. Sprawdza tylko do 50 zamówień na przebieg.
Sklepy otwiera się z menu Shopify › Configuration › Stores. Aby zobaczyć to menu, potrzebujesz uprawnienia Operator w sekcji Configuration oraz Viewer w sekcji Shopify.
Cena i pomoc
Moduł jest płatny jednorazowo za wersję i wymaga subskrypcji FlexigoTech Cloud, plan Connector: 49 €/mies. lub 490 €/rok, netto (bez VAT). Jest opublikowany dla Odoo 17, 18, 19 i 20. Połączenie przechodzi przez FlexigoTech Cloud, który przechowuje poświadczenia w postaci zaszyfrowanej, nadzoruje synchronizację i powiadamia e-mailem, jeśli zawiedzie.
Jeśli wdrażasz Odoo ze Shopify albo potrzebujesz integracji na miarę, FlexigoTech wdraża Odoo 17, 18, 19 i 20 oraz tworzy konektory. Więcej szczegółów znajdziesz na stronie modułu i w jego karcie w Odoo Apps.
Czytaj dalej
Sprawdzone w kodzie źródłowym konektora (wersja 17.0 i 20.0) i w podlinkowanych źródłach
Źródła
- Kod modułu: flexigobe_shopify_seller_connector 20.0 (d7e627b4): data/ir_cron_data.xml
- Kod modułu: flexigobe_shopify_seller_connector 17.0 (437257e3): data/ir_cron_data.xml
- Kod modułu: flexigobe_shopify_seller_connector 20.0 (d7e627b4): models/shopify_instance.py
- Kod modułu: flexigobe_shopify_seller_connector 20.0 (d7e627b4): models/fgt_cloud.py
- apps.odoo.com/apps/modules/20.0/flexigobe_shopify_seller_connector
- flexigotech.com/precios.html
- flexigotech.com/en/services.html
