PS PrestaShop Średnio zaawansowany

Konektor Odoo: kompletny przewodnik

Instalacja, konfiguracja i praca z synchronizacją w czasie rzeczywistym PrestaShop ⇄ Odoo (produkty i kombinacje, stan magazynowy, klienci, zamówienia, faktury, wysyłki) dla PrestaShop 8 i 9 oraz Odoo 14 do 20.

Zaktualizowano Wersja modułu 1.1.1

Konektor Odoo synchronizuje w czasie rzeczywistym i w obu kierunkach Twoje produkty i kombinacje, stan magazynowy, klientów, zamówienia, faktury i wysyłki między PrestaShop a Odoo. Ten przewodnik obejmuje instalację, połączenie, każdą zakładkę ustawień, synchronizację początkową, cron, webhooki Odoo i rozwiązywanie problemów.

Wymagania

  • PrestaShop 8.0 do 9.x.
  • PHP 7.4 do 8.5 z rozszerzeniem cURL.
  • Odoo 14 do 20, self-hosted, Odoo.sh lub Odoo Online, dostępne z Twojego serwera PrestaShop. W przypadku Odoo Online Twój plan musi obejmować dostęp do zewnętrznego API.
  • Aplikacje Odoo Sprzedaż i Magazynowanie, a także Fakturowanie, jeśli tworzysz faktury. Aplikacja Dostawa jest potrzebna do przesyłania numeru śledzenia do PrestaShop.
  • Dedykowany użytkownik Odoo z uprawnieniami do Sprzedaży, Magazynu i Fakturowania oraz klucz API.

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

Zainstaluj aplikację Magazynowanie w Odoo przed wysłaniem produktów. Od Odoo 18 śledzenie stanu magazynowego produktu zależy od tej aplikacji: produkty utworzone bez niej nie byłyby śledzone w magazynie.

Instalacja i aktualizacja

  1. W panelu administracyjnym otwórz Moduły > Menedżer modułów, kliknij Wgraj moduł i wskaż plik zip modułu.
  2. Następnie otwórz konfigurację przyciskiem Konfiguruj lub z menu Odoo Connector.

Aby zaktualizować moduł, wgraj nową wersję w ten sam sposób: PrestaShop uruchomi aktualizację, a Twoje ustawienia, klucz API i mapowania zostaną zachowane.

Generowanie klucza API w Odoo

  1. Zaloguj się do Odoo jako użytkownik przeznaczony do synchronizacji.
  2. Kliknij swój awatar, a następnie Mój profil (lub Preferencje), zakładkę Bezpieczeństwo konta i Nowy klucz API.
  3. Skopiuj klucz: jest wyświetlany tylko raz.

Dedykowany użytkownik (na przykład „PrestaShop Sync”) zamiast osobistego konta administratora zapewnia czytelną historię w Odoo i pozwala w każdej chwili cofnąć dostęp.

Zakładka Połączenie

  • URL Odoo: adres Twojej instancji, zaczynający się od https:// (lub http://), na przykład https://mycompany.odoo.com.
  • Baza danych: dokładna nazwa bazy Odoo.
  • Login: login (zwykle e-mail) dedykowanego użytkownika.
  • Klucz API: przechowywany w postaci zaszyfrowanej. Pozostaw pole puste, aby zachować obecny klucz.

Kliknij Testuj połączenie: moduł wyświetli wersję Odoo, użytkownika i firmę. Następnie kliknij Wczytaj listy z Odoo, aby wybrać z list firmę, magazyn, lokalizację, zespół sprzedaży, sprzedawcę i dziennik płatności. Zapisz, a następnie zaznacz Włącz synchronizację.

Ze względów bezpieczeństwa zapisany klucz API nigdy nie jest wysyłany na inny adres, do innej bazy ani dla innego loginu niż zapisane: aby przetestować inny serwer, wprowadź jego klucz API.

Ta sama zakładka zawiera także przetwarzanie w czasie rzeczywistym (zmiany są wysyłane zaraz po wyświetleniu strony odwiedzającemu; gdy jest wyłączone, wysyła je cron), tryb testowy, szczegółowy log, listę dozwolonych adresów IP dla webhooka oraz włączanie poszczególnych przepływów: klienci, produkty, stany magazynowe, zamówienia.

Zakładka Produkty

  • Kierunek produktów: z PrestaShop do Odoo, z Odoo do PrestaShop lub w obie strony.
  • Zdjęcie główne, drzewo kategorii (z nadrzędną kategorią Odoo) oraz cena zakupu wysyłana jako koszt (wyłącz, jeśli Odoo oblicza koszty metodą średniej ważonej lub FIFO).
  • Archiwizuj warianty Odoo, których brak w PrestaShop.
  • Dodatkowe mapowanie pól: jedna linia na pole, w formacie odoo_field=prestashop_field.
  • Z Odoo do PrestaShop: cena, nazwa, referencja (indeks) i EAN13, status aktywności, do wyboru.
  • Importuj nowe produkty Odoo: produkty przeznaczone do sprzedaży utworzone w Odoo są tworzone w PrestaShop, a ich warianty jako kombinacje, w wybranej kategorii i z wybraną regułą podatkową, jako włączone lub nie.

