![]() |
#2 |
Участник
|
Если есть возможность загляните в 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(); }
__________________
Sergey Nefedov |
|
|
За это сообщение автора поблагодарили: Sergey Petrov (1). |
|
|