Co widzisz i w którym momencie
Przy zapisie karty instancji Shopify Odoo może przerwać zapis takim tekstem: Stock has one master: push it from Odoo to Shopify or pull it from Shopify into Odoo, not both. Karta się nie zapisuje, więc to, co właśnie w niej zmieniono, nie zostaje zapisane.
W Odoo 20.0 kartę otwierasz z menu Sprzedaż, następnie Shopify, Control Center i Instances, w tej kolejności. Oba pola, których dotyczy problem, znajdują się na zakładce Operations, w grupie Sync Settings: Sync Stock Enabled i Pull stock from Shopify. Zgodnie z kodem oba są domyślnie odznaczone.


Przykład, żeby to zobaczyć
Przykład Przypadek poglądowy: firma i jej dane są zmyślone, żeby pokazać przebieg.
Wyobraź sobie fikcyjny sklep Cerámicas del Norte, który sprzedaje w Shopify, a magazyn prowadzi w Odoo. Osoba zarządzająca połączeniem ma zaznaczone Sync Stock Enabled: Odoo jest właścicielem stanów i wysyła do Shopify swoją ilość na stanie. Pewnego dnia uznaje, że skoro już tu jest, to chce też, żeby Shopify przekazywało to, co dzieje się w sklepie. Zaznacza Pull stock from Shopify i klika zapisz. Pojawia się komunikat, a karta pozostaje bez zmian.
Połączenie jest nienaruszone: moduł po prostu zablokował konfigurację z dwoma właścicielami. Komentarz w samym kodzie tłumaczy to tak: przy obu aktywnych wysyłka z Odoo do Shopify i odczyt z Shopify do Odoo nadpisywałyby tę samą liczbę jedna drugą.
Osoba zarządzająca powinna zapamiętać, że najpierw decyduje się, kto rządzi stanami, a dopiero potem zaznacza się jedno pole. W sklepie z przykładu, jeśli właścicielem nadal ma być Odoo, odznacza się pole pobierające stany i zapisuje bez dalszych kroków.
Co dokładnie sprawdza moduł
To kontrola wykonywana przy zapisie, uruchamiana, gdy zmieni się którekolwiek z dwóch pól. Moduł przegląda zapisywane instancje: jeśli w którejś jednocześnie aktywne są Sync Stock Enabled i Pull stock from Shopify, przerywa akcję i wyświetla komunikat. W tym kodzie nie ma żadnego innego warunku: ani stanu połączenia, ani sklepu, ani magazynu.
Pomoc każdego pola opisuje znaczenie każdego kierunku:
Sync Stock Enabled: Odoo jest właścicielem stanów, a jego ilość na stanie jest wysyłana do Shopify. Pomoc dodaje, że pole nie może być aktywne jednocześnie zPull stock from Shopify.Pull stock from Shopify: Shopify jest właścicielem stanów. Każdy odczyt ustawia stan na ręku głównej lokalizacji Shopify w powiązanej lokalizacji Odoo, za pomocą korekty zapasów, odejmując to, co Odoo już wydało, a czego Shopify jeszcze nie zrealizowało.
Pomoc drugiego pola ostrzega ponadto, że stan na ręku w Shopify obejmuje także towar uszkodzony, w kontroli jakości lub jako zapas bezpieczeństwa, a w Odoo jest to zwykły stan jak każdy inny. Mówi też, że pole nie może być aktywne razem z innym sklepem, który pobiera stany do tej samej lokalizacji Odoo.
Jak to rozwiązać
- Otwórz instancję z menu instancji Shopify (ścieżka jest wyżej).
- Przejdź na zakładkę
Operationsi znajdź grupęSync Settings. - Zdecyduj, kto jest właścicielem stanów w tym sklepie. To decyzja biznesowa, nie modułu.
- Jeśli właścicielem jest Odoo, zostaw zaznaczone
Sync Stock Enabledi odznaczPull stock from Shopify. - Jeśli właścicielem jest Shopify, zostaw zaznaczone
Pull stock from Shopifyi odznaczSync Stock Enabled. - Zapisz kartę. Gdy zaznaczone jest tylko jedno pole, ta kontrola przestaje blokować zapis.
Jeśli zdecydujesz, że rządzi Shopify, pomoc pola mówi, że jego aktywacja nie uruchamia odczytu: trzeba też włączyć zaplanowaną akcję pobierania stanów, którą wymienia ta pomoc. O odczycie stanów jest osobny artykuł: przycisk Pull Stock, krok po kroku.
Co sprawdzić potem
- Czy karta zapisuje się bez komunikatu i czy w grupie
Sync Settingszaznaczone jest tylko jedno z dwóch pól. - Jeśli właścicielem jest Shopify, czy zaplanowana akcja wspomniana w pomocy jest włączona.
- Jeśli inny sklep pobiera stany do tej samej lokalizacji Odoo, czy dwa sklepy nie nakładają się na tej lokalizacji: pomoc wskazuje to jako kolejne ograniczenie pola
Pull stock from Shopify.
Przy Odoo po hiszpańsku tekst błędu jest taki, jak wyżej. Ten schemat, wykonany kodem na podstawie opublikowanych tłumaczeń, pokazuje, jak komunikat brzmi w innych językach:

Wersje i koszt
Komunikat znajduje się w opublikowanym kodzie wszystkich czterech gałęzi (17.0, 18.0, 19.0 i 20.0). Warunek, pola i menu opisane tutaj odpowiadają kodowi Odoo 20.0. Moduł jest opublikowany w Odoo Apps dla Odoo 17, 18, 19 i 20 w cenie 9 € za wersję Odoo, jednorazowo, netto (bez VAT), i wymaga subskrypcji FlexigoTech Cloud: plan Conector kosztuje 49 €/mies. lub 490 €/rok, netto (bez VAT).
Jak pomaga FlexigoTech
Jeśli wdrażasz Odoo i nadal nie masz jasności, kto ma być właścicielem stanów między sklepem a magazynem, FlexigoTech wdraża Odoo 17, 18, 19 i 20 oraz tworzy konektory i integracje na zamówienie. Tę decyzję warto podjąć, zanim zaznaczysz jakiekolwiek pole.
Jedno pole zaznaczone, drugie nie
Komunikat wynika z reguły modułu sprawdzanej przy zapisie. Zostaw zaznaczone tylko pole kierunku, który wybierzesz, a karta się zapisze.
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_connector 20.0 (c7078cd8): models/shopify_instance.py
- Kod modułu: flexigobe_shopify_connector 20.0 (c7078cd8): models/fgt_cloud.py
- apps.odoo.com/apps/modules/20.0/flexigobe_shopify_connector
- apps.odoo.com/apps/modules/17.0/flexigobe_shopify_connector
- apps.odoo.com/apps/modules/18.0/flexigobe_shopify_connector
- apps.odoo.com/apps/modules/19.0/flexigobe_shopify_connector
- flexigotech.com/precios.html
- flexigotech.com/en/services.html
