Přenos docházky z primaERP do FlexiBee

Evidujete v ABRA FlexiBee 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 FlexiBee. 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 FlexiBee si ukážeme na následujících řádcích.

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

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

Z evidence mzdova-slozka ve FlexiBee 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 FlexiBee 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 FlexiBee bude vypadat nějak takto:

{
  "winstrom": {
    "@version": "1.0",
    "mzdova-slozka": [
      {
        "id": "13",
        "osoba": [
          {
            "id": "1",
            "osbCis": "A02200",
            "jmeno": "Kája",
            "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 FlexiBee, 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 FlexiBee. 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 FlexiBee 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. FlexiBee dovolí do složky zadat číslo s přesností na dvě desetinná místa.

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

Takto načtená data nyní musíte zpracovat a zapsat zpět do FlexiBee. Projdeme tedy jednotlivé mzdové složky získané z FlexiBee 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 FlexiBee zapsané hodnoty neměnilo podle fondu pracovní doby.

Data jsou připravena a můžete je poslat zpět do FlexiBee. 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.