Definice sérií

Last modified by Martin Mahr on 2024/10/21 22:15

Přidělování nové sériové hodnoty

Přidělit novou sériovou hodnotu je možné automaticky (klávesa F6), nebo ručně.

Automatické vytváření:

  • Přiřadí se první nepoužitá hodnota ze série,
  • Dle nastavení série uživatel může doplnit sériovou hodnotu o prefix a suffix.

Ruční vytváření:

  • Uživatel může vytvořit libovolnou hodnotu spadající do libovolné série pro daný typ dokumentu.
  • Podle nastavení série se validuje duplicita sériových hodnot.
  • Ručním vytvořením sériové hodnoty mohou vznikat mezery.
  • Pokud při ručním vytvoření sériové hodnoty není možné přiřadit žádnou sérii (viz mechanizmus přiřazování sérií k sériové hodnotě), tak:

    • pro typ série signatura a skladová signatura se vytvoří nepřiřazená sériová hodnota
    • pro ostatní typy sérií systém neumožní hodnotu uložit

Základní pravidla

Série musí být unikátní pro každou knihovnu - nesmí existovat série, která má stejný typ, masku a druh dokumentu (průnik množin) a nesmí se překrývat rozsah (minimální a maximální hodnota).
Série je vždy přiřazená ke konkrétní knihovně.
Série je interval posloupných hodnot určitého údaje Svazku, který je vhodné:

  • generovat (nabízet) uživateli další v pořadí
  • kontrolovat tvar (syntax) údaj má jakýsi předpis jak může být zadán
  • kontrolovat na duplicitu (údaj nesmí být uložen u dvou či více záznamů)

Nastavení sérií

Typ: Lze definovat série pro tyto nejběžnější údaje pro Svazky

  • INCREMENTAL NUMBER - Přírůstkové číslo
  • WRITE_OFF_NUMBER - Úbytkové číslo
  • ORDER_NUMBER - Číslo objednávky
  • SIGNATURE - Signatura svazku
  • STORE_MARK - Skladová signatura

Maska: Obsahuje vždy znak $ (dolar) reprezentující proměnné číslo intervalu,
              kromě něj pak může předcházet skupina znaků jako konstanta.

Regulární předpona, koncovka : regulární výraz, který musí platit, aby byla hodnota validní a uložená:

např: /[0-9A-Za-z] kompletní definice regulárních výrazů : http://www.regularnivyrazy.info/regularni-vyrazy-zaklady.html#.VBXGz1dBFyY

Defaultní předpona, přípona:  umožňuje předvyplnit současně s generováním hodnoty série (typicky se používá pro sériové hodnoty patřící do stejné série, ke kterým se přidává aktuální rok)

Typy dokumentu, pro které série platí (zkratky druhů dokumentu jsou odděleny středníky. Pokud není vyplněno, platí pro všechny typy dokumentu.)

Zarovnání : určuje počet míst na které bude v řadící hodnotě číselná část zarovnávána např. 10

Rozsah - některé série mají stejnou masku (čárový kód), pak může být rozdělena do více sérií pro různé druhy dokumentu

  • minimální hodnota série
  • maximální hodnota série

Minimální hodnota na generování : celé kladné číslo které je jako první použito při vyvolání série, pokud v rozsahu neexistuje již uložené vyšší.

Typ generování řadící hodnoty : Určuje zda se použije standardní kód systému nebo je použit kód speciální.

  • PREFIX_VALUE - maska je typu Předpona a Hodnota
  • PREFIX_VALUE_SUFFIX - maska je typu Předpona Hodnota Přípona
  • VALUE_SUFFIX - maska je typu Hodnota a Přípona
  • VALUE - maska je typu Hodnota
  • CUSTOM - speciální kód tzn. typ masky je jiný než předchozích standardních případech
  • ILS_REQUEST_NUMBER - MVS žádanky
  • ORDER_NUMBER - Číslo objednávky

Zarovnat zobrazovanou hodnotu : rozhoduje, jestli je zobrazovaná hodnota hodnota zarovnávána na určitý počet nul.

Regulární koncovka - příklady

  • Maska - A1
    • Regulární koncovka - [a-z]|/[0-9]{1,4}[a-z\\-]{0,1}[0-9]{0,4}[/]{0,1}[IVXLCDM]*
      • Vyhovující hodnoty: A1a, A1/1, A1/1a, A1/1995, A1/1995a, A1/1995/I, A1/51, A1/77-1

Mapování série na hodnotu

Je potřeba mít na paměti, že reguláry jsou zleva doprava velmi "žravé", tzn. snaží se na danou část reguláru namapovat co nejvíc znaků je to možné.
  1. Mapování kombinace regulární předpony [^0-9]*, masky $ a regulární koncovky .*
    1. Vnitřně se převede na následující regulár: ([^0-9]*)?(\d+)(.*)?
    2. Pro sériovou hodnotu 433595 se pak provede tohle mapování:
      1. Na první skupinu ([^0-9]*)? pro prefix se nenamapuje nic, protože jsou za začátku jen čísla.
      2. Na druhou skupinu (\d+) pro samotnou hodnotu se namapují číslice 433595.
      3. Na třetí skupinu (.*)? pro suffix se už nenamapuje zase nic, protože tam už nic není.
    3.  Pro sériovou hodnotu AA1234/45 se to pak namapuje takto:
      1. Na první skupinu ([^0-9]*)? pro prefix se namapuje AA.
      2. Na druhou skupinu (\d+) pro samotnou hodnotu se namapují číslice 1234.
      3. Na třetí skupinu (.*)? pro suffix se namapuje ten zbytek, tzn. /45.

         

  2. Mapování kombinace regulární předpony .*, masky $ a regulární koncovky .*
    1. Vnitřně se převede na následující regulár: (.*)?(\d+)(.*)?
    2. Pro sériovou hodnotu 433595 se pak provede tohle mapování:
      1. Na první skupinu (.*)? pro prefix se pokusí namapovat co nejvíc znaků je možné, aby přesto byly splněny podmínky dalších skupin → namapuje 43359.
      2. Na druhou skupinu (\d+) pro samotnou hodnotu se namapuje pouze 5.
      3. Na třetí skupinu (.*)? pro suffix se už nenamapuje zase nic, protože tam už nic není.

Generování hodnot do sérií