Preskoči na glavno vsebino

Práca pre strediská - REST API

Ako využiť API Flexi na evidenciu práce pre strediská zamestnancov?

Avtor: Petr Pech

Rovnako ako v aplikácii je možné u zamestnancov rozdeliť prácu pre strediská aj cez REST API. V tomto článku nájdete adresy oboch evidencií, ich položky a ukážky importu i exportu.


Spôsob volania

K dispozícii sú dve evidencie, obe prístupné metódami GET, POST a PUT:

Adresa

Účel

/c/{firma}/prace.{přípona}

Pravidelná práca pre stredisko — podiel zmeny v zadanom období

/c/{firma}/prace-mesic.{přípona}

Práca pre stredisko v konkrétnom mesiaci — počet hodín

Kde {firma} je databázový identifikátor firmy. Kompletný popis oboch evidencií nájdete na adresách /prace a /prace-mesic. Pri získavaní dát metódou GET sú k dispozícii podporované výstupné formáty XML, JSON a ďalšie.


Položky evidencií

Spoločné položky

  • osoba — identifikácia osoby z personalistiky. Uvádzať ju nie je nutné, automaticky sa doplní zo zadaného pracovného pomeru.

  • pracPom — identifikácia pracovného pomeru

  • stredisko — identifikácia strediska

  • zakazka — identifikácia zákazky

  • cinnost — identifikácia činnosti

  • poznam — poznámka

Iba v evidencii prace

  • datumOd a datumDo — obdobie, počas ktorého práca pre stredisko platí

  • procento — časť zmeny alokovaná na stredisko, desatinné číslo v rozsahu 0 až 100

Iba v evidencii prace-mesic

  • rok a mesic — obdobie, za ktoré sa hodiny vykazujú

  • hodin — počet hodín odpracovaných pre stredisko, desatinné číslo


Parametre

Na stiahnutie dát z evidencií možno využiť štandardné filtrovanie a úroveň detailu. Import dát je bez parametrov; pri ňom je možné využiť externé identifikátory.

💡 Import si najprv vyskúšajte s parametrom ?dry-run=true. Požiadavka sa zvaliduje, ale do databázy sa nič nezapíše.


Ukážka importu

V ukážke zamestnanec v roku 2024 pracuje 30 % zmien na konkrétnej zákazke pre stredisko C.

Najprv je nutné identifikovať pracovný pomer, ku ktorému sa práca pre stredisko viaže — pomocou ID alebo externého identifikátora. Zoznam pracovných pomerov danej osoby získate metódou GET:

GET https://demo.flexibee.eu/c/demo/pracovni-pomer/(osoba="code:U123021").xml?detail=custom:id,kod

Získané ID potom použijete pri ukladaní práce pre stredisko:

POST https://demo.flexibee.eu/c/demo/prace.xml
<winstrom version="1.0">
<prace>
<!-- Externí identifikátor -->
<id>ext:MZDSW:123</id>
<!-- Datum začátku práce pro středisko -->
<datumOd>2024-01-01</datumOd>
<!-- Datum konce práce pro středisko -->
<datumDo>2024-12-31</datumDo>
<!-- % část směny alokovaná na středisko -->
<procento>30.0</procento>
<!-- Identifikace osoby z personalistiky, nepovinná -->
<osoba>code:U123021</osoba>
<!-- Identifikace pracovního poměru pomocí ID -->
<pracPom>1</pracPom>
<!-- Identifikace střediska -->
<stredisko>code:C</stredisko>
<!-- Identifikace zakázky -->
<zakazka>code:ZAKAZKA0821</zakazka>
<!-- Identifikace činnosti -->
<cinnost>code:A123</cinnost>
</prace>
</winstrom>

Analogicky v JSON:

{
"winstrom": {
"prace": {
"id": "ext:MZDSW:123",
"datumOd": "2024-01-01",
"datumDo": "2024-12-31",
"procento": "30.0",
"osoba": "code:U123021",
"pracPom": "1",
"stredisko": "code:C",
"zakazka": "code:ZAKAZKA0821",
"cinnost": "code:A123"
}
}
}

