Přeskočit na hlavní obsah

API: Validace výpočtu cen na položkách

Nová validace v REST API, která kontroluje hodnoty nastavené v položkách dokladu

Jana Šťastná avatar
Autor: Jana Šťastná
Aktualizováno včera

Od verze 2025.6.0 byla přidána validace dat pro import položky dokladu. Kontroluje, zda po zaokrouhlení oproti zadaným sumám odpovídá přepočet:

cenaMj (jednotková cena) * mnozMj (množství)

Kontrolou prochází veškeré nastavené slevy (v hlavičce i na položce) a celkové sumy.

Položka k vytvoření nyní potřebuje pole cenaMj k tomu, aby vytvoření proběhlo úspěšně. Pokud použito nebude, skončí pokus o vytvoření chybou. V takovém případě se nabízí několik řešení popsaných níže.

Nevalidní XML (popř. JSON) končí chybou podobnou této

<error for="slevaPol" path="faktura-vydana[temporary-id=null].polozkyFaktury" code="INVALID" messageCode="polDoklNesediSumyPoSleve">Pro položku s jednotkovou cenou [409.8] za Mj, množstvím [1.0], slevou na dokladu [10.0] a slevou na položce [5.0] vychází očekávaná cena [348.33], ale zadaná hodnota byla [348.3]. [VF1-0180/2025]</error>

Možná řešení

Použití previousValue

Použijete jej ve chvíli, kdy neznáte cenaMj a znáte celkovou částku.

Lze tedy použít pro tyto pole:

  • sumZkl

  • sumCelkem

  • sumZklMen

  • sumCelkemMen

Příklad:

 <faktura-vydana-polozka>
<typPolozkyK>typPolozky.obecny</typPolozkyK>
<mnozMj>1.0</mnozMj>
<sumDph>86.78</sumDph>
<sumZkl previousValue="0">413.22</sumZkl>
<text>test</text>
</faktura-vydana-polozka>

Nastavit položky jako účetní položku (typPolozkyK):

Tento typ položky nelze použít ceník (cenik), množství (mnozMj) ani jednotkovou cenu (cenaMj). Pro tyto účely je nezbytné použít řešení výše, nebo aktivovat parametr níže.

Příklad:

<faktura-vydana-polozka>
<typPolozkyK>typPolozky.ucetni</typPolozkyK>
<sumDph>86.78</sumDph>
<sumZkl>413.22</sumZkl>
</faktura-vydana-polozka>

Nastavit parametr paramValidateSumFak:

  • Byl vytvořen pokročilý parametr paramValidateSumFak, který je defaultně true a vypíná/zapíná tuto validaci.

  • Před použitím parametru doporučujeme konzultovat s technickou podporou - vypnutí validace může způsobit neočekávané chování (resp. nově přidanou validaci, která je potřeba, vypne).

XML parametr k importu:

<?xml version="1.0" encoding="utf-8"?>
<winstrom version="1.0">
<parametr>
<paramK>paramValidateSumFak</paramK>
<hodnota>true</hodnota>
</parametr>
</winstrom>

Příklady nyní nevalidních XML

Chybějící cenaMj

<faktura-vydana-polozka>
<sumCelkem>177.00</sumCelkem>
<sumZkl>146.28</sumZkl>
<mnozBaleni>3.00</mnozBaleni>
<baleniId>1</baleniId>
<nazev>Test</nazev>
<cenik>code:TEST</cenik>
</faktura-vydana-polozka>

Pokud cenaMj neznáte, řešením je v tomto případě použít právě previousValue.

Dostali jste odpověď na svou otázku?