Netvisor-kirjanpitointegraatio#

ELT:n kirjanpito tehdään Netvisor:ssa, mutta tehtävien laskutus, palkanlaskenta ja varastonhallinta tehdään Odoo:ssa. Tämän sillan rakentaa netvisor_integration -moduuli.

Mitä missäkin suunnassa#

SuuntaMitäAikatauluTila
NV → OdooOstolaskutPäivittäin 06:00✅ Aktiivinen cron
NV → OdooMaksu-statusPäivittäin 07:00✅ Aktiivinen cron
Odoo → NVMyyntilaskutAutomaattinen + manuaalinen
Bi-suuntainenAsiakkaat syncManuaalinen wizard
Bi-suuntainenTuotteet syncManuaalinen wizard
Odoo → NVPalkanmaksuKuukausittain 1. päivä 08:00⚠ Cron pois päältä, manuaalinen aktivointi
Odoo → NVKulut ostolaskuina⚠ Cron pois päältä

Asetukset (vain admin)#

Settings → Netvisor Integration.

Pakolliset credentialsit:

  • Partner ID — Netvisorilta saatu kumppanitunnus
  • Partner key — Netvisorilta saatu (salainen)
  • Customer ID — Käyttäjätunnus joka näkyy Netvisor → Asetukset → API-tunnisteet
  • Customer key — Yllä olevan käyttäjän API-avain
  • Organisation ID (Y-tunnus) — muodossa 1234567-8
  • API base URL — oletus https://integration.netvisor.fi/ — älä muuta paitsi testausta varten
**`Test connection` -nappi** Settings-näkymässä hakee päivän ostolaskut Netvisorista. Antaa OK tai virheviestin. Aja aina kun credentialsit on syötetty / muutettu.

Ostolaskut Netvisorista Odoo:hon#

Cron 06:00 päivittäin hakee eilisen ostolaskut Netvisorista ja luo ne vendor billeinä Odoo:hon. Duplikaatit havaitaan Netvisor-ID:n perusteella.

Käsittely:

  1. Accounting → Vendor Bills -listalle ilmestyy uusia rivejä muodossa “From Netvisor: 2026-05-23”.
  2. Kunkin rivin state on Draft — ei vielä julkaistu.
  3. Toimisto tarkistaa rivit (PO matchaus, tilien jako, kustannusten kohdistus) ja painaa Post.
  4. Maksu hoidetaan Netvisor-puolella, palaa tieto seuraavalle maksu-sync:lle.

Manuaalinen ajo#

Settings → Netvisor Integration → “Run import now” -nappi. Hakee tämän hetken päivän laskut (joita ei vielä ole). Käytä jos:

  • Cron jäi väliin (palvelin alhaalla 06:00 aikaan).
  • Haluat testata että integraatio elää.
  • Olet juuri syöttänyt credentialsit ja haluat varmistaa.

Maksu-status Netvisorista#

Cron 07:00 päivittäin tarkistaa Netvisorista mitä myyntilaskuja on maksettu. Vastaavat Odoo-laskut merkitään payment_state = paid.

Tarkistus on 90 päivän jaksolta — vanhempia maksuja ei seurata enää.

Myyntilaskut Odoo:sta Netvisoriin#

Kun lasku confirmoidaan Odoo:ssa (account.move state = “posted”), se voidaan lähettää Netvisoriin automaattisesti tai manuaalisesti.

Automaattinen lähetys#

Settings → Netvisor → “Auto-send invoices on confirm” -lippu päälle → confirmaation override kutsuu Netvisor-lähetystä.

**Pidä tämä pois päältä kunnes olet testannut manuaalisesti!** Vasta kun tiedät että XML rakentuu oikein ja Netvisor hyväksyy laskut omiin teknisiin tarkistuksiin (Y-tunnukset, VAT, jne.), voit ottaa auto-send:in käyttöön. Muuten saat haitallisia rivejä asiakaslokeihin.

Manuaalinen testi#

  1. Avaa Accounting → Customer Invoices, valitse yksi confirmoitu lasku.
  2. Yläosan toimet-valikko → “Send to Netvisor”.
  3. Onnistuessa: account_move.netvisor_invoice_id saa Netvisorin ID:n. Voi tarkistaa Netvisorista että lasku näkyy.
  4. Virheessä: katso chatter — error logitettu sinne.

Resend#

Jos lasku on netvisor_payment_synced=True, järjestelmä estää uudelleenlähetyksen. Käytä action_resend_to_netvisor() joka nollaa lipun.

Asiakkaat ja tuotteet sync#

Bi-suuntainen wizard kumpaakin varten.

  • Asiakkaat: Odoo Contacts → Netvisor Customer. Matchaus Y-tunnuksella (muille kuin yksityishenkilöille). Yksityishenkilöt matchataan nimellä + osoitteella.
  • Tuotteet: Odoo Product → Netvisor Product. Matchaus Odoo-tuotekoodilla (default_code).

Aja kummatkin kerran kuukaudessa tai kun lisätään merkittävästi uutta dataa.

Palkanmaksu (cron pois oletuksena)#

Palkkalaskelmat halutaan tarkistaa ennen Netvisor-lähetystä — siksi cron on oletuksena pois. Vaihtoehdot:

  1. Manuaalinen lähetys per palkkalaskelma: HR → Payroll → yksittäinen Payslip → “Send to Netvisor”.
  2. Automaattinen payslip-done-tilan triggerillä: Settings → Netvisor → “Auto-send payslip on confirm” -lippu. Aktivoituu payslip.action_payslip_done:ssa.
  3. Aktivoi cron: Settings → Technical → Crons → “Send payslips to Netvisor” → Active = True.

Suositus: manuaalisesti aluksi, kunnes vahvistat että XML rakentuu oikein.

Vianetsintä#

‘Settings → Netvisor’ on tyhjä / kaatuu
Jos Settings-sivu paukkuu kokonaan ("Failed to compile template… Unexpected identifier 'ctx'"), kyseessä on JS-bundlerin virhe. Korjattu 18.0.1.12.1+. Jos vielä näkyy: 1. Tarkista asennettu versio: **Apps → Netvisor → Update** 2. Tyhjennä asset-cache: `psql ... DELETE FROM ir_attachment WHERE url LIKE '/web/assets/%'` ja restartti
‘Test connection’ antaa ‘authentication failed’
- Tarkista Partner ID/Key ja Customer ID/Key tarkasti — kopio-virhe on tyypillinen. - Y-tunnus on muodossa `1234567-8` (välimerkkinä viiva). - API base URL on `https://integration.netvisor.fi/` (slash lopussa). - Netvisor saattaa olla huoltotauolla — sammanaikaisesti, kokeile parin tunnin päästä.
Myyntilasku ei lähde Netvisoriin
- Asiakkaan **Y-tunnus** tai **henkilötunnus** pitää olla syötetty. Netvisor tarvitsee jommankumman. - Tuotteilla pitää olla **default_code** (Internal Reference). - VAT-luokat pitää olla mapatatut **Account Tax → Netvisor** ‑välilehdessä. - Kahterin viesti antaa yleensä tarkan virheen.
Lasku näkyy molemmissa järjestelmissä erilaisina
Yleensä tämä on **VAT-erotuksia**: Odoo laskee per-rivi VAT:in eri tarkkuudella kuin Netvisor (esim. pyöristyssäännöt). Saattaa poiketa muutamia senttejä. Suurempi ero (kymmeniä euroja) on aina vika. Vertaa rivit kahdesta järjestelmästä rinnakkain.