Tabulka nemocenských dávek (DNP)

Do tabulky se ukládají informace o jednotlivých nemocenských dávkách zaměstnanců tak, jak byly v tom kterém měsíci vypláceny. Vzhledem k uchovávanému číslu dokladu je potřeba, aby se plnění tabulky spouštělo jednou měsíčně po zpracování mezd. O naplnění správnými údaji se musí postarat specializované makro. V makrojazyku se ke větě, která je nahrána v paměti přistupuje pomocí klíčového slova DNP.

Stavba věty:

ČísNázev položkyTyp položkySloupecMakroIdx
1 Ident Longint IDENT dbIdent *
2 Attr Word XATTR dbAttr  
3 Typ dávky Longint XTYPE dnpTyp
4 Typ řádky Longint XLTYPE dnpLTyp
5 Období Longint XPERIOD dnpObdobi *
6 Ident zaměstnance Longint XMAN_ID dnpPrac
7 Číslo dokladu String[10] XDOKLAD dnpDoklad
8 Datum začátku PPM Date XDAT_PPMOD dnpDatPPMOd
9 Datum ukončení PPM Date XDAT_PPMDO dnpDatPPMDo
10 Popis dávky (nemoc,úraz,nemoc?,...) String[10] XPOPIS dnpPopis
11 Rozdíl mezi výpočtem a skutečností Longint XROZDIL dnpRozdil
12 Datum výplaty Date XDAT_VYPL dnpDatVypl
13 Datum začátku dávky Date XDAT_START dnpDatStart
14 Datum konce dávky Date XDAT_KONEC dnpDatKonec
15 Celkový počet dní Real XDNI dnpDni
16 Počet dní (nižší sazba) Real XDNI_NI dnpDniNi
17 Počet dní (vyšší sazba) Real XDNI_VY dnpDniVy
18 Celková částka Real XSUM dnpSum
19 Částka (nižší sazba) Real XSUM_NI dnpSumNi
20 Částka (vyšší sazba) Real XSUM_VY dnpSumVy
21 Vyměřovací základ Real XVZ dnpVZ
22 Redukovaný vyměřovací základ Real XRVZ dnpRVZ
23 Počet dní (vyšší sazba) 2 Real XDNI_VY2 dnpDniVy2
24 Částka (vyšší sazba) 2 Real XSUM_VY2 dnpSumVy2
25 Redukovaný vyměřovací základ 2 Real XRVZ2 dnpRVZ2
26 Počet dní (vyšší sazba) 3 Real XDNI_VY3 dnpDniVy3
27 Částka (vyšší sazba) 3 Real XSUM_VY3 dnpSumVy3
28 Datum začátku dávky - skutečný Date XDAT_START_SKUT dnpDatStartSk
29 Počet pracovních dní karenční doby Real XPD_3DNY dnpPD3Dny  
30 Počet pracovních dní po karenční době Real XPD_DNY dnpPDDny  
31 Počet pracovních hodin karenční doby Real XPD_3HOD dnpPD3Hod  
32 Počet pracovních hodin po karenční době Real XPD_HOD dnpPDHod  
33 Průměr pro výpočet náhrady v nemoci Real XPD_PUMER dnpPDPrumer  
34 Náhrada v nemoci do limitu v Kč Longint XPD_DOLIMIT dnpPDDoLimit  
35 Náhrada v nemoci nad limit v Kč Longint XPD_NADLIMIT dnpPDNadLimit  
36 Redukovaný vyměřovací základ pro výpočet náhrady v nemoci (vyplácí firma) Real XPD_RVZ dnpPDRVZ  
37 Číslo eNeschopenky - číslo rozhodnutí String[18] XCISLO_ROZH dnpCisloRozh  
38 Pracovní dny služebního příjmu v nemoci Real XPD_SLUZPRIJNEM dnpPDSlPrNem  

Použité indexy

  1. dbIdent
  2. dnpObdobi
  3. dnpDatStart (pomocí tohoto indexu nelze hledat funkcí _FindRec)

Následující informace jsou dány implementací. Zde je popsána implementace fy FLUX.

Typ dávky

Používá se pro specifikaci typu dávky:

Typ řádky

Podle tohoto sloupce se řídí tiskový předpis:

Období

Období dávky v binárním tvaru (LongInt): RRRRMMMM.

Příklad:

dim ActPeriod : Longint;
ActPeriod := _Shl(_SysYear,16) lor _ActMonth;
{ Nastav filtr pro období, zaměstnance a typ dávky Placená / Neplacená }
StepIdx(dbtDNP, dnpObdobi);
{#IFDEF WINDOWS}
_SetFilter(dbtDNP, _MakeFilter(dbtDNP, dnpObdobi, filterEqual, ActPeriod) + " AND " +
                   _MakeFilter(dbtDNP, dnpPrac, filterEqual, O[dbIdent]) + " AND " +
                   _MakeFilter(dbtDNP, dnpTyp, filterEqual, Type));
if _StartDB(dbtDNP) then
{#ELSEDEF}
  if _FindRec(dbtDNP, dnpObdobi, _LiToKey(ActPeriod) +
                                 _LiToKey(O[dbIdent]) +
                                 _LiToKey(Type)) then
{#ENDDEF} 
    repeat
      . . .
{#IFDEF WINDOWS}
    until (_StepRec(dbtDNP, 1) = false);
{#ELSEDEF}
    until (_StepRec(dbtDNP, 1) = false) or
          (DNP[dnpObdobi] <> ActPeriod) or
          (DNP[dnpPrac] <> O[dbIdent])  or
          (DNP[dnpTyp] <> Type); 
  endif
{#ENDDEF} 
endif