Obdobne sa importuje práca pre stredisko v konkrétnom mesiaci. V ukážke zamestnanec odpracoval v decembri 2024 pre stredisko C na konkrétnej zákazke 22 hodín.

POST https://demo.flexibee.eu/c/demo/prace-mesic.xml
<winstrom version="1.0">
<prace-mesic>
<id>ext:MZDSW:123</id>
<rok>2024</rok>
<mesic>12</mesic>
<hodin>22.0</hodin>
<osoba>code:U123021</osoba>
<pracPom>1</pracPom>
<stredisko>code:C</stredisko>
<zakazka>code:ZAKAZKA0821</zakazka>
<cinnost/>
</prace-mesic>
</winstrom>

Analogicky v JSON:

{
"winstrom": {
"prace-mesic": {
"id": "ext:MZDSW:123",
"rok": "2024",
"mesic": "12",
"hodin": "22.0",
"osoba": "code:U123021",
"pracPom": "1",
"stredisko": "code:C",
"zakazka": "code:ZAKAZKA0821",
"cinnost": ""
}
}
}


Ukážka exportu

Dáta možno získať metódou GET s ľubovoľným filtrom a úrovňou detailu:

GET https://demo.flexibee.eu/c/demo/prace-mesic/(rok eq 2024).xml?detail=full

Výsledok volania:

<winstrom version="1.0">
<prace-mesic>
<id>ext:MZDSW:123</id>
<id>8</id>
<lastUpdate>2024-12-29T09:53:24.433+01:00</lastUpdate>
<rok>2024</rok>
<mesic>12</mesic>
<hodin>22.0</hodin>
<poznam/>
<osoba showAs="U123021: Jméno Zaměstnance">5</osoba>
<pracPom showAs="1-STANDARD: Standardní pracovní poměr">code:1-STANDARD</pracPom>
<stredisko showAs="C: Centrála">code:C</stredisko>
<zakazka showAs="ZAKAZKA0821: Přeprava 08/24">code:ZAKAZKA0821</zakazka>
<cinnost/>
</prace-mesic>
</winstrom>


Príklady nevalidných volaní

Pri úspešnom importe je vracaný HTTP status 200 alebo 201 a štandardná odpoveď s výsledkami. Pri nevalidnom volaní je vracaný status 400 a obsahom odpovede je popis chyby.

1. Nevalidný pracovný pomer

<error for="pracPom" path="prace[temporary-id=null].pracPom" value="code:1-STANDARAD" code="PROP" messageCode="notObjectIdentifier">Zadaný text 'code:1-STANDARAD' musí identifikovat objekt [PraceStred -1]</error>

2. Prekročený fond pracovného času

<error path="prace[temporary-id=null].procento" code="INVALID" for="procento">V některém období je rozděleno víc než sto procent fondu pracovní doby. [PraceStred -1]</error>

3. Chýbajúce povinné pole

<error>Pole 'Měsíc' musí být vyplněno. [ext:MZDSW:123]</error>

4. Nekonzistentné určenie pracovného pomeru a osoby

<error>Definovaná osoba (U123021: Jméno Zaměstnance) se liší od osoby pracovního poměru (KN0329231: Jiné Jméno). [ext:MZDSW:AC]</error>


FAQ

Kde je dohľadateľné rozdelenie podľa prác pre strediská daného zamestnanca?

V jednotlivých záväzkoch či interných dokladoch vygenerovaných zo miezd (sociálne poistenie a ďalšie) budú položky dokladu rozdelené podľa príslušných stredísk.

Ako sa strediská používajú v aplikácii?

Vysvetlenie nájdete v článkoch Strediská a ich použitie a Mzdy - práca pre strediská.


Súvisiace

Ste s tem dobili odgovor na svoje vprašanje?