Quantcast
Channel: AXForum
Viewing all articles
Browse latest Browse all 14624

Периодическая переоценка в AX2012 - грубая ошибка или глубоко зарытый смысл?

$
0
0
Коллеги, АХ2012:
Представим себе ситуацию: Есть проводка по поставщику, открытая, по ней начислена нереализованная курсовая разница на 30.06.2014, метод учета курсовой разницы - стандарт.
Делаю повторную переоценку на 31.07.2014, система формирует ваучер по переоценке 31.07.2014, в котором сторнирует предыдущую переоценку и начислет новую.
И вот в сторно предыдущей переоценке я замечаю какой-то совершенно левый счет (совершенно не тот, по которому была проведена исходная переоценка, которую система и пытается сторнировать).
Начинаем выяснять почему и наталкиваемся на вот такой код в классе CustVendExchAdjPostingEngine:
X++:

if (lastReportingCurrencyAdjustmentEstimation != 0)
            {
                previousReportingCurrencyAdjustmentLedgerPostingType = this.getLedgerPostingType(
                    lastReportingCurrencyAdjustmentEstimation,
                    false);

                if (previousReportingCurrencyAdjustmentLedgerPostingType == LedgerPostingType::ExchRateGain)
                {
                    select firstOnly LedgerDimension from generalJournalAccountEntry
                        where generalJournalAccountEntry.createdTransactionId == previousCreatedTransactionId
                            && generalJournalAccountEntry.PostingType == LedgerPostingType::ExchRateGain
                            && generalJournalAccountEntry.ReportingCurrencyAmount < 0
                        exists join generalJournalEntry
                            where generalJournalEntry.RecId == generalJournalAccountEntry.GeneralJournalEntry
                                && generalJournalEntry.AccountingDate == lastExchAdjDate;
                }
                else
                {
                    select firstOnly LedgerDimension from generalJournalAccountEntry
                        where generalJournalAccountEntry.createdTransactionId == previousCreatedTransactionId
                            && generalJournalAccountEntry.PostingType == LedgerPostingType::ExchRateLoss
                            && generalJournalAccountEntry.ReportingCurrencyAmount > 0
                        exists join generalJournalEntry
                            where generalJournalEntry.RecId == generalJournalAccountEntry.GeneralJournalEntry
                                && generalJournalEntry.AccountingDate == lastExchAdjDate;
                }

                previousReportingCurrencyAdjustmentLedgerDimension = generalJournalAccountEntry.LedgerDimension;
            }

Т.е. система для определения LedgerDimension, с которым пойдет сторнировка предыдущей нереализованной КР берет первую попавшуюся проводку из всей предыдущей переоценки! Да там может быть какой угодно счет, потому что может встретиться другая валюта с другими настройками счета для курсовой разницы. Почему нет фильтрации по ваучеру предыдущей переоценки?
Это что? Грубая ошибка или глубокий смысл? Объясните мне, пожалуйста
Спасибо!

Viewing all articles
Browse latest Browse all 14624

Trending Articles