Zum Inhalt springen

Odoo Contacts

Odoo speichert Kontakte (Kunden, Lieferanten, Ansprechpartner) im Modell res.partner. Ab Odoo 19 bietet Odoo dafür die JSON-2-API: Jede Methode eines Modells ist eine Adresse /json/2/<Modell>/<Methode>, die Anmeldung erfolgt mit einem API-Schlüssel.

  1. In Odoo: Klicken Sie oben rechts auf Ihren Namen → Mein Profil → Kontosicherheit → Neuer API-Schlüssel. Kopieren Sie den Schlüssel; Odoo zeigt ihn nur einmal.
  2. In RUNOS: Konnektoren → Neu → Leerer Konnektor. Name Odoo, Base URL https://ihrefirma.odoo.com, Auth-Typ API key, den Schlüssel einfügen, Header Authorization, Scheme Bearer. Speichern.
  3. Haben Sie mehrere Datenbanken auf einem Server, tragen Sie unter Erweitert → Extra JSON die Datenbank ein: { "Database": "ihrefirma" }.

Mehr unter ApiKey.

{
"Type": "HttpRequest",
"Name": "KontaktSuchen",
"Parameters": {
"Url": "/json/2/res.partner/search_read",
"Method": "POST",
"Connector": "Odoo",
"Headers": { "X-Odoo-Database": "{{connector.Odoo.ExtraJson.Database}}" },
"Body": {
"domain": [ [ "email", "=ilike", "{{InitialData.Email}}" ] ],
"fields": [ "name", "email", "phone", "company_name" ],
"limit": 5
}
}
}
  • domain ist der Suchfilter von Odoo: eine Liste von Bedingungen [Feld, Operator, Wert], z. B. ["is_company", "=", true] oder ["name", "ilike", "Muster"].
  • Die Antwort ist eine Liste der gefundenen Kontakte. Den ersten Treffer lesen Sie mit {{KontaktSuchen.Response.Body.0.name}}, die Anzahl mit {{KontaktSuchen.Response.Body.count}}.
  • Ohne X-Odoo-Database (bei nur einer Datenbank) bleibt der Header leer und wird nicht gesendet.

Zusammen mit IF: Nur wenn die Suche nichts gefunden hat, wird der Kontakt angelegt.

{
"Type": "If",
"Name": "NeuerKontakt",
"Parameters": {
"Condition": "{{KontaktSuchen.Response.Body.count}} == 0",
"Do": [
{
"Type": "HttpRequest",
"Name": "KontaktAnlegen",
"Parameters": {
"Url": "/json/2/res.partner/create",
"Method": "POST",
"Connector": "Odoo",
"Headers": { "X-Odoo-Database": "{{connector.Odoo.ExtraJson.Database}}" },
"Body": {
"vals_list": [
{
"name": "{{InitialData.Name}}",
"email": "{{InitialData.Email}}",
"phone": "{{InitialData.Telefon}}",
"is_company": false
}
]
}
}
}
]
}
}

Odoo antwortet mit der Liste der neuen Kennungen, z. B. [42]; die Kennung steht in {{KontaktAnlegen.Response.Body.0}}.

Ein Webformular oder ein anderes Programm legt eine kleine JSON-Datei mit einem Skriptblock in den Ordner C:\RUNOS\Kontakte:

#RUNOS {"InitialData":{"Name":"Erika Muster","Email":"erika@example.com","Telefon":"+49 30 1234567"}} #RUNOS
{
"Name": "Kontakte nach Odoo",
"Autostart": true,
"Trigger": {
"Type": "File",
"Name": "Eingang",
"Parameters": { "Pool": "C:\\RUNOS\\Kontakte", "Filter": "*.json", "DeleteAfter": true }
},
"Actions": [
{ "Type": "HttpRequest", "Name": "KontaktSuchen", "Parameters": { /* wie oben */ } },
{ "Type": "If", "Name": "NeuerKontakt", "Parameters": { /* wie oben */ } }
]
}