Hlavní databáze

Stavba HLAVNÍ osobní tabulky (OSOBNI, O[xx])

ČísNázev položkyTyp položkySloupecIdentifikátorIdx
1 Ident Longint IDENT dbIdent *
2 Attr Longint O0002 dbAttr  
3 Osobní číslo String[15] O0003 oOsCis *
4 Celé jméno String[25] --- neexistuje --- oJmeno  
5 Středisko Longint O0005 oStr *
6 Jméno String[25] O0006 oJm *
7 Příjmení String[36] O0007 oPrijm *
8 Ref.dat.historie Longint REFDATE    
9 Odd.dat.historie Longint SEPDATE    

Sloupec číslo 4 v tabulce OSOBNI neexistuje a je zde pouze kvůli slučitelnosti s předchozími verzemi. Při čtení jména pomocí O[oJmeno], bude jméno složeno pomocí sloupců: O[oPrijm] + ' ' + O[oJm]. Při ukládání jména pomocí O[oJmeno], bude vše do první mezery uloženo do položky O[oPrijm] a zbytek bude uložen do položky O[oJm].

Sloupec číslo 2 je atribut zaměstnance. Používá se pro komunikaci s externími systémy:

Sloupec číslo 5 je relace do tabulky středisek. Zápis O[oStr] vrací ident napojeného střediska a zápis O[oStr,1] vrací jméno napojeného střediska.

Stavba tabulek Osobních a Pamu (PAM, P[xx])

ČísNázev položkyTyp položkySloupecIdentifikátorIdx
1 Ident Longint IDENT dbIdent *
2 Ref.dat.historie Longint REFDATE    
3 Odd.dat.historie Longint SEPDATE    

Stavba mzdových tabulek (M[xx])

ČísNázev položkyTyp položkySloupecIdentifikátorIdx
1 Ident Longint IDENT dbIdent *
2 Attr Longint M0002 dbAttr  
3 Period Longint PERIOD    

Období PERIOD se skládá takto: RRRR MMMM.

Příklad:
131006465 = 7CF0001 hex = 1/1999

Popis hlavních tabulek:

Do hlavních tabulek řadíme tabulky oddělení osobního, pamu a mezd. Struktura vět těchto databází se skládá z položek, jejichž popis je uložen v tabulce XITEM. Bez této tabulky je celý db model nepoužitelný! Každá položka obsahuje mimo jiné Index , pomocí kterého je zpřístupněna pro práci v makrojazyku.

Příklad:Naplň položku osobního oddělení s indexem 100 hodnotou 5.
O[100] := 5;

Příklad:
Naplň položku oddělení pam s indexem 300 hodnotou "Praha".P[300] := "Praha";

Příklad:
Naplň položku mzdového oddělení s indexem 30 hodnotou 42.5.M[30] := 42.5;

POZOR!
Při plnění položek typu Číslo se provede automatické zaokrouhlení podle předdefinovaného formátu čísla. Není proto vhodné používat tyto položky jako proměnné pro načítání většího počtu čísel.

Pro identifikaci hlavních tabulek z makrojazyka lze používat konstant dbtO, dbtP a dbtM.

Příklad:

Krokování po hlavní tabulce podle jmen:
_StepIdx(dbtO, oJmeno)

Historie položek

Na hlavní tabulku Osobní a Pamu je přímo napojena databáze historická (tabulka HST ). Jestliže má položka tu vlastnost, že je historická, nelze ji zadat jednoduše, ale je potřeba zadat ji s datumem platnosti a s datumem zadání. Tato položka pak bude uložena do historické databáze a její použití bude řízeno skutečným měsícema systémovým rokem.

Historické referenční datum (REFDATE)

Historické referenční datum se používá pro zrychlení chodu programu. Předpokládejme, že skutečný měsíc a systémový rok se během zpracování mezd nebude často měnit. Potom je však zbytečné při každém zavedení věty hlavní databáze do paměti, historické položky "občerstvovat" z databáze historické. Toto stačí provést pouze jednou a datum se kterým je věta v hlavní databázi uložena uložit jako historické referenční datum. Při zavádění vět hlavní databáze do paměti se pak pouze kontroluje, zda se toto datum shoduje se skutečným měsícem a systémovým rokem. Změna skutečného měsíce a systémového roku se pomocí makrojazykavykoná procedurami SetSysYeara SetActMonth. Po vykonání těchto procedur se provede aktualizace historických položek hlavních databází v paměti. Naplnění historické položky z makrojazyka je nutno provést pomocí procedury HstSetItem. Analýzu vývoje určité položky lze provést funkcemi _HstFirst, _HstLast, _HstNexta _HstPrev.

Historické oddělovací datum

Do historie položek se ukládá datum od kdy zadaná hodnota platí, datum kdy byla zadána a vlastní hodnotu. Při ruční změně historické položky se datum zadání automaticky přidělí jako měsíc po posledním zpracování mezd.

