Činnost 9. 4. 3. 0 - Číselné řady
Číselné řady definují mechanismus při automatické tvorbě jednoznačného čísla dokladu, zboží, služby, majetku, subjektu. Číslo dokladu podle číselné řady určí systém a uživatel zpravidla nemá možnost jej měnit.
Číselník obsahuje definici vzorce pro tvorbu nového čísla dokladu (zboží, služby atd.).
Tvar řady může využívat speciálních znaků, které jsou při zakládání dokladu podle této řady nahrazeny:
- * (souvislá řada hvězdiček) - definují pořadové číslo
- RR (RRRR), MM - nahrazuje se rokem a měsícem z fiskálního nebo účetního období dokladu. To, zda se pro číslování použije fiskální nebo účetní období, se určuje nastavení parametru CisRad_DleObdobi ve skupině parametrů Číselné řady. Parametr je možno nastavit v závislosti na účetním období. Upozornění : změna parametru v případě existence dokladů v daném období může způsobit nekonzistenci číselné řady !
- Ř - nahradí se poslední číslicí roku z fiskálního/účetního období dokladu - využití této možnosti nedoporučujeme z toho důvodu, že po 10 letech provozu začnou vznikat duplicitní čísla dokladů !!
- SSSS - nahradí se kódem subjektu (v délce 4 znaky)
- PPPP - nahradí se číslem předchůdce dokladu (v délce odpovídají počtu znaků P). Pouze pro položky bankovního výpisu nebo platebního příkazu.
- BBBB - nahradí číslem BaV (v délce odpovídají počtu znaků B). Pouze pro položky bankovního výpisu nebo platebního příkazu.
Dále je možno pro tvorbu čísla dokladu použít tyto výrazy (vždy musí mít na začátku a na konci znak $):
- $R$ - poslední číslice roku z fiskálního/účetního období dokladu - využití této možnosti nedoporučujeme
- $RR$ - poslední dvojčíslí roku z fiskálního/účetního období dokladu
- $MM$ - období - měsíc z fiskálního/účetního období dokladu
- $Obdobi$ - fiskální/účetní období dokladu
- $BAV$ - číslo BAV
- $PorBAV$ - pořadí v rámci BAV
- $Predch$ - číslo dokladu předchůdce
- $Subjekt$ - kód subjektu
- $StrMD$ - středisko MD (ze vzoru)
- $StrDAL$ - středisko DAL (ze vzoru)
- $Sklad$ - kód skladu (ze vzoru z 1. složky, která má sklad v pořadí zboží, majetek, služba, ostatní, …)
- $PenUcet$ - kód peněžního účtu ze vzoru dokladu
- $StrPU$ - středisko peněžního účtu
- $Mena$ - kód měny
- $FNx$ - výraz bude při tvorbě čísla dokladu nahrazen řetězcem definovaným v uživatelské funkci fnCisRad_NahradUziv. Uživatelská funkce má jediný parametr @CisFN, za který se v případě použití výrazu $FN$ nebo $FN0$ dosadí 0. Pokud bude v definici řady použit výraz $FNx$, kde x je číslo typu Integer, pak se uživatelská funkce bude volat s parametrem @CisFN=x. Pomocí různých @CisFN je tak možno definovat více způsobů tvorby požadovaného řetězce.
Pokud je třeba zadat pouze část řetězce, je možno do číselné řady zapsat např.:
- $Obdobi,4$ - pak se berou první 4 znaky zleva - vyhodnotí se jako left(Obdobi, 4) - pouze u PORBAV se berou ZNAKY zprava - right
- $Obdobi,6,2$ - pak se vyhodnotí jako Substring(Obdobi, 6, 2)
Pozor - pokud je v definici číselné řady použit libovolný z uvedených $vyraz$, pak již nelze použít v definici RRRR, RR, MM, … ale je nutno použít $Obdobi,4$, $RR$, $MM$, … . Tímto je naopak možno docílit toho, že číselná řada bude obsahovat právě například znaky RR apod.
Poslední použité číslo může systém hledat v datech nebo použít v číselníku evidované poslední číslo v řadě.
U číselných řad pro doklady je možno nastavit, zda kontrolovat duplicitu.
=== Vstupní formulář pro číselné řady ===
Pokud je povoleno, je možno pro řadu provádět údržbu, tj. nalezení posledního nejvyššího čísla vygenerovaného z číselné řady.
=== Odkaz „Chyby v číselné řadě“ na formuláři pro číselné řady ===
Na základě definice tvaru řady (a dalších vlastností číselné řady - např. Způsobu tvorby) se nejprve nalezne nejmenší a největší číslo dokladu, které vyhovuje definici číselné řady. Pak se testuje, zda v databázi existují doklady s čísly doklady mezi tímto minimálním a maximálním číslem. V případě, že definice obsahuje řetězec RMM, Ř, RRMM, RR nebo MM, pak se posloupnost dokladů testuje vzhledem ke všem různým hodnotám výskytů v číslech dokladů na pozicích tohoto řetězce. To znamená, že pokud je např. tvar řady XYRRMM a již existují např. doklady XY0801…., XY0802…. a XY0804…., pak se postupuje tak, jako kdyby se testovaly 3 samostatné řady XY0801, XY0802 a XY0804**.
V sestavě se vypíše vždy první a poslední číslo dokladu a v případě, že některé číslo chybí, tak se vypíší všechna tato chybějící čísla. Dále se testuje, zda ta část čísla, která je závislá na období, souhlasí s obdobím dokladu. Pokud ne, vypíše se rovněž v sestavě jako chyba.
Poznámka: Testování řad není možno provádět pro řady definované pomocí výrazů $…$