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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.02.2010, 02:10   #1  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
674 / 512 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
Customer Aging Report / Отчет по срокам оплаты для клиента
продолжаем препарировать этот отчётик. обнаружились новые "открытия", которые хотелось бы обсудить с компетентными товарищами с точки зрения правильного учёта.

итак, при формировании отчёта с детализацией и без и сортировкой по дате документа получаем в случае нулевой даты документа разные данные по столбцам с просроченной задолженностью.

(см. рисунки во вложении)

происходит это из-за того (смотрим код метода calculateDetails класса CustBalancelistDocumentDate), что при детализации в методе queryRunOpenTransactions используется запрос CustTransCustTransOpen с сортировкой по дате транзакции, а без детализации - в методе queryRunOpenTransactionsSummary идёт создание запроса в коде, где уже группировка включается по полю даты документа.

X++:
    switch (_dateTransactionDuedate)
    {
        case DateTransactionDuedate::TransactionDate:
            groupByDataSourceNo = 1;
            groupByFieldId = fieldnum(CustTransOpen, TransDate);
            break;
        case DateTransactionDuedate::DueDate:
            groupByDataSourceNo = 1;
            groupByFieldId = fieldnum(CustTransOpen, DueDate);
            break;
        case DateTransactionDuedate::DocumentDate:
            groupByDataSourceNo = 2;
            groupByFieldId = fieldnum(CustTrans, DocumentDate);
            break;
        default:
            throw error(Error::wrongUseOfFunction(funcname()));
    }

    query = new Query();
    query.addDataSource(tablenum(CustTransOpen));

    query.dataSourceNo(1).addDataSource(tablenum(CustTrans));
    query.dataSourceNo(2).joinMode(JoinMode::InnerJoin);
    query.dataSourceNo(2).addLink(fieldnum(CustTransOpen, RefRecId), fieldnum(CustTrans, RecId));
и чуть ниже:

X++:
 query.dataSourceNo(1).orderMode(OrderMode::GroupBy);
    query.dataSourceNo(groupByDataSourceNo).addSortField(groupByFieldId);
    query.dataSourceNo(2).orderMode(OrderMode::GroupBy);
    query.dataSourceNo(2).addSortField(fieldnum(CustTrans, CurrencyCode));

    query.dataSourceNo(1).fields().addField(fieldnum(CustTransOpen, AmountMST), SelectionField::Sum);
    query.dataSourceNo(1).fields().addField(fieldnum(CustTransOpen, AmountCur), SelectionField::Sum);
    query.dataSourceNo(groupByDataSourceNo).fields().addField(groupByFieldId);
    query.dataSourceNo(2).fields().addField(fieldnum(CustTrans, CurrencyCode));

в следующем же сегменте кода того же метода calculateDetails мы видим, что анализ на "пустую" дату документа смысла не имеет, ибо все транзакции уже сгруппированы, и оба варианта нулевые.

X++:
queryRun = this.queryRunOpenTransactions(_custTable);
        while (queryRun.next())
        {
            custTrans = queryRun.get(tablenum(CustTrans));
            custTransOpen = queryRun.get(tablenum(CustTransOpen));
            this.addTrans(_custTable.AccountNum,
                          custTrans.Voucher,
                          custTrans.Invoice,
                          [U]custTrans.DocumentDate ? custTrans.DocumentDate : custTrans.TransDate,[/U]
                          this.isTransactionAPayment(custTrans),
                          '',
                          custTransOpen.AmountMST);
в этой связи вопрос к залу: а как должно выдавать эти данные, где дата документа нулевая (когда проводим фактуру, не указывая даты документа)? который из этих вариантов правильный? или есть третий путь?

спасибо за внимание.
__________________
Felix nihil admirari

Последний раз редактировалось wojzeh; 27.10.2019 в 19:35.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Что Report "EmplAdvance_RU" (Авансовый отчет) пишет в таблицу rCashTrans? Alexx7 DAX: Функционал 6 24.10.2009 19:56
Customer Aging Report / Отчет по срокам оплаты для клиента - неправильный баланс Qaz Qwerty DAX: Программирование 13 11.04.2009 05:37
Customer Aging Report (DAX 4.0) Qaz Qwerty DAX: Программирование 4 31.10.2008 22:49
Report:можно ли избавиться от "Отчет не содежит данных" Arahnid DAX: Программирование 4 29.05.2007 10:04
Говорят вышел SP2 для Axapta 3. Кто нибуть что знает на эту тему? soin DAX: Прочие вопросы 10 13.10.2003 10:43

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

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

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