Účetní sestavy v API

Jak v API generovat účetní sestavy?

Petr Pech avatar
Autor: Petr Pech
Aktualizováno před více než týdnem

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

Taková situace nastává v případě, kdy se po zaokrouhlení nerovnají aktiva a pasiva. 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.

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>

Dostali jste odpověď na svou otázku?