_HPDiaHeader

(    Mesic            : Integer;
     Rok              : Integer;
 dim Jmeno            : String;
 dim Prijmeni         : String;
 dim CisloZam         : String;
 dim RodneCislo       : String;
 dim DatumNarozeni    : Date;
 dim MistoNarozeni    : String;
 dim PohlaviId        : Longint;
 dim Poznamka         : String;
 dim SeznamPP         : File;
 dim Strediska        : File) : Integer

Funkce zobrazí dialog zaměstnance:

Popis parametrů

Jestliže úvazek existuje, vyplňte dim parametry. Jestliže dojde ke změně, bude v těchto parametrech změna vrácena. Do globální proměnné "#_HPDiaHeader_UvazekId" lze uložit ident PP, který má být zaostřen. Ze stejné globální proměnné lze číst ident zaostřeného PP po ukončení dialogu.

Parametr Popis
Mesic/Rok Období. Pro toto období budou zobrazeny pracovní poměry v dialogu 'Osoba - zaměstnanec'.
Jmeno Jméno zaměstnance (25).
Prijmeni Příjmení zaměstnance (36).
CisloZam Číslo zaměstnance (15).
RodneCislo Rodné číslo (11).
DatumNarozeni Datum narození zaměstnance.
MistoNarozeni Místo narození zaměstnance (50).
PohlaviId Pohlaví - relace do tabulky množin (ident věty množiny).
Poznamka Obecná poznámka (250).
SeznamPP

Seznam PP ve formě proudu. Změny se vrací také v tomto formátu. U nového PP bude Ident PP záporný! U nově zadávaných PP bude osobní číslo generováno, jestliže to systém požaduje (viz _GetNewPersNumber).

  • 0001-1000: Mod PP, 0=původní, 1=nový, 2=upravený
  • 1001-2000: Ident PP
  • 2001-3000: Osobní číslo
  • 3001-4000: Datum nástupu
  • 4001-5000: Ident střediska
  • 5001-6000: Ident: Množina (typ pracovního poměru)
  • 6001-7000: Skupiny práv PP
Strediska
MaskaStredisek

Na tomto místě lze jako parametr použít pouze jednu z možností:

Strediska
Stream s identy středisek, ze kterých bude možno vybírat.

MaskaStredisek
Longint jako maska řídící zobrazenou množinu středisek podle jejich skupin. Příklad:

  • $00000001 Výplatní
  • $00000002 Nákladové
  • ...

Podívejte se na: Procedury a funkce - Zaměstnanec

Příklad:

procedure Test_HPDiaHeader_Uprava
    dim Rok             : Word;
    dim Mes             : Word;
    dim ZamId           : Longint;
    dim FUvazkyId       : File;
    dim SeznamPP        : File;
    dim IdxId, IdxDet   : Integer;
    dim PuvodniZamId    : Longint;
    dim UvazekId        : Longint;
	
    Rok := _SysYear;
    Mes := _ActMonth;
	
    HPGet(hpgZamId_z_UvazekId, O[dbIdent], ZamId);
	
    SRewrite(FUvazkyId, "", true);
    SRewrite(SeznamPP, "", true);
    { Získáme informace o všech PP }
    HPGet(hpgSeznamUvazku, ZamId, Mes, Rok, 0, FUvazkyId);
	
    IdxDet := 1;
    PuvodniZamId := O[dbIdent];
    StepIdx(dbtO, dbIdent);
    if(_SFirst(FUvazkyId, IdxId))then
        repeat
            UvazekId := _SGet(FUvazkyId, IdxId);
            if(_FindRecId(dbtO, UvazekId))then
                { Mod úvazku 0=původní,1=nový }
                SPut(SeznamPP, IdxDet + 0000,	0);
                { Ident úvazku }
                SPut(SeznamPP, IdxDet + 1000,	UvazekId);
                { Osobní číslo }
                SPut(SeznamPP, IdxDet + 2000,	O[oOsCis]);
                { Datum nástupu }
                SPut(SeznamPP, IdxDet + 3000,	O[310]);
                { Ident střediska }
                SPut(SeznamPP, IdxDet + 4000,	O[oStr]);
                { Ident: Množina (typ pracovního poměru) }
                SPut(SeznamPP, IdxDet + 5000,	O[299]);
                { Práva úvazku }
                SPut(SeznamPP, IdxDet + 6000,	O[dbAttr]);
            endif
            _Inc(IdxDet);
        until _SNext(FUvazkyId, IdxId)=false;
    endif
    { Najdeme původní PP }
    _FindRecId(dbtO, PuvodniZamId);

    dim sUid      : String[50];
    dim sGUID     : String[50];
    dim sJmeno    : String[50];
    dim sPrijm    : String[50];
    dim sCisZam   : String[50];
    dim sRC       : String[50];
    dim dDatNar   : Date;
    dim sMistoNar : String[50];
    dim nPohlId   : Longint;
    dim sPozn     : String[50];
    dim bStav     : Byte;

    dim nModPP    : Integer;
    dim sOsCislo  : String[50];
    dim dDatNast  : Date;
    dim nStredId  : Longint;
    dim nTypPP    : Longint;
    dim nSkupiny  : Longint;

    { Nahraj data zaměstnance }
    HPGet(hpgZamData, ZamId, sUid, sGUID, sJmeno, sPrijm, sCisZam, sRC, dDatNar, sMistoNar, nPohlId, sPozn, bStav);
    if(bStav)then
        { Zaměstnanec existuje - zaostříme PP }
        SetGVal("#_HPDiaHeader_UvazekId", O[dbIdent]);
        if(_HPDiaHeader(Mes, Rok, sJmeno, sPrijm, sCisZam, sRC, dDatNar, sMistoNar, nPohlId, sPozn,
            SeznamPP, mskVyplMisto) = cmOK)then
            { V dialogu zaměstnance stiskl uživatel [OK] }
            if(_HPAction(hpaUlozZam, ZamId, sJmeno, sPrijm, sCisZam, sRC, dDatNar, sMistoNar, nPohlId, sPozn))then
                { Základní data zaměstnance jsou v pořádku uložena, projdeme změny PP }
                IdxDet := 1;
                while(_SGetTyp(SeznamPP, IdxDet + 1000) <> 0)do
                    nModPP   := _SGet(SeznamPP, IdxDet + 0000);      { Mod úvazku 0=původní,1=nový,2=upravený }
                    UvazekId := _SGet(SeznamPP, IdxDet + 1000);
                    sOsCislo := _SGet(SeznamPP, IdxDet + 2000);
                    dDatNast := _SGet(SeznamPP, IdxDet + 3000);
                    nStredId := _SGet(SeznamPP, IdxDet + 4000);
                    nTypPP   := _SGet(SeznamPP, IdxDet + 5000);
                    nSkupiny := _SGet(SeznamPP, IdxDet + 6000);
                    if(nModPP = 1)then
                        { Nový PP }
                        
                    else
                        if(nModPP = 2)then
                            { Úprava PP }
                            
                        endif
                    endif
                    _Inc(IdxDet);
                endwhile
            endif
        endif
    endif
