Witam,
Mam problem z odniesieniem się do informacji zawartych w elemencie kadrowym zgrupowanym Umowa Zlecenia z poziomu rozliczenia.
Potrzebuję w jednym z atrybutów rozliczenia policzyć wartość diety korzystając z informacji zawartych w umowie zlecenia powiązanej z rozliczeniem.
na razie robie to tak:
Kod:
int attrDietaDzien
int attrKwota
int attrSHot
int attrDiety
int iAktualnyWiersz
HRMgr mgr
HRComponent comp
HRValue hval
string sDataOdUm
string sDataDoUm
float flDietaDzien
float fLDniUm
float fWynik = 0
date datod
date datdo
date dataUmOd
date dataUmDo
date dataBuf
date dataBuf2
GetCalcStatePeriod(datod,datdo)
if datod.Valid() then
attrDietaDzien = this.GetAttrIndexById(GetParamId(1))
if attrDietaDzien then
flDietaDzien = this.GetValueAsFloat(0,attrDietaDzien)
endif
if flDietaDzien > 0 then
iAktualnyWiersz = this.getcurrvalueindex()
this.GetValue(hval,(iAktualnyWiersz-1),14)//this.GetValue(hval,2,14) //Data Zakończenia dla wiersza z UMOWĄ
sDataDoUm = hval.strvalue
this.GetValue(hval,(iAktualnyWiersz-1),13)//this.GetValue(hval,2,13)
sDataOdUm = hval.strvalue
if sDataDoUm == "" then
MessageBox "Nie wprowadzono daty zakończenia umowy.\nWyliczenia mogą być błędne.\nPrzyjmuję datę końca miesiąca"
dataBuf.FromStr(sDataOdUm)
dataBuf.SetLastDayofMonth()
sDataDoUm = dataBuf.ToStr()
endif
dataUmOd.FromStr(sDataOdUm)
dataUmDo.FromStr(sDataDoUm)
fLDniUm = dataUmOd.DaysUntil(dataUmDo) //Liczba dni przez które trwała umowa
fWynik = fLDniUm*flDietaDzien
endif
endif
this.SetValueAsFloat(ZaokrPrecyzja(fWynik))
za pomocą
Kod:
iAktualnyWiersz = this.getcurrvalueindex()
pobieram numer wiersza z rozliczeniem i odejmując 1 ląduję w elemencie umowa zlecenia.
Sposób puki co działa bez problemu ale zacznie być zawodny gdy do jednej umowy pojawi się kilka rozliczeń. Potrzebuję wyciągnąć z odpowiedniej umowy zlecenia datę jej rozpoczęcia i zakończenia (w sensie atrybutów) i za pomocą tych informacji policzyć liczbę dni za któe przysługuje w atrybucie rozliczenia.
z góry dziękuję za pomoc