26.07.2009, 23:40 | #1 |
MCITP
|
PriceDisc.findPrice в DAX2009 - непонятно
Поиск цен/скидок в ценовых соглашениях.
В методе поиска цены - PriceDisc.findPrice - на gls слое, т.е. я так понимаю в восточно-европейской локализации, добавили в этот метод много изменений, в частности работу с договорами. В частности добавлено следующее условие: X++: ret = (!checkContract || this.searchbyRContract()) && .... В итоге получается достаточно странная ситуация, когда "птичка" Цены\скидки по договору стоит, складская аналитика в поиске используется, но это странное условие сразу выкидывает нас на последнюю строчку этого оператора: X++: this.findPriceAgreement(_priceGroupId, InventDim::inventDimIdBlank(),rContractCode,rContractAccount); версия приложения 5.0.1500.809
__________________
Zhirenkov Vitaly |
|
26.07.2009, 23:45 | #2 |
MCITP
|
и немного ещё...
Кстати говоря подобный код имеется только в случае поиска цены по клиентам. В случае цены поставщиков или скидок по любому модулю ничего подобного не делается... Есть общий код на New класса:
X++: if ((_moduleType == ModuleInventPurchSales::Sales && SalesParameters::find().rContractPriceDisc) ||
(_moduleType == ModuleInventPurchSales::Purch && PurchParameters::find().rContractPriceDisc)
)
{
rContractCode = _rContractCode;
rContractAccount = _rContractAccount;
} На всякий случай приведу весь код метода : X++: boolean findPrice(PriceGroupId _priceGroupId, boolean _useItemPrice = true) { boolean findAll = true; boolean findItemDim = true; InventDim inventDimAllActivated; InventDim inventDimItemDimActivated; InventDim inventDimNoneActivated; InventTable inventTable; // <GEEU> boolean ret; boolean checkContract; // </GEEU> ; usedPriceGroupId = _priceGroupId; if (itemId) { inventTable = InventTable::find(itemId); switch (moduleType) { case ModuleInventPurchSales::Purch: inventDimAllActivated.copyActivatePurchPriceAll(inventTable.DimGroupId, inventDim); // <GEEU> checkContract = PurchParameters::find().rContractPriceDisc; // </GEEU> break; case ModuleInventPurchSales::Sales: inventDimAllActivated.copyActivateSalesPriceAll(inventTable.DimGroupId, inventDim); // <GEEU> checkContract = SalesParameters::find().rContractPriceDisc; // </GEEU> break; default: inventDimAllActivated.copyItemDim(inventTable.DimGroupId, inventDim); } inventDimItemDimActivated.copyItemDim(inventTable.DimGroupId, inventDimAllActivated); findAll = !InventDim::isInventDimEqual(inventDimAllActivated, inventDimItemDimActivated); findItemDim = !InventDim::isInventDimEqual(inventDimItemDimActivated,inventDimNoneActivated); inventDimAllActivated = findAll ? InventDim::findDim(inventDimAllActivated) : inventDimAllActivated; inventDimItemDimActivated = findItemDim ? InventDim::findDim(inventDimItemDimActivated) : inventDimItemDimActivated; } /* <SYS> return ((findAll && inventDimAllActivated.RecId && this.findPriceAgreement(_priceGroupId, inventDimAllActivated.InventDimId)) || </SYS> */ // <GEEU> ret = (!checkContract || this.searchbyRContract()) && (findAll && inventDimAllActivated.RecId && this.findPriceAgreement(_priceGroupId, inventDimAllActivated.InventDimId,rContractCode,rContractAccount)) || (findItemDim && inventDimItemDimActivated.RecId && this.findPriceAgreement(_priceGroupId, inventDimItemDimActivated.InventDimId,rContractCode,rContractAccount)) || this.findPriceAgreement(_priceGroupId, InventDim::inventDimIdBlank(),rContractCode,rContractAccount); return ret || (findAll && inventDimAllActivated.RecId && this.findPriceAgreement(_priceGroupId, inventDimAllActivated.InventDimId)) || // </GEEU> (findItemDim && inventDimItemDimActivated.RecId && this.findPriceAgreement(_priceGroupId, inventDimItemDimActivated.InventDimId)) || this.findPriceAgreement(_priceGroupId, InventDim::inventDimIdBlank()) || /* <SYS> (_useItemPrice && this.findItemPrice())); </SYS> */ // <GEEU> (_useItemPrice && this.findItemPrice()); // </GEEU> }
__________________
Zhirenkov Vitaly |
|
15.02.2012, 20:30 | #3 |
Читатель
|
Цитата:
X++: ret = (!checkContract || this.searchbyRContract()) && ( (findAll && inventDimAllActivated.RecId && this.findPriceAgreement(_priceGroupId, inventDimAllActivated.InventDimId, rContractCode, rContractAccount, rContractPartnerCode)) || (findItemDim && inventDimItemDimActivated.RecId && this.findPriceAgreement(_priceGroupId, inventDimItemDimActivated.InventDimId, rContractCode, rContractAccount, rContractPartnerCode)) || this.findPriceAgreement(_priceGroupId, InventDim::inventDimIdBlank(), rContractCode, rContractAccount, rContractPartnerCode)); Там еще прикол в том, что если не указать договор, то поиск будет производиться по записям с пустым договором, хотите вы этого или нет. Последний раз редактировалось b_nosoff; 15.02.2012 в 20:33. |
|
30.12.2013, 18:38 | #4 |
Читатель
|
Баг бережно сохранили и перенесли в DAX 2012 R2
|
|
Теги |
ax2009, баг, договор, коммерческие соглашения, цена, прайс |
|
|