Коллеги, АХ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, с которым пойдет сторнировка предыдущей нереализованной КР берет первую попавшуюся проводку из всей предыдущей переоценки! Да там может быть какой угодно счет, потому что может встретиться другая валюта с другими настройками счета для курсовой разницы. Почему нет фильтрации по ваучеру предыдущей переоценки?
Это что? Грубая ошибка или глубокий смысл? Объясните мне, пожалуйста
Спасибо!