Preskoči na glavno vsebino

Uzamykanie a odomykanie záznamov

Ako zamknúť alebo odomknúť jednotlivé záznamy cez REST API?

Avtor: Petr Pech

Zamknutý záznam nemožno meniť — zmeny sú možné až po odomknutí. Cez REST API sa zamykanie a odomykanie vykonáva akciou v atribúte action, a to ako nad jedným záznamom, tak dávkovo nad skupinou záznamov.


Stavy zámku

Stav zámku je vidieť vo vlastnosti zamekK. Tá je len na čítanie — nastavuje ju výhradne príslušná akcia.

Hodnota zamekK

Popis

Nastaví akcia

zamek.otevreno

Otvorené

unlock

zamek.prohlednuto

Prezreté

žiadna z akcií zamykania

zamek.polozamceno

Zamknuté mimo účtovné

lock-for-ucetni

zamek.zamceno

Zamknuté

lock

🚨 Vlastnosť zamekK uvedená v importe sa ticho ignoruje — import prebehne ako úspešný, ale stav zámku sa nezmení. Zámok vždy nastavujte akciou, nikdy importom vlastnosti.


Zamknutie záznamu

Na zamknutie záznamu slúži akcia lock:

<?xml version="1.0"?>
<winstrom version="1.0">
<faktura-vydana action="lock">
<id>1</id>
</faktura-vydana>
</winstrom>

Záznam skončí v stave zamek.zamceno. Opakované volanie akcie nad už zamknutým záznamom chybu nevyvolá.


Zamknutie mimo účtovné

Akcia lock-for-ucetni nastaví záznam do stavu zamek.polozamceno, teda Zamknuté mimo účtovné:

<?xml version="1.0"?>
<winstrom version="1.0">
<faktura-vydana action="lock-for-ucetni">
<id>1</id>
</faktura-vydana>
</winstrom>


Odomknutie záznamu

Na odomknutie záznamu slúži akcia unlock. Vráti záznam do stavu zamek.otevreno z oboch zamknutých stavov:

<?xml version="1.0"?>
<winstrom version="1.0">
<faktura-vydana action="unlock">
<id>1</id>
</faktura-vydana>
</winstrom>


Dávkové zamykanie a odomykanie

Akciu možno vyvolať aj nad skupinou záznamov. Namiesto elementu id sa uvedie atribút filter s filtrom:

<?xml version="1.0"?>
<winstrom version="1.0">
<faktura-vydana action="lock" filter="stavUhrK = 'stavUhr.uhrazeno' and typDokl = 'code:INTERNET'"></faktura-vydana>
</winstrom>

V návratových hodnotách je v updated počet spracovaných záznamov a v results ich ID. Filter, ktorý nič nenájde, vracia úspech a updated rovné nule — skutočný počet zamknutých dokladov preto vždy čítajte z updated.

⚠️ Než dávku spustíte, overte si rovnaký filter obyčajným dotazom GET nad evidenciou. Filter s neexistujúcou vlastnosťou skončí chybou 400 a hlásením Vlastnosť … neexistuje, ale filter napísaný inak, než ste zamýšľali, zamkne aj doklady, ktoré ste zamknúť nechceli.

Import s parametrom ?dry-run=true vstup len skontroluje a zámok nezmení, takže sa dá použiť na overenie dávky nasucho.


Evidencie, v ktorých zamykanie funguje

Akcie lock, lock-for-ucetni a unlock sú dostupné pri dokladových evidenciách:

Oblasť

Evidencia

Faktúry a ostatné pohľadávky a záväzky

faktura-vydana, faktura-prijata, pohledavka, zavazek

Obchodné doklady

objednavka-prijata, objednavka-vydana, nabidka-vydana, poptavka-prijata

Peňažné a interné doklady

banka, pokladni-pohyb, interni-doklad

Sklad

skladovy-pohyb

Číselníky a ďalšie nedokladové evidencie — napríklad adresar, cenik, smlouva alebo zakazka — zamykať nemožno. Pokus o to skončí chybou importXmlActionNotSupported a hlásením, ktoré vypíše akcie v danej evidencii povolené.


Chybové stavy

Kód chyby

Príčina

importXmlJeZamceno

Import sa pokúsil zmeniť zamknutý záznam. Platí pre oba zamknuté stavy — najprv je nutné záznam odomknúť.

importXmlActionNotSupported

Atribút action obsahuje akciu, ktorú daná evidencia nepodporuje, alebo je v názve akcie chyba.

Obe chyby vracajú 400 a celý import sa nevykoná.

ℹ️ Zamykať doklady môže len používateľ, ktorý má právo Právo zamykať doklady a obdobia (vlastnosť pravoZamykat v evidencii uzivatel).


Súvisiace

Ste s tem dobili odgovor na svoje vprašanje?