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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.09.2011, 11:49   #1  
Alexius is offline
Alexius
Участник
Аватар для Alexius
 
461 / 248 (9) ++++++
Регистрация: 13.12.2001
Ошибка налогового регистра по курсовым разницам
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 <<--

...
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Счет-фактура по курсовым разницам Apollon33 DAX: Функционал 3 04.05.2008 15:27
Выгрузка данных налогового регистра через РФО kosmipt DAX: Функционал 0 26.07.2005 17:03
Проводки по курсовым разницам malex DAX: Прочие вопросы 6 01.07.2005 02:48
Вопрос по курсовым разницам в модуле Клиенты malex DAX: Функционал 1 19.05.2005 22:26
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38

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

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

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