PS PrestaShop Średnio zaawansowany

Konektor Odoo: kompletny przewodnik

Instalacja, konfiguracja i praca z synchronizacją w czasie rzeczywistym PrestaShop i Odoo (produkty, stan magazynowy, zamówienia, klienci) dla PrestaShop 8 i 9.

Zaktualizowano Wersja modułu 1.0.0

Konektor Odoo synchronizuje w czasie rzeczywistym i w obu kierunkach Twoje produkty, stan magazynowy, zamówienia i klientów między PrestaShop a Odoo. Ten przewodnik obejmuje instalację, połączenie z Odoo, wybór kierunku synchronizacji, synchronizację początkową, cron, webhook przychodzący i rozwiązywanie problemów.

Wymagania

  • PrestaShop 8.0 do 9.x.
  • PHP 7.4 do 8.3 z aktywnym rozszerzeniem cURL.
  • Instancja Odoo od 14 do 18 (w chmurze lub self-hosted) dostępna przez HTTPS z Twojego serwera PrestaShop.
  • Użytkownik Odoo posiadający klucz API oraz uprawnienia do modeli Sprzedaż, Magazyn i Kontakty.

Moduł komunikuje się z Odoo przez JSON-RPC. Rozszerzenie PHP xmlrpc, usunięte z PHP 8, nie jest potrzebne.

Instalacja

  1. W panelu administracyjnym otwórz Moduły > Menedżer modułów, następnie Wgraj moduł i wskaż plik dfodooconnect.zip.
  2. Po instalacji otwórz stronę konfiguracji przyciskiem Konfiguruj albo zakładką Odoo Connector w menu administracyjnym.

Generowanie klucza API w Odoo

  1. Zaloguj się do Odoo kontem serwisowym przeznaczonym do synchronizacji.
  2. Otwórz Preferencje > Bezpieczeństwo konta > Klucze API i wygeneruj nowy klucz.
  3. Skopiuj klucz: zastępuje on hasło w konfiguracji modułu.

Utwórz dedykowanego użytkownika Odoo (na przykład PrestaShop Sync) zamiast używać osobistego konta administratora. Dzięki temu zachowasz czytelny dziennik audytu po stronie Odoo.

Połączenie z Odoo

Na stronie konfiguracji uzupełnij cztery pola w bloku Połączenie Odoo:

  • Adres URL Odoo: pełny adres Twojej instancji, na przykład https://moje-odoo.pl.
  • Baza danych: dokładna nazwa bazy Odoo.
  • Użytkownik: login konta serwisowego.
  • Klucz API: klucz wygenerowany w poprzednim kroku.

Kliknij Testuj połączenie. W razie powodzenia moduł wyświetla wykrytą wersję Odoo oraz identyfikator użytkownika (uid). Zapisz, a następnie zaznacz Włącz synchronizację.

Dopóki pole Włącz synchronizację nie jest zaznaczone, żadne dane nie są wysyłane do Odoo, nawet jeśli połączenie jest prawidłowe.

Wybór encji i kierunku synchronizacji

Obsługiwane są cztery encje. Dla każdej włączasz lub wyłączasz synchronizację; dla produktów i stanu magazynowego wybierasz dodatkowo kierunek.

  • Klienci: PrestaShop do Odoo (kontakty res.partner).
  • Produkty: PrestaShop do Odoo, Odoo do PrestaShop albo dwukierunkowo.
  • Stan magazynowy: PrestaShop do Odoo, Odoo do PrestaShop albo dwukierunkowo.
  • Zamówienia: PrestaShop do Odoo (zamówienia sprzedaży sale.order).

Zachowanie zamówień uzupełniają dwie opcje: Automatycznie potwierdzaj zamówienie w Odoo (zmienia ofertę w potwierdzone zamówienie sprzedaży) oraz Generuj fakturę Odoo.

Synchronizacja początkowa

Zanim włączysz przepływ czasu rzeczywistego w istniejącym sklepie, zasil Odoo swoimi bieżącymi danymi z bloku Synchronizacja początkowa:

  1. Eksportuj wszystkich klientów: umieszcza każdego klienta w kolejce eksportu.
  2. Eksportuj wszystkie produkty: konieczne przed stanem magazynowym i zamówieniami, ponieważ pozycje zamówień i korekty stanu opierają się na odwzorowaniu produktu.
  3. Eksportuj wszystkie zamówienia: uruchamiaj po klientach i produktach.

Zachowaj kolejność: klienci, produkty, zamówienia. Moduł sam obsługuje brakujące zależności (nieodwzorowany produkt trafia do kolejki przed ponowną próbą zamówienia), ale właściwa kolejność ogranicza liczbę ponowień.

Konfiguracja crona

