Gdzie jest i kiedy się go uruchamia
Gdzie jest przycisk Sync Products?
Otwórz Shopify › Configuration › Stores i wejdź do karty sklepu, na ekranie Shopify Instances: tam jest przycisk. Aby dojść do menu, potrzebujesz uprawnień: pozycja Configuration wymaga Operator, a pozycja Shopify wymaga Viewer; jeśli brakuje któregoś, nie zobaczysz tej pozycji. Przycisk nie ma warunku widoczności i istnieje w Odoo 17, 18, 19 i 20.

Sync Products, dla Odoo 17, 18, 19 i 20.Czy trzeba go klikać ręcznie?
Jest też ścieżka automatyczna: zaplanowane zadanie Shopify Sync Products wywołuje tę samą akcję co godzinę, ale po instalacji jest wyłączone; dopóki tak jest, nie uruchamia się samo. Osobno zadanie Shopify Process Webhooks, które działa co minutę i po instalacji jest aktywne, wywołuje inną metodę modułu: taką, która pobiera ze Shopify konkretne produkty po identyfikatorze, jeden po jednym, i nie przechodzi katalogu stronami. Kliknięcie Sync Products to sposób, by uruchomić przejście po stronach wtedy, kiedy chcesz, bez czekania na zadanie.
Jak nazywa się przycisk przy Odoo w innym języku?
Przy Odoo w języku polskim przycisk nazywa się Sync Products, bo moduł nie ma tłumaczenia na ten język. Poniższy schemat zawiera też tłumaczenie na hiszpański, niemiecki, francuski, włoski i portugalski.


Co sprawdza i co zmienia
W Odoo 20 moduł po kliknięciu przycisku robi to:
Co robi na samym początku?
Otwiera wpis w dzienniku synchronizacji, typu produkty i w toku, i przygotowuje zapytanie do Shopify. Dla każdego produktu zapytanie pobiera tytuł, vendor, typ produktu, status, handle, opis, tagi, datę aktualizacji, obraz wyróżniający, opcje i warianty (SKU, tytuł, cenę, cenę porównawczą, kod kreskowy, ilość w zapasie, wybrane opcje, pozycję magazynową i obraz). Produkty przychodzą posortowane według daty aktualizacji. Przed zapisaniem każdego z nich moduł upewnia się, że ma wszystkie swoje warianty.
Czy za każdym razem pobiera cały katalog?
Zależy od pola Last Product Sync, widocznego w karcie sklepu i na liście Shopify Instances, tylko do odczytu: wypełnia je kod, nie ty. Jeśli jest puste, zapytanie idzie bez filtra daty. Jeśli ma wartość, moduł pobiera tylko produkty zaktualizowane od tej daty (włącznie). Gdy przejście zakończy się w całości, pole przyjmuje bieżącą godzinę.
Co się dzieje, gdy produktów jest więcej niż stron?
Dwa ustawienia określają rozmiar przejścia, w karcie sklepu, na zakładce Operations, w grupie Sync Settings. Page Size domyślnie wynosi 50; jego podpowiedź ostrzega, że powyżej 100 Shopify odrzuca zapytanie, a duża strona w zapytaniu z dużą ilością informacji może przekroczyć limit kosztu, a przycisk nigdy nie prosi o więcej niż 100 na stronę. Max Pages domyślnie wynosi 20. Przejście zatrzymuje się, gdy Shopify nie ma więcej stron albo gdy osiągnięto to maksimum.
Jeśli zostanie przerwane z niepobranymi stronami, moduł zostawia w karcie sklepu komunikat, że przejście zatrzymało się na limicie stron i od jakiej daty będzie kontynuowane następne. Pole Last Product Sync przyjmuje wtedy datę aktualizacji ostatniego odczytanego produktu, o ile ta data jest późniejsza od zapisanej (lub żadna nie była zapisana); jeśli nie, przyjmuje bieżącą godzinę.
Czy produkt, który się nie zapisze, psuje synchronizację?
Nie. Każdy produkt jest zapisywany osobno: jeśli któryś zawiedzie, moduł go pomija, zostawia ostrzeżenie w dzienniku serwera i przechodzi do następnego. Na końcu wpis w dzienniku synchronizacji notuje jako zaktualizowane tylko zapisane produkty; pominięte nie liczą się jako błędy, więc poprawny wpis nie wyklucza, że któryś został pominięty. Po to jest ostrzeżenie w dzienniku serwera.
Gdy zatrzymuje się z błędem
Co się dzieje, gdy wywołanie do Shopify się nie powiedzie?
Każde wywołanie dopuszcza do trzech prób. Jeśli Shopify odpowie kodem 401 (token już nie działa), a sklep może go odnowić, moduł odnawia go i próbuje jeszcze raz. Jeśli odpowie kodem 429 (limit tempa), czeka zgodnie z nagłówkiem Retry-After i próbuje ponownie, z maksymalnym oczekiwaniem trzydziestu sekund. Każda odpowiedź z kodem 400 lub wyższym, która nie zostanie tak rozwiązana, przerywa wywołanie błędem. Gdy błąd wychodzi z pętli produktów, wpis w dzienniku zostaje jako nieudany z tekstem błędu (obciętym do maksymalnie 2000 znaków), błąd jest rzucany ponownie, aby akcja się zatrzymała, i Last Product Sync nie jest aktualizowane.
A jeśli FlexigoTech Cloud wstrzyma połączenie?
Jeśli połączenie sklepu przechodzi przez FlexigoTech Cloud, wywołania idą przez jego przekaźnik, a Odoo nie łączy się bezpośrednio ze sklepem. Jeśli usługa je wstrzyma, całe przejście się zatrzymuje, żaden produkt nie jest pomijany, a wpis w dzienniku jest usuwany zamiast zostać jako nieudany.
Czego potrzebujesz, żeby z niego korzystać
Moduł jest płatny jednorazowo za wersję Odoo i opublikowany dla 17, 18, 19 i 20; cena każdej wersji jest w karcie i na stronie modułu. Dodatkowo potrzebuje subskrypcji FlexigoTech Cloud, plan Konektor: 49 €/mies. lub 490 €/rok netto (bez VAT), do 3 kont platformy (plan Pro: 98 €/mies. lub 980 €/rok, do 10). Połączenie przechowuje dane uwierzytelniające w postaci zaszyfrowanej, nadzoruje synchronizację i powiadamia e-mailem, jeśli zawiedzie. Bez subskrypcji lub przy zawieszonej usłudze zatrzymuje się to, co daje subskrypcja; dane zostają w twoim Odoo. Jeśli kupujesz w Odoo App Store, każdą wersję Odoo kupuje się tam. Jeśli potrzebujesz wdrożyć Odoo lub dostosować integrację do swojego katalogu, FlexigoTech wdraża Odoo 17, 18, 19 i 20 oraz tworzy konektory i integracje na zamówienie.
Czytaj dalej
Sprawdzone w kodzie źródłowym konektora (wersja 20.0) i w podlinkowanych źródłach
Źródła
- Kod modułu: flexigobe_shopify_seller_connector 20.0 (03641761): views/shopify_instance_views.xml
- Kod modułu: flexigobe_shopify_seller_connector 20.0 (03641761): models/shopify_instance.py
- Kod modułu: flexigobe_shopify_seller_connector 20.0 (03641761): models/fgt_cloud.py
- apps.odoo.com/apps/modules/20.0/flexigobe_shopify_seller_connector
- flexigotech.com/en/services.html
- flexigotech.com/precios.html
