AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.06.2007, 14:32   #1  
Arahnid is offline
Arahnid
Участник
 
880 / 60 (4) ++++
Регистрация: 09.08.2005
Адрес: Moscow
Зарплата: расчет дней б/л
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 --;
            }
workStartDate - он не может определить. И он зацикливается.
А почему не может определить тоже ясно
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 заложена RPayHistory.StartDate < _startDate. И получается по существу поиск приказа дата начала приема меньше даты curDateLocal (а она и есть дата приема).
Ставлю RPayHistory.StartDate <= _startDate И все становится хорошо.

Последний раз редактировалось Arahnid; 04.06.2007 в 14:35.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Зарплата. Расчет доплаты за полмесяца??? nicko DAX: Функционал 18 28.05.2009 13:54
Зарплата: расчет среднего заработка для Отпусков Arahnid DAX: Функционал 3 06.12.2007 19:09
Неправильный расчет отпускных листов Artild DAX: Функционал 1 14.07.2003 11:02
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38
Кто нибудь писал расчет кол-ва дней для выплаты компенсации за отпуск ? Dmitryus DAX: Программирование 0 18.04.2003 10:05

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 22:20.