16.06.2017, 05:29 | #1 |
Участник
|
TransactionReversal_Asset - то ли фича, то ли баг
Наткнулся на, на мой взгляд, явный баг стандарнтого кода в Ax2012R3
(возможно это уже пропатчено было где-то) (C)TransactionReversal_Asset.canReverse_AnyTransType (и в куче других похожих методов этого класса аналогичная ситуация), строка 77 X++: AssetTrans assetTransAll; TransactionReversalTrans reversalTrans; select RecId, AssetId, BookId, TransType from assetTransAll where assetTransAll.AssetId == _assetTransMain.AssetId && assetTransAll.BookId == _assetTransMain.BookId && assetTransAll.RecId != _assetRecId && assetTransAll.TransDate >= assetTransDateDerogatoryTrans && ((assetTransAll.TransType == AssetTransType::Depreciation) || (assetTransAll.TransType == AssetTransType::BonusDepreciation) || (assetTransAll.TransType == AssetTransType::ExtraordinaryDepreciation)) notexists join reversalTrans where reversalTrans.RefRecId == assetTransAll.RecId && (reversalTrans.Reversed == true); получаем ситуацию, когда для AssetTrans реверса не существует, но есть реверс для записи другой таблицы с тем же RecId - и предупреждение не срабатывает, т.к. считае что у AssetTrans есть реверс. Функционал такой: на форме Asset Trans (не русской) (Fixed Assets - Common - Fixed Assets - Fixed Assets, Books / Value models - Transactions) при выборе транзакции и нажатии Reverse transaction срабатывает предупреждение "Depreciation exist for XXXX, YYYY for this transaction date or later. The transaction that you selected might have affected the calculated depreciation. If you proceed, depreciation is not recalculated." если есть более поздняя не реверсированная AssetTrans. Соответственно, в нашем случае - проверка не срабатывала, т.к. считала более поздние проводки реверсированные. |
|
16.06.2017, 08:12 | #2 |
Участник
|
В D365 пофиксено
добавили строчку - && reversalTrans.RefTableId == assetTransAll.TableId |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
Теги |
assettrans, transaction reverse, ax2012r3 |
|
|