Cron opróżnia kolejkę (ponawia nieudane wysyłki) i importuje stan magazynowy z Odoo, gdy ten kierunek jest włączony. Zaplanuj adres URL podany w bloku Punkty końcowe, co 1 do 5 minut:

curl "https://twoj-sklep.pl/module/dfodooconnect/cron?token=TWOJ_TOKEN"

Token jest generowany automatycznie przy instalacji i wyświetlany w konfiguracji.

Webhook przychodzący (Odoo do PrestaShop)

Aby zmiany wprowadzone w Odoo wracały w czasie rzeczywistym, utwórz w Odoo Akcję automatyczną (akcję serwerową typu webhook), która wysyła żądanie POST w formacie JSON na adres webhooka modułu.

Aktualizacja stanu magazynowego:

{ "token": "TWOJ_TOKEN", "entity": "stock", "odoo_id": 42, "qty": 17 }

Zmiana statusu zamówienia:

{ "token": "TWOJ_TOKEN", "entity": "order_state", "odoo_id": 99, "state": "cancel" }

Rozpoznawane statusy to cancel, sale i done, odwzorowywane odpowiednio na Anulowano, Przygotowanie w toku i Dostarczono po stronie PrestaShop.

Wartość token w webhooku musi być identyczna z tą wyświetloną w konfiguracji. Żądanie bez prawidłowego tokenu jest odrzucane z kodem 403.

Panel i dziennik

Panel stale pokazuje cztery wskaźniki kolejki (Oczekujące, Zsynchronizowane, Błędy, Porzucone), liczbę odwzorowań per encja oraz dziennik aktywności ze znacznikami czasu. Dostępne są dwie akcje konserwacyjne: Przetwórz kolejkę teraz i Importuj stan magazynowy z Odoo.

Odporna kolejka

Każda zmiana w PrestaShop trafia najpierw do kolejki, a następnie jest natychmiast wysyłana do Odoo w trybie best effort. Jeśli Odoo jest nieosiągalne, zadanie zostaje w kolejce, a cron odtwarza je automatycznie. Po skonfigurowanej liczbie prób (domyślnie 5) trwale nieudane zadanie trafia do kwarantanny (Porzucone), aby nie blokować reszty kolejki.

To właśnie ten mechanizm gwarantuje, że niedostępność Odoo nigdy nie zablokuje procesu zamówienia Twoich klientów.

Synchronizowane pola

Klienci

Nazwa, e-mail, firma, referencja, adres domyślny (ulica, miasto, kod pocztowy, telefon), numer VAT i kraj. Dopasowanie chroniące przed duplikatami odbywa się po adresie e-mail.

Produkty

Nazwa, referencja wewnętrzna, cena sprzedaży, cena zakupu, waga, kod kreskowy, krótki opis i stan aktywności. Dopasowanie chroniące przed duplikatami odbywa się po referencji.

Stan magazynowy

Dostępne ilości są przenoszone przez korektę inwentaryzacyjną w skonfigurowanej lokalizacji Odoo (albo w pierwszej lokalizacji wewnętrznej, jeśli żadnej nie wskazano).

Zamówienia

Partner, referencja klienta, pozycje zamówienia (produkt, ilość, cena jednostkowa netto) i koszty wysyłki. Klient jest synchronizowany w locie, jeśli nie był jeszcze zsynchronizowany.

Tryb testowy (dry-run)

Włącz Tryb testowy, aby zweryfikować odwzorowania bez zapisywania czegokolwiek w Odoo: każda operacja jest zapisywana w dzienniku z oznaczeniem DRY-RUN, ale żadne dane nie są tworzone ani modyfikowane. Idealne do testów odbiorczych przed wdrożeniem produkcyjnym.

Rozwiązywanie problemów

  • Test połączenia kończy się niepowodzeniem: sprawdź adres URL (z https), dokładną nazwę bazy, login i klucz API. Upewnij się, że serwer PrestaShop może wychodząco połączyć się z instancją Odoo.
  • Zamówienie pozostaje w stanie oczekiwania: prawdopodobnie któryś produkt z zamówienia nie jest jeszcze odwzorowany. Moduł umieszcza produkt w kolejce; po kilku sekundach uruchom ponownie akcję Przetwórz kolejkę teraz.
  • Stan magazynowy nie wraca do PrestaShop: sprawdź, czy kierunek stanu obejmuje Odoo do PrestaShop i czy cron się wykonuje.
  • Duplikaty po stronie Odoo: upewnij się, że referencje produktów i adresy e-mail klientów są uzupełnione, to one są kluczami dopasowania.

Deinstalacja

Deinstalacja usuwa tabele odwzorowań, kolejki i dziennika modułu. Twoje dane w Odoo pozostają nienaruszone. Przy zwykłej aktualizacji wystarczy podmienić pliki: schemat i odwzorowania są zachowywane.

Czy ta strona była pomocna?

Nadal utknąłeś? Napisz do wsparcia