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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.06.2013, 10:34   #1  
trud is offline
trud
Участник
Лучший по профессии 2017
 
1,039 / 1633 (57) ++++++++
Регистрация: 07.06.2003
Записей в блоге: 1
Округление при разноске в ГК в 2012
интересный метод
\Classes\SubledgerJournalizer\roundSubledgerJournalTmpDetail

X++:
    while select sum(TransactionCurrencyAmount), sum(AccountingCurrencyAmount), sum(ReportingCurrencyAmount)
        from subledgerJournalAccountEntryTmpDetail
        group by TransactionCurrencyCode,
                    ExchangeRate1, ExchangeRate2,
                    ReportingExchangeRate1, ReportingExchangeRate2,
                    ExchangeRateDate,
                    FiscalCalendarPeriod, Ledger, PostingLayer, SubledgerJournalEntryType //this subgrouping ensures we round each future SLJE separately
        where subledgerJournalAccountEntryTmpDetail.DebitCredit == DebitCredit::Debit
            && subledgerJournalAccountEntryTmpDetail.IsReversal == NoYes::No //reversal/relieving entries are backing out already rounded entries and should stay as they are
            // <GEEHU><GEECZ>
            && subledgerJournalAccountEntryTmpDetail.TransactionCurrencyAmount != 0
            && subledgerJournalAccountEntryTmpDetail.ExchangeRate1 != 0
            // </GEECZ></GEEHU>
    {
..Здесь берем общую сумму в валюте переводим ее в первичную валюту и смотрим совпадает ли она с суммой в первичной валюте отдельных проводок
...если не совпадает
X++:
        if (accountingCurrencyAmountToRound != 0 || reportingCurrencyAmountToRound != 0)
        {
            while select maxof(RecId) from roundingEntrySubledgerJournalAccountEntryTmpDetail
                    group by TransactionCurrencyCode,
                            ExchangeRate1,
                            ExchangeRate2,
                            ReportingExchangeRate1,
                            ReportingExchangeRate2,
                            ExchangeRateDate,
                            DebitCredit
                where roundingEntrySubledgerJournalAccountEntryTmpDetail.Ledger == subledgerJournalAccountEntryTmpDetail.Ledger
                    && roundingEntrySubledgerJournalAccountEntryTmpDetail.FiscalCalendarPeriod == subledgerJournalAccountEntryTmpDetail.FiscalCalendarPeriod
                    && roundingEntrySubledgerJournalAccountEntryTmpDetail.PostingLayer == subledgerJournalAccountEntryTmpDetail.PostingLayer
                    && roundingEntrySubledgerJournalAccountEntryTmpDetail.SubledgerJournalEntryType == subledgerJournalAccountEntryTmpDetail.SubledgerJournalEntryType
                    && roundingEntrySubledgerJournalAccountEntryTmpDetail.IsReversal == NoYes::No   //reversal/relieving entries should not be modified, don't pick them to apply difference to
                    // <GEEHU><GEECZ>
                    && roundingEntrySubledgerJournalAccountEntryTmpDetail.TransactionCurrencyAmount != 0
                    && roundingEntrySubledgerJournalAccountEntryTmpDetail.ExchangeRate1 != 0
                    // </GEECZ></GEEHU>
            {
                select firstonly forupdate updateEntrySubledgerJournalAccountEntryTmpDetail
                    where updateEntrySubledgerJournalAccountEntryTmpDetail.RecId == roundingEntrySubledgerJournalAccountEntryTmpDetail.RecId;
.. берем проводку с максимальным RecId и накидываем на нее разницу

Теперь вопрос - а не надо ли во втором запросе(который выбирает максимальный RecId) добавить условие
roundingEntrySubledgerJournalAccountEntryTmpDetail.TransactionCurrencyCode == subledgerJournalAccountEntryTmpDetail.TransactionCurrencyCode
??
Старый 06.06.2013, 11:03   #2  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Хотфикс KB2850454
Теги
ax2012, subledger journal, округление

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
amer-ax: It was a great day! Blog bot DAX Blogs 3 29.12.2012 01:02
DAX: Official Dynamics AX 2012 R2 Content (update) - Where is it, and how can you find out about updates? Blog bot DAX Blogs 0 03.12.2012 11:11
dynamicsaxtraining: Vendor returns Blog bot DAX Blogs 0 11.10.2012 00:11
dynamicsaxtraining: Purchase Blog bot DAX Blogs 0 11.03.2012 05:25
daxdilip: Whats New in Dynamics AX 2012 (A brief extract from the recently held Tech Conf.) Blog bot DAX Blogs 7 31.01.2011 12:35

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

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

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