Наткнулся на ошибку в алгоритме распределения таможенной пошлины по строкам раздела в функции "Корректировать пошлину по разделу".
\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