Preskoči na glavno vsebino

Účtovné zostavy v API

Ako v API generovať účtovné zostavy?

Avtor: Petr Pech

V ABRA Flexi je možné vytvoriť si vlastné účtovné zostavy. Tieto zostavy je možné generovať, prepočítavať aj importovať prostredníctvom REST API.

Ako na to v desktopovej aplikácii, nájdete v návode Zoznam zostáv; tvorbe vlastných zostáv sa venuje článok Vlastné zostavy.


Ako pracovať s už prepočítanou zostavou

Účtovné zostavy nájdete na endpointe /sestava, teda metódou GET na adrese /c/{firma}/sestava.xml. Na tejto adrese nájdete zoznam účtovných zostáv.

<sestava>
<id>202</id>
<lastUpdate>2010-07-13T00:00:00+02:00</lastUpdate>
<kod>IFRS-PL</kod>
<nazev>IFRS - PROFIT AND LOSS</nazev>
</sestava>
<sestava>
<id>9</id>
<lastUpdate>2018-03-07T00:00:00+01:00</lastUpdate>
<kod>ROZVAHA2018</kod>
<nazev>Rozvaha v plném rozsahu od r. 2018</nazev>
</sestava>
<sestava>
<id>10001</id>
<lastUpdate>2020-02-17T16:24:33.068+01:00</lastUpdate>
<kod>VYSLEDOMOJE</kod>
<nazev>Moje výsledovka</nazev>
</sestava>
<sestava>
<id>7</id>
<lastUpdate>2022-12-14T00:54:34.889+01:00</lastUpdate>
<kod>VÝSLEDOVKA2016</kod>
<nazev>Výkaz zisku a ztráty - druhové členění od r.2016</nazev>
</sestava>

⚠️ Takto nájdené účtovné zostavy musia byť už predtým prepočítané. Inak nebudú zobrazovať žiadne hodnoty.

Na prácu so štandardnými predpismi zostáv slúži evidencia /standardni-predpis, teda napríklad GET na adresu /c/{firma}/standardni-predpis.xml.

O zostave je možné zistiť aj podstatne viac informácií. Nasledujúca tabuľka uvádza, aké informácie a v akej podobe je možné o zostave získať:

Adresa

Čo vracia

/sestava.json

iba zoznam zostáv

/sestava.json?detail=full

sestava → radkySestavy → stdPredpisy v plnom detaile

/sestava.json?relations=radkySestavy

sestava → radkySestavy

/radek-sestavy.json

iba zoznam riadkov

/radek-sestavy.json?detail=full

radek-sestavy → stdPredpisy v plnom detaile

/radek-sestavy.json?relations=stdPredpisy

radek-sestavy → stdPredpisy

/standardni-predpis.json

zoznam štandardných predpisov

/standardni-predpis.json?detail=full

zoznam štandardných predpisov v plnom detaile


Prepočet zostáv

Cez API nie je možné iba zistiť informácie a hodnoty danej zostavy — zostavu je možné aj prepočítať. Oproti vyššie popísanému zisteniu hodnôt sa prepočet vyvolá odoslaním požiadavky metódou PUT alebo POST na príslušnú adresu.

Do elementu prepocti je potrebné uviesť vybraneRadky a parametre prepočtu. Vybrané riadky musia obsahovať identifikátory ucet a radek. Ktoré riadky je možné vybrať k ktorým účtom, zistíte v sub-evidencii umisteni-uctu. Je potrebné vybrať riadky ku všetkým účtom v nej uvedeným.

Príklad prepočtu zostavy Výkaz ziskov a strát

Prepočet je vyvolaný odoslaním požiadavky metódou PUT na adresu /c/{firma}/sestava/code:VÝSLEDOVKA2016 s nasledujúcimi dátami v tele požiadavky:

<winstrom version="1.0">
<sestava>
<prepocti>
<vybraneRadky>
<vybranyRadek>
<ucet>code:662001</ucet>
<radek>383</radek>
</vybranyRadek>
<vybranyRadek>
<ucet>code:562001</ucet>
<radek>387</radek>
</vybranyRadek>
</vybraneRadky>
<parametry>
<ucetniObdobi>code:2022</ucetniObdobi>
<pocatecniRok>2022</pocatecniRok>
<pocatecniMesic>1</pocatecniMesic>
<koncovyRok>2022</koncovyRok>
<koncovyMesic>12</koncovyMesic>
<strediska>
<stredisko>code:C</stredisko>
</strediska>
</parametry>
</prepocti>
</sestava>
</winstrom>

Sub-evidencia umisteni-uctu

Odoslaním požiadavky metódou GET na adresu /c/{firma}/sestava/code:VÝSLEDOVKA2016/umisteni-uctu.xml?detail=custom:ucet,vybranyRadek,moznosti(id,nazev) získate nasledujúce dáta:

