Palkanlaskenta (HR Payroll)#

Palkanlaskennassa tunnit + kulut + sopimuspalkka koostetaan palkkalaskelmiksi (hr.payslip). Tämän jälkeen ne siirtyvät Netvisoriin maksatusta varten.

Kuukausirytmi#

Tyypillinen kuukausi:

PäiväTehtävä
1‑31Asentajat kirjaavat tunteja PWA:sta, työnjohtaja hyväksyy viikoittain
30‑31Toimisto sulkee kuukauden, varmistaa että kaikki on hyväksytty
1. seuraavan kk:nPalkkalaskelmien luonti edellisen kuukauden datasta
1.–5.Palkkalaskelmien tarkistus, korjaukset
5.–10.Lähetys Netvisoriin maksatusta varten
14./15.Palkka maksuun (Netvisorin kautta)

Palkkalaskelman luonti#

HR → Payroll → Payslips → Create.

Tyypilliset kentät:

  • Employee — kuka
  • Period — esim. 1.5.2026 – 31.5.2026
  • Contract — vasta valittavissa kun työsopimus on olemassa

Tämän jälkeen → Compute Sheet lasketaan rivit työntekijän kontrahdin + ajanjakson tuntien + kulujen perusteella.

Sopimustyypit (hr.contract)#

ELT:llä yleisesti:

  • Kuukausipalkka — yleinen toimisto + työnjohto
  • Tuntipalkka — joillain asentajilla, varsinkin osa-aikaisilla
  • Provisiopohjainen — myyntipuoli (jos sovellettavissa)

Sopimus pitää olla active-tilassa palkkakausi alkaessa. Erääntyneet sopimukset (esim. määräaikainen joka päättyy) on pidettävä silmällä.

Tunnit palkkalaskelmaan#

Jos asentaja on tuntipalkkainen, hänen FSM-tehtävänsä tunnit siirtyvät automaattisesti palkkalaskelmaan jos:

  • Tunti on hyväksytty (state = Approved).
  • Tunti on palkkakauden sisällä.
  • Tunti on billable=False (jos billable=True → vain laskutus, ei palkka).

Vakituisilla kuukausipalkkaisilla tunnit eivät vaikuta palkkaan suoraan, mutta ne näkyvät palkkalaskelmalla referenssitietona.

Kulut palkkalaskelmaan#

Hyväksytyt HR Expenses -rivit (kilometrikorvaukset, päivärahat, materiaalit) siirtyvät palkkalaskelmaan nettomaksuna (ei veroja). Asentaja saa nämä yhdellä maksulla palkan rinnalla.

Verojen ja sivukulujen huomiointi#

Suomi-spesifisesti:

  • Ennakonpidätys määritetään asentajan verokorttitilanteella ja sopimuksessa.
  • TyEL / työeläke ELT:n velvoite vakuutusyhtiöltä saatavasta prosentista.
  • Sairausvakuutusmaksu ja työttömyysvakuutus valtion prosenttitaulukoiden mukaan.

Nämä lasketaan automaattisesti sopimuksen + voimassa olevien verolainsääntöjen perusteella, jotka päivitetään vuosittain Odoo:n HR Payroll Localization moduulista.

Lähetys Netvisoriin#

Per palkkalaskelma (manuaalinen):

  1. Avaa Payslip.
  2. Action → Send to Netvisor.
  3. Netvisor ottaa vastaan, palauttaa key:n.

Kaikki kerralla (jos auto-flag tai cron päällä):

  • Cron Send payslips to Netvisor, kuukausittain 1. päivä klo 08:00 — oletuksena pois päältä.
  • Liput auto_send_payroll=True triggaa action_payslip_done- yhteydessä.

Suositus: manuaalinen kunnes vahvistat että XML rakentuu oikein ja Netvisorissa palkat näkyvät kuten Odoo:ssa. Vasta sen jälkeen kytke automatiikkaan.

Vianetsintä#

Tunnit eivät siirry palkkalaskelmaan
- **Hyväksynnät**: Onko jokainen rivi `state=Approved`? Submitted ei siirry. - **Sopimus**: Onko `hr.contract` aktiivinen tunnin päivänä? - **Billable-flag**: Jos billable=True, rivi laskutetaan asiakkaalta, ei palkkaan. Tarkista että tämä on oikein per työntekijä.
Payslip-state jumissa ‘Draft’ tilassa
Compute Sheet on ehkä epäonnistunut. Avaa chatter — virheet lokitettu sinne. Tyypilliset: - Puuttuva työaikataulu sopimuksessa - Tyhjä `wage` -kenttä - Verokorttitiedot puuttuvat
Netvisor-lähetys palauttaa virheen
- Onko **Y-tunnus** Netvisor-asetuksissa oikein muodossa `1234567-8`? - Onko **kaikilla työntekijöillä henkilötunnus** Odoon employee- formissa? Netvisor vaatii. - Onko **palkkakauden numerointi yksilöivä**? Joskus duplikaatti Netvisor-puolelta estää uudelleenlähetyksen. [Netvisor-integraatio](../netvisor/) vianetsintä antaa lisätietoa.