Přeskočit na hlavní obsah

Rozúčtování dokladu pomocí REST API

Jak rozúčtovat doklad pomocí služby v API Flexi?

Autor: Petr Pech

Stejně jako v desktopové nebo webové aplikaci je možné využít funkci Rozúčtování dokladu. Pomocí ní lze doklad rozúčtovat na dílčí položky. Funkci je možné použít jen u dokladu, který položky dosud neobsahuje.

Funkce je dostupná pro tyto evidence

  • faktura-prijata

  • faktura-vydana

  • banka

  • pokladni-pohyb

  • pohledavka

  • zavazek


Způsob volání

Rozúčtování se odesílá metodou PUT na konkrétní doklad — v adrese tedy uvádíte evidenci a identifikátor dokladu:

PUT https://demo.flexibee.eu/c/demo/faktura-prijata/123.xml
PUT https://demo.flexibee.eu/c/demo/zavazek/code:ZAV0005-2024.json

Popis jednotlivých evidencí naleznete v seznamu evidencí.

💡 Před ostrým zápisem si volání vyzkoušejte s parametrem ?dry-run=true. Požadavek se zpracuje a zvaliduje, ale do databáze se nic nezapíše.


Parametry řádků rozúčtování

Vstupními daty jsou jednotlivé řádky rozúčtování s účetními náležitostmi pro správné zaúčtování. Všechny názvy parametrů jsou case-sensitive.

Parametr

Význam

Zdrojová evidence

typUcOp

Předpis zaúčtování

predpis-zauctovani

sazbaDph

Sazba DPH

sazba-dph

sumZkl

Částka základu (desetinné číslo)

zklMdUcet

Má dáti základu

ucet

zklDalUcet

Dal základu

ucet

sumDph

Částka DPH (desetinné číslo)

dphMdUcet

Má dáti DPH

ucet

dphDalUcet

Dal DPH

ucet

taxKey

Daňový klíč

tax-key

clenDph

Řádek DPH

cleneni-dph

clenKonVykDph

Řádek kontrolního hlášení DPH

cleneni-kontrolni-hlaseni

stredisko

Středisko

stredisko

cinnost

Činnost

cinnost

zakazka

Zakázka

zakazka

Hodnotou parametru je vždy identifikátor záznamu z uvedené evidence, typicky ve tvaru code:KÓD.

📝 Evidence tax-key není dostupná ve všech legislativách. Ve firmě s českou legislativou vrací volání 400 s kódem akcePristupOdepren.


Příklady použití

1. Rozúčtování přijaté faktury na dva řádky v XML

<winstrom version="1.0">
<faktura-prijata>
<rozuctujDoklad>
<radkyRozuctovani>
<radek>
<typUcOp>code:NÁKUP ZBOŽÍ A</typUcOp>
<sumZkl>75.0</sumZkl>
<sazbaDph>1</sazbaDph>
<zklMdUcet>code:131001</zklMdUcet>
<zklDalUcet>code:321001</zklDalUcet>
<clenDph>code:000P</clenDph>
</radek>
<radek>
<typUcOp>code:NÁKUP ZBOŽÍ B</typUcOp>
<sumZkl>25.0</sumZkl>
<sazbaDph>1</sazbaDph>
<zklMdUcet>code:131001</zklMdUcet>
<zklDalUcet>code:321001</zklDalUcet>
<clenDph>code:000P</clenDph>
</radek>
</radkyRozuctovani>
</rozuctujDoklad>
</faktura-prijata>
</winstrom>

Výsledkem jsou položky dokladu odpovídající odeslaným řádkům:

<winstrom version="1.0">
<faktura-prijata>
<id>123</id>
<polozkyFaktury>
<faktura-prijata-polozka>
<typUcOp>code:NÁKUP ZBOŽÍ A</typUcOp>
<sumZkl>75.0</sumZkl>
<sazbaDph>1</sazbaDph>
<zklMdUcet>code:131001</zklMdUcet>
<zklDalUcet>code:321001</zklDalUcet>
<clenDph>code:000P</clenDph>
</faktura-prijata-polozka>
<faktura-prijata-polozka>
<typUcOp>code:NÁKUP ZBOŽÍ B</typUcOp>
<sumZkl>25.0</sumZkl>
<sazbaDph>1</sazbaDph>
<zklMdUcet>code:131001</zklMdUcet>
<zklDalUcet>code:321001</zklDalUcet>
<clenDph>code:000P</clenDph>
</faktura-prijata-polozka>
</polozkyFaktury>
</faktura-prijata>
</winstrom>

2. Rozúčtování závazku na dva řádky v JSON

{
"winstrom": {
"zavazek": {
"rozuctujDoklad": {
"radkyRozuctovani": [
{
"typUcOp": "code:CESTOVNÉ",
"sumZkl": "750.0",
"sazbaDph": "1",
"zklMdUcet": "code:512001",
"zklDalUcet": "code:314001",
"clenDph": "code:40-41"
},
{
"typUcOp": "code:CESTOVNÉ",
"sumZkl": "250.0",
"sazbaDph": "1",
"zklMdUcet": "code:512001",
"zklDalUcet": "code:314001",
"clenDph": "code:40-41"
}
]
}
}
}
}


Neúspěšné požadavky

Součet řádků neodpovídá částce dokladu

Pokud částky řádků v součtu neodpovídají celkové částce dokladu, vrátí se hlášení:

"message": "Suma položek nesouhlasí se sumou dokladu."

Hodnota parametru v datech neexistuje

Odpovědí je 400 a chyba s kódem NOT-FOUND a názvem hledaného objektu:

"code": "NOT-FOUND(cz.winstrom.vo.ucto.Ucet)(code:521002)"
"message": "Záznam pro parametr (zklMdUcet) nebyl v datovém zdroji nalezen: cz.winstrom.vo.ucto.Ucet#code:521002 [ZAV0005/2024]"

Syntakticky chybný zápis

Například přepis názvu elementu radkyRozuctovani:

{
"winstrom": {
"zavazek": {
"rozuctujDoklad": {
"radkyRoyuctovani": [

Odpovědí je 500 s kódem importXmlInternalError a hlášením Interní chyba aplikace. Názvy elementů proto opisujte přesně.


Související

Dostali jste odpověď na svou otázku?