Click or drag to resize

IOBERONService Interface

EXALOGIC
Rozhranie (Interface) základnej webovej služby systému OBERON. Obsahuje rôzne metódy pre komunikáciu externého systému so systémom OBERON. Ďalej túto webovú službu využíva aj nadstavbová webová aplikácia OBERON Web. Väčšina metód vracia návratovú triedu ResultValue.

Namespace: Exa.OBERON.Services
Assembly: Exa.OBERON.Services (in Exa.OBERON.Services.dll) Version: 4.5.69.0 (4.5.69.0)
Syntax
public interface IOBERONService

The IOBERONService type exposes the following members.

Methods
 NameDescription
Public methodAttendanceTerminal_TimeSheetType_ListMetóda vráti zoznam dostupných typov prechodov používaných dochádzkovým terminálom pre lepšiu identifikáciu záznamu prechodu.
Public methodDeleteStock_ReleaseNoteVymaže výdajku z evidencie.
Public methodDeleteStock_StockCardVymaže jednu alebo viac skladových kariet. V prípade reálnych (nie externých) skladov platia obmedzenia pre vymazanie skladových kariet rovnako ako pri práci s modulom Sklad v systéme OBERON napr. nie je možné vymazať skladovú kartu, ku ktorej existujú skladové pohyby. V externých skladoch, kde sa ku kartám nevytvárajú pohyby je možné karty mazať jednoducho. Vytvoriť (zapísať) skladové karty je možné pomocou metódy SetStock_StockCard .
Public methodGetAccounting_AccountCashRegistersBalanceVracia zostatky účtovných pokladní.
Public methodGetAccounting_BankAccountsBalanceVracia zostatky bankových účtov.
Public methodGetAccounting_InvoicesIssuedNačítanie zoznamu pohľadávok (knihy vydaných faktúr).
Public methodGetAccounting_InvoicesReceivedNačítanie zoznamu záväzkov (knihy prijatých faktúr).
Public methodGetAttendance_TimeSheetTypesMetóda vráti zoznam dostupných typov prechodov používaných dochádzkovým terminálom pre lepšiu identifikáciu záznamu prechodu.
Public methodGetAvailableMenuItemsNačítanie zoznamu dostupných položiek menu pre používateľa.
Public methodGetBusinessPartnerBranchesVráti zoznam prevádzok vybraného partnera.
Public methodGetBusinessPartnerCreditLimitVráti informáciu o aktuálnom stave čerpania kredit limitu. Posudzujú sa pohľadávky po lehote splatnosti a skladové výdajky.
Public methodGetBusinessPartnersVráti zoznam obchodných partneroch (podľa daného filtra).
Public methodGetCashRegister_DailyBalanceHistoryVráti históriu denných uzávierok.
Public methodGetCompanyBranchesVráti zoznam prevádzok.
Public methodGetCompanyInfoNačítanie údajov o firme (účtovnej jednotke), s ktorou webová služba pracuje.
Public methodGetCompanySettingsNačítanie základných nastavení firmy (účtovnej jednotky), s ktorou webová služba pracuje.
Public methodGetCountryListNačítanie zoznamu krajín.
Public methodGetDevicesNačítanie zoznamu zariadení používaných firmou.
Public methodGetDocumentClassificationsNačítanie zoznamu členenia dokumentov. Členenie je stromovej štruktúry, pričom každý účtovný rok má v systéme OBERON samostatné členenie.
Public methodGetFilterSettingsNačítanie zoznamu možných filtrov pre danú knihu (evidenciu).
Public methodGetFoodMenuNačítanie údajov jedálneho lístka.
Public methodGetFoodMenuGroupListNačítanie skupín jedálneho lístka.
Public methodGetFoodMenuListNačítanie zoznamu jedálnych lístkov (menu).
Public methodGetHotel_AccommodationGuestsVráti zoznam aktuálne ubytovaných hostí v ubytovacom zariadení. Údaje sú načítavané len z knihy ubytovaných (nie z rezervácií).
Public methodGetHotel_GraphicalViewRoomsDataZoznam ubytovaní a rezervácií - údaje pre generovanie obsadenosti - grafického prehľadu izieb.
Public methodGetHotel_GuestHotelAccountsVráti zoznam hotelových účtov prihláseného používateľa (typ autentifikácie - hoteloví hostia).
Public methodGetHotel_GuestsVráti zoznam hostí (osôb) konkrétnej rezervácie ubytovania, konkrétneho ubytovania, alebo rezervácie služieb.
Public methodGetHotel_PriceCategoryGuestsVráti zoznam dostupných cenových kategórií hostí. Cenová kategória hosťa sa používa pri overení dostupnosti voľných izieb (rezervácii ubytovania) a to pri výpočte ceny ubytovania (cenovej kalkulácie) - metódy GetHotel_RoomReservationAvailability alebo SetHotel_RoomReservation.
Public methodGetHotel_RoomReservationNačítanie (vyhľadanie) údajov rezervácie ubytovania z evidencie v module Hotelová recepcia.
Public methodGetHotel_RoomReservationAvailabilityZistí informácie o dostupnosti a cene daného termínu rezervácie. V rezervácii môže byť aj viac izieb, prípadne sú zadané len typy izieb. Môže vracať aj kompletnú cenovú kalkuláciu.
Public methodGetHotel_RoomsVráti zoznam izieb ubytovacieho zariadenia.
Public methodGetHotel_RoomsOccupyVracia obsadenosť ubytovacieho zariadenia v členení podľa izieb a typov izieb. Obsahuje údaje o obsadených (i voľných) izbách postupne po dňoch podľa zadaného parametra. Obsadenosť môže byť vrátená za celé ubytovacie zariadenie, alebo aj čiastočne (konkrétne budovy). V jednej databáze môže byť aj viac ubytovacích zariadení - každé predstavuje konkrétnu prevádzku (k prevádzke sú priradené konkrétne budovy). Pre získanie informácií o dostupnosti konkrétnej izby odporúčame použiť metódu GetHotel_RoomReservationAvailability, kde sa posudzuje izba ako taká (nielen typ izby).
Public methodGetHotel_RoomTypesVráti zoznam typov izieb ubytovacieho zariadenia.
Public methodGetHotel_ServiceTypesVráti zoznam definícií typov grafických prehľadov služieb. Používa sa pri napr. rezervácii služby.
Public methodGetHotel_SpecifiedPriceVráti určitú špecifickú cenu podľa parametra, napr. najnižšiu cenu za ubytovanie za jednu osobu.
Public methodGetLoginSaltVráti tzv. SALT, ktorý je používaný pri hashovaní hesla pri prihlásení používateľa. Volá sa tesne pred metódou LoginUser.
Public methodGetOberonWebMetódu používa nadstavbová aplikácia OBERON Web, ktorá poskytuje určité manažérske informácie zo systému OBERON v reálnom čase. Metóda spravidla vracia vygenerované html stránky priamo pre zobrazenie v prehliadači.
Public methodGetOberonWebResourceFileMetódu používa nadstavbová aplikácia OBERON Web, ktorá poskytuje určité manažérske informácie zo systému OBERON v reálnom čase. Metóda vracia konkrétne súbory, potrebné v aplikácii OBERON Web.
Public methodGetOberonWebTemplateFileMetódu používa nadstavbová aplikácia OBERON Web. Metóda načíta vzorové súbory funkcií aplikácie OBERON Web.
Public methodGetPayroll_EmployeeMetóda vráti údaje o pracovníkovi podľa zadaných parametrov.
Public methodGetShared_MovementDocument_TypesVracia zoznam druhov skladových pohybov.
Public methodGetStock_CashRegistersBillsOpenVracia zoznam otvorených účtov (stolov).
Public methodGetStock_CashRegistersTurnoverVracia obraty registračných pokladníc.
Public methodGetStock_OrderReceivedInfoVráti informáciu o konkrétnej prijatej objednávke.
Public methodGetStock_OrdersReceivedVráti zoznam prijatých objednávok.
Public methodGetStock_ReleaseNoteVráti údaje vybranej skladovej výdajky.
Public methodGetStock_ReleaseNotesVráti zoznam skladových výdajok.
Public methodGetStock_StockCardAttributesVracia zoznam atribútov skladových kariet používaný napr. pri variantoch skladových kariet. Bližší výber je možné určiť pomocou filtrov.
Public methodGetStock_StockCardCustomerPricesVracia zoznam zmluvných cien na skladovej karte. Je možné načítať zmluvné ceny pre konkrétnu skladovú kartu a partnera, všetky zmluvné ceny na danej skladovej karte, všetky zmluvné ceny daného obchodného partnera, prípadne aj všetky zmluvné ceny všetkých obchodných partnerov.
Public methodGetStock_StockCardFileRepositoryVracia zoznam pripojených dokumentov (najčastejšie obrázkov) k danej skladovej karte. Má význam volať len v tedy, ak je na skladovej karte StockCard nastavená vlastnosť FileRepositoryAttachments na TRUE.
Public methodGetStock_StockCardFindUmožňuje vyhľadať v sklade (alebo zoskupení skladov, prípadne všetkých skladoch) danú skladovú kartu. Výsledkom hľadania môže byť jedna, prípadne viaceré skladové karty, ktoré vyhovujú zadanej podmienke. Podporuje aj fulltextové vyhľadávanie, ktoré ignoruje diakritiku. Umožňuje vrátiť aj varianty, obrázok ku skladovej karte, t.j. rozsah vrátených údajov je možné z dôvodu výkonu obmedziť.
Public methodGetStock_StockCardInventoryFindUmožňuje vyhľadať v sklade (alebo zoskupení skladov, prípadne všetkých skladoch) v inventúrnom súpise danú skladovú kartu. Výsledkom hľadania môže byť jedna, prípadne viaceré inventúrne položky (skladové karty), ktoré vyhovujú zadanej podmienke. Podporuje aj fulltextové vyhľadávanie, ktoré ignoruje diakritiku. Umožňuje vrátiť aj varianty, obrázok ku skladovej karte, t.j. rozsah vrátených údajov je možné z dôvodu výkonu obmedziť.
Public methodGetStock_StockCardsVracia zoznam skladových kariet. Bližší výber je možné určiť pomocou filtrov.
Public methodGetStock_StockCards_TreeCategoryVracia kategórie skladových kariet.
Public methodGetStock_StockCardsInventoryNačítanie zoznamu skladových kariet inventúry skladu. Inventúra vybraného skladu musí byť začatá.
Public methodGetStock_StockOrStockGroupsNačítanie zoznamu skladov a zoskupení skladov podľa práv používateľa pod ktorým je služba spustená.
Public methodGetStock_StocksNačítanie zoznamu skladov podľa práv používateľa pod ktorým je služba spustená.
Public methodGetStock_StocksBalanceAktuálny stav zásob.
Public methodGetStock_StocksValueHistoryHistória hodnoty skladu.
Public methodGetUserPrivilegesVráti práva systému OBERON pre daného používateľa - používateľ však musí byť prihlásený k webovej službe. Používa sa len pri autentifikácii 'Používatelia systému OBERON' alebo 'Len systémový používateľ služby'.
Public methodGetUsersLoggedOnVráti zoznam používateľov prihlásených do systému OBERON - či už z desktopovej aplikácie OBERON - Agenda firmy, alebo aj z aplikácie OBERON Web.
Public methodGetUsersLoggedOnWebServiceVráti zoznam používateľov prihlásených do tejto webovej služby. Ak sa používateľ korektne neodhlási, webová služba ho v stanovenom časovom intervale (momentálne nastavené na 30 minút) automaticky odhlási.
Public methodGetVersionVráti číslo verzie webovej služby.
Public methodGetWarrantyService_InfoNačítanie stavu reklamácie a servisu pre klientov firmy bez nutnosti prihlasovania. Pre zabránenie nechceného načítania údajov len podľa čísla rezervácie je nutné aj overenie podľa niektorého z bližších údajov rezervácie.
Public methodGetXMLCommunicationSettingsNačítanie zoznamu nastavení XML komunikácie.
Public methodGetXMLData 
Public methodIsLoginOverenie aktuálne prihláseného používateľa (prípadne používateľa podľa parametra), či je prihlásený do webovej služby (záleží však na nastavení spôsobu autentifikácie služby).
Public methodLoginShowDialogVráti prihlasovací formulár (pre zadanie mena a hesla) do webovej služby pre aplikáciu OBERON Web.
Public methodLoginUserPrihlási používateľa do webovej služby (záleží však na nastavení spôsobu autentifikácie služby). Je potrebné volať na začiatku komunikácie s webovou službou, nakoľko sa generuje tzv. GUID pre ďalšiu komunikáciu (ten musí byť súčasťou hlavičky danej požiadavky).
Public methodLoginUserExPrihlási používateľa do webovej služby (záleží však na nastavení spôsobu autentifikácie služby). Je potrebné volať na začiatku komunikácie s webovou službou, nakoľko sa generuje tzv. GUID pre ďalšiu komunikáciu (ten musí byť súčasťou hlavičky danej požiadavky).
Public methodLogoutOdhlásenie používateľa z webovej služby.
Public methodPingOverenie dostupnosti služby, zároveň vráti adresu IP.
Public methodSetAttendance_TimeSheetsMetóda pre vytvorenie jedného záznamu, alebo viacerých záznamov prechodov v evidencii príchodov a odchodov. Jednotlivé záznamy predstavujú príchody a odchody (prechody) zaevidované dochádzkovým terminálom.
Public methodSetHotel_GuestsZapíše hostí k rezervácii ubytovania, k ubytovaniu, alebo k rezervácii služieb (priestorov, športovísk a podobne). Údaje o hosťoch sa môžu využiť a zapísať napr. pre on-line check-in (zápis údajov o hosťoch do rezervácie, prípadne do záznamu ubytovania). V systéme OBERON existuje tzv. číselník údajov o hosťoch (osobách), preto sa k rezervácii a ubytovaniu nezapisujú priamo údaje o hosťoch, ale sa len vytvára zápis v prepojovacej tabuľke. Špecialitou sú údaje o vízach - tie sa zapisujú do prepojovacej tabuľky, t.j. nie do číselníka s údajmi o hosťoch.
Public methodSetHotel_RoomReservationVytvorenie (zápis) novej rezervácie ubytovania do systému OBERON.
Public methodSetHotel_RoomReservationStateZmení stav už existujúcej rezervácie. Taktiež umožňuje zadať údaje o prijatej zálohe.
Public methodSetHotel_ServiceReservationVytvorenie (zápis) rezervácie rozšírenej služby hotela (rezervácia priestorov, športovísk, športových potrieb a podobne).
Public methodSetStock_OrderReceivedFromXMLVytvorenie novej objednávky prijatej z XML súbor (z XML údajov). Importuje hlavičku a položky - ak nastane chyba pri niektorej z položiek, doklad bude uložený a budú zapísané len korektné položky. Z tohto dôvodu je potrebné sledovať návratovú hodnotu RecordBaseInfo.Info.
Public methodSetStock_ReceiveNoteFromXMLVytvorenie novej príjemky z XML súbor (z XML údajov). Importuje hlavičku a položky - ak nastane chyba pri niektorej z položiek, doklad bude uložený a budú zapísané len korektné položky. Z tohto dôvodu je potrebné sledovať návratovú hodnotu RecordBaseInfo.Info.
Public methodSetStock_ReleaseNoteUloží zadanú výdajku do evidencie.
Public methodSetStock_ReleaseNoteFromXMLVytvorenie novej výdajky z XML súbor (z XML údajov). Importuje hlavičku a položky - ak nastane chyba pri niektorej z položiek, doklad bude uložený a budú zapísané len korektné položky. Z tohto dôvodu je potrebné sledovať návratovú hodnotu RecordBaseInfo.Info.
Public methodSetStock_StockCardVytvorí novú skladovú kartu vo vybranom sklade. Po úspešnom vytvorení vráti jednoznačný identifikátor IDNum uloženej karty. Vytvorené skladové karty je možné mazať pomocou metódy DeleteStock_StockCard.
Public methodSetStock_StockCardsInventoryAktualizovanie fyzických množstiev inventúry. Inventúra vybraného skladu musí byť začatá.
Public methodSetStock_StockCardsInventoryBatchHromadné aktualizovanie množstiev v inventúre skladu. Inventúra skladu musí byť začatá.
Public methodSetStock_StockCardsSelectionOznačovanie (odznačovanie) skladových kariet v sklade. Označovanie záznamov pracuje na princípe závislého od prihláseného užívateľa, t.j. každý užívateľ systému OBERON môže mať označené 'svoje' skladové karty. Z tohoto dôvodu je potrebné zvoliť spôsob prihlasovania do webovej služby 'Užívatelia systému OBERON').
Top
Remarks
Uvedené metódy je možné volať napr. z vývojového nástroja Microsoft Visual Studio (potrebné pridať Service Reference), prípadne priamo z webovej stránky pomocou Java skriptov (SOAP/JSON štruktúr). Nasledovne je uvedený funkčný zdrojový kód, ktorým sa po umiestnení do HTML súboru umožní pripojiť na danú webovú službu.
Príklad volania priamo z html stránky pomocou Java skriptov
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <title>Test webovej služby</title>
    <!-- Tato testovacia html stranka spustena na lokalnom pocitaci pracuje korektne v Internet Exploreri, -->
    <!--  v inych prehliadacoch sa casto vyskytuje problem so zabezpecenim, tzv. Cross-site scripting. -->
    <style>
        .right { text-align: right; }
        .tb td, .tb th { padding: 4px; }
        .tb {
            border: solid 1px #808080;
            border-spacing: 0;
        }
        .tb thead tr {
                background-color: #e6e6e6;
                background-image: linear-gradient(top, #eeeeee, #dadada);
            }
    </style>

</head>
<body>

    <div>

        <form id="testWebService" action="/">
            <!-- 87.197.186.118:20056 / system / system -->
            <input type="text" id="settAddress" placeholder="adresa webovej služby" value="87.197.186.118:20056" />
            <input type="text" id="settName" placeholder="meno" value="system" />
            <input type="text" id="settPassword" placeholder="heslo" value="system" />

            <button id="runTest" type="submit" >Test</button>
        </form>


    </div>

    <div id="resultData"></div>

<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.10.2.js" type="text/javascript"></script>

<script type="text/javascript" id="sha1">
    (function (e) { var t = function (e, t) { return e << t | e >>> 32 - t }; var n = function (e) { var t = ""; var n; var r; var i; for (n = 0; n <= 6; n += 2) { r = e >>> n * 4 + 4 & 15; i = e >>> n * 4 & 15; t += r.toString(16) + i.toString(16) } return t }; var r = function (e) { var t = ""; var n; var r; for (n = 7; n >= 0; n--) { r = e >>> n * 4 & 15; t += r.toString(16) } return t }; var i = function (e) { e = e.replace(/\x0d\x0a/g, "\n"); var t = ""; for (var n = 0; n < e.length; n++) { var r = e.charCodeAt(n); if (r < 128) { t += String.fromCharCode(r) } else if (r > 127 && r < 2048) { t += String.fromCharCode(r >> 6 | 192); t += String.fromCharCode(r & 63 | 128) } else { t += String.fromCharCode(r >> 12 | 224); t += String.fromCharCode(r >> 6 & 63 | 128); t += String.fromCharCode(r & 63 | 128) } } return t }; e.extend({ sha1: function (e) { var n; var s, o; var u = new Array(80); var a = 1732584193; var f = 4023233417; var l = 2562383102; var c = 271733878; var h = 3285377520; var p, d, v, m, g; var y; e = i(e); var b = e.length; var w = new Array; for (s = 0; s < b - 3; s += 4) { o = e.charCodeAt(s) << 24 | e.charCodeAt(s + 1) << 16 | e.charCodeAt(s + 2) << 8 | e.charCodeAt(s + 3); w.push(o) } switch (b % 4) { case 0: s = 2147483648; break; case 1: s = e.charCodeAt(b - 1) << 24 | 8388608; break; case 2: s = e.charCodeAt(b - 2) << 24 | e.charCodeAt(b - 1) << 16 | 32768; break; case 3: s = e.charCodeAt(b - 3) << 24 | e.charCodeAt(b - 2) << 16 | e.charCodeAt(b - 1) << 8 | 128; break } w.push(s); while (w.length % 16 != 14) w.push(0); w.push(b >>> 29); w.push(b << 3 & 4294967295); for (n = 0; n < w.length; n += 16) { for (s = 0; s < 16; s++) u[s] = w[n + s]; for (s = 16; s <= 79; s++) u[s] = t(u[s - 3] ^ u[s - 8] ^ u[s - 14] ^ u[s - 16], 1); p = a; d = f; v = l; m = c; g = h; for (s = 0; s <= 19; s++) { y = t(p, 5) + (d & v | ~d & m) + g + u[s] + 1518500249 & 4294967295; g = m; m = v; v = t(d, 30); d = p; p = y } for (s = 20; s <= 39; s++) { y = t(p, 5) + (d ^ v ^ m) + g + u[s] + 1859775393 & 4294967295; g = m; m = v; v = t(d, 30); d = p; p = y } for (s = 40; s <= 59; s++) { y = t(p, 5) + (d & v | d & m | v & m) + g + u[s] + 2400959708 & 4294967295; g = m; m = v; v = t(d, 30); d = p; p = y } for (s = 60; s <= 79; s++) { y = t(p, 5) + (d ^ v ^ m) + g + u[s] + 3395469782 & 4294967295; g = m; m = v; v = t(d, 30); d = p; p = y } a = a + p & 4294967295; f = f + d & 4294967295; l = l + v & 4294967295; c = c + m & 4294967295; h = h + g & 4294967295 } var y = r(a) + r(f) + r(l) + r(c) + r(h); return y.toLowerCase() } }) })(jQuery)
</script>

<script type="text/javascript">

    (function ($) {

        window.userData = '';
        window.token = '';

        /* --- spustenie test --- */
        $("#testWebService").submit(function (evt) {
            evt.preventDefault();
            var exc = myException(''),
                data = dataResult(),
                datah = {html:''},
                ajaxUrl = '',
                post = {},
                elmResult = null;

            elmResult = $('#resultData');
            elmResult.empty();

            //ping
            ajaxUrl = getUrl('ping');
            exc = ajaxHtml(ajaxUrl, datah);
            if (exc.result == false) { //--- nejaká chyba
                elmResult.append('Ping: <p style="color: red;">' + exc.description + '</p>');
            } else {
                elmResult.html('<br/>Ping: <p style="color: blue;">' + datah.html + '</p>');
            }

            //get salt for sha1 hash
            data = dataResult();
            post = { username: $('#settName').val() };
            ajaxUrl = getUrl('GetLoginSalt');
            exc = ajaxPost(ajaxUrl, data, post);
            if (exc.result == false) { //--- nejaká chyba
                elmResult.append('Salt: <p style="color: red;">' + exc.description + '</p>');
            } else {
                window.token = data.data;
                elmResult.append('Salt: <p style="color: blue;">' + data.data + '</p>');
            }

            //login
            post = { username: $('#settName').val(), password: $.sha1(data.data + $('#settPassword').val()) };
            data = dataResult();
            ajaxUrl = getUrl('loginuser');
            exc = ajaxPost(ajaxUrl, data, post);
            if (exc.result == false) { //--- nejaká chyba
                elmResult.append('Token: <p style="color: red;">' + exc.description + '</p>');
            } else {
                window.token = data.data;
                elmResult.append('Token: <p style="color: blue;">' + data.data + '</p>');
            }


            // is login test
            data = dataResult();
            ajaxUrl = getUrl('islogin?ud=' + window.token);
            exc = ajaxGet(ajaxUrl, data);
            if (exc.result == false) { //--- nejaká chyba
                elmResult.append('Is Login: <p style="color: red;">FALSE</p>');
            } else {
                elmResult.append('Is Login: <p style="color: blue;">TRUE</p>');
            }


            // method
            data = dataResult();
            ajaxUrl = getUrl('GetStock_CashRegistersBillsOpen');
            exc = ajaxGet(ajaxUrl, data);
            if (exc.result == false) { //--- nejaká chyba
                elmResult.append('Zoznam otvorených účtov: <p style="color: red;">' + exc.description + '</p>');
            } else {
                elmResult.append('<p style="color: Purple;">Zoznam otvorených účtov: </p>');
                var str = '<table border="0" class="tb"><thead><tr><th>IDNum</th><th>Predajné miesto</th><th>Názov stola</th><th class="right">Suma [EUR]</th></tr></thead><tbody>';
                data.data.forEach(function (item, index) {
                    str += '<tr>';
                    str += '<td>' + item.IDNum + '</td>';
                    str += '<td>' + item.SalesPoint + '</td>';
                    str += '<td>' + item.Name + '</td>';
                    str += '<td class="right">' + item.TotalPrice + '</td>';
                    str += '</tr>';
                });
                str += '</tbody></table>';
                elmResult.append(str);
            }


            // logout
            ajaxUrl = getUrl('logout?ud=' + window.token);
            exc = ajaxGet(ajaxUrl, data);
            if (exc.result == false) { //--- nejaká chyba
                elmResult.append('<br/>Logout: OK');
            } else {
                elmResult.append('<br/>Logout: OK');
            }

        });

        function getUrl(method) {
            return 'http://' + $('#settAddress').val() + '/' + method;
        }

        function ajaxGet(ajaxurl, rfResult, jdata, processdata) {
            var exc = myException('');
            if (!processdata) { processdata = false; }
            if (!jdata) { jdata = null; }
            $.ajax({ type: 'GET', cache: false, async: false,
                dataType: 'json', contentType: 'application/json; charset=utf-8',
                url: ajaxurl, processData: processdata,
                data: JSON.stringify(jdata), //--- musí byt konverzia na text,
                beforeSend: function (xhr) {
                    xhr.setRequestHeader('userData', window.userData);
                },
                success: function (data, textStatus, xhr) {
                    dataResultGet(data, rfResult);
                    if (rfResult.result == false && rfResult.errNumber === 2) {
                        // chyba užívateľ nie je prihlásený
                    }
                    window.userData = xhr.getResponseHeader('userData');
                    exc.result = true;//--- default je true
                    if (rfResult.result == false) {
                        exc.result = false;
                        exc.errNumber = rfResult.errNumber;
                        exc.description = rfResult.description;
                    }                
                },
                error: function (xhr, exception, errorThrown) {
                    exc = z_GetAjaxException(xhr, exception, errorThrown);
                }
            });
            return exc;
        }

        function ajaxPost(ajaxurl, rfResult, jdata, processdata) {
            var exc = myException('');
            if (!processdata) { processdata = false; }
            if (!jdata) { jdata = null; }
            $.ajax({
                type: 'POST', cache: false, async: false,
                dataType: 'json', contentType: 'application/json; charset=utf-8',
                url: ajaxurl, processData: processdata,
                data: JSON.stringify(jdata), //--- musí byt konverzia na text,
                beforeSend: function (xhr) {
                    xhr.setRequestHeader('userData', window.userData);
                },
                success: function (data, textStatus, xhr) {
                    dataResultGet(data, rfResult);
                    if (rfResult.result == false && rfResult.errNumber === 2) {
                        // chyba užívateľ nie je prihlásený
                    }
                    window.userData = xhr.getResponseHeader('userData');
                    exc.result = true;//--- default je true
                    if (rfResult.result == false) {
                        exc.result = false;
                        exc.errNumber = rfResult.errNumber;
                        exc.description = rfResult.description;
                    }
                },
                error: function (xhr, exception, errorThrown) {
                    exc = z_GetAjaxException(xhr, exception, errorThrown);
                }
            });
            return exc;
        }

        function ajaxHtml(ajaxurl, rfResult, callType, jdata) {
            var exc = myException('');
            if (!callType) { callType = 'GET'; }
            $.ajax({
                type: callType, url: ajaxurl, cache: false, async: false,
                dataType: 'html', contentType: 'text/html; charset=utf-8',
                processData: false, data: JSON.stringify(jdata),
                beforeSend: function (xhr) {
                    xhr.setRequestHeader('userData', window.userData);
                },
                success: function (data, textStatus, xhr) {
                    window.userData = xhr.getResponseHeader('userData');
                    rfResult.html = data;
                    exc.result = true;
                },
                error: function (xhr, exception, errorThrown) {
                    exc = z_GetAjaxException(xhr, exception, errorThrown);
                }
            });
            return exc;
        }

        /* --- Support methods --- */

        function myException(descr, msg, errNum, res) { //exception object
            return { result: !res ? false : res, errNumber: !errNum ? 0 : errNum, message: !msg ? '' : msg, description: !descr ? '' : descr };
        };

        function dataResult() { //data result object
            return { result: false, errNumber: 0, description: '', data: null };
        };
        function dataResultGet(data, rfResult) {//rfResult musí byť inicializovaný pomocou 'dataResult'
            rfResult.result = data.result;
            rfResult.errNumber = data.errNumber;
            rfResult.description = data.description;
            rfResult.data = data.data;
        }

        function z_GetAjaxException(jqXHR, exception, errorThrown) {
            var exc = myException();

            if (jqXHR.status === 0) {
                exc = myException('Server webovej služby je v tejto chvíli nedostupný.', '', 111);
            } else if (jqXHR.status == 404) {
                exc = myException('Metóda pre spracovanie požiadavky nebola nájdená.', '', 404);
            } else if (jqXHR.status == 500) {
                exc = myException('Interná chyba servera webovej služby.', '', 500);
            } else if (exception === 'parsererror') {
                exc = myException('Chyba pre spracovaní JSON dát zo servera.', '', 900);
            } else if (exception === 'timeout') {
                exc = myException('Čas pre spracovanie požiadavky vypršal.', '', 901);
            } else if (exception === 'abort') {
                exc = myException('Asynchrónne volanie bolo prerušené.', '', 902);
            } else {
                exc = myException('Neznáma chyba.<br/>' + jqXHR.statusText, '', 99);
            }
            return exc;
        }

    })(jQuery);

</script>

</body>
</html>
See Also