Click or drag to resize

IOBERONServiceGen2 Interface

EXALOGIC
Toto rozhranie (end point) obsahuje všetky dostupné dostupné metódy a to najmä práca so skladom - skladové karty, objednávky, výdajky, príjemky, faktúry atď. Túto webovú službu využíva aj mobilná skladová aplikácia ASTON. Pri pripojení k webovej služby sa musí vykonať autentifikácia (volanie User_Login(UserLoginArg), pri ktorom klient obdrží tzv. session (GUID) - ten musí zasielať v hlavičkej každej ďalšej požiadavky. Väčšina metód vracia návratovú triedu ResultValue. V prípade použitia vývojového nástroja Microsoft Visual Studio je možné automaticky vygenerovať všetky dostupné volania (metódy) ako aj jednotlivé dátové štruktúry.

Namespace: Exa.OBERON.ServicesGen2
Assembly: Exa.OBERON.ServicesGen2 (in Exa.OBERON.ServicesGen2.dll) Version: 4.5.0.0 (4.5.0.0)
Syntax
public interface IOBERONServiceGen2

The IOBERONServiceGen2 type exposes the following members.

Methods
 NameDescription
Public methodCode exampleAccounting_BankStatement_AddVytvorí novú záznam (riadok bankového výpisu) v evidencii 'Bankové výpisy'. Aktualizovať záznam je možné volaním Accounting_BankStatement_Update(BankStatement).
Public methodCode exampleAccounting_BankStatement_DeleteVymaže záznam (riadok bankového výpisu) v evidencii 'Bankové výpisy'.
Public methodCode exampleAccounting_BankStatement_GetVráti (načíta) konkrétny riadok daného bankového výpisu z evidencie 'Bankové výpisy'.
Public methodCode exampleAccounting_BankStatement_UpdateUloží (aktualizuje) záznam (riadok bankového výpisu) v evidencii 'Bankové výpisy'.
Public methodCode exampleAccounting_BankStatements_ListVráti zoznam bankových výpisov (jednotlivé riadky výpisov) pre daný bankový účet. Pre bližší výber záznamov je potrebné použiť filtre, ktoré je možné načítať metódou Accounting_BankStatements_ListSettings(BankStatementsListSettingsArg).
Public methodCode exampleAccounting_BankStatements_ListSettingsNačítanie zoznamu dostupných filtrov, podľa ktorých je možné načítať príslušný zoznam záznamov.
Public methodCode exampleBusinessPartner_AddVytvorí nového obchodného partnera v evidencii 'Obchodní partneri'. Nový záznam je možné vytvoriť aj s prevádzkami, aktualizovať hlavičku obchodného partnera je možné volaním BusinessPartner_Update(BusinessPartnerHeader), pričom na úpravu prevádzok je možné volať BusinessPartner_Branches_BatchUpdate(BusinessPartnerBranchesBatchUpdateArg).
Public methodCode exampleBusinessPartner_Branches_BatchUpdateAktualizuje prevádzky obchodného partnera (ak už v evidencii existuje). Po aktualizácii sa prevádzky nahradia týmito zasielanými. Nové prevádzky sa pridajú, existujúce aktualizujú, prípadné chýbajúce sa odstránia.
Public methodCode exampleBusinessPartner_CreditLimitInfoVráti informáciu o aktuálnom stave čerpania kredit limitu. Posudzujú sa pohľadávky po lehote splatnosti a skladové výdajky.
Public methodCode exampleBusinessPartner_DeleteVymaže údaje o obchodnom partnerovi z evidencie 'Obchodní partneri'. Údaje o obchodnom partnerovi v dokladoch zostanú bez zmeny.
Public methodCode exampleBusinessPartner_FindUmožňuje vyhľadať v evidencii 'Obchodní partneri' obchodného partnera. Výsledkom hľadania môže byť jeden, prípadne viac obchodných partnerov, ktorý vyhovujú zadanej podmienke. Podporuje aj fulltextové vyhľadávanie, ktoré ignoruje diakritiku. Umožňuje vrátiť aj prevádzky, pripojené dokumenty, t.j. rozsah vrátených údajov je možné z dôvodu výkonu obmedziť.
Public methodCode exampleBusinessPartner_GetVráti (načíta) konkrétneho obchodného partnera z evidencie 'Obchodní partneri'.
Public methodCode exampleBusinessPartner_UpdateAktualizuje už existujúci záznam obchodného partnera v evidencii 'Obchodní partneri' (len hlavičkové údaje). Na úpravu prevádzok je možné volať BusinessPartner_Branches_BatchUpdate(BusinessPartnerBranchesBatchUpdateArg).
Public methodCode exampleBusinessPartners_ListVráti zoznam obchodných partneroch (podľa daného filtra).
Public methodCode exampleBusinessPartners_ListSettingsNačítanie zoznamu dostupných filtrov, podľa ktorých je možné načítať príslušný zoznam záznamov.
Public methodCode exampleCommon_BankAccounts_ListVráti zoznam vlastných bankových účtov účtovnej jednotky.
Public methodCode exampleCommon_Currency_ListVráti zoznam cudzích mien používaných (nadefinovaných) v systéme OBERON.
Public methodCode exampleCommon_Units_ListVráti zoznam merných jednotiek.
Public methodCode exampleCompany_Branch_ListVráti zoznam prevádzok účtovnej jednotky (firmy). Účtovná jednotka môže byť členená na prevádzky - tie sa spravidla používajú na členenie dokladov (t.j. aj na číslovanie dokladov).
Public methodCode exampleCompany_Info Načítanie údajov o firme (účtovnej jednotke), s ktorou webová služba pracuje, napr. názov, adresa, IČO, DIČ atď ...
Public methodCode exampleCompany_SettingsNačítanie základných nastavení firmy (účtovnej jednotky), s ktorou webová služba pracuje, napr. sadzba DPH, zaokrúhlenia pri výpočtoch ...
Public methodCode exampleFileRepository_AddVytvorí (pridá) novú prílohu k ľubovolnému dokumentu.
Public methodCode exampleFileRepository_DeleteOdstráni pripojený dokumentz evidencie.
Public methodCode exampleFileRepository_GetVráti (načíta) konkrétnu prílohu (pripojený dokument) k nejakému záznamu ľubovolnej evidencie.
Public methodCode exampleFileRepository_ListVráti zoznam príloh (alebo pripojených dokumentov) k ľubovolnému dokumentu (napr. príloha faktúry), prípadne obrázky a iné dokumenty ku skladovým kartám.
Public methodCode exampleFileRepository_ListSettingsNačítanie zoznamu dostupných filtrov, podľa ktorých je možné načítať príslušný zoznam záznamov.
Public methodCode exampleFileRepository_Update Aktualizuje už existujúcu prílohu ku konkrétnemu dokumentu.
Public methodCode exampleInvoiceIssued_AddVytvorí novú faktúru v evidencii 'Kniha pohľadávok'. Nový doklad je možné vytvoriť aj s položkami, aktualizovať hlavičku dokladu je možné volaním InvoiceIssued_Update(InvoiceIssuedHeader), pričom na úpravu položiek je možné volať InvoiceIssued_Items_BatchUpdate(InvoiceIssuedItemsBatchUpdateArg).
Public methodCode exampleInvoiceIssued_DeleteVymaže faktúru z evidencie 'Kniha pohľadávok'. Po vymazaní faktúry sa stavy zásob skladových položiek (ktoré boli v doklade) vrátia na pôvodné množstvá.
Public methodCode exampleInvoiceIssued_GetVráti (načíta) konkrétnu vystavenú faktúru z evidencie 'Kniha pohľadávok'.
Public methodCode exampleInvoiceIssued_Items_BatchUpdateAktualizuje položky na existujúcom doklade. Po aktualizácii sa položky v danom doklade nahradia týmito zasielanými. Nové položky sa pridajú, existujúce aktualizujú, prípadné chýbajúce sa odstránia.
Public methodCode exampleInvoiceIssued_UpdateAktualizuje už existujúcu faktúru v evidencii 'Kniha pohľadávok' (len hlavičkové údaje, sumy sú ignorované). Na úpravu položiek je možné volať InvoiceIssued_Items_BatchUpdate(InvoiceIssuedItemsBatchUpdateArg).
Public methodCode exampleInvoiceReceived_AddVytvorí novú faktúru v evidencii 'Kniha záväzkov' (prijatú/došlú faktúru). Nový doklad je možné vytvoriť aj s položkami, aktualizovať hlavičku dokladu je možné volaním InvoiceReceived_Update(InvoiceReceivedHeader), pričom na úpravu položiek je možné volať InvoiceReceived_Items_BatchUpdate(InvoiceReceivedItemsBatchUpdateArg).
Public methodCode exampleInvoiceReceived_DeleteVymaže faktúru z evidencie 'Kniha pohľadávok'. Po vymazaní faktúry sa stavy zásob skladových položiek (ktoré boli v doklade) vrátia na pôvodné množstvá.
Public methodCode exampleInvoiceReceived_GetVráti (načíta) konkrétnu vystavenú faktúru z evidencie 'Kniha záväzkov'.
Public methodCode exampleInvoiceReceived_Items_BatchUpdateAktualizuje položky na existujúcom doklade. Po aktualizácii sa položky v danom doklade nahradia týmito zasielanými. Nové položky sa pridajú, existujúce aktualizujú, prípadné chýbajúce sa odstránia.
Public methodCode exampleInvoiceReceived_UpdateAktualizuje už existujúcu faktúru v evidencii 'Kniha záväzkov' (len hlavičkové údaje, sumy sú ignorované). Na úpravu položiek je možné volať InvoiceReceived_Items_BatchUpdate(InvoiceReceivedItemsBatchUpdateArg).
Public methodCode exampleInvoicesIssued_ListVráti zoznam faktúr z evidencie 'Kniha pohľadávok' (vydané/vystavené faktúry). Pre výber záznamov je potrebné použiť filtre, ktoré je možné načítať metódou InvoicesIssued_ListSettings(InvoicesIssuedListSettingsArg).
Public methodCode exampleInvoicesIssued_ListSettingsNačítanie zoznamu dostupných filtrov, podľa ktorých je možné načítať príslušný zoznam záznamov.
Public methodCode exampleInvoicesReceived_ListVráti zoznam faktúr z evidencie 'Kniha záväzkov' (prijaté/došlé faktúry). Pre výber záznamov je potrebné použiť filtre, ktoré je možné načítať metódou InvoicesReceived_ListSettings(InvoicesReceivedListSettingsArg).
Public methodCode exampleInvoicesReceived_ListSettingsNačítanie zoznamu dostupných filtrov, podľa ktorých je možné načítať príslušný zoznam záznamov.
Public methodCode exampleStock_ListNačítanie zoznamu skladov podľa práv používateľa pod ktorým je služba spustená.
Public methodCode exampleStock_MovementDocumentTypes_ListVracia zoznam druhov (typov) skladových pohybov. Používa sa vo výdajkých, príjemkách a reportoch zo skladových pohyboch.
Public methodCode exampleStock_OrderReceived_AddVytvorí novú objednávku v evidencii 'Objednávky prijaté'. Nový doklad je možné vytvoriť aj s položkami, aktualizovať hlavičku dokladu je možné volaním Stock_OrderReceived_Update(OrderReceivedHeader), pričom na úpravu položiek je možné volať Stock_OrderReceived_Items_BatchUpdate(OrderReceivedItemsBatchUpdateArg).
Public methodCode exampleStock_OrderReceived_AmountVerifiedUpdate Aktualizuje množstvo pripravené (skontrolované) na položkách prijatej objednávky (aktualizuje hodnoty AmountVerified).
Public methodCode exampleStock_OrderReceived_DeleteVymaže doklad (prijatú objednávku) z evidencie.
Public methodCode exampleStock_OrderReceived_GetVráti (načíta) konkrétnu objednávku z evidencie 'Prijaté objednávky'.
Public methodCode exampleStock_OrderReceived_Items_BatchUpdateAktualizuje položky na existujúcom doklade. Po aktualizácii sa položky v danom doklade nahradia týmito zasielanými. Nové položky sa pridajú, existujúce aktualizujú, prípadné chýbajúce sa odstránia.
Public methodCode exampleStock_OrderReceived_UpdateAktualizuje už existujúcu objednávku v evidencii 'Prijaté objednávky' (len hlavičkové údaje, sumy sú ignorované). Na úpravu položiek je možné volať Stock_OrderReceived_Items_BatchUpdate(OrderReceivedItemsBatchUpdateArg).
Public methodCode exampleStock_OrdersReceived_ListVráti zoznam prijatých objednávok. Pre výber záznamov je potrebné použiť filtre, ktoré je možné načítať metódou Stock_OrdersReceived_ListSettings(OrdersReceivedListSettingsArg).
Public methodCode exampleStock_OrdersReceived_ListSettingsNačítanie zoznamu dostupných filtrov, podľa ktorých je možné načítať príslušný zoznam záznamov.
Public methodCode exampleStock_OrdersReceived_States_ListVracia zoznam stavov prijatých objednávok (číselník).
Public methodCode exampleStock_ReceiveNote_AddVytvorí novú príjemku v evidencii 'Príjemky'. Nový doklad je možné vytvoriť aj s položkami, aktualizovať hlavičku dokladu je možné volaním Stock_ReceiveNote_Update(ReceiveNoteHeader), pričom na úpravu položiek je možné volať Stock_ReceiveNote_Items_BatchUpdate(ReceiveNoteItemsBatchUpdateArg).
Public methodCode exampleStock_ReceiveNote_DeleteVymaže príjemku z evidencie 'Príjemky'. Po vymazaní príjemky sa stavy zásob skladových položiek (ktoré boli v doklade) vrátia na pôvodné množstvá.
Public methodCode exampleStock_ReceiveNote_GetVráti (načíta) konkrétnu skladovú príjemku z evidencie 'Príjemky'.
Public methodCode exampleStock_ReceiveNote_Items_BatchUpdateAktualizuje položky na existujúcom doklade. Po aktualizácii sa položky v danom doklade nahradia týmito zasielanými. Nové položky sa pridajú, existujúce aktualizujú, prípadné chýbajúce sa odstránia.
Public methodCode exampleStock_ReceiveNote_StockInAmountUpdate Nastaví naskladnenosť dokladu - umožňuje aktualizovať fyzické množstvá (množstvá pre naskladnenie) jednotlivých položiek dokladu. Zároveň aktualizuje aj celkovú naskladnenosť dokladu.
Public methodCode exampleStock_ReceiveNote_UpdateAktualizuje už existujúcu príjemku v evidencii 'Príjemky' (len hlavičkové údaje, sumy sú ignorované). Na úpravu položiek je možné volať Stock_ReceiveNote_Items_BatchUpdate(ReceiveNoteItemsBatchUpdateArg).
Public methodCode exampleStock_ReceiveNotes_ListVráti zoznam skladových príjemiek. Pre výber záznamov je potrebné použiť filtre, ktoré je možné načítať metódou Stock_ReceiveNotes_ListSettings(ReceiveNotesListSettingsArg).
Public methodCode exampleStock_ReceiveNotes_ListSettingsNačítanie zoznamu dostupných filtrov, podľa ktorých je možné načítať príslušný zoznam záznamov.
Public methodCode exampleStock_ReleaseNote_AddVytvorí novú výdajku v evidencii 'Výdajky'. Nový doklad je možné vytvoriť aj s položkami, aktualizovať hlavičku dokladu je možné volaním Stock_ReleaseNote_Update(ReleaseNoteHeader), pričom na úpravu položiek je možné volať Stock_ReleaseNote_Items_BatchUpdate(ReleaseNoteItemsBatchUpdateArg).
Public methodCode exampleStock_ReleaseNote_DeleteVymaže výdajku z evidencie 'Výdajky'. Po vymazaní výdajky sa stavy zásob skladových položiek (ktoré boli v doklade) vrátia na pôvodné množstvá.
Public methodCode exampleStock_ReleaseNote_GetVráti (načíta) konkrétnu skladovú výdajku z evidencie 'Výdajky'.
Public methodCode exampleStock_ReleaseNote_Items_BatchUpdateAktualizuje položky na existujúcom doklade. Po aktualizácii sa položky v danom doklade nahradia týmito zasielanými. Nové položky sa pridajú, existujúce aktualizujú, prípadné chýbajúce sa odstránia.
Public methodCode exampleStock_ReleaseNote_StockOutAmountUpdate Nastaví vyskladnenosť dokladu - umožňuje aktualizovať fyzické množstvá (množstvá pre vyskladnenie) jednotlivých položiek dokladu. Zároveň aktualizuje aj celkovú vyskladnenosť dokladu.
Public methodCode exampleStock_ReleaseNote_UpdateAktualizuje už existujúcu výdajku v evidencii 'Výdajky' (len hlavičkové údaje, sumy sú ignorované). Na úpravu položiek je možné volať Stock_ReleaseNote_Items_BatchUpdate(ReleaseNoteItemsBatchUpdateArg).
Public methodCode exampleStock_ReleaseNotes_ListVráti zoznam skladových výdajok. Pre výber záznamov je potrebné použiť filtre, ktoré je možné načítať metódou Stock_ReleaseNotes_ListSettings(ReleaseNotesListSettingsArg).
Public methodCode exampleStock_ReleaseNotes_ListSettingsNačítanie zoznamu dostupných filtrov, podľa ktorých je možné načítať príslušný zoznam záznamov.
Public methodCode exampleStock_ShippingPackageType_ListVráti zoznam typov balíčkov nadefinovaných v systéme OBERON. Číselník slúži pri zadávaní balíkov v doklade. Spravidla ide o názvy (skratky) typov balíkov, ktoré používa kuriérska služba a je podľa tohto typu možné objednať dopravu. Používa sa v štruktúre Package.
Public methodCode exampleStock_StockCard_AddVytvorí novú skladovú kartu (hlavičku). Po vytvorení novej skladovej karty vráti jednoznačný identifikátor IDNum nového záznamu.
Public methodCode exampleStock_StockCard_GetVráti (načíta) konkrétnu skladovú kartu z evidencie 'Skladové karty'.
Public methodCode exampleStock_StockCard_Groups_ListVracia zoznam skladových skupín (číselník). Skladová skupina sa používa pre členenie skladových kariet, je na nej závislé číslovanie skladových kariet, pričom môže obsahovať aj šablónu, podľa ktorej sa nastavia údaje na novej skladovej karte.
Public methodCode exampleStock_StockCard_UpdateAktualizuje údaje na existujúcej skladovej karte.
Public methodCode exampleStock_StockCards_DeleteVymaž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.
Public methodCode exampleStock_StockCards_FileRepository_AddVytvorí (pridá) novú prílohu (obrázok alebo iný dokument) ku skladovej karte.
Public methodCode exampleStock_StockCards_FileRepository_DeleteOdstráni obrázok alebo iný dokument ako prílohu ku skladovej karte.
Public methodCode exampleStock_StockCards_FileRepository_Update Aktualizuje už existujúcu (obrázok alebo iný dokument) ku skladovej karte.
Public methodCode exampleStock_StockCards_FindUmožň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 methodCode exampleStock_StockCards_ListVracia zoznam skladových kariet. Bližší výber je možné určiť pomocou filtrov.
Public methodCode exampleStock_StockCards_ListSettingsNačítanie zoznamu dostupných filtrov, podľa ktorých je možné načítať príslušný zoznam záznamov.
Public methodCode exampleStock_StockCards_MarkSlúži na označovanie (odznačovanie) skladových kariet v zozname. Tieto skladové karty si môže používateľ vyfiltrovať a tak s nimi neskôr pracovať. Používa sa napr. pri kontrole cien, kedy skladové karty s nesprávnom cenou je možné označiť napr. aplikáciou ASTON a potom upraviť predajnú cenu, prípadne vytlačiť novú etiketu s cenou.
Public methodCode exampleStock_StockCardsInventory_FindUmožň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 methodCode exampleStock_StockCardsInventory_GetVráti (načíta) konkrétnu skladovú kartu z evidencie 'Inventúra skladu (skladové karty)'.
Public methodCode exampleStock_StockCardsInventory_ListNačítanie zoznamu skladových kariet inventúry skladu. Inventúra vybraného skladu musí byť začatá.
Public methodCode exampleStock_StockCardsInventory_ListSettingsNačítanie zoznamu dostupných filtrov, podľa ktorých je možné načítať príslušný zoznam záznamov.
Public methodCode exampleStock_StockCardsInventory_Update Aktualizovanie fyzických množstiev inventúry. Inventúra vybraného skladu musí byť začatá.
Public methodCode exampleSystem_Guid Vráti vygenerovaný GUID (jednoznačný identifikátor), ktorý je možné použiť pri vytvorení nového záznamu v danej evidencii. GUID je používaný priamo v danej štruktúre dokladu, napr. vo výdajke RecordGUID, prijatej objednávke RecordGUID a podobne.
Public methodCode exampleSystem_PingOverenie dostupnosti služby, zároveň vráti adresu IP.
Public methodCode exampleSystem_RefreshCache Používa sa na vyvolanie aktualizácie údajov na serveri webových služieb, ktoré sú cache-ované, napr. aktualizovať ihneď skladové karty, číselníky a podobne.
Public methodCode exampleSystem_VersionVráti údaje o verzii webovej služby a OBERONu.
Public methodCode exampleUser_IsLoginOverenie 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 methodCode exampleUser_LoginPrihlá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 methodCode exampleUser_LoginSaltVráti tzv. SALT, ktorý je používaný pri hashovaní hesla pri prihlásení používateľa. Volá sa tesne pred metódou LoginUser.
Public methodCode exampleUser_LogoutOdhlásenie používateľa z webovej služby.
Public methodCode exampleUser_PrivilegesInfoVrá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 methodCode exampleUsers_LoggedOnOBERONVrá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 methodCode exampleUsers_LoggedOnWebServiceVrá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.
Top
Remarks
V nasledovnom príklade je ukážka jednotlivých volaní - autentifikácia do webovej služby a načítanie zoznamu skladových kariet. Uvedený kód je možné uložiť do html súboru a následne otvoriť v internetovom prehliadači.
Príklad volania API priamo z html stránky pomocou Java skriptov
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <title>Test webovej služby</title>
    <style>*,::after,::before{box-sizing:border-box}html,body{width:100%;font-family:"Segoe UI",Roboto,Arial,Helvetica,sans-serif}input,button{margin:0}.right{text-align:right}.tb td,.tb th{padding:4px}.tb{border:solid 1px gray;border-spacing:0}.tb thead tr{background-color:#e6e6e6;background-image:linear-gradient(top,#eeeeee,#dadada)}.resr,.resrh{margin-bottom:.3em}.resrh{font-size:1.3em}.reserr{color:firebrick}.resok{color:blue}.m3{margin-bottom:1rem!important}.frm,#resDSata{width:33.33%;background-color:#efefef;display:block;padding:1.5rem}#resData{background-color:#fefefe}.flbl{margin-bottom:.5rem;display:inline-block}.fctl{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;line-height:1.5;color:#212529;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.375rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.fctl:focus{color:#212529;background-color:#fff;border-color:#81d4fa;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.btn{padding:.375rem .75rem;font-size:1rem;line-height:1.5;color:#fff;background-color:#0d6efd;border:1px solid #0d6efd;border-radius:.375rem;box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);display:inline-block;text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}</style>
</head>
<body>
    <div class="frm">
        <div class="m3">
            <label for="txtAddress" class="flbl">Adresa url:</label>
            <input type="text" id="tAdd" class="fctl" placeholder="adresa" value="http://localhost:21001/" />        
        </div>
        <div class="m3">
            <label for="txtUserName" class="flbl">Meno používateľa:</label>
            <input type="text" id="tUsrN" class="fctl" placeholder="meno" value="" />
        </div>
        <div class="m3">
            <label for="settPassword" class="flbl">Heslo používateľa:</label>
            <input type="text" id="tUsrP" class="fctl" placeholder="heslo" value="" />
        </div>
        <div class="bPnl">
            <button id="bSbt" class="btn" >Test</button>
        </div>        
    </div>
    <div id="resData"></div>
    <script src="https://my.exalogic.sk/cdn/zepto.min.js" type="text/javascript"></script>
    <script src="https://my.exalogic.sk/cdn/zepto.sha1.min.js" type="text/javascript"></script>

<script type="text/javascript">
    (function ($) {
    var _this = null;
    var Application = function () {
        return new Application.init();
    };
    _this = Application;

    Application.controls = {
        selAddress: '#tAdd',
        selUserName: '#tUsrN',
        selUserPass: '#tUsrP',
        selBtnSubmit: '#bSbt',
        selResultData: '#resData',
        ctlResultData: null
    };
    Application.userData = null;
    Application.userSalt = '';
    Application.token = ''; // overovací token


    Application.init = function () {
        // panel výsledkov
        _this.controls.ctlResultData = $(this.controls.selResultData);
        _this.controls.ctlResultData.empty();
        // tlačítko
        $(_this.controls.selBtnSubmit).on('click', function(){ Application.evhButtonClick(); });        
    };

    Application.evhButtonClick = function() {
        var exc = myException(''),
            baseUrl = getUrl();

        exc = Application.testPing(baseUrl);
        if(!exc.result) return;

        exc = Application.login(baseUrl);
        if(!exc.result) return;

        exc = Application.stockCards(baseUrl);
        if(!exc.result) return;

        exc = Application.logout(baseUrl);
        if(!exc.result) return;
    };


    /* -- Ping -- */
    Application.testPing = function(baseUrl) {
        var exc = myException(''), datah = {html:''}; // musí byť lebo js nie je ref parameter
        loadUrl = baseUrl + 'ping';            
        exc = ajaxHtml(loadUrl, datah);
        if (exc.result == false) { //--- nejaká chyba
            addLogRow('Ping', 1, exc.description);
        } else {
            addLogRow('Ping', 0, datah.html);
        }
        return exc;
    };

    /* -- Login -- */
    Application.login = function(baseUrl) {
        var exc = myException(''), datah, ajaxUrl;

        //načítanie salt pre posilnenie hesla
        data = dataResult();
        post = { userName: $(Application.controls.selUserName).val() };
        ajaxUrl = baseUrl + 'v1/user/login/salt';

        exc = ajaxPost(ajaxUrl, data, post);
        if (exc.result == false) { //--- nejaká chyba
            addLogRow('Salt', 1, exc.description);
            return exc;
        } else {
            Application.userSalt = data.data;
            addLogRow('Salt', 0, data.data);
        }

        //prihlásenie so šifrovaním sha1 a posilnením hesla pomocou salt
        post = { userLoginArg:{ UserName: $(Application.controls.selUserName).val(), Password: Zepto.fn.sha1(Application.userSalt + $(Application.controls.selUserPass).val()) }};
        data = dataResult();
        ajaxUrl = baseUrl + 'v1/user/login';
        exc = ajaxPost(ajaxUrl, data, post);
        if (exc.result == false) { //--- nejaká chyba
            addLogRow('Token', 1, exc.description);
            return exc;
        } else {
            addLogRow('Token', 0, Application.token);
        }

        //test prihlásenia
        data = dataResult();
        ajaxUrl = baseUrl + 'v1/user/login/verify/' + Application.token;            
        exc = ajaxGet(ajaxUrl, data);
        if (exc.result == false) { //--- nejaká chyba
            addLogRow('Login verify', 1, exc.description);
        } else {
            addLogRow('Login verify', 0);
        }
        return exc;
    };

    /* -- Logout -- */
    Application.logout = function(baseUrl) {
        var exc = myException(''),data;
        if(Application.token == null || Application.token.length == 0) {
            addLogRow('Logout', 1, 'No token');
            return exc;
        }
        data = dataResult();
        exc = ajaxGet(baseUrl + 'v1/user/logout/', data);
        if (exc.result == false) { //--- nejaká chyba
            addLogRow('Logout', 1, exc.description);
        } else {
            addLogRow('Logout', 0);
        }
        return exc;
    };

    /* -- Skladové karty -- */
    Application.stockCards = function(baseUrl) {
        _this.controls.ctlResultData.append('<div class="resrh">Skladové karty</div>');
        var exc = myException(''),data;
        if(Application.token == null || Application.token.length == 0) {
            exc.description = "No token."
            return exc;
        }
        //načítanie zoznamu skladov
        var stock = '';
        res = dataResult();
        ajaxUrl = baseUrl + 'v1/stock/list';
        post = {};
        exc = ajaxPost(ajaxUrl, res, post);
        if (exc.result == false) { //--- nejaká chyba
            addLogRow('Sklad', 1, exc.description);
            return exc;
        } else {
            if(res.data==null || res.data.length==0) {
                addLogRow('Sklad', 1, 'Zoznam skladov je prázdny.');
                return exc;
            }
            addLogRow('Sklad', 0, stock);
            var html = '<div class="resr">';
            html += '<table border="0" class="tb"><thead><tr><th>Názov</th></tr></thead><tbody>';
            res.data.forEach(function (item, index) {
                html += '<td>' + item.Name + '</td></tr>';
            });
            html += '</tbody></table></div>';
            _this.controls.ctlResultData.append(html);
            //použijeme prvý sklad
            stock = res.data[0].Name;
        }
        //načítanie dostupných filtrov použiteľných pre načítanie kariet
        res = dataResult();
        ajaxUrl = baseUrl + 'v1/stock/stock-card/list-settings';
        post = { stockCardsListSettingsArg: { StockName: stock } };
        exc = ajaxPost(ajaxUrl, res, post);
        if (exc.result == false) { //--- nejaká chyba
            addLogRow('Filter', 1, exc.description);
            return exc;
        } else {
            addLogRow('Filter', 0);
        }
        //načítanie zoznamu skladových kariet
        res = dataResult();
        ajaxUrl = baseUrl + 'v1/stock/stock-card/list';
        post = { stockCardsListArg: { 
            LoadSettings: {
                PageSize: 10, //počet záznamov na stránku
                PageIndex: 0, //index stránky (tzv. zero based)
                Filters: {}, // prípadné filtre
                Sort: {} // prípadné triedenie
            },
            StockOrStockGroupName: stock,
            } 
        };
        exc = ajaxPost(ajaxUrl, res, post);
        if (exc.result == false) { //--- nejaká chyba
            addLogRow('Karty', 1, exc.description);
            return exc;
        } else {
            if(res.data==null || res.data.Items==null || res.data.Items.length==0){
                addLogRow('Karty', 1, 'Zoznam kariet je prázdny.');
                return exc;
            }
            addLogRow('Karty', 0);
            var html = '<div class="resr">';
            html += '<table border="0" class="tb"><thead><tr><th>IDNum</th><th>Číslo</th><th>Názov</th><th class="right">Cena 1 s DPH</th></tr></thead><tbody>';
            res.data.Items.forEach(function (item, index) {
                html += '<tr><td>' + item.IDNum + '</td>';
                html += '<td>' + item.Number + '</td>';
                html += '<td>' + item.Name + '</td>';
                html += '<td class="right">' + item.PricesInfo.PriceWithVAT1 + '</td></tr>';
            });
            html += '</tbody></table></div>';
            _this.controls.ctlResultData.append(html);
        }
        return exc;
    };

    function addLogRow(header, type, message) {
        var h = header,m = message, c;
        if (type != 0) { 
            c = 'reserr';                
        } else {
            c = 'resok';
            m = m==null || m.length==0 ? 'OK' : m;
        }
        _this.controls.ctlResultData.append('<div class="resr">'+h+': <span class="'+c+'">'+m+'</span></div>');
    }

    function getUrl() {
        var urlBase = $(Application.controls.selAddress).val();
        if ( urlBase == '' || ( !urlBase.startsWith('http:') && ! urlBase.startsWith('https:') ) ) {
            urlBase = 'http://' + urlBase;
        }
        if ( ! urlBase.endsWith('/') ) { urlBase = urlBase + '/'; }
        return urlBase;
    }

    function ajaxGet(ajaxurl, rfResult, jdata, processdata) {
        var exc = myException('');
        if (!processdata) { processdata = false; }
        if (!jdata) { jdata = null; } else { jdata = JSON.stringify(jdata); }
        try {
            $.ajax({ type: 'GET', cache: false, async: false,
                dataType: 'json', contentType: 'application/json; charset=utf-8',
                url: ajaxurl, processData: processdata,
                data: jdata,
                headers: {'userData': Application.token},
                success: function (data, textStatus, xhr) {
                    dataResultGet(data, rfResult);
                    if (rfResult.result == false && rfResult.errNumber === 2) {
                        // chyba užívateľ nie je prihlásený
                    }
                    Application.token = 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);
                }
            });
        } catch (error) {            
        }
        return exc;
    }

    function ajaxPost(ajaxurl, rfResult, jdata, processdata) {
        var exc = myException('');
        if (!processdata) { processdata = false; }
        if (!jdata) { jdata = null; }
        try {
            $.ajax({
                type: 'POST', cache: false, async: false,
                dataType: 'json', contentType: 'application/json; charset=utf-8',
                url: ajaxurl, processData: processdata,
                data: JSON.stringify(jdata),
                headers: {'userData': Application.token},
                success: function (data, textStatus, xhr) {
                    dataResultGet(data, rfResult);
                    if (rfResult.result == false && rfResult.errNumber === 2) {
                        // chyba užívateľ nie je prihlásený
                    }
                    Application.token = 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);
                }
            });
        } catch (error) {            
        }
        return exc;
    }

    function ajaxHtml(ajaxurl, rfResult, callType, jdata) {
        var exc = myException('');
        if (!callType) { callType = 'GET'; }
        try {
            $.ajax({
                type: callType, url: ajaxurl, cache: false, async: false,
                dataType: 'html', contentType: 'text/html; charset=utf-8',
                processData: false, data: JSON.stringify(jdata),
                headers: {'userData': Application.token},
                success: function (data, textStatus, xhr) {
                    rfResult.html = data;
                    Application.token = xhr.getResponseHeader('userData');                    
                    exc.result = true;
                },
                error: function (xhr, exception, errorThrown) {
                    exc = z_GetAjaxException(xhr, exception, errorThrown);
                }
            });
        } catch (error) {
        }
        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;
    }


    window.Application = Application;
    window.Application.init();


})(Zepto);
</script>