Příklad:
Zadání historické položky v čase. Zvolíme položku P[10].

ZadánoPlatí odHodnotaPoznámka
1/1/2000 1/1/2000 10  
1/4/2000 1/1/2000 40 historická oprava z měsíce 4
1/2/2000 1/2/2000 20  
1/3/2000 1/3/2000 30  

Přepne-li se aktuální měsíc SetActMonthna měsíc Leden(1), bude vidět hodnota 40, protože byla zadána jako oprava v měsíci Duben(4). Aby byl umožněn i pohled do položek původního Ledna(1), existuje procedura HstSetSep, která nastavuje oddělovací datum, které filtruje datumy zadání historických položek. Použijete-li u našeho příkladu HstSetSep(1, _SysYear), bude po přepnutí do měsíce Ledna(1) vidět v položce hodnota 10.

Historie systémová

Mzdová databáze

Mzdová databáze se liší od ostatních tím, že jeden zaměstnanec zde může mít v podstatě neomezený počet vět. Spojení těchto vět z ostatními databázemi se uskutečňuje pomocí Identu věty (je popsáno níže). Každá mzdová věta obsahuje pole Period , který obsahuje měsíc a rok se kterými byla uložena. Měsíc se nazývá systémový a v zásadě má hodnoty 1..12. Hodnoty tohoto měsíce však mohou být libovolné a tím je v podstatě umožněn princip neomezených oprav do minulosti. Oprava do minulosti musí mít dopad na všechny následující měsíce a tyto opravy je nutno evidovat. Proto každá takováto oprava zakládá nové, paralelní věty, která jsou použity při výpočtu. Konkrétní mechanizmus zpětných přepočtů si však musí řešit příslušný makromodel sám. K práci se mzdovými větami v makrojazyku slouží mzdové makrofunkce.

Standardní položky hlavních databází

Věta hlavních databází obsahuje několik základních položek, které nejsou závislé na uživateli.

Popis Konstanta Typ Oddělení Popis
Ident věty dbIdent LongInt Osobní,Pam,Mzdy Jedinečné číslo věty, přidělené při založení věty. Všechny věty jednoho zaměstnance mají ve všech tabulkách toto číslo stejné

Přístup: O[dbIdent] { nelze do ní zapisovat }
Atribut věty dbAttr LongInt Mzdy Atribut mzdové věty.
  • mattrBudeZamceno ($00000002)
  • mattrDochZprac ($10000000)
  • mattrDochPredanoDoMezd ($20000000)
  • mattrZamceno ($40000000)
Některé bity nastavuje systém:

1) mattrExtNastavKal ($08000000)
Externí zařízení provedlo změnu, která vede k potřebě znovu nastavit mzdový kalendář. Nastavuje aplikační server SDPam a hlídají se položky:

  • P0060 Typ turnusu
  • P0061 Typ kalendáře
  • P0063 Zapadávka
  • O0350 Druh mimoevidenčního stavu
  • O0310 Datum nástupu
  • O0340 Datum výstupu

2) mattrExtPrepoctiMzdu ($04000000)
Externí zařízení provedlo změnu, která vede k potřebě přepočítat mzdu. Nastavuje aplikační server SDPam a hlídají se položky ve směru:

  • $00000001 smeRunAlg3

3) mattrExtPrepoctiDoMinula ($02000000)
Externí zařízení provedlo změnu, která vede k potřebě historicky přepočítat mzdu. Nastavuje aplikační server SDPam a hlídají se položky ve směru:

  • $00002000 smePripHstPrep

Přístup: M[dbAttr]

Po dokrokování na zaměstnance s těmito atributy v oddělení M bude automaticky spuštěno makro 'PamExtCh.Mac'.

4) mattrDochHodnPredDoMezd ($01000000)
Hodnoty z docházky (webové) jsou předány do mezd. Jestliže je tento atribut nastaven, nebude při opakovaném pokusu přenést hodnoty z docházky nic přeneseno!

Osobní číslo oOsCis String[15] Osobní Každý zaměstnanec má své osobní číslo. Systém při zadávání nového zaměstnance NEhlídá duplicitu těchto čísel. Proto je pro jednoznačnost lépe používat Ident věty. Tato položka je automaticky indexována a v režimu Zpracování lze podle ní vyhledávat a krokovat.

Přístup: O[oOsCis]
Celé jméno oJmeno String[60] Osobní Spojení sloupců oJm a oPrijm. V databázi neexistuje. Tato položka je automaticky indexována a v režimu Zpracování lze podle ní vyhledávat a krokovat.

Přístup: O[oJmeno]
Jméno oJm String[25] Osobní Jméno zaměstnance.

Přístup: O[oJm]
Příjmení oPrijm String[36] Osobní Příjmení zaměstnance.

Přístup: O[oPrijm]
Středisko oStr Longint Osobní Ident (relace) do tabulky středisek

Přístup: O[oStr]

Podívejte se na: Pomocné databáze