Zápis dat¶
Povinné položky importu¶
Obvykle stačí vyplnit jen to, co byste museli zadat i při ručním založení záznamu v aplikaci.
Některé položky je nutné uvést, i když má aplikace výchozí hodnotu — import ji sám nedoplní.
Téměř vždy je povinný typ dokladu (
<typDokl/>) — určuje mnoho dalších výchozích hodnot.Uvádí se pouze hodnota tagu; atributy
refashowAsjsou při importu ignorovány (slouží jen k vizualizaci exportu).Vazby na jiné systémy se dělají přes identifikátory (
code:,ext:,ean:, …).Nutnost vyplnit konkrétní pole se může lišit podle typu dokladu.
Vnitřní vazby mezi poli¶
Při ukládání se doplní výchozí hodnoty pro nevyplněná pole. Některá pole závisí na jiných (typ dokladu ovlivňuje sazby DPH apod.) — server sestaví strom závislostí a aplikuje hodnoty v pořadí závislosti, aby “řídicí” pole bylo nastaveno dřív než na něm závislé. Díky tomu nezáleží na pořadí atributů uvnitř jednoho záznamu v XML/JSON (ale záleží na pořadí jednotlivých záznamů v dávce — např. firma musí být založena dřív než objednávka, která na ni odkazuje).
Vedlejší efekt: uložení může změnit i pole, které nebylo v požadavku explicitně měněno (kaskáda závislostí) — to platí i pro inkrementální (částečné) aktualizace.
Inkrementální (částečná) aktualizace¶
Při aktualizaci stačí uvést jen atributy, které se mají změnit. Explicitně prázdný element hodnotu smaže:
<cenik id="123">
<nazevA>Nový název</nazevA>
<ean/> <!-- smazaná hodnota -->
</cenik>
Položky dokladu (např. faktury): pokud položka nemá uveden identifikátor, řídí se pořadím — rizikové pro update (vložení na začátek posune všechno ostatní a odpojí navázaná data od špatného řádku). Doporučeno vždy uvádět externí identifikátor položky.
Aktualizace bez identifikátoru vždy přidává nové položky. Pro úplné
nahrazení kolekce (smazání všeho neuvedeného) použijte removeAll="true":
<faktura-vydana id="123">
<polozkyFaktury removeAll="true">
<faktura-vydana-polozka><id>14</id>...</faktura-vydana-polozka>
</polozkyFaktury>
</faktura-vydana>
{"winstrom": {"faktura-vydana": [{
"id": "123",
"polozkyFaktury@removeAll": "true",
"polozkyFaktury": [{"id": "14", "...": "..."}]
}]}}
Vše, co v seznamu chybí, se smaže; uvedené položky se aktualizují/vytvoří.
Přímé smazání konkrétních položek: action="delete" (viz
Akce a zamykání). Stejný mechanismus platí i pro aktualizaci štítků
(viz Štítky, atributy a uživatelské vazby).
Datum poslední změny¶
Každý záznam má lastUpdate (používá i ABRA Flexi Sync k detekci změn) —
lze použít i ve filtru. Pro skutečné sledování změn/synchronizaci ale
doporučeno spíše specializované Changes API.
Výpočet DPH — kontrolní vzorce¶
U položkového dokladu je celkové DPH součtem DPH jednotlivých položek, na výsledek se aplikuje zaokrouhlení. Musí platit (s ohledem na zaokrouhlení):
sumDphCelkem = sumDphSniz + sumDphZakl
sumCelkem = sumOsv + sumZklSniz*szbDphSniz + sumZklZakl*sumDphZakl
sumCelkZakl = sumZklZakl * sumDphZakl
sumCelkSniz = sumZklSniz * sumDphSniz
sumZklCelkem = sumOsv + sumZklSniz + sumZklZakl
Stejná sada s příponou Men platí pro částky v cizí měně (musí navíc
odpovídat i přepočtu mezi měnami). Chyba “Zadaná hodnota […] vlastnosti
[sumCelkem] se liší od vypočtené hodnoty […]” znamená porušení některé z
těchto identit. Nejjednodušší je uvádět jen základy a nechat zbytek
dopočítat AbraFlexi.