Droga, która nie potrzebuje przycisku
Zanim cokolwiek klikniesz, warto wiedzieć, że moduł potrafi sam poprosić Shopify o anulowanie. W karcie Shopify Instances, na zakładce Operations, w grupie Sync Settings jest pole wyboru Auto-push cancellations to Shopify. Jego pomoc mówi: «When a Shopify-linked sale order is cancelled in Odoo, cancel it in Shopify too.» Pole jest domyślnie wyłączone.
Po włączeniu tego pola, gdy anulujesz zamówienie sprzedaży w Odoo, moduł prosi o to Shopify, jeśli zamówienie jest powiązane z instancją, ma odnośnik do zamówienia Shopify i zostało anulowane. Jeśli to żądanie się nie powiedzie, błąd trafia do rejestru, a anulowanie w Odoo nie jest cofane.
Przycisk Cancel in Shopify to droga ręczna: klikasz go w karcie zamówienia Shopify. Gdy przycisk anuluje zamówienie sprzedaży w Odoo, robi to z oznaczeniem, że to anulowanie nie ma być ponownie wysyłane do Shopify drogą automatyczną.

Kiedy pojawia się przycisk
Jest w karcie Fulfilment Funnel, którą otwierasz z Shopify › Operations › Orders. Aby zobaczyć to menu, potrzebujesz uprawnienia Viewer.
Warunek widoku sprawdza tylko pole State: przycisk jest ukryty, gdy ma wartość Cancelled, a przy każdej innej jest widoczny. Wartość domyślna to Open, więc w świeżo pobranym zamówieniu go zobaczysz. Pozostałe wartości to Partially Fulfilled, Fulfilled i Refunded. Przycisk jest w Odoo 17, 18, 19 i 20, z tym samym warunkiem.
Widzieć go to nie to samo, co móc go użyć: warunek widoku dotyczy tylko stanu, a dostęp jest sprawdzany w chwili kliknięcia (niżej).

W Odoo po polsku przycisk nazywa się Cancel in Shopify.
Przykład: Tienda Aurora anuluje zamówienie
Przykład Przypadek poglądowy: firma i jej dane są zmyślone, żeby pokazać przebieg.
Tienda Aurora (firma wymyślona na potrzeby tego przykładu) sprzedaje przez Shopify i obsługuje zamówienia w Odoo. Klient prosi o anulowanie zakupu, który jeszcze nie został wysłany. Marta z obsługi klienta ma dostęp operatora Shopify.
- Marta otwiera
Shopify › Operations › Ordersi wchodzi do karty zamówienia.StatetoOpen, a przycisk jest widoczny. - Klika
Cancel in Shopify. Shopify nie zwraca żadnego błędu z opisem. Statezmienia się naCancelled, przycisk znika, a powiązane zamówienie sprzedaży zostaje anulowane w Odoo.
Następnego dnia trafia do niej kolejny przypadek i Shopify zwraca błąd z podaniem przyczyny. Marta widzi Shopify order cancel failed: …, z tekstem zwróconym przez Shopify po dwukropku. State pozostaje bez zmian, a zamówienie sprzedaży nie jest ruszane. Jej zadaniem jest przeczytać przyczynę.
Kolega, który ma tylko uprawnienie Viewer, otwiera tę samą kartę, widzi przycisk, a po kliknięciu dostaje komunikat o dostępie z tabeli poniżej.
Co sprawdza i co robi, po kolei
To kolejność z kodu Odoo 20. Gdy tylko któreś sprawdzenie zawiedzie, przycisk zatrzymuje się i nie zapisuje niczego z tego, co miał zmienić.
- Sprawdza, czy masz dostęp operatora lub menedżera Shopify.
- Sprawdza, czy zamówienie nie jest już anulowane (w tym stanie przycisk i tak jest ukryty).
- Sprawdza, czy pole
Shopify Orderma wartość. - Prosi Shopify o anulowanie. To, czy trzeba powiadomić klienta, zwrócić pieniądze lub przywrócić zapasy, rozstrzyga konfiguracja instancji zamówienia: przycisk o nic nie pyta. Jeśli Shopify zwróci błędy z opisem, przycisk zatrzymuje się tutaj.
- Jeśli poprzedni krok się nie zatrzymał, zapisuje
Cancelledw poluState. - Jeśli zamówienie ma powiązane
Sale Order, które nie jest anulowane, próbuje je anulować w Odoo. Jeśli to anulowanie się nie powiedzie, błąd trafia do rejestru, przycisk nie pokazuje z tego powodu żadnego komunikatu, a zamówienie Shopify pozostaje w stanieCancelled.

Pola Shopify Order, Sale Order i State widać w karcie i wypełnia je moduł, nie użytkownik. Shopify Order jest tylko do odczytu.
Komunikaty, które może wyświetlić po kliknięciu
Oto niektóre komunikaty, jakie może dać przycisk:
| Komunikat | Kiedy się pojawia | Co zrobić |
|---|---|---|
You need Shopify Operator (or Manager) access for this action. | Po kliknięciu przycisku bez dostępu operatora ani menedżera Shopify. | Poproś o ten dostęp albo o kliknięcie przez inną osobę, która go ma. |
No Shopify order ID found. | Po kliknięciu przycisku przy pustym polu Shopify Order. | Sprawdź to pole w karcie: nie wpisuje się go ręcznie, wypełnia je moduł. |
Shopify order cancel failed: … | Po kliknięciu przycisku, gdy Shopify zwraca błędy z opisem; tekst z Shopify jest w miejscu wielokropka. | Przeczytaj przyczynę podaną przez Shopify. W takim przypadku przycisk się zatrzymuje, a stan się nie zmienia. |
Wnioski z przykładu
- Przy wyłączonym polu automatycznym anulowanie zamówienia sprzedaży w Odoo nie powiadamia Shopify tą drogą; przycisk to robi.
StateCancelledjest zapisywany po poproszeniu Shopify o anulowanie, chyba że Shopify zwróci błędy z opisem: wtedy pojawia sięShopify order cancel failed: …i nic się nie zmienia.- Błąd przy anulowaniu zamówienia sprzedaży w Odoo nie jest widoczny na ekranie: jeśli masz wątpliwości, po kliknięciu sprawdź powiązane zamówienie sprzedaży.
Jak pomaga FlexigoTech
Moduł jest opublikowany w Odoo Apps dla Odoo 17, 18, 19 i 20; masz kartę w Odoo Apps i stronę modułu. Oprócz jednorazowej opłaty za moduł potrzebna jest subskrypcja FlexigoTech Cloud: połączenie ze Shopify przechodzi przez tę usługę, która przechowuje dane uwierzytelniające w postaci zaszyfrowanej i wysyła e-mail, gdy synchronizacja się nie powiedzie (plan Conector: 49 €/mies. lub 490 €/rok netto (bez VAT)). FlexigoTech wdraża Odoo 17, 18, 19 i 20 oraz tworzy konektory i integracje na zamówienie, na wypadek gdybyś musiał dopasować przepływ anulowania do swojego sklepu.
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_order_views.xml
- Kod modułu: flexigobe_shopify_seller_connector 20.0 (2950bdc0): models/shopify_order.py
- Kod modułu: flexigobe_shopify_seller_connector 20.0 (2950bdc0): models/sale_order.py
- Kod modułu: flexigobe_shopify_seller_connector 20.0 (2950bdc0): models/shopify_instance.py
- apps.odoo.com/apps/modules/20.0/flexigobe_shopify_seller_connector
- flexigotech.com/precios.html
- flexigotech.com/en/services.html