<winstrom version="1.0">
<umisteni-uctu>
<ucet evidencePath="ucet">code:662001</ucet>
<vybranyRadek evidencePath="radek-sestavy">383</vybranyRadek>
<moznosti>
<radek-sestavy>
<id>383</id>
<nazev>Výnosové úroky a podobné výnosy - ovládaná nebo ovládající osoba</nazev>
</radek-sestavy>
<radek-sestavy>
<id>384</id>
<nazev>Ostatní výnosové úroky a podobné výnosy</nazev>
</radek-sestavy>
</moznosti>
</umisteni-uctu>
<umisteni-uctu>
<ucet evidencePath="ucet">code:562001</ucet>
<vybranyRadek evidencePath="radek-sestavy">387</vybranyRadek>
<moznosti>
<radek-sestavy>
<id>387</id>
<nazev>Nákladové úroky a podobné náklady - ovládaná nebo ovládající osoba</nazev>
</radek-sestavy>
<radek-sestavy>
<id>388</id>
<nazev>Ostatní nákladové úroky a podobné náklady</nazev>
</radek-sestavy>
</moznosti>
</umisteni-uctu>
</winstrom>

V elemente vybranyRadek nájdete identifikátor riadku, ktorý bol vybraný pri predchádzajúcom prepočte tejto zostavy.

💡 Po prepočte požadovanej zostavy je vhodné prepočítať aj jej zdrojovú zostavu uvedenú v elemente sestavaZdroj. Identifikátory zdrojových zostáv získate na adrese /c/{firma}/sestava.xml?detail=custom:nazev,kod,sestavaZdroj.

Parametre prepočtu

Do elementu prepocti je možné uviesť nasledujúce parametre prepočtu:

  • ucetniObdobi — identifikátor účtovného obdobia, pre ktoré chceme zostavu prepočítať (pozri evidenciu ucetni-obdobi)

  • pocatecniRok — počiatočný rok časového intervalu v rámci uvedeného účtovného obdobia

  • pocatecniMesic — počiatočný mesiac časového intervalu v rámci uvedeného účtovného obdobia (hodnoty 1 až 12)

  • koncovyRok — koncový rok časového intervalu v rámci uvedeného účtovného obdobia

  • koncovyMesic — koncový mesiac časového intervalu v rámci uvedeného účtovného obdobia (hodnoty 1 až 12)

  • minuleUcetniObdobi — identifikátor minulého účtovného obdobia, pre ktoré chceme zostavu prepočítať. Ak nie je uvedený, automaticky sa použije obdobie predchádzajúce obdobiu z parametra ucetniObdobi.

  • minulyPocatecniRok — počiatočný rok časového intervalu v rámci minulého účtovného obdobia. Ak nie je uvedený, automaticky sa použije rok predchádzajúci tomu z parametra pocatecniRok.

  • minulyPocatecniMesic — počiatočný mesiac časového intervalu v rámci minulého účtovného obdobia (hodnoty 1 až 12). Ak nie je uvedený, použije sa mesiac z parametra pocatecniMesic.

  • minulyKoncovyRok — koncový rok časového intervalu v rámci minulého účtovného obdobia. Ak nie je uvedený, automaticky sa použije rok predchádzajúci tomu z parametra koncovyRok.

  • minulyKoncovyMesic — koncový mesiac časového intervalu v rámci minulého účtovného obdobia (hodnoty 1 až 12). Ak nie je uvedený, použije sa mesiac z parametra koncovyMesic.

  • strediska — identifikátory stredísk, pre ktoré chceme zostavu prepočítať (pozri evidenciu stredisko). Ak nie je uvedený, zostava bude prepočítaná pre všetky strediská.

  • zaokrouhlitNa — možnosť zaokrúhliť vypočítané sumy. Hodnoty TISICE (zaokrúhlenie na tisíce), JEDNOTKY (zaokrúhlenie na jednotky) a NEZAOKROUHLOVAT (výpočet bez zaokrúhlenia, predvolená hodnota).

  • coZaokrouhlit — ak nastavíte parameter zaokrouhlitNa, týmto parametrom ovplyvníte, čo bude zaokrúhlené. Hodnoty RADKY (zaokrúhli sa celý riadok zostavy), SYNTETICKE_UCTY (zaokrúhli sa celý syntetický účet, napr. 211) a ANALYTICKE_UCTY (zaokrúhli sa každý analytický účet zvlášť, napr. 211001, 211002).

Počiatočné stavy účtov

V prípade zostavy typu Súvaha môže byť prepočet prerušený chybou „Počiatočné stavy účtov nie sú v poriadku. Strana MD: 10.0, Strana Dal: 100.0, Rozdiel: 90.0".

