Asiakkaat — Odoo → Custobar
Workflow: 🧍♂️ Päivitä asiakkaat Custobariin
ID: H1ZZodL2vhmolnxe
Ajastus: Joka 30 minuutti
Toimintaperiaate
Hakee Odoosta asiakkaat (ei toimittajia), poistaa sähköpostiduplikaatit, ja lähettää 100 asiakkaan erissä Custobariin.
flowchart LR
A["⏰ Schedule<br/>30 min"] --> B["📥 Get Odoo<br/>Contacts"]
B --> C["🧹 Remove<br/>Duplicates"]
C --> D["🔄 Transform<br/>Customers"]
D --> E["📦 Batch<br/>Builder"]
E --> F["🔁 Loop"]
F -->|erä| G["📤 HTTP POST<br/>/customers/upload/"]
G --> H["⏳ Wait 10s"]
H --> F
F -->|valmis| I["💾 Save<br/>Timestamp"]
I --> J["✅ Done"]
Odoo-haku
| Asetus | Arvo |
|---|---|
| Malli | res.partner |
| Operaatio | search_read (getAll) |
| Suodattimet | customer_rank > 0, write_date > edellinen_ajo |
| Credential | Odoo account |
Haettavat kentät:
| Odoo-kenttä | Kuvaus |
|---|---|
phone_sanitized |
Puhelinnumero (kansainvälinen muoto) |
email_normalized |
Sähköposti (normalisoitu) |
display_name |
Näyttönimi |
name |
Nimi |
create_date |
Luontiaika |
write_date |
Muutosaika |
city |
Kaupunki |
country_code |
Maakoodi (esim. FI) |
street |
Katuosoite |
vat |
ALV-tunnus |
zip |
Postinumero |
company_name |
Yrityksen nimi |
customer_rank > 0
Odoon res.partner-malli sisältää sekä asiakkaita, toimittajia, yhteyshenkilöitä yms. Suodatin customer_rank > 0 rajaa haun vain asiakkaisiin.
Duplikaattien poisto
Ennen Custobar-lähetystä poistetaan duplikaatit email_normalized-kentän perusteella:
const seen = new Set();
return $input.all().filter(item => {
const email = item.json.email_normalized;
if (!email || seen.has(email)) return false;
seen.add(email);
return true;
});
Tämä varmistaa, ettei samaa sähköpostiosoitetta lähetetä useaan kertaan (Odoo voi sisältää duplikaattikontakteja eri yhtiöissä).
Custobar-data
Endpoint: POST https://rst-steel.custobar.com/api/customers/upload/
{
"customers": [
{
"external_id": "5678",
"first_name": "Matti Meikäläinen",
"email": "matti@example.com",
"phone_number": "+358401234567",
"street_address": "Teollisuustie 5",
"city": "Tampere",
"zip_code": "33100",
"country": "FI",
"vat": "FI12345678",
"company": "Meikäläinen Oy",
"date_joined": "2024-03-15 08:30:00"
}
]
}
Kenttäkartoitus
| Custobar-kenttä | Odoo-lähde | Muunnos |
|---|---|---|
external_id |
id |
Muunnetaan merkkijonoksi |
first_name |
display_name |
Vain jos ei false |
email |
email_normalized |
Vain jos ei false |
phone_number |
phone_sanitized |
Vain jos ei false |
street_address |
street |
Vain jos ei false |
city |
city |
Vain jos ei false |
zip_code |
zip |
Vain jos ei false |
country |
country_code |
Vain jos ei false |
vat |
vat |
Vain jos ei false |
company |
company_name |
Vain jos ei false |
date_joined |
create_date |
Suoraan |
Tyhjät kentät
Kaikki kentät (paitsi external_id ja date_joined) lisätään Custobar-dataan vain jos niillä on oikea arvo. Odoon false-arvoja ei lähetetä. Tämä estää Custobarin olemassa olevien tietojen ylikirjoittamisen tyhjillä arvoilla.