Preskoči na glavno vsebino

Vytvorenie mzdovej zložky cez API

Ako cez API založiť údaje ohľadom dochádzky, ako sú odpracované hodiny, neprítomnosť a podobne?

Avtor: Petr Pech

Mzdové zložky s konkrétnymi údajmi o odpracovanom čase sa cez REST API neaktualizujú od nuly — Flexi ich pre každý mesiac pripraví sama podľa stálych mzdových zložiek zamestnanca. Úlohou integrácie je teda nájsť správnu mzdovú zložku a doplniť do nej hodnoty, typicky odpracované hodiny alebo dni.


Predpoklady

  1. Musí existovať osoba, teda zamestnanec, ku ktorému mzdové zložky patria. Osobu je možné založiť v personalistike aj cez REST API; ukážkové XML nájdete v príkladoch XML súborov ako mzdy-osoba.xml.

  2. K osobe musia byť priradené stále mzdové zložky — ich nastavenie popisuje dokumentácia personalistiky.

Až potom je možné prejsť k samotnému prenosu dochádzky do ABRA Flexi.


Získanie ID mzdovej zložky

Najprv je potrebné zistiť ID mzdových zložiek, ktoré sa budú aktualizovať — vždy ide o konkrétne zložky v konkrétnom mesiaci. Pomôže filtrácia na zložku, rok a mesiac; použiť je možné ľubovoľnú úroveň detailu:

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

Namiesto hodinovej mzdy je samozrejme možné vybrať inú zložku z číselníka mzdových zložiek. Ak ide o neprítomnosť, hľadá sa v evidencii nepritomnost podľa platnosti:

GET /nepritomnost/(cisMzdSloz = 'code:NEMOC' and (platiOd >= '2022-01-01' and platiOd <= '2022-01-31' or platiDo >= '2022-01-01' and platiDo <= '2022-01-31')).xml?detail=full

Získané XML mzdovej zložky potom môže vyzerať napríklad takto:

<?xml version="1.0" encoding="utf-8"?>
<winstrom version="1.0">
<mzdova-slozka>
<id>9258</id>
<osoba>
<osoba-hlavicka>
<id>4</id>
<osbCis>432423423</osbCis>
<jmeno>Karel</jmeno>
<prijmeni>Novák</prijmeni>
<titul>Ing.</titul>
</osoba-hlavicka>
</osoba>
<hodiny>0.0</hodiny>
<zmenaCasu>false</zmenaCasu>
<zmenaCastMzd>false</zmenaCastMzd>
<castkaHod>0.0</castkaHod>
<castMzd>0.0</castMzd>
</mzdova-slozka>
</winstrom>


Doplnenie hodnôt

Do získanej mzdovej zložky teraz doplníte príslušnú hodnotu — v našom príklade odpracované hodiny. Rovnakým postupom sa dopĺňajú aj dni; čo ktorá zložka očakáva, určuje jej nastavenie v číselníku mzdových zložiek.

Časť XML s osobou je možné pri zápise späť vynechať, pretože meniť chceme len hodiny:

<?xml version="1.0" encoding="utf-8"?>
<winstrom version="1.0">
<mzdova-slozka>
<id>9258</id>
<hodiny>100.0</hodiny>
<zmenaCasu>false</zmenaCasu>
<zmenaCastMzd>false</zmenaCastMzd>
<castkaHod>0.0</castkaHod>
<castMzd>0.0</castMzd>
</mzdova-slozka>
</winstrom>

XML odošlite metódou POST alebo PUT na endpoint /mzdova-slozka. Pri úspechu vráti API štandardný výsledok importu a mzdová zložka bude aktualizovaná:

<?xml version="1.0" encoding="utf-8"?>
<winstrom version="1.0">
<success>true</success>
<stats>
<created>0</created>
<updated>1</updated>
<deleted>0</deleted>
<skipped>0</skipped>
<failed>0</failed>
</stats>
<results>
<result>
<id>9258</id>
<request-id>9258</request-id>
<ref>/c/demo/mzdova-slozka/9258.xml</ref>
</result>
</results>
</winstrom>

ℹ️ Hodnota updated je jediné spoľahlivé potvrdenie, že sa zložka skutočne zmenila. Po doplnení dochádzky ešte zostáva spustiť výpočet miezd.


Súvisiace

Ste s tem dobili odgovor na svoje vprašanje?