Tieto stavy môžete buď opraviť, alebo ignorovať pomocou elementu ignorovatRozdilMdDal s hodnotou true, napríklad takto:

<winstrom version="1.0">
<sestava>
<prepocti>
<ignorovatRozdilMdDal>true</ignorovatRozdilMdDal>
<vybraneRadky>
<vybranyRadek>
<ucet>code:662001</ucet>
<radek>383</radek>
</vybranyRadek>
</vybraneRadky>
<parametry>
<ucetniObdobi>code:2022</ucetniObdobi>
<pocatecniRok>2022</pocatecniRok>
<pocatecniMesic>1</pocatecniMesic>
<koncovyRok>2022</koncovyRok>
<koncovyMesic>12</koncovyMesic>
</parametry>
</prepocti>
</sestava>
</winstrom>

Chyba zaokrúhlenia

Pri zaokrúhlení môže byť prepočet prerušený chybou:

Při výpočtu sestavy vznikla zaokrouhlovací chyba na řádku 55 - *** - Výsledek hospodaření za účetní období (+/-). Můžete vybrat řádek sestavy, do kterého se má vzniklý rozdíl připočítat. Rozdíl v aktuálním období (v tisících): 1.0 Rozdíl v minulém období (v tisících): -2.0

Situáciu je možné vyriešiť pripočítaním rozdielu na niektorý riadok zostavy. Jeho identifikátor uvediete do elementu radekProPricteniRozdilu. Riadky, ktoré je možné použiť, nájdete v sub-evidencii pricteni-rozdilu.

⚠️ Pri zostave typu Súvaha je potrebné rozlišovať, či zaokrúhľovacia chyba nastala na strane aktív, alebo pasív. Pri chybe na strane aktív uvediete identifikátor riadku do elementu radekProPricteniRozdilu, pri chybe na strane pasív do elementu radekProPricteniRozdilu2. Ak chyba nastane na oboch stranách, je potrebné zadať oba riadky.

Odoslaním požiadavky metódou GET na adresu /c/{firma}/sestava/code:VÝSLEDOVKA2016/pricteni-rozdilu?detail=custom:moznosti(id,cisRad,oznaceni,nazev) získate nasledujúce dáta:

<winstrom version="1.0">
<pricteni-rozdilu>
<id>-1</id>
<moznosti>
<radek-sestavy>
<id>344</id>
<cisRad>1</cisRad>
<oznaceni>I.</oznaceni>
<nazev>Tržby z prodeje výrobků a služeb</nazev>
</radek-sestavy>
<radek-sestavy>
<id>345</id>
<cisRad>2</cisRad>
<oznaceni>II.</oznaceni>
<nazev>Tržby za prodej zboží</nazev>
</radek-sestavy>
</moznosti>
</pricteni-rozdilu>
</winstrom>

Požadovaný riadok potom uvediete do elementu radekProPricteniRozdilu, napríklad takto:

<winstrom version="1.0">
<sestava>
<prepocti>
<radekProPricteniRozdilu>344</radekProPricteniRozdilu>
<vybraneRadky>
<vybranyRadek>
<ucet>code:662001</ucet>
<radek>383</radek>
</vybranyRadek>
</vybraneRadky>
<parametry>
<ucetniObdobi>code:2022</ucetniObdobi>
<pocatecniRok>2022</pocatecniRok>
<pocatecniMesic>1</pocatecniMesic>
<koncovyRok>2022</koncovyRok>
<koncovyMesic>12</koncovyMesic>
</parametry>
</prepocti>
</sestava>
</winstrom>

Chybové kódy

  • sestavaVypocet.nesouhlasiMDaDalInfo — nesúhlasia počiatočné stavy MD a Dal. Opravte ich tak, aby bol rozdiel nulový.

  • sestavaVypocet.zaokrRadkaNevyplnena — pri výpočte zostavy došlo k zaokrúhľovacej chybe a nebola zvolená žiadna riadka na pripočítanie rozdielu. Pri zostave typu Súvaha vyberte riadku do radekProPricteniRozdilu, ak atribút for chybovej hlášky má hodnotu radekProPricteniRozdilu, alebo do radekProPricteniRozdilu2, ak má hodnotu radekProPricteniRozdilu2, a výpočet opakujte.

  • sestavaVypocet.nesouhlasiAktivaPasiva — pri výpočte zostavy došlo k nesúladu aktív a pasív. Vyberte riadku, do ktorej sa má rozdiel premietnuť (podľa atribútu for chybovej hlášky radekProPricteniRozdilu, alebo radekProPricteniRozdilu2), a výpočet opakujte. Vzniká iba pri výpočte zostavy typu Súvaha.

  • sestavaVypocet.zaokrRadkaNevyresila — zvolená riadka na pripočítanie rozdielu zaokrúhľovaciu chybu neopravila. Vyberte inú a výpočet opakujte.

  • sestavaVypocet.zaokrRadkaRozbila — zvolením riadky na pripočítanie rozdielu došlo k chybe na inom riadku. Vyberte inú a výpočet opakujte.


