_CABuildWage

(    UvazekId       : Byte;
     SMonth         : Integer;
     SYear          : Integer;
     WSrc           : Wage;
 dim WNew           : Wage; [dim hMapNew : Longint]
     PolRNStr       : String[10];
     PolIdxSP       : Integer;
     PolIdxZP       : Integer;

     PolName         : String[10];
     RelDataId       : Longint;
    
     ...                   ) : Byte

Vyrobí mzdovou větu WNew podle položek třídicích kritérií PolName a případně identů použitých relací RelDataId. Počet párů třídicích kritérií není omezen, ale musí logicky odpovídat počtu použitých třídění např ve funkci _SortGenerate.

UvazekId Ident úvazku.
SMonth Měsíc pro nalezení rozdělení mzdy.
SYear Rok pro nalezení rozdělení mzdy.
WSrc Zdrojová mzdová věta. Jestliže nebude rozdělení mzdových nákladů pro dané období a úvazek nalezeno, kopíruje se její obsah do WNew. Musí být typ Wage, nelze používat M!
WNew Jestliže na místě tohoto parametru bude použit parametr typu Wage, pak platí, že:

 - Výsledek bude uložen do mzdové věty WNew vytvořené podle rozdělení mzdových nákladů a požadovaných třídicích kritérií. Jestliže nebude rozdělení mzdových nákladů pro dané období a úvazek nalezeno, kopíruje se do ní obsah z WSrc. Musí být typ Wage, nelze používat M!
hMapNew Jestliže na místě tohoto parametru bude použit parametr typu celé číslo, pak platí, že:

- Výsledek bude uložen do mapy typu MAP_LONG vytvořené podle rozdělení mzdových nákladů a požadovaných třídicích kritérií. Jestliže nebude rozdělení mzdových nákladů pro dané období a úvazek nalezeno, kopíruje se do ní obsah z WSrc.

Mapa bude ve funkci otevřena (použije _MapOpen) a musíte jí zavřít procedurou MapClose!

Ukládání do mapy je zde kvůli tomu, že rozpočítávání mzdových nákladů může u některých položek vést k necelým číslům, ale mzdová věta může tyto položky mít jako celočíselné!!sU
PolRNStr Název položky, ve které je uloženo režijní středisko pro rozpočítání nákladů (Př.: 'O0400').
PolIdxSP Index mzdové položky 'ixmSocPojFirm' - 'Pojistné sociální - organizace'
PolIdxZP Index mzdové položky 'ixmZdrPojFirm' - 'Pojistné zdravotní - organizace'
   Opakované sady třídicích kritérií:
PolName Jméno položky třídicího kritéria.
RelDataId Jestliže je položka třídicího kritéria relací, je zde ident relace pro danou sadu členění. Dodává stream funkce _SortGenerate.

Podívejte se na: Rozdělení nákladů

Příklad:

procedure Test_CABuildWage
    dim WSrc, WDst : Wage;
    _LoadWage(_SysMonth, _SysYear);
    WSrc := M;
    printup(_CABuildWage(O[dbIdent], _SysMonth, _SysYear, WSrc, WDst, "O0401", ixmSocPojFirm, ixmZdrPojFirm,
            "O0400", 107, "O0407", 7));
    trace(WDst[100],"  ",WDst[101],"  ");
endproc

Příklad - rekapitulace do CSV:

dim Mes : Word;
dim Rok : Word;

Mes := _ActMonth;
Rok := _SysYear;

call Test_Rekap;
exit

procedure Test_Rekap
    dim sError 		: String;
    dim dtRef 		: Date;
    dim dtSep	 	: Date;
    dim UvazekId	: Longint;
    dim Perioda		: Longint;
    dim	FDta		: File;
    dim	FRel		: File;
	
    dim TKPol1		: String[10];
    dim TKPol2		: String[10];
    dim TKPol3		: String[10];

    TKPol1	:= "O0400";
    TKPol2	:= "O0407";
    TKPol3	:= "";
	
    SRewrite(FDta,"",true);
    SRewrite(FRel,"",true);
    dtRef := _LastDate(Mes,Rok);
    dtSep := _LastDate(Mes,Rok);
	
    call Trideni;
    call ProjdiStream;
	
    SClose(FDta);
    SClose(FRel);
	
    return;

    procedure Trideni
        if(_SortGenerate(	1, dtRef, dtSep, _Str(Mes) + "|" + _Str(Rok), 0 { Rights }, "O0401",
            TKPol1, "", false,
            TKPol2, "", false,
            TKPol3, "", false,
            "#",
            FDta, FRel, sError) = true)
        then
        else
            _MsgBox(0, "Chyba třídění: " + sError, 0);
            Exit;
        endif
    endproc
	
    procedure ProjdiStream
        dim Idx             : Longint;
        dim sRec            : String;
        dim RelId1          : Longint;
        dim RelId2          : Longint;
        dim RelId3          : Longint;
        dim Data1			: String;
        dim Data2			: String;
        dim Data3			: String;
        dim WSrc			: Wage;
        dim WNew			: Wage;
        dim T 				: Text;
	
        TRewrite(T, "TestRN.CSV");
        TWriteLn(T, "Jmeno;TK1;TK2;TK3;M0101;M0102;M0273;M0274");
		
        if(_SFirst(FDta, Idx))then
            repeat
                UvazekId     := _SGet(FDta,	Idx + 000000);
                Perioda      := _SGet(FDta,	Idx + 100000);
                if(_SGetTyp(FDta,Idx + 200000) <> 0)then Data1  := _SGet(FDta, Idx + 200000); endif
                if(_SGetTyp(FDta,Idx + 300000) <> 0)then Data2  := _SGet(FDta, Idx + 300000); endif
                if(_SGetTyp(FDta,Idx + 400000) <> 0)then Data3  := _SGet(FDta, Idx + 400000); endif
                if(_SGetTyp(FRel,Idx + 000000) <> 0)then RelId1 := _SGet(FRel, Idx + 000000); endif
                if(_SGetTyp(FRel,Idx + 100000) <> 0)then RelId2 := _SGet(FRel, Idx + 100000); endif
                if(_SGetTyp(FRel,Idx + 200000) <> 0)then RelId3 := _SGet(FRel, Idx + 200000); endif
				
                if(_FindRecId(dbtO, UvazekId))then
                    WSrc := M;
                    if(_CABuildWage(UvazekId, Mes, Rok, WSrc, WNew, "O0401", ixmSocPojFirm, ixmZdrPojFirm,
                        TKPol1, RelId1, 
                        TKPol2, RelId2, 
                        TKPol3, RelId3))
                    then
                        TWriteLn(T, O[oJmeno],";",Data1,";",Data2,";",Data3,";",WNew[101],";",WNew[102],";",WNew[ixmSocPojFirm],";",WNew[ixmZdrPojFirm]);
                        Trace(O[oJmeno],"  ",UvazekId,"   ",RelId1,"   ",RelId2,"   ",RelId3,"  M0101=",WNew[101]);
                    endif					
                endif
            until _SNext(FDta, Idx) = false or Idx > 100000;
        endif
	    
        TClose(T);
    endproc
	
endproc