Přeskočit na hlavní obsah

Zamykání a odemykání záznamů

Jak zamknout či odemknout jednotlivé záznamy přes REST API?

Autor: Petr Pech

Zamčený záznam nelze měnit — změny jsou možné až po odemčení. Přes REST API se zamykání a odemykání provádí akcí v atributu action, a to jak nad jedním záznamem, tak dávkově nad skupinou záznamů.


Stavy zámku

Stav zámku je vidět ve vlastnosti zamekK. Ta je jen ke čtení — nastavuje ji výhradně příslušná akce.

Hodnota zamekK

Popis

Nastaví akce

zamek.otevreno

Otevřeno

unlock

zamek.prohlednuto

Prohlédnuto

žádná z akcí zamykání

zamek.polozamceno

Zamknuto mimo účetní

lock-for-ucetni

zamek.zamceno

Zamknuto

lock

🚨 Vlastnost zamekK uvedená v importu se tiše ignoruje — import projde jako úspěšný, ale stav zámku se nezmění. Zámek vždy nastavujte akcí, nikdy importem vlastnosti.


Zamčení záznamu

K zamčení záznamu slouží akce lock:

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

Záznam skončí ve stavu zamek.zamceno. Opakované volání akce nad už zamčeným záznamem chybu nevyvolá.


Zamčení mimo účetní

Akce lock-for-ucetni nastaví záznam do stavu zamek.polozamceno, tedy Zamknuto mimo účetní:

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


Odemčení záznamu

K odemčení záznamu slouží akce unlock. Vrátí záznam do stavu zamek.otevreno z obou zamčených stavů:

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


Dávkové zamykání a odemykání

Akci lze vyvolat i nad skupinou záznamů. Místo elementu id se uvede atribut filter se filtrem:

<?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 zpracovaných záznamů a v results jejich ID. Filtr, který nic nenajde, vrací úspěch a updated rovné nule — skutečný počet zamčených dokladů proto vždy čtěte z updated.

⚠️ Než dávku spustíte, ověřte si stejný filtr obyčejným dotazem GET nad evidencí. Filtr s neexistující vlastností skončí chybou 400 a hlášením Vlastnost … neexistuje, ale filtr napsaný jinak, než jste zamýšleli, zamkne i doklady, které jste zamykat nechtěli.

Import s parametrem ?dry-run=true vstup jen zkontroluje a zámek nezmění, takže se dá použít k ověření dávky nasucho.


Evidence, ve kterých zamykání funguje

Akce lock, lock-for-ucetni a unlock jsou dostupné u dokladových evidencí:

Oblast

Evidence

Faktury a ostatní pohledávky a závazky

faktura-vydana, faktura-prijata, pohledavka, zavazek

Obchodní doklady

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

Peněžní a interní doklady

banka, pokladni-pohyb, interni-doklad

Sklad

skladovy-pohyb

Číselníky a další nedokladové evidence — například adresar, cenik, smlouva nebo zakazka — zamykat nelze. Pokus o to skončí chybou importXmlActionNotSupported a hlášením, které vypíše akce v dané evidenci povolené.


Chybové stavy

Kód chyby

Příčina

importXmlJeZamceno

Import se pokusil změnit zamčený záznam. Platí pro oba zamčené stavy — nejdřív je nutné záznam odemknout.

importXmlActionNotSupported

Atribut action obsahuje akci, kterou daná evidence nepodporuje, nebo je v názvu akce chyba.

Obě chyby vracejí 400 a celý import se neprovede.

ℹ️ Zamykat doklady může jen uživatel, který má právo Právo zamykat doklady a období (vlastnost pravoZamykat v evidenci uzivatel).


Související

Dostali jste odpověď na svou otázku?