Zakładka Stan magazynowy

  • System nadrzędny dla stanów: Odoo (zalecane), PrestaShop lub oba. Ruchy związane z zamówieniami nigdy nie są liczone podwójnie.
  • Ilość wysyłana do PrestaShop: ilość dostępna (po odjęciu rezerwacji, zalecane, aby uniknąć sprzedaży ponad stan) lub ilość na stanie.
  • Magazyn Odoo, stosowany również do zamówień, oraz opcjonalna konkretna lokalizacja.

Zakładka Zamówienia

  • Wysyłanie zamówień do Odoo: od razu po złożeniu lub dopiero po opłaceniu, z datą, przed którą zamówienia są ignorowane.
  • Potwierdź ofertę Odoo przy złożeniu zamówienia lub przy płatności: potwierdzenie tworzy zlecenie dostawy w Odoo.
  • Podatki: stawki PrestaShop (używane są podatki Odoo o tej samej stawce, a sumy się zgadzają) lub pozwól Odoo obliczyć (podatki produktów i pozycje fiskalne Odoo).
  • Statusy PrestaShop, które anulują zamówienie w Odoo, zespół sprzedaży i sprzedawca.
  • Dostawy w Odoo aktualizują PrestaShop: po zatwierdzeniu dostawy zamówienie otrzymuje wybrany status (domyślnie Wysłane) z numerem śledzenia, a klient dostaje e-mail o wysyłce.
  • Anulowania w Odoo aktualizują PrestaShop.

Każda pozycja zamówienia wskazuje wariant Odoo odpowiadający kombinacji. Wysyłka, opakowanie prezentowe i rabaty są dodawane jako osobne pozycje, przy czym rabaty są rozbijane według stawki podatku. Moduł porównuje sumę w Odoo z sumą w PrestaShop i zgłasza każdą rozbieżność w logu.

Zakładka Fakturowanie

  • Faktury Odoo: nie twórz, utwórz jako szkic lub utwórz i zaksięguj. Faktura jest tworzona na podstawie potwierdzonego zamówienia, przy złożeniu zamówienia lub przy płatności.
  • Zarejestruj płatność w Odoo: zaksięgowana faktura opłaconego zamówienia jest oznaczana jako opłacona w odpowiednim dzienniku.
  • Domyślny dziennik płatności oraz dziennik dla modułu płatności: jedna linia na moduł, w formacie module_name=journal_id, na przykład stripe_official=7.

Bez skonfigurowanego dziennika płatność nie jest rejestrowana: log sygnalizuje to ostrzeżeniem wskazującym dany moduł płatności.

Synchronizacja początkowa

W istniejącym sklepie zasil Odoo z zakładki Narzędzia, w tej kolejności:

  1. Wyślij wszystkich klientów.
  2. Wyślij wszystkie produkty.
  3. Importuj cały stan magazynowy Odoo, jeśli Odoo jest systemem nadrzędnym dla stanów.
  4. Wyślij zamówienia złożone od wybranej daty.

Zadania są wysyłane partiami przez cron. Jeśli Twój katalog lub klienci już istnieją w Odoo, są odnajdywani zamiast tworzeni od nowa: klienci po adresie e-mail, adresy po referencji, produkty proste po referencji (lub PS-<id>, gdy brak referencji), produkty z kombinacjami po referencjach ich wariantów, a zamówienia po dokumencie źródłowym.

Zacznij z włączonym trybem testowym: każda operacja jest zapisywana w logu, ale nic nie jest zapisywane w Odoo. Wyłącz go po sprawdzeniu wyniku.

Cron

Cron przetwarza kolejkę i odczytuje zmiany wprowadzone w Odoo (stany magazynowe, produkty, dostawy, anulowania). Zaplanuj go co 1 do 5 minut, używając adresu URL wyświetlanego na pulpicie:

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

lub, bez limitu czasu HTTP, z wiersza poleceń na serwerze:

php /sciezka/do/prestashop/modules/dfodooconnect/cron.php

Dwa uruchomienia nigdy nie działają jednocześnie. Przycisk Synchronizuj teraz na pulpicie uruchamia natychmiastowe przetwarzanie.

Webhooki Odoo (czas rzeczywisty z Odoo)

Bez webhooka cron odczytuje zmiany z Odoo przy każdym uruchomieniu. Aby otrzymywać je natychmiast, od Odoo 17 utwórz bez kodu jedną regułę na model w Ustawienia > Techniczne > Reguły automatyzacji:

  • Modele: Produkt, Wariant produktu, Ilości lub Ruch magazynowy, Transfer, Zamówienie sprzedaży.
  • Wyzwalacz: Przy zapisie.
  • Akcja: Wysyłaj powiadomienia Webhook na adres URL webhooka wyświetlany na pulpicie.