Import vlastnej zostavy

Zostavy je možné aj importovať, pozri príklad nižšie:

<?xml version="1.0" encoding="UTF-8" ?>
<winstrom>
<sestava>
<id>code:SESTAVA-T01-MIN</id>
<id>ext:sestava:t01:min</id>
<nazev>Testovací sestava 01</nazev>
<radkySestavy>
<radek-sestavy>
<id>ext:radek:r1</id>
<nazev>radek1</nazev>
<stdPredpisy>
<standardni-predpis>
<id>ext:stdp:01</id>
<zpusobVypK>zpusobVypo.stavKon</zpusobVypK>
<cisloUctuSyn>code:311</cisloUctuSyn>
</standardni-predpis>
</stdPredpisy>
</radek-sestavy>
<radek-sestavy>
<id>ext:radek:r2</id>
<nazev>radek2</nazev>
<stdPredpisy>
<standardni-predpis>
<id>ext:stdp:02</id>
<zpusobVypK>zpusobVypo.stavKon</zpusobVypK>
<cisloUctuSyn>code:321</cisloUctuSyn>
</standardni-predpis>
</stdPredpisy>
</radek-sestavy>
<radek-sestavy>
<id>ext:radek:r3</id>
<nazev>suma r1 + r2</nazev>
<sumace>
<sumace-sestavy>
<id>ext:sum:r3:r1</id>
<radekSum>ext:radek:r1</radekSum>
</sumace-sestavy>
<sumace-sestavy>
<id>ext:sum:r3:r2</id>
<radekSum>ext:radek:r2</radekSum>
</sumace-sestavy>
</sumace>
</radek-sestavy>
</radkySestavy>
</sestava>
</winstrom>

Odpoveďou je v prípade úspešného vytvorenia zostavy:

<?xml version="1.0" encoding="utf-8"?>
<winstrom version="1.0">
<success>true</success>
<stats>
<created>1</created>
<updated>0</updated>
<deleted>0</deleted>
<skipped>0</skipped>
<failed>0</failed>
</stats>
<results>
<result>
<id>10002</id>
<request-id>ext:sestava:t01:min</request-id>
<request-id>code:SESTAVA-T01-MIN</request-id>
<ref>/c/{firma}/sestava/10002.xml</ref>
</result>
</results>
</winstrom>


Export do PDF

Príslušnú zostavu je možné v API aj vytlačiť, respektíve vygenerovať PDF. Zoznam reportov dostupných nad evidenciou /sestava nájdete na adrese /c/{firma}/sestava/reports.xml.

Zoznam dostupných reportov

Identifikátor

Názov

rozvaha$$SUM_ZAKL

Súvaha v základnom rozsahu

rozvaha$$SUM

Súvaha v zjednodušenom rozsahu

rozvaha$$NES

Súvaha v plnom rozsahu

vysledovka$$SUM

Výkaz ziskov a strát v zjednodušenom rozsahu

vysledovka$$NES

Výkaz ziskov a strát v plnom rozsahu

cashFlow$$NES

Prehľad o peňažných tokoch

cashFlow$$MIN_OBDOBI

Prehľad o peňažných tokoch (vrátane údajov za minulé obdobie)

sesRadkyPort$$BEZ_ROZPADU

Riadky zostavy

sesRadkyPort$$ROZPAD_UCET

Riadky zostavy (Rozpad na účty)

sesRadkyPort$$ROZPAD_PREDPIS

Riadky zostavy (Štandardný predpis, Užívateľský predpis)

sestavy$$SUM

Účtovné zostavy

Príklady

GET https://demo.flexibee.eu/c/demo/sestava/(kod='ROZVAHA2018').pdf?report-name=rozvaha$$SUM
GET https://demo.flexibee.eu/c/demo/sestava/(kod='VYSLEDOVKA').pdf?report-name=vysledovka$$NES

Použiť je možné ľubovoľnú filtráciu.


Endpointy so štruktúrovanými dátami pre formuláre

V API sú k dispozícii endpointy, ktoré vracajú potrebné dáta pre jednoduché použitie účtovných zostáv vo formulári:

  • /sestava/form-data.json — kompletný zoznam zostáv

  • /sestava/form-data/standard.json — štandardné zostavy

  • /sestava/form-data/user.json — užívateľské zostavy

⚠️ Pri týchto endpointoch je potrebné uviesť príponu formátu (.json alebo .xml). Adresa bez prípony vracia 404 s kódom adresaNeplatnaUrl.


Súvisiace

Ste s tem dobili odgovor na svoje vprašanje?