24.10.2012, 12:07 | #1 |
Участник
|
Баг в корректировке пошлины по разделу ГТД. 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(); } |
|
|
|