Preskoči na glavno vsebino

Inicializácia účtovného obdobia cez REST API

Ako uzavrieť obdobie a iniciovať nasledujúce pomocou REST API Flexi?

Avtor: Petr Pech

REST API Flexi ponúka obdobu vyvolania menu "Účtovníctvo > Inicializácia nasledujúceho obdobia". Inicializáciu je možné volať opakovane rovnako ako v desktopovej aplikácii.

Základný request na API je metódou GET

GET server/c/firma/ucetni-obdobi/inicializace-noveho-obdobi.json

Pokud neexistuje nasledujúce účtovné obdobie, vracia sa chyba:

status 400 { "winstrom": { "@version": 1, "success": false, ... } }

{
"winstrom":{
"@version":1,
"success":false,
"message":"Neexistuje následující účetní období. Prosím založte ho."
}
}

Pokiaľ majú niektoré typy dokladov neštandardne nastavené zaokrúhľovanie, nasleduje ďalšia chyba:

status 400 { "winstrom": { "@version": 1, "success": false, ... } }

{
"winstrom":{
"@version":1,
"success":false,
"message":"Následující typy dokladů mají nestandardně nastavené zaokrouhlení DPH (očekávané je zaokrouhlení na setiny nebo jednotky, viz § 37 ZDPH):\nFAKTURA: nastaveno \"0.1\"\nOBP: nastaveno \"0.1\"\nNásledující typy dokladů mají nestandardně nastavený způsob zaokrouhlení DPH (očekávané je zaokrouhlení matematicky, viz § 37 ZDPH):\nFAKTURA: nastaveno \"nahoru\"\nOBP: nastaveno \"nahoru\"\nZÁLOHA: nastaveno \"nahoru\""
}
}

Túto chybu je možné potlačiť parametrom kontrolaZaokrouhleni=false (obdoba tlačidla Áno v desktopovej aplikácii), alebo opraviť zaokrúhľovanie na typoch dokladov.

Povinné parametre inicializácie obdobia cez API

  • ucetOtv - Účet otvorenia účtovnej knihy (druhUctuK="druhUctu.otevknih")

  • ucetZav - Účet uzavretia účtovnej knihy (druhUctuK="druhUctu.uzavknih")

  • ucetPre - kód účtu prevodu hospodárskeho výsledku (je nutné, aby účet mal nastavený druh druhUctuK="druhUctu.prhosvys")

  • ucetVys - kód účtu výsledku hospodárenia v schvaľovacom konaní (je nutné, aby účet mal nastavený druh druhUctuK="druhUctu.pasivhvy")

Očakávanými hodnotami sú kódy účtov z Účtovej osnovy, ktoré majú zodpovedajúcu hodnotu druhUctuK (napr. ucetZav=702000). Viac informácií o druhu účtu nájdete v evidencii Účtová osnova.

Poznámka: V prípade firmy typu daňová evidencia nie sú vyžadované parametre účtov podvojného účtovníctva.

Pokiaľ niektorý z parametrov chýba, vráti sa napríklad táto chyba:

status 400 { "winstrom": { "@version": 1, "success": false, ... } }

{
"winstrom":{
"@version":1,
"success":false,
"message":"K provedení operace je vyžadován parametr 'ucetOtv'"
}
}

Pokiaľ bol vybraný nesprávny účet (napr. ucetZav=701000), vráti sa táto chyba:

status 400 { "winstrom": { "@version": 1, "success": false, ... } }

{
"winstrom":{
"@version":1,
"success":false,
"message":"Parametr 'ucetZav' má nepodporovanou hodnotu! Zvolte jednu z následujících možností: [Zvolený účet musí mít druhUctuK 'druhUctu.uzavknih']"
}
}

Voliteľné parametre inicializácie obdobia cez API

  • ucetniObdobi - kód účtovného obdobia, ktoré chcete uzavrieť (ak nie je uvedené, uzatvára sa aktuálne obdobie)

  • preceneni - Vykonať precenenie neuhradených dokladov (true/false)

  • prevodSkladu - Vykonať prevod skladu (true/false)

  • vynechatNulove - Vynechať karty s nulovým zostatkom (true/false)

  • dnyBezPohybu - Počet dní bez pohybu pre vynechanie (celé číslo)

  • zrusitStare - V novom účtovnom období zrušiť nepoužívané staré karty (true/false)

  • typDokl - Typ dokladu pre generovanie záväzkov leas. splátok (id typu dokladu).

Predvolené hodnoty všetkých boolovských parametrov sú false.

Pokiaľ existujú záväzky pre nasledujúce účtovné obdobie, parameter typDokl je povinný.

Voľbu "Potvrdzovať vynechanie karty" ako v desktopovej aplikácii REST API nepodporuje.

Ak nie je v tomto prípade uvedený, vráti sa zodpovedajúca chyba:

status 400 { "winstrom": { "@version": 1, "success": false, ... } }

{
"winstrom":{
"@version":1,
"success":false,
"message":"K provedení operace je vyžadován parametr 'typDokl'"
}
}

Vybraný typ dokladu musí mať uloženú radu dokladu, inak sa vráti chyba:

status 400 { "winstrom": { "@version": 1, "success": false, ... } }

{
"winstrom":{
"@version":1,
"success":false,
"message":"Vyplněný typu dokladu nemá zadanou řadu dokladu a žádná není specifikovaná."
}
}

