Přeskočit na hlavní obsah

Účetní sestavy v API

Jak v API generovat účetní sestavy?

Autor: Petr Pech

V ABRA Flexi je možné vytvořit si vlastní účetní sestavy. Tyto sestavy lze generovat, přepočítávat i importovat prostřednictvím REST API.

Jak na to v desktopové aplikaci, naleznete v návodu Seznam sestav; tvorbě vlastních sestav se věnuje článek Vlastní sestavy.


Jak pracovat s již přepočtenou sestavou

Účetní sestavy najdete na endpointu /sestava, tedy metodou GET na adrese /c/{firma}/sestava.xml. Na této adrese naleznete seznam účetních sestav.

<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 nalezené účetní sestavy musejí být již dříve přepočtené. Jinak nebudou zobrazovat žádné hodnoty.

Pro práci se standardními předpisy sestav slouží evidence /standardni-predpis, tedy například GET na adresu /c/{firma}/standardni-predpis.xml.

O sestavě lze zjistit i podstatně více informací. Následující tabulka uvádí, jaké informace a v jaké podobě je možné o sestavě získat:

Adresa

Co vrací

/sestava.json

pouze seznam sestav

/sestava.json?detail=full

sestava → radkySestavy → stdPredpisy v plném detailu

/sestava.json?relations=radkySestavy

sestava → radkySestavy

/radek-sestavy.json

pouze seznam řádků

/radek-sestavy.json?detail=full

radek-sestavy → stdPredpisy v plném detailu

/radek-sestavy.json?relations=stdPredpisy

radek-sestavy → stdPredpisy

/standardni-predpis.json

seznam standardních předpisů

/standardni-predpis.json?detail=full

seznam standardních předpisů v plném detailu


Přepočet sestav

Přes API není možné pouze zjistit informace a hodnoty dané sestavy — sestavu lze také přepočítat. Oproti výše popsanému zjištění hodnot se přepočet vyvolá odesláním požadavku metodou PUT nebo POST na příslušnou adresu.

Do elementu prepocti je nutné uvést vybraneRadky a parametry přepočtu. Vybrané řádky musí obsahovat identifikátory ucet a radek. Které řádky je možné vybrat ke kterým účtům, zjistíte v sub-evidenci umisteni-uctu. Je nutné vybrat řádky ke všem účtům v ní uvedeným.

Příklad přepočtu sestavy Výkaz zisku a ztráty

Přepočet je vyvolán odesláním požadavku metodou PUT na adresu /c/{firma}/sestava/code:VÝSLEDOVKA2016 s následujícími daty v těle požadavku:

<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-evidence umisteni-uctu

Odesláním požadavku metodou GET na adresu /c/{firma}/sestava/code:VÝSLEDOVKA2016/umisteni-uctu.xml?detail=custom:ucet,vybranyRadek,moznosti(id,nazev) získáte následující data:

<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 elementu vybranyRadek najdete identifikátor řádku, který byl vybrán při předchozím přepočtu této sestavy.

💡 Po přepočtu požadované sestavy je vhodné přepočítat i její zdrojovou sestavu uvedenou v elementu sestavaZdroj. Identifikátory zdrojových sestav získáte na adrese /c/{firma}/sestava.xml?detail=custom:nazev,kod,sestavaZdroj.

Parametry přepočtu

Do elementu prepocti lze uvést následující parametry přepočtu:

  • ucetniObdobi — identifikátor účetního období, pro které chceme sestavu přepočítat (viz evidence ucetni-obdobi)

  • pocatecniRok — počáteční rok časového intervalu v rámci uvedeného účetního období

  • pocatecniMesic — počáteční měsíc časového intervalu v rámci uvedeného účetního období (hodnoty 1 až 12)

  • koncovyRok — koncový rok časového intervalu v rámci uvedeného účetního období

  • koncovyMesic — koncový měsíc časového intervalu v rámci uvedeného účetního období (hodnoty 1 až 12)

  • minuleUcetniObdobi — identifikátor minulého účetního období, pro které chceme sestavu přepočítat. Pokud není uveden, použije se automaticky období předcházející období z parametru ucetniObdobi.

  • minulyPocatecniRok — počáteční rok časového intervalu v rámci minulého účetního období. Pokud není uveden, použije se automaticky rok předcházející tomu z parametru pocatecniRok.

  • minulyPocatecniMesic — počáteční měsíc časového intervalu v rámci minulého účetního období (hodnoty 1 až 12). Pokud není uveden, použije se měsíc z parametru pocatecniMesic.

  • minulyKoncovyRok — koncový rok časového intervalu v rámci minulého účetního období. Pokud není uveden, použije se automaticky rok předcházející tomu z parametru koncovyRok.

  • minulyKoncovyMesic — koncový měsíc časového intervalu v rámci minulého účetního období (hodnoty 1 až 12). Pokud není uveden, použije se měsíc z parametru koncovyMesic.

  • strediska — identifikátory středisek, pro která chceme sestavu přepočítat (viz evidence stredisko). Pokud není uveden, bude sestava přepočtena pro všechna střediska.

  • zaokrouhlitNa — možnost zaokrouhlit vypočítané částky. Hodnoty TISICE (zaokrouhlení na tisíce), JEDNOTKY (zaokrouhlení na jednotky) a NEZAOKROUHLOVAT (výpočet bez zaokrouhlení, výchozí hodnota).

  • coZaokrouhlit — pokud nastavíte parametr zaokrouhlitNa, tímto parametrem ovlivníte, co bude zaokrouhleno. Hodnoty RADKY (zaokrouhlí se celý řádek sestavy), SYNTETICKE_UCTY (zaokrouhlí se celý syntetický účet, např. 211) a ANALYTICKE_UCTY (zaokrouhlí se každý analytický účet zvlášť, např. 211001, 211002).

