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
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.
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.
