( HndlBatch : Longint;
ItemIdx : Integer;
Idx : Integer;
dim AlgType : Integer;
dim AlgValue : Integer;
dim DoSocPoj : Byte;
dim DoZdrPoj : Byte;
dim Castka : Real;
dim Castka_SP : Real;
dim Castka_ZP : Real;
dim RProc : Real;
dim PlatiOd : Date;
dim PlatiDo : Date;
dim TKStrId : Longint;
dim TKPrjId : Longint;
dim TKZdrId : Longint;
dim TKZakId : Longint;
dim Rezie : Byte;
dim RezieSP : Byte;
dim RezieZP : Byte;
dim Historie : Byte;
dim RucnePrid : Byte) : Byte
Vrací informace o jedné části mzdové položky, potřebné pro rozdělení mzdových nákladů v rámci zpracování dávky HndlBatch.
| HndlBatch | Číslo (handle) zpracovávané dávky.
Zpracování dávky startuje funkcí _CABatchBegin. |
| ItemIdx | Index zpracovávané mzdové položky. Získal se v cyklu pomocí funkce _CAGetItemAt. |
| Idx | Index části mzdové položky ItemIdx v dávce HndlBatch. Rozsah je: 0..počet zpracovávaných částí - 1.
Počet zpracovávaných položek vrací funkce _CABatchBegin. |
| AlgType | Typ požadovaného algoritmu, podle kterého má proběhnou výpočet části položky.
|
| AlgValue | Hodnota upřesňující typ algoritmu. |
| DoSocPoj | Počítej sociální pojištění. |
| DoZdrPoj | Počítej zdravotní pojištění. |
| Castka | Vypočítaná částka z předchozího výpočtu, jestliže při startu dávky nebylo zvoleno 'Clear=true'. |
| Castka_SP | Vypočítaná částka sociálního pojištění z předchozího výpočtu, jestliže při startu dávky nebylo zvoleno 'Clear=true'. |
| Castka_ZP | Vypočítaná částka zdravotního pojištění z předchozího výpočtu, jestliže při startu dávky nebylo zvoleno 'Clear=true'. |
| RProc | Procento použité pro vypočtení parametru Castka z výchozí 100% hodnoty položky. Je to pouze informativní hodnota. |
| PlatiOd, PlatiDo | Datumy, které stanovují interval kdy daná část mzdy platí. Má význam pouze pro typ algoritmu caAlgTyp_Proc.
Jestliže PlatiOd=_Date(0,0,0), platí od nekonečna, jestliže PlatiDo=_Date(0,0,0), platí do nekonečna. |
| TKStrId | Ident třídicího kritéria režie - středisko. Může být nula. |
| TKPrjId | Ident třídicího kritéria režie - projekt. Může být nula. |
| TKZdrId | Ident třídicího kritéria režie - zdroj. Může být nula. |
| TKZakId | Ident třídicího kritéria režie - zakázka. Může být nula. |
| Rezie | Část mzdy patřící do režie.
Tyto věty vznikají přidáním funkcí _CAAddPartItem a zanikají automaticky, jestliže jsou nulové. |
| RezieSP | Část mzdy patřící do režie položky 'Pojistné sociální - organizace'.
Tyto věty vznikají automaticky při ukončování dávky podle informací nastavených funkcí _CASetItemInfo. Vyplňují pouze parametr Castka_SP podle algoritmu: Castka_SP = M[ixmSocPojFirm] - součet všech parametrů Castka_SP na všech částí mzdy Věta nevznikne (nebo zanikne), jestliže je nulová. |
| RezieZP | Část mzdy patřící do režie položky 'Pojistné zdravotní - organizace'.
Tyto věty vznikají automaticky při ukončování dávky podle informací nastavených funkcí _CASetItemInfo. Vyplňují pouze parametr Castka_ZP podle algoritmu: Castka_ZP = M[ixmZdrPojFirm] - součet všech parametrů Castka_ZP na všech částí mzdy Věta nevznikne (nebo zanikne), jestliže je nulová. |
| Historie | Věta je přidána jako změna mezd z minulosti. |
| RucnePrid | Věta byla ručně přidána. |
Jestliže dávka HndlBatch neexistuje nebo neexistuje položka ItemIdx, nebo je index Idx mimo rozsah, vrací funkce false.
Podívejte se na: Rozdělení nákladů
Příklad:
procedure RozdeleniNakladuJedneMzdy
dim hBatch : Longint;
dim CntItems : Integer;
dim RVZSP : Real;
dim RVZZP : Real;
dim Err : Byte;
Err := false;
RVZSP := M[ixmSocVymZakl] / M[ixmSocPojVZALL];
RVZZP := M[ixmZdrVymZakl] / M[ixmZdrPojVZALL];
{ Spustí proces rozdělení }
hBatch := _CABatchBegin(O[dbIdent], _SysMonth, _ActMonth, _SysYear, false, CntItems);
_CASetItemInfo(hBatch, RVZSP, RVZZP, M[ixmSocPojFirm], M[ixmZdrPojFirm], ixmSocPojFirm, ixmZdrPojFirm,
O[ixNaklStr], O[ixProjekt], O[ixZdroj], O[ixZakazka]);
{ Projdeme jednotlivé položky, kterých se rozdělení týká }
for BatchIdxPol := 0 to CntItems-1 do
if(_CAGetItemAt(hBatch, BatchIdxPol, PolIdx, CntParts))then
Err := ZpracujPolozku(hBatch, PolIdx, CntParts, RVZSP, RVZZP);
exitif(Err)then endexit
endif
end
if(CntItems > 0 and Err = false)then
_CABatchCommit(hBatch);
else
_CABatchRollback(hBatch);
endif
endproc
function ZpracujPolozku( hBatch : Longint;
PolIdx : Integer;
Pocet : Integer;
RVZSP : Real;
RVZZP : Real)
dim Idx : Integer;
dim AlgType : Integer;
dim AlgValue : Integer;
dim DoSocPoj : Byte;
dim DoZdrPoj : Byte;
dim Castka : Real;
dim Castka_SP : Real;
dim Castka_ZP : Real;
dim StrId : Longint;
dim PrjId : Longint;
dim ZdrId : Longint;
dim ZakId : Longint;
dim Historie : Longint;
dim RucnePrid : Longint;
dim OrigZaklad : Longint;
dim Zaklad : Longint;
dim RProc : Real;
dim Rezie : Byte;
dim RezieSP : Byte;
dim RezieZP : Byte;
dim PlatiOd : Date;
dim PlatiDo : Date;
dim Err : Byte;
Err := false;
OrigZaklad := M[PolIdx];
Zaklad := OrigZaklad;
for Idx := 0 to Pocet-1 do
if(_CAGetPartItemAt(hBatch, PolIdx, Idx, AlgType, AlgValue, DoSocPoj, DoZdrPoj, Castka, Castka_SP, Castka_ZP, RProc,
PlatiOd, PlatiDo, StrId, PrjId, ZdrId, ZakId, Rezie, RezieSP, RezieZP, Historie, RucnePrid))then
{ Výpočet }
...
_CASetPartItemAt(hBatch, PolIdx, Idx, Castka, Castka_SP, Castka_ZP, RProc);
endif
end
return Err;
endfunc