</body>
</html>
Príklad prihlásenia do webovej služby - zasielané údaje v JSON formáte.
Príklad:  Prihlásenie používateľa do webovej služby
Url:  http://address:port/v1/user/login

Požiadavka:
{
        "userLoginArg": {
                "UserName":"system",
                "Password":"8750320f04a57f4c97edd992d67b8a2d65426abc"
        }
}


Odpoveď:
{
        "data": {
                "BranchName": null,
                "DocumentName": "Systémový používateľ",
                "GUID": "RAUQE3WAEFBR5Z6J7N2ONCXWVCYCJGZZJNL7KPQL",
                "PasswordType": 0,
                "ShortName": null,
                "UserIDNum": 1,
                "UserName": "system"
        },
        "description": "",
        "errNumber": 0,
        "result": true
}
Príklad vyvorenia novej skladovej karty - zasielané údaje v JSON formáte.
{
        "stockCardAddArg": {
                "StockCard": {
                        "Amount": 0,
                        "Availability": 0,
                        "BarCodes": null,
                        "CashRegisterCode": null,
                        "CashRegisterCode_LinkedItem": null,
                        "CashRegisterCommodityGroup": null,
                        "Catalog": null,
                        "DateTime_Created": null,
                        "DateTime_LastUpdate": null,
                        "DateTime_LastUpdateSalePrice": null,
                        "FileRepositoryAttachments": false,
                        "Guarantee_Period_Unit": 0,
                        "Guarantee_Period_Value": 0,
                        "IDNum": 0,
                        "IDNum_Stock": 0,
                        "ItemColor": null,
                        "KP": null,
                        "Location": null,
                        "Name": "Notebook 17', 8GBRAM, 2TB SDD",
                        "Number": "1001",
                        "PricesInfo": {
                                "DiscountApplyMode": 0,
                                "DiscountMaxPercento": 0,
                                "PriceCalculationType": 0,
                                "PriceInActionDiscount": 0,
                                "PriceInActionPriceWithVATWithoutDiscount": 0,
                                "PriceInActionPriceWithoutVATWithoutDiscount": 0,
                                "PriceInActionText": null,
                                "PriceInActionWithVAT": 0,
                                "PriceInActionWithoutVAT": 0,
                                "PriceLastPurchase": 0,
                                "PriceSupply": 800,
                                "PriceWithVAT1": 1200.00,
                                "PriceWithVAT2": 0,
                                "PriceWithVAT3": 0,
                                "PriceWithVAT4": 0,
                                "PriceWithoutVAT1": 1000.00,
                                "PriceWithoutVAT2": 0,
                                "PriceWithoutVAT3": 0,
                                "PriceWithoutVAT4": 0,
                                "PricesRounding": 0,
                                "VATRate": 20
                        },
                        "SaleDescription": null,
                        "SerialNumbersMode": 0,
                        "StockCardType": 0,
                        "StockGroup": "Prenosné počítače",
                        "TextAdditional": "",
                        "TreeCategory": null,
                        "Unit": "l",
                        "UnitOthers": null,
                        "Unit_PriceCompare": null,
                        "Unit_PriceCompare_Coefficient": 0,
                        "Unit_Weight": 0,
                        "Unit_Weight_Unit": null,
                        "UserMarkers": null
                },
                "StockName": "Hlavný sklad"
        }
}
Príklad vyvorenia filtra pri načítaní skladových kariet (položiek) zasielané údaje v JSON formáte.
{
    "stockCardsListArg": {
        "LoadSettings": {
            "PageSize": 200,
            "PageIndex": 0,
            "FiltersMergeTypes": 1,
            "Filters": [
                {
                    "BookColumnID": 93,
                    "ConditionType": 3,
                    "Values": ["2023-11-24T10:31:03"]                
                },
                {
                    "BookColumnID": 94,
                    "ConditionType": 3,
                    "Values": ["2023-11-24T10:31:03"]                
                },
                {
                    "BookColumnID": 95,
                    "ConditionType": 3,
                    "Values": ["2023-11-24T10:31:03"]                
                }
            ],
            "Sort": []
        },
        // tu by som odporučil zadať sklad alebo zoskupenie s ktorým sa pracuje
        "StockOrStockGroupName": "", 
        "GetEShop": true,
        "GetExtendedValues": true,
        "GetFileRepository": true,
        "GetFileRepositoryBinaryDataMode": 0,        
        "GetVariants": true,
        "GetParameters": true,
        "GetSerialNumbers": false,
        "BusinessPartnerIDNum": ""
    }
}
Príklad vyvorenia prijatej objednávky zasielané údaje v JSON formáte.
{"orderReceivedAddArg":{{
  "OrderReceived": {    
    "RecordGUID": "e6ddf4f4-adc8-4193-92e1-967dbebec8c1",
    "BranchName": "",
    "BusinessPartner": {
      "Address": {
        "City": "Bratislava",       
        "Postal_Code": null,
        "Region": null,
        "Street": "Poštová 1",
      },
      "BranchName": null,
      "Email": null,
      "IdentificationNumber": null,
      "IdentificationNumberTax": null,
      "IdentificationNumberVat": null,
      "Name": "Ján novák, spol. s.r.o",
      "Person": null,
      "PhoneNumber": "0905/123456"
    },
    "DateDelivery": null,
    "DateReservation": null,
    "DateTimeEvidence": null,
    "DocumentType": "Objednávka",
    "Notice": null,
    "Number": "PP-240003",
    "NumberExternal": null,
    "OrderState": "Nová objednávka",
    "PersonOrdered": null,
    "PersonRegistered": null,
    "PriceValues": {
      "ExchangeRate": 0,
      "FCCode": "",    
      "PriceTotal": 1580,
      "PriceVATBaseLower": 1000,
      "PriceVATBaseUpper": 400,
      "PriceVATBaseZero": 0,
      "PriceVATLower": 100,
      "PriceVATUpper": 80,
      "VATRateLower": 10,
      "VATRateUpper": 20
    },    
    "ShippingInfo": null,
    "UserAdd": null,
    "UserLastUpdate": null,
    "Items": [
      {
        "Amount": 200,
        "AmountUnitOther": 0,
        "BarCode": null,
        "CashRegisterCode": null,
        "DateTime": null,
        "DiscountPercent": 0,       
        "IDNum_Stock": 2,
        "IDNum_StockCard": 298,
        "IDNum_StockCardVariant": 0,
        "Name": "Tyčinky",
        "Notice": null,
        "Number": "2310",
        "PriceWithVAT": 0,
        "PriceWithVATUnit": 2.4,
        "PriceWithVATWithoutDiscount": 0,
        "PriceWithVATWithoutDiscount_Unit": 0,
        "PriceWithoutVAT": 0,
        "PriceWithoutVATUnit": 0,
        "Unit": "ks",
        "UnitOther": null,
        "VariantName": "",
        "VatRate": 10,     
        "AmountReserved": null,       
      },
      {
        "Amount": 1000,
        "AmountUnitOther": 0,
        "BarCode": null,
        "CashRegisterCode": null,
        "DateTime": null,
        "DiscountPercent": 0,
        "IDNum": 0,
        "IDNum_Stock": 2,
        "IDNum_StockCard": 320,
        "IDNum_StockCardVariant": 0,
        "Name": "Žuvačky",
        "Notice": null,
        "Number": "2330",
        "PriceWithVAT": 0,
        "PriceWithVATUnit": 1.1,
        "PriceWithVATWithoutDiscount": 0,
        "PriceWithVATWithoutDiscount_Unit": 0,
        "PriceWithoutVAT": 0,
        "PriceWithoutVATUnit": 0,
        "Unit": "ks",
        "UnitOther": null,
        "VariantName": null,
        "VatRate": 10,       
        "AmountReserved": null,
      }
    ]
  }
}}
See Also