Показать сообщение отдельно
Старый 24.10.2012, 12:07   #1  
Fornit is offline
Fornit
Участник
 
10 / 16 (0) ++
Регистрация: 18.03.2008
Баг в корректировке пошлины по разделу ГТД. DAX 2009
Наткнулся на ошибку в алгоритме распределения таможенной пошлины по строкам раздела в функции "Корректировать пошлину по разделу".

\Classes\CustomJournalCalc_RU\correctDutyPartition

Код:
remainDutyAmount -= customJournalTrans.InvoiceDuty;
if (remainDutyAmount <= Currency::find(customCurrencyCode).RoundOffAmount)
{
    customJournalTrans.InvoiceDuty += remainDutyAmount;

}

Если строк в разделе много, то в декрементируемой переменной remainDutyAmount может остаться значение, превышающее настройку округления для валюты. Соответственно, этот остаток не будет распределен по строкам и попросту потеряется...

Вместо этого блока после цикла по строкам вставил такой кусок:

Код:
if (remainDutyAmount != 0)
{
    select firstonly forupdate customJournalTrans
        where customJournalTrans.CustomJournalId == _customJournalTrans.CustomJournalId &&
              customJournalTrans.CustomPartition == _customJournalTrans.CustomPartition;

    customJournalTrans.InvoiceDuty += remainDutyAmount;
    customJournalTrans.update();
}
DAX 2009 5.0.1500.6491