Preskoči na glavno vsebino

Účtovné zostavy v API

Ako generovať účtovné zostavy cez API?

Avtor: Petr Pech

V ABRA Flexi je možné vytvoriť vlastné účtovné zostavy. Tieto účtovné zostavy však možno generovať aj prostredníctvom API rozhrania.

Ako na to v desktopovej aplikácii nájdete v návode tu.

Ako pracovať s už prepočítanou zostavou?

Účtovné zostavy nájdeme pomocou endpointu /sestava, teda GET na URL adresu typu https://server:5434/c/firma/sestava.xml. Na tejto URL adrese nájdeme 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ž vopred prepočítané. V opačnom prípade nebudú zobrazovať žiadne hodnoty.

V poslednej verzii pribudla v API nová evidencia pre prácu so štandardnými predpismi zostáv. Tie nájdeme na endpointe /standardni-predpis, napríklad GET na URL adresu typu https://server:5434/c/firma/standardni-predpis.xml.

O zostave však môžeme zistiť oveľa viac informácií. Nižšie nájdete zoznam, aké informácie a v akej podobe je možné o zostave získať.

  • /sestava.json - vracia iba zoznam zostáv

  • /sestava.json?detail=full - vracia zostava → radkySestavy → stdPredpisy v plnom detaile

  • /sestava.json?relations=radkySestavy - vracia zostava → radkySestavy

  • /radek-sestavy.json - vracia iba zoznam riadkov

  • /radek-sestavy.json?detail=full - vracia radek-sestavy → stdPredpisy v plnom detaile

  • /radek-sestavy.json?relations=stdPredpisy - vracia radek-sestavy → stdPredpisy

  • /standardni-predpis.json - vracia zoznam štandardných predpisov

  • /standardni-predpis.json?detail=full vracia zoznam štandardných predpisov v plnom detaile

Prepočet zostáv

Cez API však nie je možné iba zistiť informácie a hodnoty danej zostavy. Zostavu je v API možné aj prepočítať.

Na rozdiel od vyššie popísaného príkladu na zistenie hodnôt zostavy, prepočet je vyvolaný odoslaním požiadavky metódou PUT/POST na príslušnú URL.

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

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

Prepočet je vyvolaný odoslaním požiadavky metódou PUT na URL

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

Príklad použitia sub-evidencie umisteni-uctu:

Odoslaním požiadavky metódou GET na URL

/c/{firma}/sestava/code:VÝSLEDOVKA2016/umisteni-uctu.xml?detail=custom:ucet,vybranyRadek,moznosti(id,nazev) získame 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>

Do elementu prepocti potom možno uviesť nasledujúce parametry 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ť (pozri evidenciu ucetni-obdobi). Ak tento parameter nie je uvedený, automaticky sa použije obdobie predchádzajúce účtovnému obdobiu uvedenému v parametri ucetniObdobi.

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

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

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

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

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

  • zaokrouhlitNa - možnosť zaokrúhliť vypočítané sumy. Ak parameter nie je uvedený, vypočítané sumy nebudú zaokrúhlené. Je možné použiť tieto hodnoty:

    • TISICE - zaokrúhlenie na tisícky

    • JEDNOTKY - zaokrúhlenie na jednotky

    • NEZAOKROUHLOVAT - výpočet bez zaokrúhlenia (predvolená hodnota)

  • coZaokrouhlit - ak nastavíme parameter zaokrouhlitNa, týmto parametrom môžeme ovplyvniť, čo bude zaokrúhlené. Je možné použiť tieto hodnoty:

    • RADKY - zaokrúhli sa celý riadok zostavy

    • SYNTETICKE_UCTY - zaokrúhli sa celý syntetický účet, napr. 211

    • ANALYTICKE_UCTY - zaokrúhli sa každý analytický účet zvlášť, napr. 211001, 211002 atď.

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

<winstrom version="1.0">
<sestava>
<prepocti>
<ignorovatRozdilMdDal>true</ignorovatRozdilMdDal>
<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>
</parametry>
</prepocti>
</sestava>
</winstrom>

Chyba zaokrúhlenia

Pri zaokrúhľovaní 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

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

Pozor: pri zostave typu Súvaha musíme rozlišovať, či chyba zaokrúhlenia nastala na strane aktív alebo pasív. Ak chyba zaokrúhlenia nastane na strane aktív, identifikátor riadku zostavy uvedieme do elementu radekProPricteniRozdilu, ak chyba zaokrúhlenia nastane na strane pasív, riadok zostavy uvedieme do elementu radekProPricteniRozdilu2.

Ak chyba zaokrúhlenia nastane tak na strane aktív, ako aj na strane pasív, potom je na vyriešenie situácie nutné zadať oba riadky pre pripočítanie rozdielu.

Odoslaním požiadavky metódou GET na URL

/c/{firma}/sestava/code:VÝSLEDOVKA2016/pricteni-rozdilu?detail=custom:moznosti(id,cisRad,oznaceni,nazev) získame 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 uvedieme do elementu radekProPricteniRozdilu, napr. takto:

<winstrom version="1.0">
<sestava>
<prepocti>
<radekProPricteniRozdilu>344</radekProPricteniRozdilu>
<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>
</parametry>
</prepocti>
</sestava>
</winstrom>

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 v prípade úspešného vytvorenia zostavy je:

<?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/testovaci_2/sestava/10002.xml</ref>
</result>
</results>
</winstrom>

Chybové kódy

  • sestavaVypocet.nesouhlasiMDaDalInfo - Nesúhlasia počiatočné stavy MD a Dal. Opravte to tak, že správne zadáte počiatočné stavy, aby bol rozdiel 0.0.

  • sestavaVypocet.zaokrRadkaNevyplnena - Pri výpočte zostavy došlo k chybe zaokrúhlenia a nebol zvolený žiadny riadok pre pripočítanie rozdielu. Vyberte správny (radekProPricteniRozdilu) a výpočet zopakujte.

  • sestavaVypocet.nesouhlasiAktivaPasiva - Pri výpočte zostavy došlo k nesúladu aktív a pasív. Vyberte riadok, do ktorého sa má rozdiel premietať (radekProPricteniRozdilu), a výpočet zopakujte. Vzniká iba pri výpočte zostavy typu Súvaha.

  • sestavaVypocet.zaokrRadkaNevyresila - Pri výpočte zostavy došlo k chybe zaokrúhlenia a zvolený riadok pre pripočítanie rozdielu chybu neopravil. Vyberte iný a výpočet zopakujte.

  • sestavaVypocet.zaokrRadkaRozbila - Pri výpočte zostavy so zvolením riadku pre pripočítanie rozdielu došlo k chybe na inom riadku. Vyberte iný a výpočet zopakujte.

Export do PDF

V API možno príslušnú zostavu aj vytlačiť, resp. vygenerovať PDF. Zoznam reportov dostupných nad evidenciou /sestava nájdete tu.

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 zisku a strát v zjednodušenom rozsahu

vysledovka$$NES

Výkaz zisku 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íklad:

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

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

Možno použiť ľubovoľnú filtráciu.

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

Do API boli doplnené endpointy, ktoré vracajú potrebné dáta pre jednoduché použitie účtovných zostáv vo formulári:

  • /sestava/form-data (kompletný zoznam zostáv),

  • /sestava/form-data/standard (štandardné zostavy)

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

Ste s tem dobili odgovor na svoje vprašanje?