Přeskočit na hlavní obsah

Zaokrouhlení cen dokladu v REST API

Jak zaokrouhlit ceny na přijaté faktuře či pokladního dokladu přes API Flexi?

Autor: Petr Pech

Od verze 2021.9.1 je možné přes REST API zaokrouhlit ceny přijaté faktury nebo pokladního dokladu. Služba se jmenuje zaokrouhli a je dostupná v evidencích faktura-prijata a pokladni-pohyb.


Popis služby

Jde o totožnou službu, jakou najdete i v desktopové aplikaci:

  • detail přijaté faktury > Služby > Zaokrouhlení cen dokladu

  • detail pokladního dokladu > Služby > Zaokrouhlení cen dokladu

Službě předáte ceny, na které má být doklad zaokrouhlen. Rozdíl proti stávajícím součtům pak zapíše jako novou položku typu typPolozky.ucetni s názvem Zaokrouhleno, takže součty dokladu odpovídají požadovaným hodnotám.

⚠️ Zaokrouhlení cen dokladu lze použít jen u položkového dokladu. U dokladu bez vlastních položek — například u pokladního dokladu, který je pouze úhradou faktury — vrací služba 201 s success true, ale žádná zaokrouhlovací položka nevznikne. Výsledek proto vždy ověřte přečtením součtů dokladu.

Volá se metodou POST nebo PUT na endpoint dané evidence:

POST https://demo.flexibee.eu/c/demo/faktura-prijata.xml
POST https://demo.flexibee.eu/c/demo/pokladni-pohyb.xml


Vstupní parametry služby

Služba má jediný vstupní parametr pozadovaneCeny — ceny, podle kterých bude dopočítán zaokrouhlovací rozdíl, zadané po jednotlivých sazbách DPH:

Elementy

Sazba

zklZakl, dphZakl, celkZakl

Základní sazba — základ, DPH a včetně DPH

zklSniz, dphSniz, celkSniz

Snížená sazba

zklSniz2, dphSniz2, celkSniz2

2. snížená sazba

osv

Částka osvobozená od daně

🚨 Trojice hodnot v jedné sazbě musí být vnitřně konzistentní — základ plus DPH se musí rovnat částce včetně DPH. Jinak služba vrací 400 s kódem dokladKorekceCastekChybaSouctu a hlášením Součet částek v sazbě 'základní' nesouhlasí.

ℹ️ Požadované ceny se zadávají v měně dokladu. U dokladu v cizí měně se částky v tuzemské měně dopočítají kurzem dokladu.


Příklady použití

Přijatá faktura v základní sazbě

POST https://demo.flexibee.eu/c/demo/faktura-prijata.xml
<winstrom version="1.0">
<faktura-prijata>
<!-- Přijatá faktura, která bude zaokrouhlena. -->
<id>code:PF0001/2021</id>
<!-- Lze uvést i další vlastnosti dokladu, jako při importu. -->
<zaokrouhli>
<pozadovaneCeny>
<!-- Základ částky pro základní sazbu. -->
<zklZakl>110</zklZakl>
<!-- DPH částky pro základní sazbu. -->
<dphZakl>23.1</dphZakl>
<!-- Částka pro základní sazbu včetně DPH. -->
<celkZakl>133.1</celkZakl>
</pozadovaneCeny>
</zaokrouhli>
</faktura-prijata>
</winstrom>

Odpovědí je 201 Created se standardním výsledkem importu a na dokladu vznikne zaokrouhlovací položka:

<winstrom version="1.0">
<faktura-prijata>
<id>code:PF0001/2021</id>
<sumCelkem>133.1</sumCelkem>
<polozkyDokladu>
<faktura-prijata-polozka>
<!-- Původní položka dokladu. -->
<typPolozkyK>typPolozky.obecny</typPolozkyK>
<sumZkl>100.0</sumZkl>
<sumDph>21.0</sumDph>
<sumCelkem>121.0</sumCelkem>
</faktura-prijata-polozka>
<faktura-prijata-polozka>
<!-- Položka, která vznikla při zaokrouhlení. -->
<typPolozkyK>typPolozky.ucetni</typPolozkyK>
<nazev>Zaokrouhleno</nazev>
<sumZkl>10.0</sumZkl>
<sumDph>2.1</sumDph>
<sumCelkem>12.1</sumCelkem>
</faktura-prijata-polozka>
</polozkyDokladu>
</faktura-prijata>
</winstrom>

Pokladní doklad v nulové sazbě

PUT https://demo.flexibee.eu/c/demo/pokladni-pohyb.xml
<winstrom version="1.0">
<pokladni-pohyb>
<!-- Pokladní pohyb, který bude zaokrouhlen. -->
<id>code:P-0001/2021</id>
<!-- Lze uvést i další vlastnosti dokladu, jako při importu. -->
<zaokrouhli>
<pozadovaneCeny>
<!-- Požadovaná částka osvobozená od daně. -->
<osv>140</osv>
</pozadovaneCeny>
</zaokrouhli>
</pokladni-pohyb>
</winstrom>

Výsledkem je opět zaokrouhlovací položka na dokladu:

<winstrom version="1.0">
<pokladni-pohyb>
<id>code:P-0001/2021</id>
<sumCelkem>140</sumCelkem>
<polozkyDokladu>
<pokladni-pohyb-polozka>
<!-- Původní položka dokladu. -->
<typPolozkyK>typPolozky.obecny</typPolozkyK>
<sumZkl>130.0</sumZkl>
<sumDph>0.0</sumDph>
<sumCelkem>130.0</sumCelkem>
</pokladni-pohyb-polozka>
<pokladni-pohyb-polozka>
<!-- Položka, která vznikla při zaokrouhlení. -->
<typPolozkyK>typPolozky.ucetni</typPolozkyK>
<nazev>Zaokrouhleno</nazev>
<sumZkl>10.0</sumZkl>
<sumDph>0.0</sumDph>
<sumCelkem>10.0</sumCelkem>
</pokladni-pohyb-polozka>
</polozkyDokladu>
</pokladni-pohyb>
</winstrom>


Související

Dostali jste odpověď na svou otázku?