Počáteční stavy účtů

V případě sestavy typu Rozvaha může být přepočet přerušen chybou „Počáteční stavy účtů nejsou v pořádku. Strana MD: 10.0, Strana Dal: 100.0, Rozdíl: 90.0".

Tyto stavy můžete buď opravit, nebo ignorovat pomocí elementu ignorovatRozdilMdDal s hodnotou true, napří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 zaokrouhlení

Při zaokrouhlení může být přepočet přeruš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

Situaci je možné vyřešit přičtením rozdílu na některý řádek sestavy. Jeho identifikátor uvedete do elementu radekProPricteniRozdilu. Řádky, které je možné použít, najdete v sub-evidenci pricteni-rozdilu.

⚠️ U sestavy typu Rozvaha je nutné rozlišovat, zda zaokrouhlovací chyba nastala na straně aktiv, nebo pasiv. Při chybě na straně aktiv uvedete identifikátor řádku do elementu radekProPricteniRozdilu, při chybě na straně pasiv do elementu radekProPricteniRozdilu2. Pokud chyba nastane na obou stranách, je nutné zadat oba řádky.

Odesláním požadavku metodou GET na adresu /c/{firma}/sestava/code:VÝSLEDOVKA2016/pricteni-rozdilu?detail=custom:moznosti(id,cisRad,oznaceni,nazev) získáte následující data:

<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ý řádek pak uvedete do elementu radekProPricteniRozdilu, napří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 — nesouhlasí počáteční stavy MD a Dal. Opravte je tak, aby byl rozdíl nulový.

  • sestavaVypocet.zaokrRadkaNevyplnena — při výpočtu sestavy došlo k zaokrouhlovací chybě a nebyla zvolena žádná řádka pro přičtení rozdílu. U sestavy typu Rozvaha vyberte řádku do radekProPricteniRozdilu, jestliže atribut for chybové hlášky má hodnotu radekProPricteniRozdilu, nebo do radekProPricteniRozdilu2, jestliže má hodnotu radekProPricteniRozdilu2, a výpočet opakujte.

  • sestavaVypocet.nesouhlasiAktivaPasiva — při výpočtu sestavy došlo k nesouhlasu aktiv a pasiv. Vyberte řádku, do které se má rozdíl promítnout (podle atributu for chybové hlášky radekProPricteniRozdilu, nebo radekProPricteniRozdilu2), a výpočet opakujte. Vzniká pouze při výpočtu sestavy typu Rozvaha.

  • sestavaVypocet.zaokrRadkaNevyresila — zvolená řádka pro přičtení rozdílu zaokrouhlovací chybu neopravila. Vyberte jinou a výpočet opakujte.

  • sestavaVypocet.zaokrRadkaRozbila — zvolením řádky pro přičtení rozdílu došlo k chybě na jiném řádku. Vyberte jinou a výpočet opakujte.


Import vlastní sestavy

Sestavy je možné i importovat, viz příklad níže:

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

Odpovědí je v případě úspěšného vytvoření sestavy:

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

Příslušnou sestavu lze v API i vytisknout, respektive vygenerovat PDF. Seznam reportů dostupných nad evidencí /sestava naleznete na adrese /c/{firma}/sestava/reports.xml.

Seznam dostupných reportů

Identifikátor

Název

rozvaha$$SUM_ZAKL

Rozvaha v základním rozsahu

rozvaha$$SUM

Rozvaha ve zjednodušeném rozsahu

rozvaha$$NES

Rozvaha v plném rozsahu

vysledovka$$SUM

Výkaz zisku a ztráty ve zjednodušeném rozsahu

vysledovka$$NES

Výkaz zisku a ztráty v plném rozsahu

cashFlow$$NES

Přehled o peněžních tocích

cashFlow$$MIN_OBDOBI

Přehled o peněžních tocích (včetně údajů za minulé období)

sesRadkyPort$$BEZ_ROZPADU

Řádky sestavy

sesRadkyPort$$ROZPAD_UCET

Řádky sestavy (Rozpad na účty)

sesRadkyPort$$ROZPAD_PREDPIS

Řádky sestavy (Standardní předpis, Uživatelský předpis)

sestavy$$SUM

Účetní sestavy

Pří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žít lze libovolnou filtraci.


Endpointy se strukturovanými daty pro formuláře

V API jsou k dispozici endpointy, které vrací potřebná data pro jednoduché použití účetních sestav ve formuláři:

  • /sestava/form-data.json — kompletní seznam sestav

  • /sestava/form-data/standard.json — standardní sestavy

  • /sestava/form-data/user.json — uživatelské sestavy

⚠️ U těchto endpointů je nutné uvést příponu formátu (.json nebo .xml). Adresa bez přípony vrací 404 s kódem adresaNeplatnaUrl.


Související

Dostali jste odpověď na svou otázku?