Inkrementální aktualizace

Částečné aktualizace záznamů v REST API

Lenka Haringerová avatar
Autor: Lenka Haringerová
Aktualizováno před více než týdnem

ABRA Flexi umožňuje částečné aktualizace záznamů (změny hodnot). Při aktualizaci záznamů uveďte jen takové atributy, které chcete změnit. Pokud uvedete prázdný atribut, dojde ke smazání hodnoty atributu.

<?xml version="1.0"?>
<winstrom version="1.0">
  <cenik id="123">
    <nazevA>Nov&#xFD; n&#xE1;zev</nazevA>
    <!-- změněná hodnota -->
    <ean/>
    <!-- smazaná hodnota -->
  </cenik>
</winstrom>

Mazání položek

Většina záznamů může obsahovat položky (např. faktura). Tyto položky je možné přidávat a mazat. Pokud u položky není uveden identifikátor, je určující její pořadí. Doporučujeme i u položek uvádět externí identifikátor, protože na položku mohou být navázány další informace (např. z jakého skladu bylo zboží vydáno). Pokud dojde k řízení položek jen podle pořadí a dojde k vložení záznamu na začátek, hodnoty budou přepsány, ale navázané informace zůstanou u původních záznamů. Tento postup tedy není vhodný při aktualizacích.

Aktualizace všech položek

Pokud při aktualizaci položek není uveden identifikátor, dojde vždy k přidání záznamů. Pokud chcete seznam záznamů nahradit a smazat tak všechny položky, které nejsou při aktualizaci uvedeny, použijte atribut removeAll="true":

<?xml version="1.0"?>
<winstrom version="1.0">
<faktura-vydana id="123">
<polozkyFaktury removeAll="true">
<faktura-vydana-polozka>
<id>14</id> &#x22EE;
</faktura-vydana-polozka>
</polozkyFaktury>
</faktura-vydana>
</winstrom>

V tomto případě platí, že všechny položky, které nejsou v seznamu uvedeny, budou smazány. Ty položky, které uvedeny jsou budou aktualizovány/založeny.

Ten samý požadavek přepsaný do JSON formátu by vypadal takto:

{ "winstrom": 
{
"@version": "1.0",
"faktura-vydana": [
{
"id": "123",
"polozkyFaktury@removeAll": "true",
"polozkyFaktury": [{
"id": "14",

}]
}]
}
}

Pro přímé mazání vybraných položek lze použít atribut action="delete" viz Provádění akcí.

Mezi položkami mohou existovat vnitřní závislosti a tak při aktualizaci může dojít ke změně položky, která není explicitně modifikována.

Na podobném principu jako aktualizace položek funguje i aktualizace štítků.

Dostali jste odpověď na svou otázku?