Puppeteers Blog

Helpotusta työsuhde-etujen lataamiseen: Edenred-latausten automatisointi

January 27, 2023 

Kyllästyimme Edenred-korttien latauksen kankeuteen ja automatisoimme latausprosessin. Tässä artikkelissa kerrotaan, miten automaatio toteutettiin CSV-tiedostoilla ja ohjelmistorobotilla. Lisäksi artikkelista löytyy linkit GitHub-sivustollemme, josta voit ladata koodit käyttöösi.

Edenred-korttien lataustapoja

Edenred on yksi suurimmista suomalaisista työsuhde-etujen tarjoajista. Edenred tarjoaa fyysisiä ja virtuaalisia kortteja, joihin voidaan ladata työntekijöiden lounas-, virike- ja työmatkaetuja. Edenred-korttien lataamiseen on lukuisia tapoja, mutta kaikki ne vaativat merkittävästi käsityötä työntekijän ja/tai työnantajan puolelta. Vaikka työntekijät voivatkin automatisoida omat saldolatauspyyntönsä, pitää työnantajan silti muistaa hyväksyä ne. Tässä artikkelissa esitellään tapa automatisoida Edenred lataus kokonaan CSV-tiedostolla ja Robot Frameworkia käyttävällä ohjelmistorobotilla. Ainoastaan Edenredin lähettämien saldotilauslaskujen maksu pitää tehdä käsin, joskin tämäkin olisi haluttaessa automatisoitavissa.

Edenredin logo

CSV:n-tiedostojen käyttö on hyödyllistä niille työnantajille, jotka haluavat tarjota Edenred-edut työntekijöilleen ilman ylimääräistä saldotilauksiin liittyvää byrokratiaa ja inhimillisten virheiden mahdollisuutta. Erityisen hyvin tämä malli toimii silloin, kun työntekijöiden korteille ladattavat summat pysyvät pääosin samoina kuukaudesta toiseen.

Edenred-latauksessa käytetty CSV-tiedosto

Työnantaja voi ladata työntekijöiden Edenred-korteille saldoa CSV-tiedoston avulla. Alla Edenredin tarjomana malli-CSV-tiedoston dokumentaatio:

# VERSIO: 1.0.0.7,,,,,,,,,,,,,,,,,
# ,,,,,,,,,,,,,,,,,
#TYHJÄT RIVIT JA RIVIT JOTKA ALKAVAT #-MERKILLÄ JÄTETÄÄN HUOMIOIMATTA,,,,,,,,,,,,,,,,,
#TÄHDELLÄ * MERKITYT KENTÄT OVAT PAKOLLISIA,,,,,,,,,,,,,,,,,
#TÄHDELLÄ ** MERKITYÍSTÄ KENTISTÄ TOINEN TULEE TÄYTTÄÄ,,,,,,,,,,,,,,,,,
# ,,,,,,,,,,,,,,,,,
# TOIMINTO KOODIT:,,,,,,,,,,,,,,,,,
#    N = TILAA UUSI KORTTI,,,,,,,,,,,,,,,,,
#    R = TILAA KORTTI UUDELLEEN,,,,,,,,,,,,,,,,,
#    U = PÄIVITÄ TYÖNTEKIJÄN TIEDOT (PL. HENKILÖTUNNUS JA ASIAKASNUMERO),,,,,,,,,,,,,,,,,
#    D = POISTA KORTINHALTIJA,,,,,,,,,,,,,,,,,
#    H = MUUTA KORTINHALTIJA POISSA TILAPÄISESTI TILAAN,,,,,,,,,,,,,,,,,
#    L = LATAA SALDOA,,,,,,,,,,,,,,,,,
# ,,,,,,,,,,,,,,,,,
# TYÖNTEKIJÄN TYÖSUHTEEN MUOTO:,,,,,,,,,,,,,,,,,
#    F = KOKOAIKAINEN,,,,,,,,,,,,,,,,,
#    P = OSA-AIKAINEN,,,,,,,,,,,,,,,,,
#    T = MÄÄRÄAIKAINEN,,,,,,,,,,,,,,,,,
#    I = PASSIIVINEN,,,,,,,,,,,,,,,,,
# ,,,,,,,,,,,,,,,,,
#TOIMINTOKOODI*,HENKILÖTUNNUS*,ETUNIMI*,SUKUNIMI*,OSOITE*,POSTINUMERO*,KAUPUNKI*,PUHELINNUMERO**,SÄHKÖPOSTIOSOITE**,TYÖNTEKIJÄNUMERO,KUSTANNUSPAIKKA,OSASTO,KERROS,ALUE,TYÖSUHTEEN MUOTO,LOUNAS_LATAUS,VIRIKE_LATAUS,TRANSPORT_LATAUS

