# Konektor Odoo: kompletny przewodnik

> Instalacja, podłączenie i praca z Konektorem Odoo: klucz API, ustawienia w poszczególnych zakładkach, synchronizacja początkowa, cron, webhooki Odoo, odporna kolejka, ochrona przed duplikatami i rozwiązywanie problemów dla PrestaShop 8 i 9.

- Strona: <https://www.datafirefly.com/pl/documentation/connecteur-odoo/>
- Język: pl
- Zaktualizowano: 2026-10-28
- Inne języki: [fr](https://www.datafirefly.com/documentation/connecteur-odoo/index.md), [en](https://www.datafirefly.com/en/documentation/odoo-connector/index.md), [es](https://www.datafirefly.com/es/documentation/conector-odoo/index.md), [de](https://www.datafirefly.com/de/documentation/odoo-konnektor/index.md), [it](https://www.datafirefly.com/it/documentation/connettore-odoo/index.md), [nl](https://www.datafirefly.com/nl/documentation/connecteur-odoo/index.md), [pt](https://www.datafirefly.com/pt/documentation/connecteur-odoo/index.md)
- Indeks: <https://www.datafirefly.com/pl/documentation/llms.txt>

**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-`, 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.
