Přeskočit na hlavní obsah
Účetní sestavy v API

Jak v API generovat účetní sestavy?

Petr Pech avatar
Autor: Petr Pech
Aktualizováno před více než měsícem

V ABRA Flexi je možné si vytvořit vlastní účetní sestavy. Tyto účetní sestavy však lze generovat i právě prostřednictvím API rozhraní.

Jak na to v desktopové aplikaci, naleznete v návodu zde.

Jak pracovat s již přepočtenou sestavou?

Účetní sestavy nalezneme pomocí endpointu /sestava, tedy GET na URL adresu typu https://server:5434/c/firma/sestava.xml. Na této URL adrese nalezneme 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.

V poslední verzi přibyla v API nová evidence pro práci se standardními předpisy sestav. Ty nalezneme na endpointu /standardni-predpis, například tedy GET na URL adresu typu https://server:5434/c/firma/standardni-predpis.xml.

O sestavě však můžeme zjistit daleko více informací. Níže naleznete seznam, jaké informace a v jaké podobě je možné o sestavě získat.

  • /sestava.json - vrací pouze seznam sestav

  • /sestava.json?detail=full - vrací sestava → radkySestavy → stdPredpisy v plném detailu

  • /sestava.json?relations=radkySestavy - vrací sestava → radkySestavy

  • /radek-sestavy.json - vrací pouze seznam řádků

  • /radek-sestavy.json?detail=full - vrací radek-sestavy → stdPredpisy v plném detailu

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

  • /standardni-predpis.json - vrací seznam standardních předpisů

  • /standardni-predpis.json?detail=full vrací seznam standardních předpisů v plném detailu

Přepočet sestav

Přes API však není možné pouze zjistit informace a hodnoty dané sestavy. Sestavu je v API možné také přepočítat.

Oproti výše popsanému příkladu ke zjištění hodnot sestavy, je přepočet je vyvolán odesláním požadavku metodou PUT/POST na příslušnou URL.

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 lze zjistit 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 URL

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

Příklad použití sub-evidence umisteni-uctu:

Odesláním požadavku metodou GET na URL

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

Do elementu prepocti pak 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 (viz. evidence ucetni-obdobi). Pokud není tento parametr uveden, použije se automaticky období předcházející účetnímu období uvedenému v parametru ucetniObdobi.

  • minulyPocatecniRok - počáteční rok časového intervalu v rámci minulého účetního období. Pokud není tento parametr uveden, použije se automaticky rok předcházející tomu, který je uveden v 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í tento parametr uveden, použije se automaticky měsíc uvedený v parametru pocatecniMesic.

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

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

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

  • zaokrouhlitNa - možnost zaokrouhlit vypočítané částky. Pokud není parametr uveden, nebudou vypočítané částky zaokrouhleny. Je možné použít tyto hodnoty:

    • TISICE - zaokrouhlení na tisíce

    • JEDNOTKY - zaokrouhlení na jednotky

    • NEZAOKROUHLOVAT - výpočet bez zaokrouhlení (výchozí hodnota)

  • coZaokrouhlit - pokud nastavíme parametr zaokrouhlitNa, můžeme tímto parametrem ovlivnit, co bude zaokrouhleno. Je možné použít tyto hodnoty:

    • RADKY - zaokrouhlí se celý řádek sestavy

    • SYNTETICKE_UCTY - zaokrouhlí se celý syntetický účet, např. 211

    • ANALYTICKE_UCTY - zaokrouhlí se každý analytický účet zvlášť, např. 211001, 211002, atd.

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

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

Pozor: u sestavy typu Rozvaha musíme rozlišovat, zda zaokrouhlovací chyba nastala na straně aktiv nebo pasiv. Pokud zaokrouhlovací chyba nastane na straně aktiv, identifikátor řádku sestavy uvedeme do elementu radekProPricteniRozdilu, pokud zaokrouhlovací chyba nastane na straně pasiv, řádku sestavy uvedeme do elementu radekProPricteniRozdilu2.

Pokud zaokrouhlovací chyba nastane jak na straně aktiv tak na straně pasiv, potom je pro vyřešení situace nutné zadat oba dva řádky pro přičtení rozdílu.

Odesláním požadavku metodou GET na URL

/c/{firma}/sestava/code:VÝSLEDOVKA2016/pricteni-rozdilu?detail=custom:moznosti(id,cisRad,oznaceni,nazev) získáme 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 uvedeme do elementu radekProPricteniRozdilu, např. 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 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/testovaci_2/sestava/10002.xml</ref>
</result>
</results>
</winstrom>

Chybové kódy

  • sestavaVypocet.nesouhlasiMDaDalInfo - Nesouhlasí počáteční stavy MD a Dal. Opravte tak, že správně zadáte počáteční stavy, aby rozdíl byl 0.0.

  • sestavaVypocet.zaokrRadkaNevyplnena - Při výpočtu sestavy došlo k zaokrouhlovací chybě a nebyla zvolena žádná řádka pro přičtení rozdílu. Vyberte správnou (radekProPricteniRozdilu) 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 (radekProPricteniRozdilu), a výpočet opakujte. Vzniká pouze při výpočtu sestavy typu Rozvaha.

  • sestavaVypocet.zaokrRadkaNevyresila - Při výpočtu sestavy došlo k zaokrouhlovací chybě a zvolená řádka pro přičtení rozdílu chybu neopravila. Vyberte jinou a výpočet opakujte.

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

Export do PDF

V API lze příslušnou sestavu i vytisknout, resp. vygenerovat PDF. Seznam reportů dostupných nad evidencí /sestava naleznete zde.

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ří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

Lze použít libovolnou filtraci.

Dostali jste odpověď na svou otázku?