Je-li changes API zapnuté, ABRA Flexi zaznamenává všechny změny provedené v databázi firmy do changelogu a umožňuje seznam změn zpětně získat.
Změny jsou vzestupně číslované, takže firma má v každém okamžiku dobře definovanou globální verzi.
Čísla verzí nemusí následovat těsně po sobě, v řadě mohou být z technických důvodů mezery. Vždy je však číslo verze unikátní a rostoucí. Toho lze využít k automatizované synchronizaci externích systémů s ABRA Flexi a také jde o základ pro funkci okamžitého upozorňování na změny (Web Hooks).
Licence ABRA Flexi musí mít aktivní REST API minimálně pro čtení. To mají všechny nové placené licence již standardně.
Zjištění stavu a zapnutí / vypnutí lze provést nejsnáze ve webovém rozhraní na adrese: /c/{firma}/changes/control
Případně lze zapnout PUT requestem na adresu /c/{firma}/changes/enable.xml a vypnout taktéž PUT requestem na adresu /c/{firma}/changes/disable.xml.
Kromě PUT lze použít také POST. Pokud nemáte aktivní REST API pro čtení nebo pro zápis, odpověď je 403 Forbidden.
Ukázka aktivace pomocí programu curl:
curl -k -L -u jmeno:heslo -X PUT https://localhost:5434/c/{firma}/changes/enable.xml -H Content-Length:0
Získání aktuální globální verze
Do jakéhokoliv XML (resp. JSON) exportu získaného přes REST API lze doplnit aktuální globání verzi přidáním parametru ?add-global-version=true. Odpověď bude vypadat takto:
<?xml version="1.0"?> <winstrom version="1.0" globalVersion="6">
...
</winstrom>
Získání záznamů o změnách
Na adrese /c/firma/changes.xml se nachází seznam všech změn od začátku jejich sledování.
Výpis vypadá takto:
<?xml version="1.0"?>
<winstrom version="1.0" globalVersion="6">
<faktura-vydana in-version="3" operation="create" timestamp="2019-01-01 00:00:00.0">
<id>1</id>
</faktura-vydana>
<faktura-vydana-polozka in-version="4" operation="create" timestamp="2019-06-07 12:34:56.7">
<id>1</id>
</faktura-vydana-polozka>
<faktura-vydana in-version="5" operation="update" timestamp="2019-06-07 12:34:56.7">
<id>1</id>
<id>code:VF1-0001/2012</id>
</faktura-vydana>
<next>6</next>
</winstrom>
Uvedeno je vždy číselné ID objektu (<id>1</id>) a kód (<id>code:KÓD</id>); pokud měl objekt v době provádění operace i nějaká externí ID, pak jsou uvedena i ta (<id>ext:...</id>).
V atributech každého elementu je uvedeno, v jaké verzi k operaci došlo (in-version) a o jakou operaci šlo (operation; možné hodnoty jsou create, update a delete).
Vždy je přítomen atribut globalVersion. Posledním elementem ve výpisu je vždy next, který udává číslo verze, kterou by tento výpis pokračoval, případně none, pokud žádné další změny nejsou.
Výpis lze upravit následujícími parametry:
| Od které verze se má vypisovat (včetně); defaultně od počátku sledování. |
| Kolik záznamů se má vypsat; defaultně 100, maximálně 1000. |
| Pro které evidence se mají změny vypisovat; lze uvést vícekrát, není-li uvedeno, vypisují se všechny. |
Ve formátu JSON vypadají změny takto:
{
"winstrom": {
"@globalVersion": "8",
"changes": [
{
"@evidence": "faktura-vydana",
"@in-version": "3",
"@operation": "create",
"@timestamp": "2019-01-01 00:00:00.0",
"id": "1",
"external-ids": []
},
{
"@evidence": "faktura-vydana-polozka",
"@in-version": "4",
"@operation": "create",
"@timestamp": "2019-06-07 12:34:56.7",
"id": "1",
"external-ids": []
},
{
"@evidence": "faktura-vydana",
"@in-version": "5",
"@operation": "update",
"@timestamp": "2019-06-07 12:34:56.7",
"id": "1",
"external-ids": [
"code:VF1-0001\/2012"
]
}
],
"next": "6"
}
}
Zjištění stavu zapnutí Changes API
Uživatelsky lze zjistit stav zapnutí na adrese /c/{firma}/changes/control. Zde je také možné Changes API zapínat nebo vypínat.
Pokud potřebujete zjistit stav programově, tak použijte GET /c/firma/changes/status.xml. V případě odpovědi true je Changes API zapnuté. Pokud je odpovědí false nebo chyba (pokud není povolené REST API) je Changes API vypnuté.
Synchronizace externích systémů s ABRA Flexi
Verzované změny lze snadno využít k efektivní synchronizaci externích systémů s ABRA Flexi (na rozdíl od data poslední změny). Postup je následující:
Počáteční nahrání dat:
Získat aktuální data včetně jejich verze (
?add-global-version=true)Uložit data
Zapamatovat si verzi (z atributu
globalVersion)
Rozdílová synchronizace:
Stáhnout změny od poslední zapamatované verze (
?start=)Stáhnout změněná data a uložit je, případně smazat odstraněná data
Zapamatovat si verzi (z elementu
next, případně z atributuglobalVersion)GOTO 1
ERROR: could not obtain lock on relation „????“
Pokud se vám zobrazí chyba ERROR: could not obtain lock on relation "????", nezoufejte. Kvůli výkonnosti nejsou v databázi funkce, které obsluhují Changes API vůbec přidané. V případě aktivace Changes API je do systému zaneseme. Proto je potřeba exkluzivně zamknout celou databázi.
Řešením tedy je se odhlásit z ABRA Flexi – jak z webového rozhraní tak klientské aplikace. Pak už to projde.
Ukázka chyby:
ERROR: could not obtain lock on relation "drady" Kde: SQL statement "LOCK TABLE drady IN ACCESS EXCLUSIVE MODE NOWAIT"
Endpointy logované v Changes API
Adresář a kontakty
Agenda | Endpoint |
Adresář |
|
Bankovní účet (adresář) |
|
Kontakt |
|
Místo určení |
|
PSČ |
|
Skupina firem |
|
Peněžní ústav |
|
Stát |
|
Typ aktivity |
|
Typ nákladu |
|
Ceník a zboží
Agenda | Endpoint |
Atribut |
|
Cenová úroveň |
|
Ceník |
|
Dodavatel |
|
Individuální ceník |
|
Kusovník |
|
Měrná jednotka |
|
Odběratel |
|
Podobné zboží |
|
Poplatek |
|
Příslušenství |
|
Sady a komplety |
|
Ceníková skupina |
|
Skupina zboží |
|
Typ atributu |
|
Skupina atributů |
|
Stav ceníku |
|
Doklady — faktury a pohledávky
Agenda | Endpoint |
Faktura přijatá |
|
Faktura přijatá — položka |
|
Faktura vydaná |
|
Faktura vydaná — položka |
|
Prodejka * |
|
Prodejka — položka * |
|
Pohledávka |
|
Pohledávka — položka |
|
Závazek |
|
Závazek — položka |
|
Typ faktury přijaté |
|
Typ faktury vydané |
|
Typ prodejky * |
|
Typ pohledávky |
|
Typ závazku |
|
Doklady — banka, pokladna, interní doklady
Agenda | Endpoint |
Banka * |
|
Banka — položka |
|
Vzájemný zápočet * |
|
Typ banky * |
|
Typ vzájemných zápočtů * |
|
Pokladní pohyb |
|
Pokladní pohyb — položka |
|
Typ pokladního pohybu |
|
Interní doklad |
|
Interní doklad — položka |
|
Typ interního dokladu |
|
Doklady — obchodní
Agenda | Endpoint |
Nabídka přijatá |
|
Nabídka přijatá — položka |
|
Nabídka vydaná |
|
Nabídka vydaná — položka |
|
Objednávka přijatá |
|
Objednávka přijatá — položka |
|
Objednávka vydaná |
|
Objednávka vydaná — položka |
|
Poptávka přijatá |
|
Poptávka přijatá — položka |
|
Poptávka vydaná |
|
Poptávka vydaná — položka |
|
Typ nabídky přijaté |
|
Typ nabídky vydané |
|
Typ objednávky přijaté |
|
Typ objednávky vydané |
|
Typ poptávky přijaté |
|
Typ poptávky vydané |
|
Stav obchodního dokladu |
|
Forma dopravy |
|
Forma úhrady |
|
Platba prodejky |
|
Forma úhrady — zaúčtování |
|
Doklady — sklad
Agenda | Endpoint |
Skladový pohyb |
|
Skladový pohyb — položka |
|
Typ skladového pohybu |
|
Skladová karta |
|
Stav skladu k datu |
|
Inventura |
|
Inventura — položka |
|
Rezervace |
|
Mapování skladu |
|
Umístění ve skladu — místnost * |
|
Umístění ve skladu — regál * |
|
Umístění ve skladu — police * |
|
Výrobní číslo |
|
Doklady — smlouvy
Agenda | Endpoint |
Smlouva * |
|
Dodavatelská smlouva * |
|
Smlouva — položka |
|
Typ smlouvy * |
|
Dodavatelský typ smlouvy * |
|
Stav smlouvy |
|
Příkazy k úhradě a číselníky plateb
Agenda | Endpoint |
Příkaz k úhradě |
|
Bankovní účet |
|
Pokladna |
|
Sklad |
|
Číslo balíku |
|
Konstantní symbol |
|
Formát elektronického bankovnictví |
|
Účetnictví
Agenda | Endpoint |
Daňová evidence |
|
Účetní deník |
|
Účetní osnova |
|
Účet |
|
Účetní období |
|
Obrat |
|
Podklady DPH |
|
Řádek přiznání DPH |
|
Sazba DPH |
|
Členění DPH |
|
Přenesení DPH |
|
Činnost |
|
Středisko |
|
Zakázka |
|
Typ zakázky |
|
Stav zakázky |
|
Hodnocení zakázky |
|
Předpis zaúčtování |
|
Typ organizace |
|
Saldo k datu |
|
Kurzy
Agenda | Endpoint |
Kurz (obecný) * |
|
Kurz pro cenotvorbu * |
|
Intrastat — kurz * |
|
Měna |
|
Intrastat
Agenda | Endpoint |
Intrastat — dodací podmínky |
|
Intrastat — druh dopravy |
|
Intrastat — měrná jednotka |
|
Intrastat — kraj určení |
|
Intrastat — kód nomenklatury |
|
Intrastat — obchodní transakce |
|
Intrastat — zvláštní pohyb |
|
Řady dokladů
Agenda | Endpoint |
Řada |
|
Řada — banka |
|
Řada — faktury přijaté |
|
Řada — faktury vydané |
|
Řada — interního dokladu |
|
Řada — nabídky přijaté |
|
Řada — nabídky vydané |
|
Řada — objednávky přijaté |
|
Řada — objednávky vydané |
|
Řada — pohledávky |
|
Řada — pokladního pohybu |
|
Řada — poptávky přijaté |
|
Řada — poptávky vydané |
|
Řada — skladového pohybu |
|
Řada — závazků |
|
Roční řada |
|
Nastavení a systém
Agenda | Endpoint |
Nastavení |
|
Parametr |
|
Příloha |
|
Report |
|
Role |
|
Text |
|
Uživatel |
|
Zástupost |
|
Žurnál |
|
Filtr |
|
Uživatelský dotaz |
|
Uživatelský dotaz — parametr |
|
Uživatelský dotaz — vlastnost |
|
Uživatelská vazba |
|
Typ uživatelské vazby |
|
Právo viditelnosti |
|
Certifikační autorita |
|
Skupina štítků |
|
Štítek |
|
Strom (kořen) |
|
Strom |
|
Strom — ceník |
|
Vazba |
|
