Vyšetření cizího mzdového kalendáře

Kalendářní makrofunkce obvykle pracují pouze nad mzdovým kalendářem mzdové věty, která je nahrána v paměti. V některých případech je však potřeba, aby bylo možno zjistit nebo nastavit parametry obecného mzdové kalendáře.

Lze to řešit pomocí nastavení identu mzdového kalendáře do dynamické globální proměnné: "#$_WCALID" před použitím kalendářní funkce. Proměnná "#$_WCALID" bude po volání kalendářní funkce smazána.

Ident mzdového kalendáře (tabulka WCAL) zjistíte pomocí funkce _SumWage. Mzdová věta a mzdový kalendář musí existovat!

Základní věta:

_Int(_SumWage(SWG_UZAM_OBE + SWG_VETA_ZAKL + SWG_ROZSAH_JEDNA + SWG_POL_JEDNA + SWG_ZAM_JEDEN, Mesic, Rok, IdxCalPol, ZamId));
Opravná nebo základní věta:
_Int(_SumWage(SWG_UZAM_OBE + SWG_VETA_OPR_ZAKL + SWG_ROZSAH_JEDNA + SWG_POL_JEDNA + SWG_ZAM_JEDEN, Mesic, Rok, IdxCalPol, ZamId));

Příklad:

dim WCalId : Longint;
WCalId := _Int(_SumWage(SWG_UZAM_OBE + SWG_VETA_OPR_ZAKL + SWG_ROZSAH_JEDNA + SWG_POL_JEDNA + SWG_ZAM_JEDEN, 3, 2014, 997, 12));

if(WCalId <> 0)then
    SetGVal("#$_WCALID", WCalId);
    GetLastStart(997, Class, Specf, FirstDay, SDurat, WorkSDurat, SpecEx, LastMin);
    Trace(WCalId, ", ",Class,", ",Specf,", ",FirstDay,", ",SDurat);

    SetGVal("#$_WCALID", WCalId);
    Trace(WCalId, ", _Duration= ", _Duration(ixKal, 0, 0, 1, $FF, clNemoc, spAll, 2, True));
endif