11.08.2014, 18:55 | #1 |
Участник
|
Периодическая переоценка в AX2012 - грубая ошибка или глубоко зарытый смысл?
Коллеги, АХ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; } Это что? Грубая ошибка или глубокий смысл? Объясните мне, пожалуйста Спасибо! |
|
07.11.2014, 13:07 | #2 |
Участник
|
подниму вопрос, но прикол еще далее. бывает Adjustment есть, но в это условие он не заходит, и потом ошибка что не Account number for transaction type Exchange rate gain does not exist.
X++: if (_useSettingsFromPreviousAdjustment)
{
ledgerDimensionMerged = _previousAdjustmentLedgerDimension;
} Если возможность у кого получить класс CustVendExchAdjPostingEngine с последней версии R2-R3 |
|
07.11.2014, 13:43 | #3 |
Участник
|
а, ну это просто в неправильном месте инициализация параметров. На фоне всего остального - так, невинная шутка...
|
|
07.11.2014, 15:16 | #4 |
Участник
|
|
|
07.11.2014, 15:38 | #5 |
Участник
|
вынесли инициализацию выше, насколько я помню. Надо посмотреть куда конкретно?
|
|
|
За это сообщение автора поблагодарили: axotnik88 (1). |
07.11.2014, 16:16 | #6 |
Участник
|
|
|
07.11.2014, 17:52 | #7 |
Участник
|
Ну там парой слов не опишешь, но в общем, сделали новые методы для определения предыдущего значения LedgerDimension для валюты учета и валюты отчетности, вызов их вставили прямо в init
|
|
|
|