endproc { Test_HPDiaHeader_Uprava }
procedure Test_HPDiaHeader_Novy
    dim Rok             : Word;
    dim Mes             : Word;
    dim ZamId           : Longint;
    dim SeznamPP        : File;
    dim IdxId, IdxDet   : Integer;
    dim UvazekId        : Longint;
	
    Rok := _SysYear;
    Mes := _ActMonth;
	
    SRewrite(SeznamPP, "", true);

    dim sUid      : String[50];
    dim sGUID     : String[50];
    dim sJmeno    : String[50];
    dim sPrijm    : String[50];
    dim sCisZam   : String[50];
    dim sRC       : String[50];
    dim dDatNar   : Date;
    dim sMistoNar : String[50];
    dim nPohlId   : Longint;
    dim sPozn     : String[50];
    dim bStav     : Byte;

    dim nModPP    : Integer;
    dim sOsCislo  : String[50];
    dim dDatNast  : Date;
    dim nStredId  : Longint;
    dim nTypPP    : Longint;
    dim nSkupiny  : Longint;

    sUid      := _NewGuid;
    sGUID     := _NewSysGuid;
    sJmeno    := "";
    sPrijm    := "";
    sCisZam   := "";
    sRC       := "";
    dDatNar   := _Date(0,0,0);
    sMistoNar := "";
    nPohlId   := 0;
    sPozn     := "";

    SetGVal("#_HPDiaHeader_UvazekId", 0);
    if(_HPDiaHeader(Mes, Rok, sJmeno, sPrijm, sCisZam, sRC, dDatNar, sMistoNar, nPohlId, sPozn,
        SeznamPP, 1) = cmOK)then
        { V dialogu zaměstnance stiskl uživatel [OK] }
        if(_HPAction(hpaPridejZam, ZamId, sUid, sGUID, sJmeno, sPrijm, sCisZam, sRC, dDatNar, sMistoNar, nPohlId, sPozn, SeznamPP))then
            { Základní data zaměstnance jsou v pořádku uložena, projdeme změny PP }
            IdxDet := 1;
            while(_SGetTyp(SeznamPP, IdxDet + 1000) <> 0)do
                nModPP   := _SGet(SeznamPP, IdxDet + 0000);      { Mod úvazku 0=původní,1=nový,2=upravený }
                UvazekId := _SGet(SeznamPP, IdxDet + 1000);
                sOsCislo := _SGet(SeznamPP, IdxDet + 2000);
                dDatNast := _SGet(SeznamPP, IdxDet + 3000);
                nStredId := _SGet(SeznamPP, IdxDet + 4000);
                nTypPP   := _SGet(SeznamPP, IdxDet + 5000);
                nSkupiny := _SGet(SeznamPP, IdxDet + 6000);
                if(nModPP = 1)then
                    { Nový PP }
                    if(_FindRecId(dbtO, UvazekId))then
                        SetRights(nSkupiny);
                        O[oOsCis] := sOsCislo;
                        HstSetItem(dbtO, 310, dDatNast, _Date(1,Mes,Rok), _Date(1,Mes,Rok));
                        O[oStr]   := nStredId;
                        HstSetItem(dbtO, 299, nTypPP, _Date(1,Mes,Rok), _Date(1,Mes,Rok));
                    endif
                endif
                _Inc(IdxDet);
            endwhile
        endif
    endif
endproc { Test_HPDiaHeader_Novy }