Show / Hide Table of Contents

Kontrola stavu systému

Pre zistenie kompletného stavu systému je vhodné overiť stav údajov na úložisku ako aj stav periférií. Všetky dostupné kontroly sú popísané v jednotlivých sekciách nižšie.

Pri každej kontrole je uvedený príklad na jej vykonanie pri použití knižnice a taktiež aj príklad pri komunikácii prostredníctvom HTTP WEB API.

Príklady použitia knižnice odkazujú na vlastnosti alebo metódy triedy Client.

1. Kompletný inicializačný balík

Aby bolo možné online pokladnicu (identifikovanú kódom on-line pokladnice) používať, musí byť do systému vložený tzv. inicializačný balík, ktorý pozostáva z dvojice identifikačných údajov (v systéme označované ako Identity) a autentifikačných údajov (označované ako Certificate).

Kompletnosť vloženia "inicializačného balíka" nie nutné explicitne kontrolovať, nakoľko všetky funkcie riešenia Portos eKasa, ktoré od prítomnosti tohto balíka závisia, preberajú kód on-line pokladnice (označovaný ako cashRegisterCode) vo forme parametru, na základe ktorého je stav inicializačného balíka interne overovaný.

V prípade, ak by bolo potrebné z nadradenej aplikácie získavať všetky zaregistrované identifikačné alebo autentifikačné údaje, nasledujúce dva odstavce popisujú spôsob, ako ich zo systému Portos eKasa získať.

Získanie identifikačných údajov

  • HTTP WEB API
  • Knižnica

GET {{server_address}}/api/v1/identities

client.IdentityManager.GetIdentityAsync()

Získanie autentifikačných údajov

  • HTTP WEB API
  • Knižnica

GET {{server_address}}/api/v1/certificates

client.CertificateManager.FindLatestCertificateInfoAsync(ORPCode, CancellationToken)

2. Blížiaca sa exspirácia certifikátu

Každý certifikát má obmedzenú platnosť, preto je vhodné kontrolovať aj dátum exspirácie certifikátu, na základe vlastnosti expirationDate (dátum exspirácie), prípadne na základe vlastnosti isExpired (indikácia, či je certifikát už exspirovaný).

Overenie existencie platného certifikátu

  • HTTP WEB API
  • Knižnica

GET {[server_address}}/api/v1/certificates/valid/latest

client.CertificateManager.FindValidCertificateInfoAsync(ORPCode, CancellationToken)

Vzorový výstup s údajmi o certifikáte:

{
  "alias": "88812345678900001",
  "cashRegisterCode": "88812345678900001",
  "issueDate": "2019-01-30T16:07:01+01:00",
  "expirationDate": "2021-01-29T16:07:01+01:00",
  "serialNumber": "2B0A",
  "isExpired": false
}
Warning

Napriek tomu, že pole alias obsahuje rovnakú hodnotu, ako pole cashRegisterCode (kód on-line pokladnice), podľa vyjadrenia finančnej správy nie je certifikačnou autoritou zaručené, že bude zhoda týchto polí do budúcna dodržaná.

3. Overenie stavu úložiska

Každé dátové úložisko musí mať kapacitu postačujúcu na uloženie najmenej 300 000 dokladov. Blížiace sa zaplnenie pamäťového média je však vhodné priebežne používateľovi indikovať.

Získanie informácie o úložisku:

  • HTTP WEB API
  • Knižnica

GET {{server_address}}/api/v1/storage/info

client.GetStorageInfoAsync(CancellationToken)

Príklad:

Task task = client.GetStorageInfoAsync(CancellationToken.None);

Vzorový výstup informácie o úložisku:

{
  "product": {
    "vendorName": "Nine Digit, s.r.o.", // dodávateľ úložiska
    "name": "Portos eKasa CHDÚ", // názov úložiska
    "version": "v1.0", // verzia úložiska
    "serialNumber": "3A21D0E474C0" // sériové číslo úložiska
  },
  "capacity": {
    "total": "8589934592", // celková kapacita úložiska uvedená v bajtoch
    "used": "2173430" // použitá kapacita úložiska uvedená v bajtoch
  },
  "isReadOnly": true // indikácia, či je dátové úložisko nevratne prepnuté do režimu iba na čítanie
}

Vlastnosť capacity obsahuje informáciu o celkovej (total) a použitej (used) kapacite pamäťového média, vyjadrenej v byte-och.

Podielom týchto dvoch hodnôt je možné percentuálne vyčísliť obsadenosť úložiska a od určitého bodu (napríklad 80% zaplnenosť) indikovať používateľovi upozornenie o blížiacom sa zaplnení úložiska.

