05.09.2011, 11:49 | #1 |
Участник
|
Ошибка налогового регистра по курсовым разницам
AX 2009 RU7
Некорректно формируются строки налогового регистра по курсовым разницам если в один период подает следующий набор операций: 1. Операция курсовой разницы 2. Сторно 1-й операции 3. Отдельная операция курсовой разницы с суммой равной 2-й В такой или аналогичной ситуации процедура свертки строк может подхватить операцию 2 и 3 и удалить их из регистра вместо 1 и 2. Class / RTax25RegCalc_ExchangeAdj / selectCustVendTrans X++: ... void collapseMap() { container con; int j; MapIterator it = new MapIterator(collapse); CustVendTrans transCorrect, transDirect; while (it.more()) { con = it.value(); // Optimization -->> // for (i = 1; i <= conlen(con); i++) if (conlen(con) > 1) for (i = 2; i <= conlen(con); i++) // Optimization <<-- { transCorrect = conpeek(con, i); if (transCorrect.Correct == NoYes::No || transCorrect.TransType == LedgerTransType::AdvanceAdjustment_RU) continue; // Optimization -->> // for (j = 1; j <= conlen(con); j++) for (j = i - 1; j >= 1; j--) // Optimization <<-- { // Optimization -->> // if (i == j) // continue; // Optimization <<-- transDirect = conpeek(con, j); // Optimization -->> // if (transCorrect.TransDate < transDirect.TransDate) // break; // Optimization <<-- if (transDirect.Correct == NoYes::No && // Fix -->> transDirect.AmountMST == -transCorrect.AmountMST && // Fix <<-- LedgerPeriod::find(transCorrect.TransDate).RecId == LedgerPeriod::find(transDirect.TransDate).RecId) { con = condel(con, j > i ? j : i, 1); con = condel(con, j > i ? i : j, 1); record = condel(record, confind(record, transCorrect), 1); record = condel(record, confind(record, transDirect), 1); i -= (j < i ? #FieldNum2 : 1); break; } } } it.next(); } } ; while select custVendTrans // Optimization -->> // order by TransDate asc order by TransDate asc, Correct asc // Optimization <<-- ... |
|