Rad typu dokladu musí mať uloženú ročnú položku číselného radu k nasledujúcemu účtovnému obdobiu, inak sa vráti chyba:

status 400 { "winstrom": { "@version": 1, "success": false, ... } }

{
"winstrom":{
"@version":1,
"success":false,
"message":"Vybraná řada typu dokladu nemá zadanou roční položku číselné řady k následujícímu účetnímu období."
}
}

Kontrola kurzov pre precenenie

Pokiaľ je parametrom ?preceneni=true zapnuté precenenie dokladov, nasleduje kontrola kurzov pre precenenie, pred volaním inicializácie je možné zavolať subresource:
GET https://demo.flexibee.eu/c/demo/ucetni-obdobi/meny-pro-preceneni.json (nepovinný parameter ?ucetniObdobi=IDENTIFIKÁTOR_OBDOBÍ),
ktorý vráti zoznam mien s kurzom, ktorý bude použitý pre precenenie.

Pokiaľ u niektorej z mien kurz alebo kurzové množstvo chýba (je 0.0), je potrebné ho pri inicializácii obdobia zadať.

Príklad odpovede

{
"meny-pro-preceneni":{
"datumPreceneni":"2023-12-31T00:00:00+01:00",
"meny":{
"mena":[
{
"symbol":"",
"kod":"DEM",
"kurz":"0.0",
"kurzMnozstvi":"1.0"
},
{
"symbol":"€",
"kod":"EUR",
"kurz":"24.725",
"kurzMnozstvi":"1.0"
},
{
"symbol":"",
"kod":"THB",
"kurz":"65.107",
"kurzMnozstvi":"100.0"
}
]
}
}
}

Pri inicializácii sa systém pokúsi kurzy pre precenenie stiahnuť z centrálnej banky. Je tiež možné definovať kurz pomocou URL parametrov:

?kurz[KOD_MENY]=HODNOTA_KURZU&kurzMnozstvi[KOD_MENY]=HODNOTA_KURZ_MNOZSTVI

Príklad:

https://demo.flexibee.eu/c/demo/ucetni-obdobi/inicializace-noveho-obdobi.json?(parametry s účty)&preceneni=true &kurz[EUR]=24.52&kurzMnozstvi[EUR]=1.0&kurz[HUF]=6.12&kurzMnozství[HUF]=100.0

Pre každú menu je nutné uviesť obe hodnoty: kurz aj kurzové množstvo. Tieto hodnoty budú uložené do nového kurzu v resource:

https://demo.flexibee.eu/c/demo/kurz-pro-preceneni/(platiOdData, mena)

Pokiaľ pri inicializácii niektoré kurzy chýbajú, vráti sa:

status 400 { "winstrom": { "@version": 1, "success": false, ... } }

{
"winstrom":{
"@version":1,
"success":false,
"message":"Nebyly zadány všechny potřebné kurzy platné k poslednímu dni účetního období,\nkteré jsou nutné pro přecenění neuhrazených pohledávek/závazků."
}
}

Pohyby v chybnej mene

Pokiaľ je parametrom ?preceneni=true alebo ?preceneniBankAPokladen=true zapnuté precenenie bankových účtov a pokladní, nasleduje kontrola všetkých pohybov v precenených bankových účtoch a pokladniach.

Pokiaľ sa nájde pohyb v inej ako tuzemskej mene alebo v mene, v ktorej je banka alebo pokladňa vedená, dôjde k nasledujúcej chybe:

{
"winstrom":{
"@version":1,
"success":false,
"message":"Následující bankovní účty a pokladny nelze přecenit:\n• <seznam všech chybných bank nebo pokladen>\nPřeceňovány mohou být pouze bankovní účty a pokladny, které mají pohyb v měně, ve které jsou vedeny nebo v tuzemské měně."
}
}

Túto chybu je možné potlačiť parametrom preceneniVynechatBanAPokSChybnouMenou=true a tým budú všetky chybné banky a pokladne vylúčené z výpočtu precenenia.

Príklad volania č. 1

1. Najprv zavoláme meny pre precenenie:

2. Ak dopyt vráti meny, vykonáme precenenie

Príklad uloženia dát do evidencie Kurzy môže byť nasledovný:

{
"winstrom":
{
"kurzy": {
"platiOdData": "2020-12-31T00:00:00+01:00",
"nbStred": "25.75",
"kurzMnozstvi": 1,
"mena": "code:EUR"
}
}
}

3. Potom vykonáme inicializáciu

Pokiaľ má inicializácia všetky potrebné dáta, spustí vlákno na pozadí a vráti status 202 Accepted.

Príklad volania č. 2

1. Rovno vykonáme inicializáciu s vyplnením kurzu:

Pokiaľ má inicializácia všetky potrebné dáta, spustí vlákno na pozadí a vráti status 202 Accepted.

V evidencii Účtovné obdobia je možné kontrolovať, či už inicializácia skončila (property lastUpdate aktuálneho účtovného obdobia sa aktualizuje).

Výsledok

Pokiaľ má inicializácia všetky potrebné dáta, spustí proces na pozadí a vráti status 202 Accepted. Na resource /c/{firma}/ucetni-obdobi je možné kontrolovať, či už inicializácia skončila (property lastUpdate aktuálneho účtovného obdobia).

Ste s tem dobili odgovor na svoje vprašanje?