Vlastnosť isReadOnly obsahuje indikáciu o tom, či je dátové úložisko nevratne prepnuté do režimu iba na čítanie. Toto môže byť použité, ak bolo úložisko úmyselne vyradené z prevádzky. Read-only režim nebráni úložisku pri vyčítavaní údajov.

4. Kontrola stavu tlačiarne

Získanie informácie o stave tlačiarne:

  • HTTP WEB API
  • Knižnica

GET {{server_address}}/api/v1/printers/status

client.GetPrinterStatusAsync(CancellationToken)

Príklad stavu tlačiarne:

{
  "state": "Ready"
}

Stav tlačiarne nadobúda niektorú z nasledovných hodnôt:

  • Error: Tlačiareň nie je pripravená (zaneprázdnená alebo v chybovom stave).
  • Ready: Tlačiareň je pripravená.
  • Unknown: Neznámy stav.

V závislosti od typu úložiska je reakcia aplikácia na chybový stav tlačiarne rozdielna.

Model úložiska Správanie na nepripravenosť tlačiarne
CHDU-SK Chybový stav tlačiarne (napríklad ak ju obsuha nezapla do elektrickej siete) neovplyvňuje činnosť aplikácie - po zapnutí sa údaje z úložiska dodatočne (v rámci veľkosti bufferu) zašlú do tlačiarne. Ak sa však vnútorný buffer úložiska zaplní (odhadom cca 10-12 účteniek), úložisko sa zablokuje a pre jeho ďalšiu činnosť je potrebné ho vypnúť a zapnúť.
CHDU Lite Pri chybovom stave tlačiarne sa pokus o registráciu dokladu skončí chybou.

5. Kontrola stavu internetového spojenia so systémom eKasa

Získanie informácie o stave internetového spojenia so systémom eKasa:

  • HTTP WEB API
  • Knižnica

GET {{server_address}}/api/v1/connectivity/status

client.ConnectivityMonitor.GetStateAsync(CancellationToken)

Príklad stavu internetového pripojenia:

{
  "validFrom": "2019-04-01T14:13:25Z",
  "validTo": "2019-04-01T14:13:25Z",
  "state": "Unknown"
}

Stav internetového pripojenia (vlastnosť state) nadobúda niektorú z nasledovných hodnôt:

  • Up: Internetové spojenie je dostupné.
  • Down: Internetové spojenie nie je dostupné.
  • Unknown: Neznámy stav.

Riešenie Portos eKasa plne automatizovane pozoruje aktuálny stav spojenia so serverom finančnej správy a v prípade, že sa vo fronte neodoslaných správ nachádzajú nejaké dátové správy (napríklad doklady vyhotovené v offline režime), pokúsi sa ich dodatočne odoslať ihneď, ako detekuje zmenu stavu internetového pripojenia.

6. Kontrola obsahu fronty neodoslaných správ

Podnikateľ je povinný zabezpečiť, aby sa všetky dátové správy (doklady alebo registrácie polohy pokladnice) odoslali do systému eKasa do 48 hodín.

Z tohto titulu je vhodné sledovať, či sa v systéme nenachádzajú nejaké dátové správy, ktoré sa aplikácii nepodarilo odoslať.

6.1 Počet neodoslaných dátových správ pre konkrétny kód pokladnice (odporúčaný postup)

  • HTTP WEB API
  • Knižnica

HEAD /api/v1/queue/items/unprocessed?cashRegisterCode={kód pokladnice}

// príprava objektu filtra
var registerTokenFilter = new RegisterTokenFilter()
{
    State = RegisterTokenFilterState.Unprocessed,
    CashRegisterCode = "...." // kód pokladnice
};

// zaobalenie filtra do query objektu
var registerTokenQuery = new RegisterTokenQuery(registerTokenFilter);

// fronta musí byť pred získanim jej položiek nainicializovaná
await this.client.InitializeQueueAsync(filter.CashRegisterCode, cancellationToken)
    .ConfigureAwait(false);

// získanie obsahu fronty podľa query objektu
var queryResult = this.client.Queue.Filter(registerTokenQuery);

// získanie počtu nespracovaných položiek vo fronte
var count = queryResult.Count;

6.2 počet neodoslaných dátových správ pre všetky kódy pokladníc

Alternatívnym, časovo náročnejším, spôsobom je možné získať počet neodoslaných dátových správ pre všetky kódy pokladníc nasledovne:

  • HTTP WEB API
  • Knižnica

HEAD /api/v1/requests/receipts?status=unprocessed

var query = new RegistrationQuery();

query.Filter.ProcessStatus = RegistrationRecordProcessStatus.Unprocessed;

var result = await client.CountRegistrationsAsync(query, CancellationToken.None);
In This Article
Na začiatok stránky Nine Digit, s.r.o. ©