# Univerzálne moduly

Výskyt a využitie univerzálnych modulov je možný v rôznych častiach aplikácie.

# Color Picker

Umožňuje výber farieb z predvolených HTML názvov farieb, alebo definovať vlastnú farbu, pomocou pickeru.

Jedná sa o fragment umiestniteľný do ľubovoľného kontajneru.

##### Fragment Color Picker

![colorPicker.png](https://pub-a257662f88d8455b858a5c3613b8190b.r2.dev/uploads/images/gallery/2025-07/scaled-1680-/vTDcolorpicker.png)

##### Modul Picker

![pickColor.png](https://pub-a257662f88d8455b858a5c3613b8190b.r2.dev/uploads/images/gallery/2025-07/scaled-1680-/pickcolor.png)

#### Postup výberu farby z predvolených HTML farieb

- v skrolovateľnom zozname ťuknúť na názov farby a zvolená farba vypní pole pred tlačidlom *Set From List*
- ťuknúť na tlačidlo *Set From List* a ofarbí sa názov fragmentu *(Color picker)*
- ťuknúť na tlačidlo *Vybrať* a vybraná farba sa uloží do systémovej premennej pre ďaľšie použitie a fragment sa ukončí
- tlačidlo *Odísť* nevykoná zapamätanie farby a fragment sa ukončí

#### Postup výberu farby manuále

- ťuknúť na tlačidlo *Pick Color* a zobrazí sa *Modul Picker* pre manuálny výber farby
- farba sa vyberie ukázaním na ňu v pravom stĺpci a následne v ľavom štvorci
- ťuknúť na tlačidlo *OK* , *Modul Picker* zmizne a výber sa tak ukončí
- ak bolo stlačené *OK*, zvolená farba vypní pole pred tlačidlom *Set From Picker*
- ťuknúť na tlačidlo *Set From Picker* a ofarbí sa názov fragmentu *(Color picker)*
- ťuknúť na tlačidlo *Vybrať* ybraná farba sa uloží do systémovej premennej pre ďaľšie použitie a fragment sa ukončí
- tlačidlo *Odísť* nevykoná zapamätanie farby a fragment sa ukončí

<p class="callout warning">Prepínač 'Default - Custom' a tlačidlo 'Add to custom' nie sú implementované.</p>

# HotKeys

Modul pre rýchly výber produktu.

Stromová štruktúra dát umožňuje vytvárať vlastné kategórie a zaraďovať do nich produkty. Výber sa realizuje ťuknutím na klávesu kategórie či produktu.

- ťuknutie na kategóriu otvára ďalšiu vetvu tlačidiel
- ťuknutie na produkt ukončí modul a odovzdá výber volajúcemu modulu

![hotKeys.png](https://pub-a257662f88d8455b858a5c3613b8190b.r2.dev/uploads/images/gallery/2025-07/scaled-1680-/kpGhotkeys.png)

#### Pridelenie produktu na tlačidlo

Podržaním horúceho tlačidla sa zobrazí menu:

![setButtonType.png](https://pub-a257662f88d8455b858a5c3613b8190b.r2.dev/uploads/images/gallery/2025-07/scaled-1680-/uy6setbuttontype.png)

Zvolíme *Priradiť produkt* a potvrdíme *VYKONAŤ*. Otvorí sa zoznam všetkých produktov, zoradený podľa názvu.

![assignProductForButton.png](https://pub-a257662f88d8455b858a5c3613b8190b.r2.dev/uploads/images/gallery/2025-07/scaled-1680-/assignproductforbutton.png)

Zvolíme produkt a potvrdíme *VYKONAŤ*. Produkt bude pridelený tlačidlu.

#### Vytvoriť odkaz - kategóriu

Podržaním horúceho tlačidla sa zobrazí menu a zvolíme *Vytvoriť odkaz* a potvrdíme *VYKONAŤ*. Aplikácia vytvorí nové pole tlačidiel a automaticky tlačidlo ktorému bol priradený odkaz pomenuje *newLink* a ofarbí ho na predvolenú farbu. Potom je možné na tlačidlo ťuknúť a otvorí sa prázdna sada tlačidiel, na ktoré je možné obdobne prideliť produkty či odkazy.

#### Vymazať hodnotu

Podržaním horúceho tlačidla sa zobrazí menu a zvolíme *Vymazať hodnotu* a potvrdíme *VYKONAŤ*. Aplikácia zruší pridelenie produktu, alebo ok tlačidlo je odkaz, tak odstráni pole tlačidiel a automaticky tlačidlo ktorému bol vymazaný obsah zruší meno a odfarbí ho.

<p class="callout warning">Ak je tlačidlo odkaz a v ňom sú iné odkazy, treba ich odmazať všetky od konca vetvy, inak sa pri redefinícii objavia inde.</p>

#### Farbenie pozadia tlačidla

Vybraná farba je zobrazená v module vľavo dole pod info textom, teda pred tlačidlami *Odísť* a *Na začiatok*. Ak ešte nebola farba vybraná, potom vo volajúcom module ťukneme na tlačidlo *CP* ([fragment ColorPicker](https://docs.gecora.com/books/gepos-apk-pre-android/page/color-picker)). Znova podržíme v module HotKeys tlačidlo ktoré chceme zafarbiť a zvolíme *Farbenie pozadia* a tlačidlo sa ofarbí.

<p class="callout warning">Farba textu v tlačidle sa volí automaticky pri vykresľovaní v závisloti od farby pozadia.</p>

#### Upraviť názov

Podržaním horúceho tlačidla sa zobrazí menu a zvolíme *Upraviť názov* a potvrdíme *VYKONAŤ*. Otvorí sa alert so vstupom textu, ktorý nahradí pôvodný, po potvrdení *OK*.

#### Tlačidlo *Odísť*

zatvorí modul HotKeys bez výberu produktu

#### Tlačidlo *Na začiatok*

- vráti sa na prvú kartu s horúcimi klávesami
- **podržanie** volá menu v ktorom je predovšetkým využiteľný export a import 
    - **Export data** - do gePosApi exportuje aktuálne HotKeys pod ID skladu
    - **Import data** - z gePosApi automaticky importuje HotKeys podľa ID skladu. Odporúčame pred tým vykonať *dropDatabaseAndCreate()*

---

<p class="callout info">Tento modul bol programovo i dátovo konvertovaný z projektu MyECR vytvoreného pod Visual FoxPro. Zdroj modulu je na GitHub vo verzii pod jazykom Kotlin.</p>

# POI server

Modul je určený pre prepojenie s programovými produktami **tretej strany**, ale aj **MyECR** - pôvodného projektu pre Windows. Automaticky skenuje vybranú IP, na ktorej očakáva definovaný dátový súbor. Modul je zameraný na realizáciu bezhotovostných platieb (POI) a prípadne evidenciu v systéme eKasa.

Ak je potreba získať výsledok transakcie, je treba zabezpečiť API pre zdieľanie.

<p class="callout warning">Modul PoiServer je experimentálny a funkčný pre: POI Besteron.</p>

### Činnosť modulu POI Server

<p class="callout info">Spustenie modulu sa vykoná stlačením tlačítka "**POI server**" v úvodnej obrazovke gePOS.</p>

#### Prvá fáza po nájdení odlišných dát od pôvodných je ich zobrazenie

![poiServer_1.png](https://pub-a257662f88d8455b858a5c3613b8190b.r2.dev/uploads/images/gallery/2025-07/scaled-1680-/poiserver-1.png)

Popis tlačidiel:

- **Card pay** - pokúsi sa volať aplikáciu platobného terminálu (Besteron, ...)
- **eKasa** - pokúsi sa volať aplikáciu zariadenia s PPEKK a CHDÚ (Besteron, Varos, ...)
- **Exit/Settings**
    - **stlačenie** volá potvrdenie o ukončení
    - **podržanie** volá menu
- **Read/Serialize**
    - **stlačenie** aktivuje reload zo zdroja
    - **podržanie** zobrazí JSON s aktuálnymi dátami


#### Druhá fáza po stlačení *Card pay*

volá aplikáciu Besteron POI ...


#### Tretia fáza po stlačení *eKasa*

volá aplikáciu Besteron Fiscal Core ... (nezapracované)

<p class="callout success">Pre eKasa zaevidovanie a tlač je možné použiť [import v otvorenom doklade](https://docs.gecora.com/books/gepos-apk-pre-android/page/priklady-nasadenia#bkmrk-myecr-%3D%3E-gepos-%3A-pos), čo aktuálne **slúži ako náhrada** využitia iného **CHDÚ**. Teda je k dispozícii eKasa (POS) aj bezhotovostná úhrada (POI).</p>

### Settings

obsahuje základné nastavenia modulu:

![poiServer_settings.png](https://pub-a257662f88d8455b858a5c3613b8190b.r2.dev/uploads/images/gallery/2025-07/scaled-1680-/poiserver-settings.png)

- **httpPrimary** - bežne použitý zdroj pre dátový súbor
- **httpSecondary** - náhradný (cvičný) zdroj pre dátový súbor
- odporúčané časové limity by mali korešpondovať medzi sebou, teda **elapsed time &gt; wait for request** (po zjednotení časových jednotiek)