|
|
#1 |
|
MCITP
|
Поиск цен/скидок в ценовых соглашениях.
В методе поиска цены - PriceDisc.findPrice - на gls слое, т.е. я так понимаю в восточно-европейской локализации, добавили в этот метод много изменений, в частности работу с договорами. В частности добавлено следующее условие: X++: ret = (!checkContract || this.searchbyRContract()) && .... В итоге получается достаточно странная ситуация, когда "птичка" Цены\скидки по договору стоит, складская аналитика в поиске используется, но это странное условие сразу выкидывает нас на последнюю строчку этого оператора: X++: this.findPriceAgreement(_priceGroupId, InventDim::inventDimIdBlank(),rContractCode,rContractAccount); версия приложения 5.0.1500.809
__________________
Zhirenkov Vitaly |
|
|
|
|
#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 |
|
|
|
|
#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. |
|
|
|
|
#4 |
|
Читатель
|
Баг бережно сохранили и перенесли в DAX 2012 R2
|
|
|
| Теги |
| ax2009, баг, договор, коммерческие соглашения, цена, прайс |
|
|
|