# Odoo-Konnektor — Vollständiges Handbuch

> Den Odoo-Konnektor installieren, verbinden und betreiben: API-Schlüssel, Einstellungen pro Reiter, Erstsynchronisation, Cron, Odoo-Webhooks, ausfallsichere Warteschlange, Duplikatschutz und Fehlerbehebung für PrestaShop 8 und 9.

- Seite: <https://www.datafirefly.com/de/documentation/odoo-konnektor/>
- Sprache: de
- Aktualisiert am: 2026-10-28
- Weitere Sprachen: [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), [it](https://www.datafirefly.com/it/documentation/connettore-odoo/index.md), [pl](https://www.datafirefly.com/pl/documentation/connecteur-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)
- Index: <https://www.datafirefly.com/de/documentation/llms.txt>

Der **Odoo-Konnektor** synchronisiert Ihre Produkte und Varianten, Ihren Bestand, Ihre Kunden, Bestellungen, Rechnungen und Lieferungen zwischen PrestaShop und Odoo in Echtzeit und in beide Richtungen. Dieses Handbuch behandelt Installation, Verbindung, jeden Einstellungsreiter, Erstsynchronisation, Cron, Odoo-Webhooks und Fehlerbehebung.

## Voraussetzungen

- PrestaShop 8.0 bis 9.x.
- PHP 7.4 bis 8.5 mit der cURL-Erweiterung.
- Odoo 14 bis 20, selbst gehostet, Odoo.sh oder Odoo Online, erreichbar von Ihrem PrestaShop-Server. Bei Odoo Online muss Ihr Tarif den Zugriff auf die externe API umfassen.
- Die Odoo-Apps **Verkauf** und **Lager**, dazu **Rechnungsstellung**, wenn Sie Rechnungen erstellen. Die App **Lieferung** wird benötigt, um die Sendungsnummer an PrestaShop zurückzusenden.
- Ein dedizierter Odoo-Benutzer mit Rechten für Verkauf, Lager und Rechnungsstellung sowie ein API-Schlüssel.

Das Modul kommuniziert mit Odoo über **JSON-RPC**. Die PHP-Erweiterung `xmlrpc`, die in PHP 8 entfernt wurde, ist nicht erforderlich.

Installieren Sie die App **Lager** in Odoo, _bevor_ Sie Ihre Produkte senden. Seit Odoo 18 hängt die Bestandsverfolgung eines Produkts von dieser App ab: Ohne sie angelegte Produkte würden nicht im Bestand verfolgt.

## Installation und Update

1. Öffnen Sie im Back-Office _Module > Modul-Manager_, klicken Sie auf _Ein Modul hochladen_ und legen Sie die ZIP-Datei des Moduls ab.
2. Öffnen Sie anschließend die Konfiguration über die Schaltfläche _Konfigurieren_ oder das Menü _Odoo Connector_.

Für ein Update laden Sie die neue Version auf dieselbe Weise hoch: PrestaShop führt das Update aus, und Ihre Einstellungen, Ihr API-Schlüssel und Ihre Zuordnungen bleiben erhalten.

## Einen API-Schlüssel in Odoo erzeugen

1. Melden Sie sich bei Odoo mit dem für die Synchronisation vorgesehenen Benutzer an.
2. Klicken Sie auf Ihren Avatar, dann auf _Mein Profil_ (oder _Präferenzen_), Reiter _Kontosicherheit_, und auf _Neuer API-Schlüssel_.
3. Kopieren Sie den Schlüssel: Er wird nur ein einziges Mal angezeigt.

Ein dedizierter Benutzer (zum Beispiel „PrestaShop Sync“) statt eines persönlichen Administratorkontos sorgt für einen klaren Verlauf in Odoo und ermöglicht es, den Zugriff jederzeit zu widerrufen.

## Reiter Verbindung

- **Odoo-URL**: die Adresse Ihrer Instanz, beginnend mit `https://` (oder `http://`), zum Beispiel `https://meine-firma.odoo.com`.
- **Datenbank**: der genaue Name der Odoo-Datenbank.
- **Login**: der Login (oft die E-Mail) des dedizierten Benutzers.
- **API-Schlüssel**: wird verschlüsselt gespeichert. Lassen Sie das Feld leer, um den aktuellen Schlüssel zu behalten.

Klicken Sie auf **Verbindung testen**: Das Modul zeigt die Odoo-Version, den Benutzer und das Unternehmen an. Klicken Sie dann auf **Listen aus Odoo laden**, um Unternehmen, Lager, Lagerort, Verkaufsteam, Verkäufer und Zahlungsjournal aus Listen auszuwählen. Speichern Sie und aktivieren Sie dann **Synchronisierung aktivieren**.

Aus Sicherheitsgründen wird der gespeicherte API-Schlüssel nie an eine andere Adresse, Datenbank oder einen anderen Login als die gespeicherten gesendet: Um einen anderen Server zu testen, geben Sie dessen API-Schlüssel ein.

Derselbe Reiter bietet außerdem die **Echtzeitverarbeitung** (Änderungen werden direkt nach der Auslieferung der Seite an den Besucher gesendet; ist sie deaktiviert, sendet der Cron sie), den **Testmodus**, das **detaillierte Protokoll**, die **Liste zulässiger IPs** für den Webhook sowie die Aktivierung jedes Datenflusses: Kunden, Produkte, Bestand, Bestellungen.

## Reiter Produkte

- **Produktrichtung**: PrestaShop nach Odoo, Odoo nach PrestaShop oder in beide Richtungen.
- **Titelbild senden**, **Kategoriebaum in Odoo anlegen** (mit der übergeordneten Odoo-Kategorie) und **Einkaufspreis als Kosten senden** (deaktivieren, wenn Odoo die Kosten nach Durchschnitts- oder FIFO-Bewertung berechnet).
- **Odoo-Varianten archivieren, die in PrestaShop fehlen**.
- **Zusätzliche Feldzuordnung**: eine Zeile pro Feld, im Format `odoo_field=prestashop_field`.
- **Odoo nach PrestaShop**: Preis, Name, Referenz und EAN13, Aktivierungsstatus, nach Wahl.
- **Neue Odoo-Produkte importieren**: In Odoo angelegte verkaufbare Produkte werden in PrestaShop angelegt, ihre Odoo-Varianten als Varianten, in der gewählten Kategorie und mit der gewählten Steuerregel, aktiviert oder nicht.

## Reiter Bestand

- **Bestandsführendes System**: Odoo (empfohlen), PrestaShop oder beide. Bestellbewegungen werden nie doppelt gezählt.
- **An PrestaShop gesendete Menge**: die verfügbare Menge (abzüglich Reservierungen, empfohlen, um Überverkäufe zu vermeiden) oder die vorrätige Menge.
- **Odoo-Lager**, das auch für die Bestellungen gilt, und optional ein **bestimmter Lagerort**.

## Reiter Bestellungen

- **Bestellungen an Odoo senden**: sofort bei ihrer Erstellung oder erst nach Zahlung, mit einem Datum, vor dem aufgegebene Bestellungen ignoriert werden.
- **Odoo-Angebot bestätigen** bei Bestellung oder bei Zahlung: Die Bestätigung erstellt den Lieferschein in Odoo.
- **Steuern**: _PrestaShop-Sätze_ (Odoo-Steuern mit gleichem Satz werden verwendet und die Summen stimmen überein) oder _von Odoo berechnen lassen_ (Produktsteuern und Steuerzuordnungen von Odoo).
- **PrestaShop-Status, die den Odoo-Auftrag stornieren**, **Verkaufsteam** und **Verkäufer**.
- **Lieferungen in Odoo aktualisieren PrestaShop**: Bei der Validierung der Lieferung erhält die Bestellung den gewählten Status (standardmäßig Versandt) mit der Sendungsnummer, und der Kunde erhält die Versand-E-Mail.
- **Stornierungen in Odoo aktualisieren PrestaShop**.

Jede Bestellposition verweist auf die Odoo-Variante der PrestaShop-Variante. Versand, Geschenkverpackung und Rabatte werden als eigene Positionen hinzugefügt, wobei die Rabatte nach Steuersatz aufgeteilt werden. Das Modul vergleicht die Summe in Odoo mit der in PrestaShop und meldet jede Abweichung im Protokoll.

## Reiter Rechnungsstellung

- **Odoo-Rechnungen**: nicht erstellen, als Entwurf erstellen oder erstellen und buchen. Die Rechnung wird aus dem bestätigten Auftrag erstellt, bei Bestellung oder bei Zahlung.
- **Zahlung in Odoo erfassen**: Die gebuchte Rechnung einer bezahlten Bestellung wird im passenden Journal als bezahlt markiert.
- **Standard-Zahlungsjournal** und **Journal pro Zahlungsmodul**: eine Zeile pro Modul, im Format `module_name=journal_id`, zum Beispiel `stripe_official=7`.

Ohne konfiguriertes Journal wird die Zahlung nicht erfasst: Das Protokoll weist mit einer Warnung darauf hin, die das betreffende Zahlungsmodul nennt.

## Erstsynchronisation

Befüllen Sie Odoo in einem bestehenden Shop über den Reiter **Werkzeuge**, in dieser Reihenfolge:

1. **Alle Kunden senden**.
2. **Alle Produkte senden**.
3. **Gesamten Odoo-Bestand importieren**, wenn Odoo das bestandsführende System ist.
4. **Bestellungen senden, aufgegeben seit** einem Datum.

Die Aufträge werden vom Cron stapelweise gesendet. Wenn Ihr Katalog oder Ihre Kunden bereits in Odoo existieren, werden sie **wiedergefunden, statt neu angelegt zu werden**: Kunden über ihre E-Mail, Adressen über ihre Referenz, einfache Produkte über ihre Referenz (oder `PS-` ohne Referenz), Produkte mit Varianten über die Referenzen ihrer Varianten und Bestellungen über ihre Herkunft.

Beginnen Sie mit aktiviertem **Testmodus**: Jeder Vorgang wird im Protokoll erfasst, ohne etwas in Odoo zu schreiben. Deaktivieren Sie ihn, sobald Sie das Ergebnis geprüft haben.

## Cron

Der Cron verarbeitet die Warteschlange und liest die in Odoo vorgenommenen Änderungen (Bestand, Produkte, Lieferungen, Stornierungen). Planen Sie ihn alle 1 bis 5 Minuten mit der im Dashboard angezeigten URL ein:

```
curl -s "https://ihr-shop.com/module/dfodooconnect/cron?token=IHR_TOKEN"
```

oder, ohne HTTP-Zeitlimit, über die Kommandozeile des Servers:

```
php /pfad/zu/prestashop/modules/dfodooconnect/cron.php
```

Zwei Läufe finden nie gleichzeitig statt. Die Schaltfläche **Jetzt synchronisieren** im Dashboard startet einen sofortigen Lauf.

## Odoo-Webhooks (Echtzeit aus Odoo)

Ohne Webhook liest der Cron die Änderungen in Odoo bei jedem Lauf. Für eine sofortige Rückmeldung legen Sie ab Odoo 17 ohne Code eine Regel pro Modell unter _Einstellungen > Technisch > Automatisierungsregeln_ an:

- Modelle: _Produkt_, _Produktvariante_, _Quanten_ oder _Lagerbuchung_, _Transfer_, _Verkaufsauftrag_.
- Auslöser: _Bei Speicherung_.
- Aktion: _Webhook-Benachrichtigung versenden_ an die im Dashboard angezeigte Webhook-URL.

Das Token ist obligatorisch: Die im Dashboard angezeigte Webhook-URL enthält es bereits (`?token=`). Für Ihre eigenen Skripte kann es auch im Header `X-DF-Token` gesendet werden. Der empfangene Inhalt wird nie unverändert übernommen: Er gibt nur an, welcher Datensatz sich geändert hat, und das Modul liest ihn über die API erneut aus Odoo.

Eine Anfrage ohne gültiges Token wird mit dem Code 403 abgewiesen. Zusätzlich können Sie die zulässigen IP-Adressen im Reiter Verbindung einschränken.

## Dashboard und Überwachung

Das Dashboard zeigt den Systemzustand (letzter Cron-Lauf, letzter erfolgreicher Odoo-Aufruf, ältester wartender Job, Fehler und Warnungen der letzten 24 h), die Zähler der Warteschlange (_Ausstehend_, _Wird wiederholt_, _In Quarantäne_, _Erledigt_) und die Anzahl der verknüpften Datensätze. Die Reiter **Warteschlange**, **Zuordnungen** und **Protokoll** sind filterbar, und eine Odoo-Infobox auf den Bestell-, Produkt- und Kundenseiten bietet eine Schaltfläche _Jetzt synchronisieren_.

## Die ausfallsichere Warteschlange

Jede Änderung wird in eine Warteschlange gestellt, die erst nach der Auslieferung der Seite an den Kunden verarbeitet wird: Der Bestellprozess wartet nie auf Odoo. Bei einem Fehler wird der Job mit wachsendem Abstand (von 1 Minute bis 24 Stunden) erneut ausgeführt; nach der konfigurierten Anzahl an Versuchen (standardmäßig 8) geht er in Quarantäne und lässt sich mit einem Klick neu starten. Antwortet Odoo nicht mehr, setzt ein Schutzschalter die Aufrufe aus und bewahrt die Jobs auf, ohne ihre Versuche zu verbrauchen; die Synchronisation läuft automatisch weiter, sobald Odoo wieder erreichbar ist.

## Odoo-Datenbank wechseln

Wechseln Sie von einer Odoo-Datenbank zu einer anderen (Testdatenbank zu Produktion, Migration), erkennt das Modul dies anhand der eindeutigen Kennung der Datenbank. Es verwirft dann die Zuordnungen und die Einstellungen der alten Datenbank (Unternehmen, Lager, Lagerort, Team, Verkäufer, Journal) und weist mit einer Meldung darauf hin: Laden Sie die Listen erneut aus Odoo und prüfen Sie die Einstellungen. Bei der nächsten Synchronisation werden die Datensätze der neuen Datenbank über ihre Referenzen wiedergefunden.

## Synchronisierte Felder

### Kunden

Odoo-Kontakt mit Name (oder Firma), E-Mail, USt-IdNr., SIRET, Land, Region, Sprache und Telefon. Die Rechnungs- und Lieferadressen werden beim Senden der Bestellungen zu untergeordneten Kontakten. Eine von Odoo abgelehnte USt-IdNr. verhindert das Senden nicht: Der Kontakt wird ohne USt-IdNr. angelegt und eine Warnung wird im Protokoll vermerkt.

### Produkte und Varianten

Name, Nettopreis, Kosten, in kg umgerechnetes Gewicht, Referenz, Barcode, Steuer zum gleichen Satz (Dienstleistungssteuer für virtuelle Produkte), Kategorie und Bild. Jede Variante ist mit einer Odoo-Variante verknüpft; Attribute und ihre Werte werden bei Bedarf angelegt. Ein unverändertes Produkt wird in Odoo nicht neu geschrieben.

### Bestand

Pro Variante, im gewählten Lager oder Lagerort.

### Bestellungen

Kunde, Rechnungs- und Lieferadresse, Positionen pro Variante, Versand, Geschenkverpackung, Rabatte, Währung über die Preisliste, Lager, Team und Verkäufer.

## Fehlerbehebung

- **„Authentication refused by Odoo“**: Login oder API-Schlüssel ist falsch, oder der Schlüssel wurde widerrufen. Erzeugen Sie einen neuen Schlüssel.
- **„Odoo closed the connection: check the database name“**: Die angegebene Datenbank existiert auf diesem Server nicht.
- **„Odoo redirects this URL“**: Verwenden Sie die in der Meldung angegebene Adresse (oft die `https://`-Version).
- **„No Odoo sale tax at 20%“**: Legen Sie in Odoo eine Verkaufssteuer mit dem angegebenen Satz an, als Prozentsatz und ohne Steuer im Preis.
- **„No Odoo payment journal for payment module…“**: Wählen Sie im Reiter Rechnungsstellung ein Standard-Zahlungsjournal oder ein Journal pro Modul.
- **Die Sendungsnummer kommt nicht zurück**: Installieren Sie die App Lieferung in Odoo. Der Status Versandt funktioniert auch ohne sie.
- **„Total mismatch“**: Die Summe in Odoo weicht von der in PrestaShop ab; prüfen Sie die Odoo-Steuern, die den Steuersätzen der Bestellung entsprechen.
- **Bestand oder Lieferungen kommen nicht zurück**: Prüfen Sie, ob der Cron läuft (Datum des letzten Cron-Laufs im Dashboard) und welche Richtung konfiguriert ist.
- **Ein Job ist in Quarantäne**: Lesen Sie seine Meldung im Reiter Warteschlange, beheben Sie die Ursache und starten Sie ihn dann erneut.

## Deinstallation

Die Deinstallation entfernt die Zuordnungs-, Warteschlangen- und Protokolltabellen sowie die Einstellungen des Moduls. **Ihre Daten in Odoo werden nicht verändert.** Bei einer Neuinstallation werden die vorhandenen Datensätze in Odoo über ihre Referenzen wiedergefunden, ohne Duplikate.
