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.
Einmalig: API-Schlüssel und Konnektor
Abschnitt betitelt „Einmalig: API-Schlüssel und Konnektor“- 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.
- In RUNOS: Konnektoren → Neu → Leerer Konnektor. Name
Odoo, Base URLhttps://ihrefirma.odoo.com, Auth-Typ API key, den Schlüssel einfügen, HeaderAuthorization, SchemeBearer. Speichern. - Haben Sie mehrere Datenbanken auf einem Server, tragen Sie unter Erweitert → Extra JSON die Datenbank ein:
{ "Database": "ihrefirma" }.
Mehr unter ApiKey.
Kontakte suchen
Abschnitt betitelt „Kontakte suchen“{ "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 } }}domainist 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.
Kontakt anlegen, wenn er fehlt
Abschnitt betitelt „Kontakt anlegen, wenn er fehlt“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}}.
Der ganze Workflow
Abschnitt betitelt „Der ganze Workflow“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 */ } } ]}