# Dein Odoo verbinden

> Schritt-für-Schritt-Anleitung, wie du dein Odoo-ERP mit FFN Connect verbindest — inklusive Übersicht, woher du welche Angaben in Odoo findest.

## Schritt 1: Voraussetzungen

FFN Connect kommuniziert mit deinem Odoo über die offizielle Odoo-Schnittstelle (JSON-RPC). Für die Einrichtung benötigst du vier Angaben aus deinem Odoo:

| Angabe | Wo du sie in Odoo findest |
|--------|---------------------------|
| **Odoo-URL** | Die Adresse, unter der dein Odoo im Browser läuft, z. B. `https://meinefirma.odoo.com` |
| **Datenbankname** | Siehe Abschnitt **Datenbanknamen herausfinden** weiter unten. |
| **Benutzername** | Die E-Mail-Adresse, mit der sich der Odoo-Benutzer anmeldet. |
| **API-Schlüssel** | Wird im Profil des Benutzers unter **Kontosicherheit** erstellt (siehe unten). |

> [!TIPP]
> Lege für die Anbindung am besten einen eigenen technischen Benutzer an (z. B. „FFN Connect"). So bleibt die Verbindung bestehen, auch wenn ein Mitarbeiterkonto deaktiviert wird.

### Datenbanknamen herausfinden

- **Odoo Online:** Der Datenbankname ist der erste Teil deiner Odoo-Adresse — bei `https://meinefirma.odoo.com` also `meinefirma`. Du findest ihn außerdem in der Datenbank-Übersicht deines Odoo.com-Kontos.

  <!-- TODO Bild: Browser-Adresszeile einer Odoo-Online-Instanz mit markierter Subdomain -->

- **Selbst gehostetes Odoo:** Der Name, den du beim Anmelden in der Datenbank-Auswahl siehst, bzw. die Liste im Datenbankmanager unter `https://deine-odoo-adresse/web/database/manager`. Wird dort nichts angezeigt (Datenbankliste aus Sicherheitsgründen deaktiviert), frage die Person, die dein Odoo betreibt.

  <!-- TODO Bild: Odoo-Datenbankmanager bzw. Login-Screen mit Datenbank-Auswahl -->

### API-Schlüssel in Odoo erstellen

1. Melde dich in Odoo mit dem Benutzer an, der für die Anbindung verwendet werden soll.
2. Klicke oben rechts auf dein Profilbild und wähle **Meine Einstellungen** (bzw. **Präferenzen** / „Preferences").

   ![Odoo-Profilmenü oben rechts mit dem Eintrag „Preferences"](https://ffn-connect.de/docs-assets/merchants/odoo/connect-odoo/_images/01-odoo-preferences.png)

3. Öffne den Reiter **Kontosicherheit** („Account Security").
4. Klicke auf **Neuer API-Schlüssel** („New API Key") und bestätige dein Passwort.

   ![Reiter „Account Security" mit dem Button „New API Key"](https://ffn-connect.de/docs-assets/merchants/odoo/connect-odoo/_images/02-odoo-account-security.png)

5. Vergib eine Beschreibung (z. B. „FFN Connect") und wähle — falls dein Odoo eine Gültigkeitsdauer anbietet — die längstmögliche Laufzeit.
6. Kopiere den angezeigten Schlüssel sofort: Er wird **nur ein einziges Mal** angezeigt und ist genau 40 Zeichen lang.

Bestehende API-Schlüssel siehst du an derselben Stelle. Dort kannst du sie auch wieder löschen — zum Beispiel, wenn du einen abgelaufenen Schlüssel durch einen neuen ersetzt:

![Liste der API-Schlüssel unter „Account Security" mit Lösch-Symbol](https://ffn-connect.de/docs-assets/merchants/odoo/connect-odoo/_images/03-odoo-api-keys-list.png)

*Screenshots: [Odoo-Dokumentation](https://www.odoo.com/documentation/18.0/developer/reference/external_api.html), lizenziert unter [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/).*

<!-- TODO Bilder später durch eigene deutschsprachige Screenshots aus einer aktuellen Odoo-Instanz ersetzen (Quellenangabe dann entfernen) -->

> [!HINWEIS]
> - Siehst du den Reiter **Kontosicherheit** nicht, aktiviere in Odoo den Entwicklermodus (**Einstellungen → Allgemeine Einstellungen → Entwicklertools**) und versuche es erneut.
> - Läuft der API-Schlüssel ab, bricht die Verbindung ab. Notiere dir das Ablaufdatum und erneuere den Schlüssel rechtzeitig.

### Berechtigungen des Benutzers

Der Benutzer, dessen API-Schlüssel du verwendest, braucht in Odoo (**Einstellungen → Benutzer & Unternehmen → Benutzer**) mindestens diese Zugriffsrechte:

- **Verkauf:** Benutzer — zum Lesen der Verkaufsaufträge, Auftragspositionen und Versandmethoden
- **Lager:** Benutzer — zum Abrufen und Validieren der Lieferungen, für Pakete, Chargen und das Lesen der Bestände
- **Lager:** Administrator — zusätzlich nötig, wenn der **Bestandsabgleich** genutzt wird. FFN Connect gleicht Bestände über eine Inventurbuchung ab; diese darf in Odoo 17 und älter nur ein Lager-Administrator ausführen. Ab Odoo 18 genügt auch hier *Lager: Benutzer*.
- **Abrechnung:** Abrechnung — nur nötig, wenn Rechnungs-PDFs aus Odoo an deinen Fulfillment-Dienstleister übertragen werden sollen

> [!HINWEIS]
> FFN Connect löscht in Odoo keine Datensätze. Es werden ausschließlich Lieferungen, Pakete, Chargen und Bestände gelesen, angelegt und aktualisiert.

## Schritt 2: Verkaufskanal hinzufügen

1. Wechsle in deinem Fulfillment-Portal zu **Verkaufskanäle → Verkaufskanal hinzufügen**.
2. Wähle **Odoo** aus.
3. Fülle das Formular aus:
   - **Name:** Frei wählbar (optional), z. B. der Name deines Unternehmens.
   - **Benutzername:** Die Anmelde-E-Mail des Odoo-Benutzers.
   - **API Token:** Der eben erstellte API-Schlüssel (40 Zeichen).
   - **Datenbank:** Der Name deiner Odoo-Datenbank.
   - **Endpoint-URL:** Die Adresse deines Odoo, z. B. `https://meinefirma.odoo.com` — sie muss mit `https://` beginnen und darf **keinen Schrägstrich am Ende** haben.
4. Klicke auf **Weiter**.

<!-- TODO Bild: Screenshot des FFN-Connect-Formulars zum Anlegen des Odoo-Verkaufskanals -->

FFN Connect prüft die Verbindung sofort. Schlägt sie fehl, hilft die Fehlermeldung bei der Eingrenzung:

> [!HINWEIS]
> - **Diese URL ist nicht erreichbar:** Prüfe die Odoo-URL (Tippfehler, `https://`, kein Pfad-Anhang).
> - **Die Zugangsdaten sind nicht korrekt:** Benutzername, API-Schlüssel oder Datenbankname stimmen nicht — häufigste Ursache ist ein falscher Datenbankname oder ein abgelaufener API-Schlüssel.

## Schritt 3: Lager verknüpfen

FFN Connect ruft deine Odoo-Lager und Lagerorte ab und verknüpft sie mit dem Lager deines Fulfillment-Dienstleisters. Navigiere dazu zum Menüpunkt **Lager** und klicke auf **Synchronisieren**.

> [!WICHTIG]
> Der Bestellabruf hängt am verknüpften Lager: Es werden nur Lieferungen aus dem Odoo-Lager abgerufen, das hier verknüpft wurde. Ohne Lager-Verknüpfung werden keine Bestellungen importiert.

> [!HINWEIS]
> Falls hier noch nichts angezeigt wird, muss dir dein Fulfillment-Dienstleister noch die Freigabe für das Lager gewähren. Halte in diesem Fall Rücksprache und klicke dann erneut auf **Synchronisieren**.

## Schritt 4: Artikel synchronisieren

1. Öffne deinen Odoo-Verkaufskanal in FFN Connect, indem du zu **Verkaufskanäle** navigierst und auf den Namen des Verkaufskanals klickst.
2. Klicke auf **Produkte synchronisieren**.
3. Klicke auf **Fortfahren und synchronisieren**.

Der Vorgang kann je nach Anzahl deiner Produkte einige Minuten dauern. Anschließend siehst du deine Produkte in der Tabelle des Verkaufskanals. Damit dein Fulfillment-Dienstleister sie bearbeiten kann, gib sie im Hauptmenü unter **Artikel** frei — wie das geht, erklärt der Artikel [Artikel an den Fulfiller freigeben](/docs/merchants/basics/products/release-to-fulfiller).

### Woher kommen die Artikeldaten aus Odoo?

| Feld in FFN Connect | Feld in Odoo (Produktformular) |
|---------------------|--------------------------------|
| Name | Produktname |
| SKU / Artikelnummer | **Interne Referenz** |
| EAN | **Barcode** |
| Verkaufspreis | Verkaufspreis |
| Einkaufspreis | Kosten |
| Gewicht | Gewicht (Reiter „Lager") |
| HS-Code | HS-Code (Reiter „Lager", bei aktiviertem Außenhandel) |
| Produktbild | Das Hauptbild des Produkts |

> [!WICHTIG]
> Pflege in Odoo für jedes Produkt die **Interne Referenz** — sie wird als Artikelnummer (SKU) für die Zuordnung zwischen Odoo und deinem Fulfillment-Dienstleister verwendet.

> [!HINWEIS]
> - Produkt-Varianten aus Odoo werden als **eigenständige Artikel** importiert — jede Variante erscheint als eigene Zeile.
> - **Chargen (Los-Nummern) inklusive Mindesthaltbarkeitsdatum werden unterstützt**, Seriennummern dagegen nicht. Produkte mit Seriennummern-Verfolgung können nicht über FFN Connect abgewickelt werden.

## Schritt 5: Bestellabruf verstehen

FFN Connect importiert aus Odoo nicht direkt die Verkaufsaufträge, sondern die zugehörigen **Lieferungen** (Warenausgänge, z. B. `WH/OUT/00042`) — angereichert mit den Daten des Verkaufsauftrags (Positionen, Preise, Lieferadresse). Eine Lieferung wird abgerufen, wenn:

- sie zu einem **Verkaufsauftrag** gehört (das Feld „Ursprung" verweist z. B. auf `S00042`),
- sie im **verknüpften Lager** liegt (siehe Schritt 3) und
- sie im Status **Bereit** oder **Wartend** ist.

> [!HINWEIS]
> Für den Versand muss die Lieferung in Odoo den Status **Bereit** haben — die Ware muss also reserviert sein. Bleibt eine Bestellung aus, prüfe zuerst den Status der Lieferung in Odoo.

Bei der Suche nach einer Bestellung kannst du sowohl die Referenz der Lieferung (`WH/OUT/00042`) als auch die des Verkaufsauftrags (`S00042`) verwenden.

Zusätzlich ruft FFN Connect deine **Versandmethoden** aus Odoo ab, damit sie den Versandarten deines Fulfillment-Dienstleisters zugeordnet werden können.

## Schritt 6: Rückmeldung an Odoo

Sobald dein Fulfillment-Dienstleister eine Bestellung versendet hat, meldet FFN Connect das automatisch an Odoo zurück:

- Die **Lieferung wird validiert** und erhält den Status „Erledigt", der Verkaufsauftrag wird entsprechend aktualisiert.
- **Pakete und Trackingnummern** werden an der Lieferung hinterlegt.
- **Bestandsänderungen** (z. B. nach Wareneingang beim Fulfiller) werden als Bestandsanpassungen im verknüpften Lagerort in Odoo gepflegt.
- **Retouren** werden als Retourenbeleg zur ursprünglichen Lieferung in Odoo angelegt und beim Wareneingang der Retoure validiert.

Der Bestand wird alle zehn Minuten abgeglichen, und zwar nur für Artikel, deren Bestand sich seit dem letzten Abgleich geändert hat.

### Chargen

Meldet dein Fulfillment-Dienstleister eine Charge, die es in Odoo noch nicht gibt, legt FFN Connect sie an — das ist für Wareneingänge neuer Ware gewollt. Die Suche ignoriert dabei Groß- und Kleinschreibung, damit aus `l203322` keine zweite Charge neben `L203322` entsteht.

> [!HINWEIS]
> Soll Odoo die alleinige Quelle für Chargen bleiben, können wir das Anlegen neuer Chargen für deinen Verkaufskanal abschalten. Der Bestandsabgleich meldet dann „Charge existiert nicht in Odoo", statt eine anzulegen. Sinnvoll ist das vor allem, wenn Chargen bei Retouren frei eingetippt werden können — dann verhindert es Chargen, die durch Tippfehler entstehen. Sprich uns dafür an.

## Schritt 7: Testbestellungen durchführen

Wir empfehlen, nach Abschluss der Einrichtung eine oder mehrere Testbestellungen durchzuführen, um den Ablauf kennenzulernen:

- **Produkte ignorieren:** Teste, wie du bestimmte Produkte aus Bestellungen ausschließen kannst.
- **Regeln festlegen:** Lege fest, wie bestimmte Situationen behandelt werden sollen.
- **Bestand prüfen:** Erstelle Bestellungen für Produkte ohne Bestand.
- **Fehlerhafte Lieferadressen:** Gib bewusst fehlerhafte Adressen an, um zu sehen, wie diese Bestellungen markiert werden.