Kuten yltä näkyy, CSV-tiedostoilla voi tarvittaessa tehdä paljon muutakin kuin ladata saldoa.

Saldon lataamisessa kaksi ensimmäistä kenttää ovat välttämättömiä:

  • TOIMINTOKOODI: L (lataa saldoa)
  • HENKILÖTUNNUS: yhdistää ladattavan saldon työntekijään

Kolme viimeistä kenttää määrittävät ladattavan saldon määrän saldon tyypin mukaisesti:

  • LOUNAS_LATAUS: ladattava lounasedun määrä
  • VIRIKE_LATAUS: ladattava virike-edun määrä
  • TRANSPORT_LATAUS: ladattava työmatkaedun määrä

Muut CSV:n kentät ovat todennäköisesti saldolatauksessa tarpeettomia.

Huom: CSV-tiedosto käyttää vanhentunutta ISO-8859-1 merkistökoodausta, mikä on syytä ottaa huomioon sitä avattaessa. Windowsissa esimerkiksi Notepad++-tekstieditori pystyy käsittelemään ISO-8859-1 merkistökoodausta käyttäviä tekstitiedostoja oikein. Mikäli tekstieditori ei osaa käsitellä kyseistä merkistökoodausta, on riskinä se, että CSV-tiedostoon päätyy Unicode-merkkejä ja saldon lataaminen voi epäonnistua. Tyypillisesti näin käy skandinaavisten kirjaimien ("ä", "ö" ja "å") kanssa, koska niiden koodit ovat eri UTF-8- ja ISO-8859-1-merkistökoodauksissa.

Eri edut ladataan eri CSV-tiedostoilla

Edenredin tilaustyökalussa (ticket.edenred.fi) valitaan heti alussa tuote, jonka parissa operoidaan. Tuote voi olla joko "Edenred-kortti" (lounas- ja virike-etu) tai "Edenred Työmatka-kortti" (työmatkaetu):

ticket.edenred.fi:n tuotevalikko
ticket.edenred.fi:n tuotevalikko

Kun tuote on valittu, kaikki toiminnot ticket.edenred.fi-palvelussa kohdistuvat kyseiseen korttityyppiin. Tämä tarkoittaa CSV-latauksen tapauksessa sitä, että lounas ja virike-edut ladataan yhdellä CSV-tiedostolla ja työmatkaedut toisella.

Lounas- ja virike-edun määrittäminen

Lounas- ja virike-etua ladataan seuraavan kaltaisella rivillä:

L,301280-012X,Matti,Mallikas,Esimerkki,20100,Turku,0401231234,[email protected],,,,,,F,150,33,

Yllä Matti Mallikas saa lounasetua 150€ ja virike-etua 33€. Työmatkaetua vastaava viimeinen kenttä jätetään tyhjäksi. Vastaava rivi pitää lisätä jokaiselle työntekijälle, jolle ladataan jompaa kumpaa etua.

Työmatkaedun määrittäminen

Työmatkaetua ladataan seuraavasti:

L,301280-012X,Matti,Mallikas,Esimerkki,20100,Turku,0401231234,[email protected],,,,,,F,,,55

Yllä Matti Mallikas saa työmatkaetua 55€. Lounas- ja virike-edut määrittävät kentät eli kolmanneksi ja toiseksi viimeinen jätetään tyhjiksi. Kullekin työmatkaetua nauttivalle työntekijälle luodaan CSV-tiedostoon oma rivi.

Edenred-lataus CSV-tiedostolla

