Preskoči na glavno vsebino

Inkrementálne aktualizácie

Čiastočné aktualizácie záznamov v REST API

Avtor: Lenka Haringerová

ABRA Flexi umožňuje čiastočné aktualizácie záznamov (zmeny hodnôt). Pri aktualizácii záznamov uveďte len také atribúty, ktoré chcete zmeniť. Ak uvediete prázdny atribút, dôjde k zmazaniu hodnoty atribútu.

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


Mazanie položiek

Väčšina záznamov môže obsahovať položky (napr. faktúra). Tieto položky je možné pridávať a mazať. Ak pri položke nie je uvedený identifikátor, je určujúce jej poradie.

⚠️ Odporúčame aj pri položkách uvádzať externý identifikátor, pretože na položku môžu byť naviazané ďalšie informácie (napr. z akého skladu bol tovar vydaný). Ak sa položky riadia len podľa poradia a dôjde k vloženiu záznamu na začiatok, hodnoty budú prepísané, ale naviazané informácie zostanú pri pôvodných záznamoch. Tento postup teda nie je vhodný pri aktualizáciách.


Aktualizácia všetkých položiek

Ak pri aktualizácii položiek nie je uvedený identifikátor, dôjde vždy k pridaniu záznamov. Ak chcete zoznam záznamov nahradiť a zmazať tak všetky položky, ktoré nie sú pri aktualizácii uvedené, použite atribút removeAll="true":

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

</faktura-vydana-polozka>
</polozkyFaktury>
</faktura-vydana>
</winstrom>

V tomto prípade platí, že všetky položky, ktoré nie sú v zozname uvedené, budú zmazané. Tie položky, ktoré uvedené sú, budú aktualizované/založené.

Ten istý požiadavok prepísaný do formátu JSON by vyzeral takto:

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

💡 removeAll="true" je deštruktívne — zmaže aj položky, o ktorých neviete. Vyskúšajte si požiadavok najprv s testovacím uložením (?dry-run=true) a v tagu <content /> skontrolujte výsledný stav dokladu.


Na čo si dať pozor

  • Na priame mazanie vybraných položiek možno použiť atribút action="delete" — pozri Vykonávanie akcií.

  • Medzi položkami môžu existovať vnútorné závislosti, a tak pri aktualizácii môže dôjsť k zmene položky, ktorá nie je explicitne modifikovaná.

  • Na podobnom princípe ako aktualizácia položiek funguje aj aktualizácia štítkov.

Ste s tem dobili odgovor na svoje vprašanje?