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.
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
- W panelu administracyjnym otwórz Moduły > Menedżer modułów, następnie Wgraj moduł i wskaż plik
dfodooconnect.zip. - Po instalacji otwórz stronę konfiguracji przyciskiem Konfiguruj albo zakładką Odoo Connector w menu administracyjnym.
Generowanie klucza API w Odoo
- Zaloguj się do Odoo kontem serwisowym przeznaczonym do synchronizacji.
- Otwórz Preferencje > Bezpieczeństwo konta > Klucze API i wygeneruj nowy klucz.
- 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:
- Eksportuj wszystkich klientów: umieszcza każdego klienta w kolejce eksportu.
- Eksportuj wszystkie produkty: konieczne przed stanem magazynowym i zamówieniami, ponieważ pozycje zamówień i korekty stanu opierają się na odwzorowaniu produktu.
- 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.