Ennen Edenred-latauksen automaatiota käyn lyhyesti läpi käsin tehtävän latausprosessin. Heti ticket.edenred.fi-palveluun kirjauduttuasi valitse oikean tuote (ks. yllä) eli "Edenred-kortti" (lounas- ja virike-etu) tai "Edenred-työmatkakortti" (työmatkaetu). Sen jälkeen napsauta "Työntekijöiden hallinta" ja sitten "Päivitys CSV-tiedostolla":

ticket.edenred.fi: päivitys csv-tiedostolla
ticket.edenred.fi: päivitys csv-tiedostolla

Sivun alaosasta voi valita ladata CSV-tiedoston, joka ladataan. Muista ladata oikean tyyppinen CSV-tiedosto (lounas- ja virike tai työmatka) ja napsauta "Tarkasta".

CSV-tiedoston valinta
CSV-tiedoston valinta

Mikäli CSV-tiedostossa ei ollut ilmiselviä virheitä, pääset valitsemaan etujen latauspäivän ja sen jälkeen vahvistamaan tilauksesi. Älä valitse "haluan laskun heti" mikäli haluat Edenrediltä e-laskun.

Mikäli CSV-tiedoston lataus onnistui, pitäisi CSV-lataussivulla olevassa "Tiedostohistoria"-taulukossa näkyä tekemäsi tilaus tilassa "onnistunut".

Edenred-kortin lataus Robot Frameworkilla

Käsin tehtävä Edenredin CSV-lataus on melko työläs ja mikä pahinta, se pitää muista tehdä noin 18. päivä joka kuukausi, jotta työsuhde-edut ehtivät latautua työntekijöille kuun vaihteen tienoilla. Koska olemme automaatioasiantuntijoita, päätimme automatisoida koko prosessin, jolloin pystymme välttymään ihmisen tekemiltä virheiltä kokonaan.

Edenred ei tarjoa mitään ohjelmointirajapintaa (API), joten päätimme käyttää automaatiotyökaluna avoimen lähdekoodin Robot Frameworkia. Se soveltuu erinomaisesti webbikäyttöliittymien automaatioon ja laajemmin ohjelmistorobotiikkaa vaativiin tehtäviin. Edenredin saldolatauksen automaatiossa Robot tekee ticket.edenred.fi-palvelussa täsmälleen samat toiminnot kuin ihminenkin tekisi, mutta vain paljon nopeammin ja luotettavammin. Robot Framework voidaan asentaa lähes mihin tahansa työpöytäkäyttöjärjestelmään (Linux, Windows, MacOS). Itse käytämme latausrobottimme käyttöjärjestelmänä Linuxia, koska sen päälle on helpoin rakentaa automaatiota.

Edenred-latausrobottimme on käytännössä Linux-virtuaalikone, johon on asennettu graafinen käyttöliittymä, VNC etäkäyttöä varten, verkkoselain sekä Robot Framework tarvittavine lisäosineen (ks. puppet-robot). Edenred-lataus on ajastettu kuun 18. päivään, jolloin Robot ajaa Edenredin latausskriptin (ks. robot-edenred) eri CSV-tiedostoin ja parametrein lounas- ja virike-edulle sekä työmatkaedulle. Mikäli prosessi epäonnistui, saamme hälytyksen Prometheus-valvontajärjestelmän Alertmanagerilta. Robotin ja Prometheuksen välisenä "tulkkina" toimii tarkoitusta varten luomamme skripti (ks. robot-collector), joka muuntaa Robotin raportin (output.xml) oleelliset osat Prometheus Node Exporter Textfile Collectorin kanssa yhteensopivaan tiedostomuotoon. Latausrobottimme myös varmistaa jokaisen saldotilauksen jälkeen, että se on tilassa "onnistunut". Mikäli ongelmia löytyy, saamme siitäkin hälytyksen.

Mikäli Edenredin saldolatausten automaatio kiinnostaa, mutta et halua itse ruveta sitä rakentamaan, ota meihin yhteyttä. Varmimmin yhteyden saa sähköpostilla tai tekstiviestillä.

Samuli Seppänen
Samuli Seppänen
Author archive
menucross-circle