Gdzie jest przycisk i kiedy trzeba go kliknąć
Gdzie jest przycisk Push Stock i kiedy się pojawia?
Znajduje się w karcie sklepu, na ekranie Shopify Instances. Dojdziesz do niego z menu Shopify › Configuration › Stores; do jego wyświetlenia potrzebne są uprawnienia wymagane na każdym poziomie: Viewer dla Shopify i Operator dla Configuration. Przycisk nie ma warunku widoczności: jest w karcie w wersjach 17, 18, 19 i 20 Odoo. Opisane niżej działanie pochodzi z kodu modułu w Odoo 20.0. Przy Odoo po hiszpańsku przycisk nazywa się Push Stock; po niemiecku Bestand übertragen, po francusku Envoyer le stock, po włosku Invia stock, po portugalsku Push Stock.


Czy muszę go klikać, czy Odoo wysyła stan samo?
Normalna droga jest automatyczna: zaplanowane zadanie Shopify Push Stock uruchamia tę samą wysyłkę co 20 minut i jest aktywne od instalacji. Przycisk jest wyjątkiem: służy do uruchomienia wysyłki od razu, bez czekania na zadanie. Po zakończeniu pole Last Stock Push zawiera datę; widać je w karcie i na liście sklepów, jest tylko do odczytu i zapisuje je kod, nie Ty. Przycisk Reset Sync je czyści.
A stan w przeciwną stronę, z Shopify do Odoo?
To osobne zadanie: Shopify Pull Stock (Shopify → Odoo), co 6 godzin i aktywne po instalacji. Jego metoda działa tylko wtedy, gdy zaznaczono pole Sync Stock Enabled, które jest w karcie Shopify Instances, na zakładce Operations, w grupie Sync Settings, i domyślnie jest odznaczone. Metoda przycisku Push Stock, tak jak jest napisana, nie sprawdza tego pola.

Co sprawdza i co wysyła
Jakie produkty wysyła?
Dla każdego sklepu moduł szuka powiązanych z nim produktów, które są aktywne i mają przypisany element zasobów (inventory item) Shopify. Potem odrzuca te z inną firmą niż sklep (Company), nawet jeśli powiązanie powstało wcześniej. Jeśli nic nie zostanie, nie wysyła niczego do Shopify: tylko wpisuje datę w Last Stock Push i przechodzi do następnego sklepu.
Jaką ilość wysyła: tę, która jest, czy dostępną?
Wolną: zapasy pomniejszone o to, co już zarezerwowano, obliczone dla firmy sklepu, zaokrąglone do liczby całkowitej i do zera, jeśli brak wartości. Powód, według samego kodu: zamówienie Shopify potwierdzone w Odoo rezerwuje sztukę, ale zapasy spadają dopiero po zatwierdzeniu dostawy. Gdyby wysyłać zapasy, między sprzedażą online a wysyłką Shopify znów widziałby tę sztukę jako dostępną, a przy ostatniej sztuce drugi klient mógłby ją kupić. Więcej o zamówieniach i dokumentach WZ w tym, co moduł dodaje do sprzedaży i w tym, co dodaje do dokumentów WZ.
Jeśli wyślę ponownie te same ilości, czy Shopify zignoruje je jako duplikat?
Nie. Każde uruchomienie wysyłki generuje własny klucz i zmienia go w każdym bloku, właśnie po to, by identyczne ilości wysłane później nie zostały wzięte za duplikat. Wysyłka idzie w blokach po najwyżej sto produktów. W każdym bloku ustawia się dostępną ilość w Shopify tak, jak ją liczy Odoo, z powodem korekty i bez porównywania z tym, co Shopify ma w tej chwili.
Co się zmienia i jakie błędy mogą się pojawić
Jakiej lokalizacji Shopify używa i co zmienia w Odoo?
Najpierw szuka lokalizacji: używa tej, którą sklep ma już zapisaną, a jeśli żadnej nie ma, pyta Shopify, bierze pierwszą zwróconą i zapisuje jej identyfikator oraz nazwę. W Odoo zmieniają się daty: po wysłaniu każdego bloku zapisuje datę synchronizacji stanu przy każdym produkcie z tego bloku, a na końcu wpisuje Last Stock Push w sklepie. Jeśli błąd zatrzyma akcję, komunikat się pojawia, a ta ostatnia data nie zostaje zapisana.
Jakie komunikaty o lokalizacji lub połączeniu mogą się pojawić po kliknięciu przycisku?
Takie. No Shopify locations were found for …: sklep nie miał zapisanej lokalizacji, a Shopify żadnej nie zwrócił; zamiast kropek pojawia się domena sklepu. Shopify did not return a valid location id.: Shopify zwrócił lokalizację bez identyfikatora. Te dwa dotyczące lokalizacji mogą wystąpić tylko wtedy, gdy brakuje zapisanej lokalizacji. Jest też Shopify is not connected for …. Open the Connection tab and follow the setup steps.: sklep nadal nie ma tokenu dostępu; zamiast kropek pojawia się nazwa sklepu. Otwórz jego kartę, zakładkę Connection, i wykonaj kroki konfiguracji.
A komunikaty z wywołania do Shopify?
Też pojawiają się po kliknięciu przycisku. Shopify GraphQL call failed (…): … pojawia się, gdy Shopify odpowiada kodem błędu 400 lub wyższym; komunikat zawiera ten kod i początek odpowiedzi. Zanim się podda, moduł obsługuje 401 i 429: przy 401 próbuje odnowić dostęp i powtarza, jeśli jest token odświeżania lub dane uwierzytelniające klienta; przy 429 czeka i powtarza, z najwyżej trzema próbami w zwykłym wywołaniu. Mogą też pojawić się Shopify GraphQL returned errors: … oraz Shopify GraphQL call exhausted retries.. We wszystkich zachowaj pełny tekst komunikatu: to jest to, czego potrzebuje osoba sprawdzająca połączenie.
Jeśli wdrażasz z pomocą
FlexigoTech wdraża Odoo 17, 18, 19 i 20 oraz tworzy konektory i integracje na zamówienie. Moduł jest płatny jednorazowo za wersję Odoo (cena w jego karcie w Odoo Apps i na stronie modułu) i wymaga subskrypcji FlexigoTech Cloud: plan Konektor, 49 €/mies. lub 490 €/rok netto (bez VAT), do 3 kont platformy. Dzięki temu połączeniu dane dostępowe są przechowywane w formie zaszyfrowanej, synchronizacja jest nadzorowana, a w razie awarii przychodzi powiadomienie e-mailem.
Jeśli któryś z tych komunikatów nie znika, napisz do nas, podając pełny tekst i używaną wersję Odoo.
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 (2950bdc0): views/shopify_instance_views.xml
- Kod modułu: flexigobe_shopify_seller_connector 20.0 (2950bdc0): models/shopify_instance.py
- Kod modułu: flexigobe_shopify_seller_connector 20.0 (2950bdc0): models/fgt_cloud.py
- apps.odoo.com/apps/modules/20.0/flexigobe_shopify_seller_connector
- flexigotech.com/en/services.html
- flexigotech.com/precios.html
