Click or drag to resize

IOBERONServiceCashRegisterGen2 Interface

EXALOGIC
Toto rozhranie (end point) obsahuje metódy pre prácu s modulom Pokladnica OBERON a to najmä pre externé aplikácie ako mobilný čašník, elektronické menu (v reštaurácii) atď. Umožňuje pracovať s otvorenými účtami, zaevidovať k otvorenému účtu platobnú transakciu, prípadne uzatvoriť účet a vytlačiť daňový doklad. Webová služba predstavuje jednu Pokladnicu OBERON definovanú v systéme OBERON, od tohto sa odvíja aj rozsah vrátených údajov, napr. otvorených účtov, skladových (predajných) položiek a podobne. 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.ServicesCashRegisterGen2
Assembly: Exa.OBERON.ServicesCashRegisterGen2 (in Exa.OBERON.ServicesCashRegisterGen2.dll) Version: 1.0.0.0 (1.0.0.0)
Syntax
public interface IOBERONServiceCashRegisterGen2

The IOBERONServiceCashRegisterGen2 type exposes the following members.

Methods
 NameDescription
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_ListVráti zoznam obchodných partneroch (podľa daného filtra).
Public methodCode exampleBusinessPartner_ListSettingsNačítanie zoznamu dostupných filtrov, podľa ktorých je možné načítať príslušný zoznam záznamov.
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 methodBusinessPartnerGroups_List Vráti zoznam skupín obchodných partnerov.
Public methodCode exampleCashRegister_BillClose Uzatvorenie dokladu bez vytvorenia daňového dokladu vo fiškálnom zariadení.
Public methodCode exampleCashRegister_BillJournal_AddVytvorí novú záznam v evidencii pokladničných dokladov t.j. bločkov. Záznamy v tejto evidencii sa vytvárajú automaticky pri zaevidovaní dokladu v Pokladnici OBERON. Tu je možné vytvoriť nový záznam napr. v pobočkovom režime, kedy bol doklad zaevidovaný na prevádzke a exposruje sa na centrálu.
Public methodCode exampleCashRegister_BillJournal_GetVráti (načíta) konkrétný pokladničný doklad (bloček) z evidencie Pokladničné doklady, t.j. doklady vytvorené na Pokladnici OBERON.
Public methodCode exampleCashRegister_BillJournal_ListVráti zoznam pokladničných dokladv (bločkov) predaných na Pokladnici OBERON, tzv. história predaja. Pre výber záznamov je potrebné použiť filtre, ktoré je možné načítať metódou CashRegister_BillJournal_ListSettings(BillJournalListSettingsArg).
Public methodCode exampleCashRegister_BillJournal_ListSettingsNačítanie zoznamu dostupných filtrov, podľa ktorých je možné načítať príslušný zoznam záznamov.
Public methodCode exampleCashRegister_BillJournal_Summary_ItemsVráti súhrn predaja - zosumarizované položky vytvorené na Pokladnici OBERON.
Public methodCode exampleCashRegister_BillOpen_AddVytvorí nový otvorený účet na Pokladnici OBERON. Otvorený účet môže byť priradený k stolu (košíku), prípadne môže byť typu Donáška (tento nie je priradený k žiadnemu stolu).
Public methodCode exampleCashRegister_BillOpen_Delete Odstrániť (vymaže) jeden otvorený účet. Môže sa vymazať len otvorený účet bez položiek.
Public methodCode exampleCashRegister_BillOpen_DiscountUplatní na otvorený účet zľavu, t.j. na každú položku dokladu zapíše danú zľavu. Ak už zľava bola zadaná, bude táto zľava upravená (zmenená) - bude sa opätovne počítať z pôvodných súm. Na položky (skladové karty), na ktoré je uplatnenie zľavy nastavené na 'Pýtať sa', bude zľava uplatnená.
Public methodCode exampleCashRegister_BillOpen_GetVráti (načíta) konkrétný otvorený účet na danej Pokladnici OBERON.
Public methodCode exampleCashRegister_BillOpen_Items_AddPridá jednu novú (alebo aj viac) položku do existujúceho otvoreného účtu.
Public methodCode exampleCashRegister_BillOpen_Items_DeleteOdstrániť (vymaže) jednu alebo viac položiek z otvoreného účtu. Ak už bola položka vytlačená na bonovacej tlačiarni (objednávka v prípravni jedál či nápojov), bude automaticky vytlačené STORNO objednávky.
Public methodCode exampleCashRegister_BillOpen_Items_DiscountUplatní na položku otvoreného účtu zľavu. Ak už zľava bola zadaná, bude táto zľava upravená (zmenená) - bude sa opätovne počítať z pôvodných súm. Na položky (skladové karty), na ktoré je uplatnenie zľavy nastavené na 'Pýtať sa', bude zľava uplatnená.
Public methodCode exampleCashRegister_BillOpen_Items_MergeUmožňuje zlúčiť rovnaké položky na otvorenom účte.
Public methodCode exampleCashRegister_BillOpen_Items_MovePresun jednej položky otvoreného účtu na iný otvorený účet, prípadne rozdelenie položky medzi dva otvorené účty. Používa sa napr. pri rozdelení jedného účtu tak, že platia obidve osoby samostatne. Všetky činnosti sú zaznamenávané do tzv. Sledovania činností.
Public methodCode exampleCashRegister_BillOpen_Items_UpdateAktualizuje existujúcu položku na otvorenom účte. Položku zapísanú do bonovacej knihy (vytlačenú na bonovacej tlačiarni) už nie je možné upraviť - je ju možné len odstrániť (s tlačením storna).
Public methodCode exampleCashRegister_BillOpen_ListVracia zoznam aktuálne otvorených účtov. Načítajú sa len otvorené účty danej registračnej pokladnice, ktorú táto webová služba zastupuje (jedna webová služba zastupuje jednu konkrétnu registračnú pokladnicu).
Public methodCode exampleCashRegister_BillOpen_Order_AddUmožňuje dodatočne zapísať položky otvoreného účtu do bonovacej knihy, a ich prípadnú tlač na bonovacej tlačiarni, alebo zobrazení na bonovacom monitore.
Public methodCode exampleCashRegister_BillOpen_Payment_UpdateZápis informácie o úhrade otvoreného účtu platobnou kartou, alebo inou elektronickou formou. Použitím tejto metódy sa nevykonáva banková transakcia volaním bankového terminála, ale sa len zapisuje info o úhrade. Zápis úhrady môže vykonať obsluha pokladnice (napr. na mobilnej aplikácii LUKUL v režime Čašník), prípadne priamo aj zákazník, napr. ako hosť v reštaurácii pri úhrade účtu, prípadne pri donáške. Zoznam otvorených účtov je možné načítať metódou CashRegister_BillOpen_List(BillOpenListArg).
Public methodCode exampleCashRegister_BillOpenDefinition_List Vráti zoznam definicií otvorených účtov (zoznam definovaných stolov, košíkov pri košíkovom predaji) danej registračnej pokladnice. Otvorený účet je spravidla priradený k nejakému stolu (košíku), avšak niekedy nie, napr. pri otvorenom účte typu Donáška.
Public methodCode exampleCashRegister_BillOrder_ListVracia zoznam položiek zapísaných v bonovacej knihe - spravidla vytlačených na jednej alebo viacerých bonovacích tlačiarňach. Položky sú určené na prípravu, najčastejšie jedlá a nápoje. Spravidla vracia ešte nepripravené, alebo nevynesené, tzv. otvorené položky. Môže však vracať aj všetky položky od daného dátumu a času (záleží od parametra funkcie). Používa sa pre zobrazovanie položiek na displeji v kuchyni alebo predajnom mieste.
Public methodCode exampleCashRegister_BillRegister Uzatvorenie dokladu so zaevidovaním tržby a vytvorením daňového dokladu vo fiškálnom zariadení (v systéme eKasa). Daňový doklad môže byť vytlačený, prípadne vyhotovený elektronicky - zaslaný zákazníkovi e-mailom. Uzatvorením účtu sa presunie otvorený účet z pokladnice do evidencie pokladničných dokladov (bločkov) danej pokladnice (tzv. žurnál). Zoznam otvorených účtov pokladnice je možné načítať metódou CashRegister_BillOpen_List(BillOpenListArg).
Public methodCode exampleCashRegister_CustomerDisplay_GetVráti (načíta) z webovej služby údaje pre zbrazenie na zákazníckom displeji. Dáta sa uchovávajú len v pamäti webovej služby, pričom daný údaj je vždy len posledný (aktuálny, t.j. bez nejakej fronty správ).
Public methodCode exampleCashRegister_CustomerDisplay_UpdateZašle (zapíše) do webovej služby údaje pre zobrazenie na zákazníckom displeji. Dáta sa uchovávajú len v pamäti webovej služby, pričom daný údaj je vždy len posledný (aktuálny, t.j. bez nejakej fronty správ).
Public methodCode exampleCashRegister_PaymentType_ListVracia zoznam typov platieb (spôsobov zaevidovania dokladu). Používa sa pri vytlačení (uzatvorení) dokladu na Pokladnici OBERON (metóda CashRegister_BillRegister(BillRegisterArg) alebo CashRegister_BillClose(BillCloseArg)).
Public methodCode exampleCashRegister_SettingsNačítanie nastavení Pokladnice OBERON.
Public methodCode exampleCommon_BankAccount_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_Device_ListVráti zoznam zariadení definovaných v systéme OBERON (ponuka Servis, položka Zariadenia). V parametri je možné určiť typ (druh) zariadenia, napr. fiškálne eKasa zariadenia (Pokladnica OBERON), zákaznícke displeje a podobne.
Public methodCode exampleCommon_Unit_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 methodGetWebFile Vráti súbor pre web stránku, tzv. statické mapovanie súborov pre web stránku.
Public methodCode exampleHotel_HotelAccounts_ListVracia zoznam hotelových účetov. Bližší výber je možné určiť pomocou filtrov.
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 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 exampleStock_Common_CashRegisterGroups_ListVracia zoznam skupín v Pokladnici OBERON (číselník). Skupina v pokladnici sa používa pre členenie skladových kariet v režime fastfood a je vhodný pre obsluhu obsluhu pokladnice. Pre zákazníka je lepšie použiť členenie podľa TreeCategory.
Public methodCode exampleStock_Common_FoodMenu_ListVracia zoznam jedálnych lístkov (číselník). SKladovú kartu je možné priradiť do jedného, alebo viacerých jedálnych (nápojových) lístkov, pričom môže obsahovať aj šablónu, podľa ktorej sa nastavia údaje na novej skladovej karte.
Public methodCode exampleStock_Common_StockCardGroups_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_Common_TreeCategories_ListVracia zoznam kategórií skladových kariet (číselník). Kategórie (stromová štruktúra) sa používajú pre členenie skladových kariet, skladová karta môže byť v jednej, alebo viacerých kategóriách.
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_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_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_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_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 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, vydanej faktúre RecordGUID a podobne.
Public methodCode exampleSystem_PingOverenie dostupnosti služby, zároveň vráti adresu IP.
Public methodCode exampleSystem_Poll Polling - zaslanie požiadavky na určtú činnosť webovej služby - odpoveď spravidla nepríde ihneď, ale až keď nastane vo webovej služby zmena (spravidla v dátach). Ak nedôjde k určitej zmene v uvedenom čase, vráti OK - zoznam zmien (PollResult) bude prázdny. Príklad použitia - zákaznícky displej. Klient zavolá toto volanie a čaká na odpoveď. Ak dôjde k zmene na displeji, webová služba vráti info, že nastala zmena. Klient vzápätí volá metódu na vrátenie aktuálnych dát z webovej služby.

