Mzdové složky s konkrétními údaji o odpracované době se přes REST API neaktualizují od nuly — Flexi je pro každý měsíc připraví sama podle stálých mzdových složek zaměstnance. Úkolem integrace je tedy najít správnou mzdovou složku a doplnit do ní hodnoty, typicky odpracované hodiny nebo dny.
Předpoklady
Musí existovat osoba, tedy zaměstnanec, ke kterému mzdové složky patří. Osobu lze založit v personalistice i přes REST API; ukázkové XML najdete v příkladech XML souborů jako mzdy-osoba.xml.
K osobě musí být přiřazené stálé mzdové složky — jejich nastavení popisuje dokumentace personalistiky.
Teprve pak lze přejít k samotnému přenosu docházky do ABRA Flexi.
Získání ID mzdové složky
Nejprve je potřeba zjistit ID mzdových složek, které se budou aktualizovat — vždy jde o konkrétní složky v konkrétním měsíci. Pomůže filtrace na složku, rok a měsíc; použít lze libovolnou ú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
Místo hodinové mzdy lze samozřejmě vybrat jinou složku z číselníku mzdových složek. Jde-li o nepřítomnost, hledá se v evidenci nepritomnost podle 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 mzdové složky pak může vypadat napří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>
Doplnění hodnot
Do získané mzdové složky nyní doplníte příslušnou hodnotu — v našem příkladu odpracované hodiny. Stejným postupem se doplňují i dny; co která složka očekává, určuje její nastavení v číselníku mzdových složek.
Část XML s osobou lze při zápisu zpět vynechat, protože měnit chceme jen 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 zašlete metodou POST nebo PUT na endpoint /mzdova-slozka. Při úspěchu vrátí API standardní výsledek importu a mzdová slož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é spolehlivé potvrzení, že se složka skutečně změnila. Po doplnění docházky ještě zbývá spustit výpočet mezd.
