Preskoči na glavno vsebino

Prenos dochádzky z primaERP

Ako preniesť dochádzku z primaERP do Flexi

Avtor: Lenka Haringerová

Evidujete v ABRA Flexi veľký počet zamestnancov s nepravidelným pracovným pomerom a hodinovou mzdou? Chceli by ste sa pri výpočte miezd vyhnúť ručnému zadávaniu odpracovaných hodín? Nechajte zamestnancov evidovať svoju pracovnú dobu v dochádzkovom systéme a údaje z neho automaticky načítavajte do ABRA Flexi. Na evidenciu pracovnej doby možno využiť napríklad šikovnú cloudovú aplikáciu ABRA primaERP.

Výhody evidencie dochádzky v ABRA primaERP vám predstaví stránka modulu Attendance. Ako pomocou rozhrania REST API preniesť výsledné čísla do ABRA Flexi si ukážeme na nasledujúcich riadkoch.

Získanie potrebných mzdových zložiek z ABRA Flexi

Najprv je potrebné z Flexi načítať mzdové zložky, ktoré budete meniť. Na spätný zápis totiž potrebujete ID, ktoré im má Flexi pridelené. Celú prácu možno zjednodušiť tým, že do údajov z Flexi doplníte potrebné číslo a pošlete údaje späť.

Z evidencie mzdova-slozka vo Flexi načítate potrebné mzdové zložky. Údaje, ktoré potrebujete, získate použitím jednoduchej filtrácie. Budete potrebovať získať zložky pre konkrétny rok a mesiac a tiež len zložky HODINOVÁ MZDA. Dotaz do API Flexi teda bude vyzerať napríklad takto:

GET /mzdova-slozka/(cisMzdSloz = 'code:HODINOVÁ MZDA' and rok = 2017 and mesic = 1).json?detail=custom:id,osoba(osbCis,jmeno,prijmeni,titul),hodiny,zmenaCasu,zmenaCastMzd,castkaHod,castMzd&includes=/mzdova-slozka/osoba&limit=0

Tento dotaz vráti všetky zložky typu HODINOVÁ MZDA za január 2017. Výsledok bude obsahovať všetky polia, ktoré potrebujete na to, aby ste mohli tieto zložky bez postihov zmeniť.

Výsledok vrátený z Flexi bude vyzerať nejako takto:

{    "winstrom": {        "@version": "1.0",        "mzdova-slozka": [            {                "id": "13",                "osoba": [                    {                        "id": "1",                        "osbCis": "A02200",                        "jmeno": "K\u00e1ja",                        "prijmeni": "z Norska",                        "titul": ""                    }                ],                "hodiny": "0.0",                "zmenaCasu": "false",                "zmenaCastMzd": "false",                "castkaHod": "800.0",                "castMzd": "0.0"            }        ]    }}

Načítanie údajov z primaERP

Ak máte všetky potrebné údaje z Flexi, načítate si údaje z dochádzkového systému. Ukážeme si načítanie údajov z primaERP, ktorý má rozhranie API, ale nie je to úplne nevyhnutné. V tomto kroku možno načítať napríklad aj excelovskú tabuľku s dochádzkou. Dôležité je len to, aby ste boli schopní identifikovať zamestnanca a vedeli, koľko hodín odpracoval.

V API primaERP je teda potrebné vykonať request na URL

GET https://kbel.api.primaerp.com/v1/time/timerecords/summary.json?summary=user/position;sum(duration)&$filter=start ge datetime'2017-05-01T00:00:00.000Z' and stop lt datetime'2017-06-01T00:00:00.000Z'&token=9c11cea8-c3b3-4232-bfbb-f8acefce2f5a

Získate údaje napríklad v tomto formáte:

[ { "key": "A02200", "summaries": [ { "name": "sum(duration)", "value": "232777000" } ] } ]

V dotaze je použitá sumarizácia na vlastnosť duration (trvanie úlohy). Ako identifikátor poslúži pozícia zamestnanca, ktorá je využitá pre osobné číslo, vďaka ktorému možno následne spárovať údaje z primaERP s údajmi z Flexi. Ďalej v dotaze použijete filtráciu na časové obdobie. Tá vyfiltruje len úlohy, ktoré začali a skončili v sledovanom období.

V údajoch, ktoré primaERP vrátil, je teda ako kľúč osobné číslo z Flexi a sumarizácia trvania jednotlivých úloh. Táto sumarizácia je celkový čas v milisekundách. Hodiny, ktoré potrebujeme zapísať do zložky HODINOVÁ MZDA, teda získame podľa vzorca

hodiny = duration / 1000 / 60 / 60

V našom príklade je to 64,66 hodiny. Samozrejme môžete, a najpravdepodobnejšie aj budete, zaokrúhľovať. To však závisí od každého používateľa. Flexi umožní do zložky zadať číslo s presnosťou na dve desatinné miesta.

Spracovanie údajov a zápis späť do ABRA Flexi

Takto načítané údaje teraz musíte spracovať a zapísať späť do Flexi. Prejdeme teda jednotlivé mzdové zložky získané z Flexi a budeme do nich postupne dopĺňať údaje z primaERP.

Každá mzdová zložka v sebe obsahuje jednoznačný identifikátor, ktorým je osobné číslo zamestnanca. Podľa tohto čísla budete v údajoch z primaERP vyhľadávať správnu sumarizáciu. Keď ju nájdete, prepočítate milisekundy na hodiny a zapíšete do poľa hodiny. Do poľa castMzd zapíšete súčin odpracovaných hodín a hodnoty poľa castkaHod, ktoré obsahuje hodinovú mzdu zamestnanca. Nakoniec musíte zapísať do polí zmenaCasu a zmenaCastMzd hodnotu true namiesto false, aby Flexi zapísané hodnoty nemenilo podľa fondu pracovného času.

Údaje sú pripravené a môžete ich poslať späť do Flexi. To už je pre čitateľov našich príspevkov pomerne známa vec. Len pre istotu — URL, na ktorú budeme údaje zapisovať, je

PUT /mzdova-slozka.json

Niekoľko slov na záver

Ak má firma aspoň niekoľko zamestnancov s hodinovou mzdou, odporúčame si podobný nástroj vytvoriť. Je celkom jedno, či budú údaje načítavané z primaERP alebo iného dochádzkového systému. Samozrejme je možné využiť aj jednoduchú tabuľku v Exceli. Ak bude obsahovať stĺpce osobné číslo a odpracovaná doba, malo by to stačiť.

Ak takýto mostík vytvoríte, mzdová účtovníčka vám bude po každej výplate niekoľko dní ďakovať. Pretože kto by chcel stále dookola zadávať u každého zamestnanca odpracované hodiny.

Ste s tem dobili odgovor na svoje vprašanje?