Přeskočit na hlavní obsah

Předchozí hodnota – způsob reakce na změnu

Funkce reakce na změnu

Autor: Petr Pech

Do systému je zapracována schopnost reakce na změnu a tu můžete použít i z jiného systému. Tato funkce se obvykle používá v kombinaci s ?dry-run=true v případech, kdy zpřístupňujete data uživateli k přímé editaci.

Uživatel očekává, že pokud na faktuře změní kód firmy, dojde k přepisu názvu firmy. Nicméně ve formuláři musí být uveden i název firmy, aby jej uživatel mohl změnit. Pomocí předchozí hodnoty se dá určit reakce na tuto změnu. Předchozích hodnot lze v jednom požadavku použít více.


Ukázka

Požadavek s uvedenou předchozí hodnotou:

<?xml version="1.0"?>
<winstrom version="1.0">
<faktura-vydana id="123">
<firma previousValue="code:JINA FIRMA">code:FIRMA</firma>
<nazFirmy>Jiná firma</nazFirmy>
</faktura-vydana>
</winstrom>

Odpovědí pak je — název firmy se přepsal podle nově vybrané firmy:

<?xml version="1.0"?>
<winstrom version="1.0">
<faktura-vydana id="123">
<firma>code:FIRMA</firma>
<nazFirmy>Firma</nazFirmy>
</faktura-vydana>
</winstrom>

V případě, že by nebyla uvedena předchozí hodnota, vypadala by odpověď takto — název firmy zůstane, jak byl poslán:

<?xml version="1.0"?>
<winstrom version="1.0">
<faktura-vydana id="123">
<firma>code:FIRMA</firma>
<nazFirmy>Jiná firma</nazFirmy>
</faktura-vydana>
</winstrom>


Proč to používat

Pokud byste chtěli dosáhnout stejného efektu i bez uvedení předchozí hodnoty, museli byste vynechat atributy, které souvisí se měněným atributem. Museli byste tak znát veškeré vazby, které závisí i na aktuálních datech.

ℹ️ Proces reakce na změnu se spouští jen tehdy, pokud došlo k opravdové změně. Pokud například změníte typ dokladu, který ale nezmění předpis zaúčtování, nedojde k přepsání účtů (má dáti a dal).


Zápis v JSON

Ve formátu JSON se hodnota uvádí jako další tag s názvem firma-previousValue:

{
"winstrom": {
"@version": "1.0",
"faktura-vydana": [{
"id": "123",
"firma": "code:FIRMA",
"firma-previousValue": "code:JINA FIRMA",
"nazFirmy": "Jiná firma"
}]
}
}


Související

Dostali jste odpověď na svou otázku?