Token jest obowiązkowy: adres URL webhooka wyświetlany na pulpicie już go zawiera (?token=). W przypadku własnych skryptów można go też przesłać w nagłówku X-DF-Token. Otrzymana treść nigdy nie jest stosowana bezpośrednio: wskazuje jedynie, który rekord się zmienił, a moduł odczytuje go ponownie z Odoo przez API.

Żądanie bez prawidłowego tokenu jest odrzucane z kodem 403. Dodatkowo możesz ograniczyć dozwolone adresy IP w zakładce Połączenie.

Pulpit i monitorowanie

Pulpit pokazuje stan systemu (ostatnie uruchomienie crona, ostatnie udane wywołanie Odoo, najstarsze oczekujące zadanie, błędy i ostrzeżenia z 24 h), liczniki kolejki (Oczekujące, Ponawianie, W kwarantannie, Zakończone) oraz liczbę powiązanych rekordów. Zakładki Kolejka, Mapowania i Log można filtrować, a panel Odoo na kartach zamówienia, produktu i klienta zawiera przycisk Synchronizuj teraz.

Odporna kolejka

Każda zmiana trafia do kolejki przetwarzanej po wysłaniu strony do klienta: proces zamówienia nigdy nie czeka na Odoo. W razie niepowodzenia zadanie jest ponawiane z rosnącym odstępem (od 1 minuty do 24 godzin); po skonfigurowanej liczbie prób (domyślnie 8) trafia do kwarantanny i można je ponowić jednym kliknięciem. Jeśli Odoo przestaje odpowiadać, bezpiecznik wstrzymuje wywołania i zachowuje zadania bez zużywania ich prób, a synchronizacja wznawia się samoczynnie po powrocie Odoo.

Zmiana bazy Odoo

Jeśli przechodzisz z jednej bazy Odoo na inną (z bazy testowej na produkcyjną, migracja), moduł wykrywa to dzięki unikalnemu identyfikatorowi bazy. Zapomina wtedy mapowania i ustawienia właściwe dla poprzedniej bazy (firma, magazyn, lokalizacja, zespół, sprzedawca, dziennik) i informuje o tym komunikatem: wczytaj ponownie listy z Odoo i sprawdź ustawienia. Przy następnej synchronizacji rekordy w nowej bazie są odnajdywane po referencjach.

Synchronizowane pola

Klienci

Kontakt Odoo z nazwą (lub firmą), adresem e-mail, numerem VAT, numerem SIRET, krajem, regionem, językiem i telefonem. Adresy do faktury i dostawy stają się kontaktami podrzędnymi w momencie wysyłania zamówień. Numer VAT odrzucony przez Odoo nie blokuje wysyłki: kontakt jest tworzony bez numeru VAT, a do logu dodawane jest ostrzeżenie.

Produkty i kombinacje

Nazwa, cena netto, koszt, waga przeliczona na kg, referencja, kod kreskowy, podatek o tej samej stawce (podatek od usług dla produktów wirtualnych), kategoria i zdjęcie. Każda kombinacja jest powiązana z wariantem Odoo; atrybuty i ich wartości są tworzone w razie potrzeby. Niezmieniony produkt nie jest ponownie zapisywany w Odoo.

Stan magazynowy

Per kombinacja, w wybranym magazynie lub lokalizacji.

Zamówienia

Klient, adresy do faktury i dostawy, pozycje per wariant, wysyłka, opakowanie prezentowe, rabaty, waluta przez cennik, magazyn, zespół i sprzedawca.

Rozwiązywanie problemów

  • „Authentication refused by Odoo”: login lub klucz API jest nieprawidłowy albo klucz został unieważniony. Wygeneruj nowy klucz.
  • „Odoo closed the connection: check the database name”: wskazana baza danych nie istnieje na tym serwerze.
  • „Odoo redirects this URL”: użyj adresu podanego w komunikacie (zwykle wersji https://).
  • „No Odoo sale tax at 20%”: utwórz w Odoo podatek sprzedaży o podanej stawce, procentowy i nieuwzględniony w cenie.
  • „No Odoo payment journal for payment module…”: wybierz domyślny dziennik płatności lub dziennik dla modułu w zakładce Fakturowanie.
  • Numer śledzenia nie wraca: zainstaluj aplikację Dostawa w Odoo. Status Wysłane działa bez niej.
  • „Total mismatch”: suma w Odoo różni się od sumy w PrestaShop; sprawdź podatki Odoo odpowiadające stawkom zamówienia.
  • Stany magazynowe lub dostawy nie wracają: sprawdź, czy cron się wykonuje (data ostatniego uruchomienia crona na pulpicie) oraz skonfigurowany kierunek.
  • Zadanie jest w kwarantannie: przeczytaj jego komunikat w zakładce Kolejka, usuń przyczynę, a następnie ponów zadanie.

Deinstalacja

Deinstalacja usuwa tabele mapowań, kolejki i logu, a także ustawienia modułu. Twoje dane w Odoo nie są modyfikowane. W przypadku ponownej instalacji rekordy istniejące w Odoo są odnajdywane po referencjach, bez duplikatów.

Czy ta strona była pomocna?

Nadal utknąłeś? Napisz do wsparcia