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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.09.2012, 18:46   #1  
avf is offline
avf
Участник
 
31 / 24 (1) +++
Регистрация: 28.06.2007
Bug: ОСВ DAX 2009 RU8
DAX 2009 RU8:
Ошибка на glp слое, из-за которой могут неправильно рассчитываться поля "Сальдо на конец Дт" и "Сальдо на конец Кт" при построении ОСВ с детализацией сальдо "Развернутое".
Для исправления необходимо в методе AOT\Classes\RLedgerSheetServer_TurnoverCustVend\updateAccounts заменить следующий код
X++:
        turnoverSettleDebit  = this.settledTransAmount(custVendTrans, fromDate, toDate);
        if (this.isCredit(custVendTrans.AmountMST, custVendTrans))
        {
            turnoverSettleCredit = - turnoverSettleDebit;
            turnoverSettleDebit  = 0;
        }

        settledTransAmount = this.settledTransAmount(custVendTrans, dateNull(), toDate);
        if (settledTransAmount && turnoverSettleDebit)
на
X++:
        turnoverSettleDebit  = this.settledTransAmount(custVendTrans, fromDate, toDate);
        if (this.isCredit(custVendTrans.AmountMST, custVendTrans))
        {
            turnoverSettleCredit = - turnoverSettleDebit;
            turnoverSettleDebit  = 0;
        }

        settledTransAmount = this.settledTransAmount(custVendTrans, dateNull(), toDate);
//        if (settledTransAmount && turnoverSettleDebit)
        if (settledTransAmount && (turnoverSettleDebit || turnoverSettleCredit)) // BF 
        {
Ошибка в том, что для проводок по кредиту сумма сопоставления не будет учтена в сальдо на конец периода.
За это сообщение автора поблагодарили: twilight (2), gl00mie (5).
Старый 27.09.2012, 16:28   #2  
avf is offline
avf
Участник
 
31 / 24 (1) +++
Регистрация: 28.06.2007
проблема оказалась шире - для исправления glp-бага пришлось доработать этот же метод следующим образом:
X++:
        settledTransAmount = this.settledTransAmount(custVendTrans, dateNull(), toDate);
// BUS-Modification on 06 Сен 2012 at 18:20:18 by avf - Begin
// BF GLP слоя
//        if (settledTransAmount && turnoverSettleDebit)
//        if ((settledTransAmount && (turnoverSettleDebit || turnoverSettleCredit))) // попытка №1 исправления бага
// Сальдо на конец периода необходимо рассчитывать вне зависимости от того были или нет сопоставления
        if (true)
// BUS-Modification on 06 Сен 2012 at 18:20:18 by avf - End
        {
            settledTransAmount = balanceDebit + turnoverDebit - turnoverSettleDebit - balanceCredit - turnoverCredit + turnoverSettleCredit;

            if (settledTransAmount)
            {
// BUS-Modification on 27 Сен 2012 at 15:38:08 by avf - Begin
// BF GLP слоя
// Определять проводка по кредиту или по дебету необходимо на основании её суммы,
// а не на основании переменной settledTransAmount,
// значение которой может быть рассчитано выше на основании нулевых переменных balanceDebit и balanceCredit, но реально ненулевого входящего сальдо
//                if (this.isCredit(settledTransAmount, custVendTrans))
                if (this.isCredit(custVendTrans.AmountMST ? custVendTrans.AmountMST : custVendTrans.AmountCur, custVendTrans))
// BUS-Modification on 27 Сен 2012 at 15:38:08 by avf - End
                {
                    settledBalanceEndCt = -settledTransAmount;
                }
                else
                {
                    settledBalanceEndDt = settledTransAmount;
                }
            }
        }
ещё порадовал код в методе loopBalanceTrans класса RLedgerSheetEngine_TurnoverCustVend, в котором значение переменной transAmount рассчитывается как сумма сопоставлений до даты toDate, и следующей же строчкой её значение рассчитывается уже новым образом)
X++:
        transAmount = this.settledTransAmount(trans, dateNull(), toDate);
        transAmount = balanceDebit - turnoverSettleDebit - balanceCredit + turnoverSettleCredit;
Старый 28.09.2012, 15:29   #3  
avf is offline
avf
Участник
 
31 / 24 (1) +++
Регистрация: 28.06.2007
В итоге, поправил так:
X++:
// BF GLP слоя
//        if (settledTransAmount && turnoverSettleDebit)
// Сальдо на конец периода необходимо рассчитывать внезависимости от того были или нет сопоставления
        if (true)
        {
            /* BF GLP слоя
            settledTransAmount = balanceDebit + turnoverDebit - turnoverSettleDebit - balanceCredit - turnoverCredit + turnoverSettleCredit;
            if (this.isCredit(settledTransAmount, custVendTrans))
            {
                settledBalanceEndCt = -settledTransAmount;
            }
            else
            {
                settledBalanceEndDt = settledTransAmount;
            }
            */
            settledBalanceEndDt = balanceDebit + turnoverDebit - turnoverSettleDebit;
            settledBalanceEndCt = balanceCredit + turnoverCredit - turnoverSettleCredit;
        }
За это сообщение автора поблагодарили: BOAL (2).
Старый 01.10.2012, 17:43   #4  
avf is offline
avf
Участник
 
31 / 24 (1) +++
Регистрация: 28.06.2007
Кроме того, обнаружилась ещё ошибка: если после отображения данных в форме ОСВ с детализацией сальдо "Развёрнутое" или "Свёрнутое и развёрнутое" её не проматывать вниз (при скролинге заполняются данные в FormListControl), а сразу нажать кнопку "Печать", то начиная с определённой строки данные выводятся в печатную форму с пустыми значениями последней колонки. Для исправления данной ошибки необходимо в методе "reportFetchNext" класса RLedgerSheetEngine_TurnoverCustVend предусмотреть переменную и логику, аналогичную переменной "custVendDetailBalansLineCount" из метода "insertRow", значение которой изменяется в зависимости от параметра "Детализация сальдо" и изменяет число заполняемых колонок с данными в строках формы.
За это сообщение автора поблагодарили: twilight (2).
Теги
ax2009, bug, ru8, оборотно-сальдовая ведомость, ошибка

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
emeadaxsupport: List of fixes that improve performance of certain features in Dynamics AX 2009 Blog bot DAX Blogs 0 13.10.2009 19:06
palleagermark: Bug in EP 2009 when having the debug flag set to true Blog bot DAX Blogs 0 05.01.2009 11:06
msdynamicsax: DAX 2009 and MS SQL 2008 Blog bot DAX Blogs 0 09.08.2008 14:05
axStart: Microsoft Dynamics AX 2009 Hot Topics Web Seminar Series Blog bot DAX Blogs 0 06.08.2008 12:05
msdynamicsax: Enterprise Portal development in DAX 2009 Blog bot DAX Blogs 0 18.04.2008 07:06

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

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

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