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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.11.2020, 15:32   #2  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
376 / 562 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
Если есть возможность загляните в AX 2012 R3, может быть там не только эти баги исправлены, вот как выглядят данные выборки в InventCostItemDim

X++:
countryRegion_RU = SysCountryRegionCode::isLegalEntityInCountryRegion([#isoRU]);
X++:
    // load
    while select forupdate inventTrans
        index hint OpenItemIdx
        // <GEERU>
        where (countryRegion_RU
           && ((inventTransCurrency                     == InventTransCurrency_RU::PrimaryCur
           &&   inventTrans.ValueOpen                   == InventTransOpen::Yes)
           ||  (inventTransCurrency                     == InventTransCurrency_RU::SecondaryCur
           &&   inventTrans.ValueOpenSecCur_RU          == InventTransOpen::Yes))
           || (!countryRegion_RU
           && (inventTrans.ValueOpen                    == InventTransOpen::Yes)))
        // </GEERU>
           && inventTrans.ItemId                        == _itemId
           && inventTrans.MarkingRefInventTransOrigin
        join inventDim
        where inventDim.InventDimId == inventTrans.InventDimId
X++:
protected void updateServiceItemTrans(ItemId _itemId)
{
    InventTrans         inventTrans;
    InventSettlement    inventSettlement;

    RecordInsertList    recordInsertList = new RecordInsertList(tableNum(InventSettlement),true,true);

    // Optimization note: All columns are expected to be included in the index
    while select forupdate inventTrans
        index hint OpenItemIdx
        // <GEERU>
        where ((countryRegion_RU
           && ((inventTransCurrency             == InventTransCurrency_RU::PrimaryCur
           &&   inventTrans.ValueOpen           == InventTransOpen::Yes)
           ||  (inventTransCurrency             == InventTransCurrency_RU::SecondaryCur
           &&   inventTrans.ValueOpenSecCur_RU  == InventTransOpen::Yes)))
           || (!countryRegion_RU
           && inventTrans.ValueOpen         == InventTransOpen::Yes))
        // </GEERU>
          &&  inventTrans.ItemId            == _itemId
          && (inventTrans.StatusIssue       == StatusIssue::Sold
          ||  inventTrans.StatusReceipt     == StatusReceipt::Purchased)
          &&  inventTrans.DateStatus        <= inventClosing.TransDate
          &&  inventTrans.MarkingRefInventTransOrigin   == 0 // marked service item transactions will be settled according to marking principle

    {
        // <GEERU>
        if (countryRegion_RU)
        {
            inventSettlement = this.initInventSettlement(inventTrans,
                                                         inventTransCurrency == InventTransCurrency_RU::PrimaryCur ? inventTrans.financialOpenQty()   : inventTrans.financialOpenQtySecCur_RU(),
                                                         inventTransCurrency == InventTransCurrency_RU::PrimaryCur ? inventTrans.financialOpenValue() : inventTrans.financialOpenValueSecCur_RU(),
                                                         0,
                                                         InventSettleModel::ServiceItem,
                                                         inventTrans.Qty >= 0 ? InventSettleType::Receipt : InventSettleType::Issue,
                                                         #initLedgerDrop
                                                         );
        }
        else
        {
        // </GEERU>
            inventSettlement = this.initInventSettlement(inventTrans,
                                                         inventTrans.financialOpenQty(),
                                                         inventTrans.financialOpenValue(),
                                                         0,
                                                         InventSettleModel::ServiceItem,
                                                         inventTrans.Qty >= 0 ? InventSettleType::Receipt : InventSettleType::Issue,
                                                         #initLedgerDrop
                                                         );
        // <GEERU>
        }
        // </GEERU>

        inventSettlement.SettleTransId      = InventSettlement::nextSettleTransId();
        inventSettlement.insertUsingInsertList(recordInsertList);

        // <GEERU>
        if (!countryRegion_RU
            || inventTransCurrency == InventTransCurrency_RU::PrimaryCur)
        {
        // </GEERU>
            inventTrans.QtySettled             += inventTrans.financialOpenQty();
            inventTrans.CostAmountSettled      += inventTrans.financialOpenValue();
        // <GEERU>
        }
        else
        {
            inventTrans.QtySettledSecCur_RU        += inventTrans.financialOpenQtySecCur_RU();
            inventTrans.CostAmountSettledSecCur_RU += inventTrans.financialOpenValueSecCur_RU();
        }
        // </GEERU>
        this.updateCostAmountStd(inventTrans);
        inventTrans.update();
    }

    recordInsertList.insertDatabase();
}
В DAX2009 насколько я помню регион как то по другому определяется, но смысл думаю ясен.
__________________
Sergey Nefedov
За это сообщение автора поблагодарили: Sergey Petrov (1).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Закрытие склада: обработка маркированных проводок Sergey Petrov DAX: Программирование 1 26.06.2015 12:04
Странное закрытие склада и коррекция себестоимости в наличии Aquarius DAX: Функционал 11 28.05.2010 11:45
Denis Fedotenko: Себестоимость и закрытие склада Blog bot DAX: База знаний и проекты 44 29.03.2010 14:54
Закрытие склада в валюте. NJD DAX: Функционал 1 05.10.2005 12:10
Закрытие склада в основной и вторичной валюте, отключенная корреспонденция счетов May DAX: Функционал 1 02.04.2004 13:25

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

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

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