( 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