Přenos docházky z primaERP

Jak na přenos docházky z primaERP do Flexi

Lenka Haringerová avatar
Autor: Lenka Haringerová
Aktualizováno před více než týdnem

Evidujete v ABRA Flexi velký počet zaměstnanců s nepravidelným pracovním poměrem a hodinovou mzdou? Rádi byste se při výpočtu mezd vyhnuli ručnímu zadávání odpracovaných hodin? Nechte zaměstnance evidovat svou pracovní dobu v docházkovém systému a data z něj automaticky načítejte do ABRA Flexi. K evidenci pracovní doby lze využít například šikovnou cloudovou aplikaci ABRA primaERP.

Výhody evidence docházky v ABRA primaERP Vám představí stránka modulu Attendance. Jak pomocí rozhraní REST API přenést výsledná čísla do ABRA Flexi si ukážeme na následujících řádcích.

Získání potřebných mzdových složek z ABRA Flexi

Nejprve je nutné z Flexi načíst mzdové složky, které budete měnit. Pro zpětný zápis totiž potřebujete ID, které k nim má Flexi přidělené. Celou práci lze zjednodušit tím, že do dat z Flexi doplníte potřebné číslo a pošlete data zpět.

Z evidence mzdova-slozka ve Flexi načtete potřebné mzdové složky. Data, která potřebujete, získáte použitím jednoduché filtrace. Budete potřebovat získat složky pro konkrétní rok a měsíc a také jen složky HODINOVÁ MZDA. Dotaz do API Flexi tedy bude vypadat napří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átí všechny složky typu HODINOVÁ MZDA za leden 2017. Výsledek bude obsahovat všechna pole, která potřebujete pro to, abyste mohli tyto složky bez trestu změnit.

Výsledek vrácený z Flexi bude vypadat nějak 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čtení dat z primaEPRu

Pokud máte všechna potřebná data z Flexi, načtete si data z docházkového systému. Ukážeme si načtení dat z primaERP, který má rozhraní API, ale není to zcela nutné. V tomto kroku lze načíst například také excelovskou tabulku s docházkou. Důležité je jen to, abyste byli schopni identifikovat zaměstnance a věděli jste, kolik odpracoval hodin.

V API primaERPu je tedy potřeba udělat 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ískáte data například v tomto formátu:

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

V dotazu je použita sumace na vlastnost duration (trvání úkolu). Jako identifikátor poslouží pozice zaměstnance, která je využita pro osobní číslo, díky němuž lze následně spárovat data z primaERPu k datům z Flexi. Dále v dotazu použijete filtraci na časové období. To vyfiltruje jen úkoly, které začaly a skončily ve sledovaném období.

V datech, která primaERP vrátil, je tedy jako key osobní číslo z Flexi a sumace trvání jednotlivých úkolů. Tato sumace je celkový čas v milisekundách. Hodiny, které potřebujeme zapsat do složky HODINOVÁ MZDA, tedy získáme podle vzorce

hodiny = duration / 1000 / 60 / 60

V našem příkladu je to 64,66 hodiny. Samozřejmě můžete, a nejspíš i budete, zaokrouhlovat. Ale to už je na každém uživateli. Flexi dovolí do složky zadat číslo s přesností na dvě desetinná místa.

Zpracování dat a zápis zpět do ABRA Flexi

Takto načtená data nyní musíte zpracovat a zapsat zpět do Flexi. Projdeme tedy jednotlivé mzdové složky získané z Flexi a budeme do nich postupně doplňovat údaje z primaERPu.

Každá mzdová složka v sobě obsahuje jednoznačný identifikátor, kterým je osobní číslo zaměstnance. Podle tohoto čísla budete v datech z primaERPu vyhledávat správnou sumaci. Jakmile ji najdete, přepočtete milisekundy na hodiny a zapíšete do pole hodiny. Do pole castMzd zapíšete součin odpracovaných hodin a hodnoty pole castkaHod, které obsahuje hodinovou mzdu zaměstnance. Nakonec musíte zapsat do polí zmenaCasu a zmenaCastMzd hodnotu true místo false, aby Flexi zapsané hodnoty neměnilo podle fondu pracovní doby.

Data jsou připravena a můžete je poslat zpět do Flexi. To už je pro čtenáře našich příspěvků celkem známá věc. Jen pro jistotu URL, na které budeme data zapisovat, je

PUT /mzdova-slozka.json

Několik slov závěrem

Pokud má firma aspoň několik zaměstnanců s hodinovou mzdou, doporučujeme si nějaký podobný nástroj vytvořit. Je celkem jedno, jestli data budou načítána z primaERPu, nebo jiného docházkového systému. Samozřejmě je možné využít i jednoduchou tabulku v excelu. Pokud bude obsahovat sloupce osobní číslo a odpracovaná doba, mělo by to stačit.

Pokud takovýto můstek vytvoříte, mzdová účetní Vám bude zcela jistě po každých výplatách několik dní děkovat. Protože komu by se chtělo pořád dokola zadávat u každého zaměstnance odpracované hodiny.

Dostali jste odpověď na svou otázku?