Timeout je možné nastaviť v požiadavke (hodnota PollFilter.PollTimeout) - ak je hodnota 0, použije sa default timeout webovej služby (momentálne 30 sekúnd).

Klient musí byť do webovej služby prihlásený a mať nastavený GUID (v hlavičke v polu USERDATA).
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 filtra pri načítaní skladových kariet (položiek) zasielané údaje v JSON formáte.
{
  "stockCardsListArg": {
    "LoadSettings": {
      "PageSize": 20,
      "Filters": [
        {
          "BookColumnID": 27,
          "Values": [
            "\\eMenu\\"
          ],
          "ConditionType": 10
        }
      ],
      "Sort": []
    },
    "GetFileRepository": true
  }
}
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,
    "DocumentTotal": {
                        "ExchangeRate": 0,
                        "FCCode": null,
                        "PriceTotal": 1580,
                        "Rounding": 0,
                        "VatRates": {
                                "R1": 10,
                                "R2": 5,
                                "R3": 0,
                                "Standard": 20
                        },
                        "VatTotals": {
                                "BaseR1": 1000,
                                "BaseR2": 0,
                                "BaseR3": 0,
                                "BaseStandard": 400,
                                "BaseZero": 0,
                                "VatR1": 100,
                                "VatR2": 0,
                                "VatR3": 0,
                                "VatStandard": 80
                        }
                },
    "DocumentType": "Objednávka",
    "Notice": null,
    "Number": "PP-240003",
    "NumberExternal": null,
    "OrderState": "Nová objednávka",
    "PersonOrdered": null,
    "PersonRegistered": null,    
    "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,
      }
    ]
  }
}}
Príklad vyvorenia príjemky zasielané údaje v JSON formáte.
{
  "receiveNoteAddArg": {
    "ReceiveNote": {
      "BranchName": null,
      "BusinessPartner": {
        "Address": {
          "City": "Bešeňová",
          "Country": null,
          "CountryISOCode": null,
          "Street": null
        },
        "IdentificationNumber": null,
        "IdentificationNumberTax": null,
        "IdentificationNumberVat": null,
        "Name": "EXALOGIC, s.r.o"
      },
      "DateDocument": null,
      "HasAmountStockIn": 0,
      "IDNum": 0,
      "MovementDocumentType": "P-Tuzemsko",
      "Notice": null,
      "Number": "P-2200003",
      "NumberDeliveryNote": null,
      "NumberExternal": "as1",
      "NumberOrder": null,
      "PersonRecipient": null,
      "PersonRegistered": null,
      "RecordGUID": "9962c0eb-a4cd-46af-ad76-55f539d823d2",
      "Settled": false,
      "StockIDNum": 0,
      "StockName": "Hlavný sklad",
      "UserAdd": null,
      "UserLastUpdate": null,
      "DocumentTotal": {
        "ExchangeRate": 0,
        "FCCode": null,
        "PriceTotal": 30,
        "Rounding": 0,
        "VatRates": {
          "R1": 10,
          "R2": 5,
          "R3": 0,
          "Standard": 23
        },
        "VatTotals": {
          "BaseR1": 0,
          "BaseR2": 0,
          "BaseR3": 0,
          "BaseStandard": 24.39,
          "BaseZero": 0,
          "VatR1": 0,
          "VatR2": 0,
          "VatR3": 0,
          "VatStandard": 5.61
        }
      },
      "Items": [
        {
          "Amount": 5,
          "AmountUnitOther": 0,
          "BarCode": null,
          "CashRegisterCode": null,
          "DateTime": null,
          "DiscountPercent": 0,
          "ForeignCurrency": false,
          "IDNum": 0,
          "IDNum_Stock": 2,
          "IDNum_StockCard": 252,
          "IDNum_StockCardVariant": 0,
          "Name": "7 Up sklo 0,25 l",
          "Notice": null,
          "Number": "2003",
          "PriceWithVAT": 20,
          "PriceWithVATUnit": 4,
          "PriceWithVATWithoutDiscount": 0,
          "PriceWithVATWithoutDiscount_Unit": 0,
          "PriceWithoutVAT": 0,
          "PriceWithoutVATUnit": 0,
          "Unit": "ks",
          "UnitOther": null,
          "VariantName": null,
          "VatRate": 23,
          "AmountStockIn": 0,
          "SerialNumbers": null
        },
        {
          "Amount": 10,
          "AmountUnitOther": 0,
          "BarCode": null,
          "CashRegisterCode": null,
          "DateTime": null,
          "DiscountPercent": 0,
          "ForeignCurrency": false,
          "IDNum": 0,
          "IDNum_Stock": 2,
          "IDNum_StockCard": 291,
          "IDNum_StockCardVariant": 0,
          "Name": "Arašidy 100 gr",
          "Notice": null,
          "Number": "2301",
          "PriceWithVAT": 10,
          "PriceWithVATUnit": 1,
          "PriceWithVATWithoutDiscount": 0,
          "PriceWithVATWithoutDiscount_Unit": 0,
          "PriceWithoutVAT": 0,
          "PriceWithoutVATUnit": 0,
          "Unit": "ks",
          "UnitOther": null,
          "VariantName": null,
          "VatRate": 23,
          "AmountStockIn": 0,
          "SerialNumbers": null
        }
      ]
    }
  }
}
See Also