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?