Кстати говоря подобный код имеется только в случае поиска цены по клиентам. В случае цены поставщиков или скидок по любому модулю ничего подобного не делается... Есть общий код на 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>
}