04.06.2007, 14:32 | #1 |
Участник
|
Зарплата: расчет дней б/л
23101 обновление
Сотрудник принят в середине месяца 02/01/07. В классе RPayAverageEarnEngine_SickList есть метод calendarDaysGroup. В нем идет просчет дней для среднего заработка. Февраль - Апрель 2007 посчитался нормальный, а вот январь нет. Там зацикливание происходит в методе, потому что X++: curDateLocal = curDate; workStartDate = RPayHistory::findLastOperation(_emplId, RHRMJournalType::Receive, curDateLocal).StartDate; while (curDateLocal >= workStartDate) { nonAppearanceTime = hoursInDay(curDateLocal, true); if (nonAppearanceTime) { return UnknownNoYes::No; } else { appearanceTime = hoursInDay(curDateLocal, false); if (appearanceTime) { return UnknownNoYes::Yes; } } curDateLocal --; } А почему не может определить тоже ясно X++: static RPayHistory findLastOperation(EmplId _emplId, RHRMJournalType _operationType, StartDate _startDate = maxDate()) { RPayHistory RPayHistory; ; if (_emplId) { select firstonly RPayHistory order StartDate desc, TransTime desc where RPayHistory.number == _emplId && RPayHistory.operationType == _operationType && RPayHistory.StartDate < _startDate; } return RPayHistory; } Ставлю RPayHistory.StartDate <= _startDate И все становится хорошо. Последний раз редактировалось Arahnid; 04.06.2007 в 14:35. |
|