|
|
|
|
#1 |
|
Участник
|
Честно говоря, читаю ваши сообщения, и как сквозь чащи пробираюсь. Почти ничего непонятно
![]() А по поводу ваших проблем с классами. Вы явно что-то не договариваете здесь Как может в класс PriceDisc передаться неверная номенклатура, если метод этот вызывается из МАПа SalesPurchLine, который имеет маппинг на код номенклатуры для заказа? Ответ: никак, если до этого кто-то что-то не испортил. А вот это вы, видимо, как раз и не договорили. Так что ищите в пред. модификациях, кто чего трогал. |
|
|
|
|
#2 |
|
Участник
|
Цитата:
Сообщение от kashperuk
Честно говоря, читаю ваши сообщения, и как сквозь чащи пробираюсь. Почти ничего непонятно
![]() А по поводу ваших проблем с классами. Вы явно что-то не договариваете здесь Как может в класс PriceDisc передаться неверная номенклатура, если метод этот вызывается из МАПа SalesPurchLine, который имеет маппинг на код номенклатуры для заказа? Ответ: никак, если до этого кто-то что-то не испортил. А вот это вы, видимо, как раз и не договорили. Так что ищите в пред. модификациях, кто чего трогал. . Вот мои замены в PriceDisc классе :Код: boolean findPriceAgreement(PriceGroupId _priceGroupId, InventDimId _inventDimId)
{
PriceDiscTable priceDiscTable;
PriceType relation = this.priceRelation();
boolean priceExist = false;
TableGroupAll itemCode;
TableGroupAll accountCode;
ItemRelation itemRelation;
CustVendRel accountRelation;
Integer idx;
Qty absQty = abs(qty);
PriceDiscTable priceTbl;
CIRFASSizeValue nSize;
Boolean lSize, lSize2;
InventDimId nullInvDim = "Axapta";
;
this.resetPrice();
if (! itemId)
return priceExist;
idx = 0;
while (idx < 9)
{
itemCode = idx mod 3;
accountCode = idx div 3;
itemRelation = itemCode == 0 ? itemId : '';
accountRelation = this.accountRelation(accountCode, _priceGroupId);
if (PriceDiscTable::activation(relation, accountCode, itemCode, priceParameters))
{
if (PriceDisc::validateRelation(accountCode, accountRelation) &&
PriceDisc::validateRelation(itemCode, itemRelation ))
{
lSize = false;
nSize = 0;
if ( _priceGroupId && _inventDimId )
{
nSize = ConfigTable::find( itemRelation, InventDim::find( _inventDimId, false ).configId, false ).CIRFASSizeValue;
if ( nSize != 0 )
{
select firstonly priceTbl
index hint ItemDimIdx
where priceTbl.ItemRelation == itemRelation &&
priceTbl.AccountRelation == _priceGroupId &&
priceTbl.UTSizeValue != 0;
if ( priceTbl )
lSize = true;
}
}
// добавил немножко кода для обнаруживания размера и его величины ...
while select priceDiscTable
index PriceDiscIdx // equals order by QuantityAmount
where priceDiscTable.relation == relation &&
priceDiscTable.itemCode == itemCode &&
priceDiscTable.itemRelation == itemRelation &&
priceDiscTable.accountCode == accountCode &&
priceDiscTable.accountRelation == accountRelation &&
priceDiscTable.unitId == unitID &&
priceDiscTable.currency == currency && // priceDiscTable.InventDimId == _inventDimId &&
// все цены номенклатуры независит от конфигурации , только несколько номенклатур - от размера
(discDate >= priceDiscTable.fromDate || ! priceDiscTable.fromDate) &&
(discDate <= priceDiscTable.toDate || ! priceDiscTable.toDate)
{
lSize2 = ( lSize ? false : true );
if ( _inventDimId != nullInvDim && _inventDimId &&
( _inventDimId == priceDiscTable.InventDimId || priceDiscTable.InventDimId == "" || priceDiscTable.InventDimId == nullInvDim ) )
{
// вот здесь поменял проверение конфигурации
if (priceDiscTable.quantityAmount <= absQty)
{
if (priceDiscTable.price() >= 0 || priceDiscTable.markup())
{
if (priceDiscTable.calcPriceAmount(absQty) < this.calcPriceAmount(absQty) ||
! priceExist)
{
if ( nSize != 0 && priceDiscTable.UTSizeValue &&
( ( priceDiscTable.UTSizeDirect == UTPriceDiff::UTLess && nSize <= priceDiscTable.UTSizeValue ) ||
( priceDiscTable.UTSizeDirect == UTPriceDiff::UTMore && nSize > priceDiscTable.UTSizeValue ) ) )
lSize2 = true;
// если есть размер - проверяем цену от размера ...
if ( lSize2 )
{
priceUnit = priceDiscTable.priceUnit();
price = priceDiscTable.price();
markup = priceDiscTable.markup();
deliveryDays = priceDiscTable.deliveryTime;
actualPriceTable = priceDiscTable.data();
calendarDays = priceDiscTable.CalendarDays;
priceExist = true;
}
}
}
}
}
if (! priceDiscTable.searchAgain)
{
idx = 9;
break;
}
}
}
}
idx += 1;
}
return priceExist;
}Больше я нигде не менял . В Maps'ах совсем ничего не менял . Когда смотрю через дебуг , то поменяв PriceGroupId в SalesTable , всё хорошо . Ну там одна формичка запроса вскачивает , обновлят ли цены и даты . Может такого нехватает , когда меняю конфигурацию в SalesLine ? ( когда написал , пришла в голову такая идея - проверю ... ) . Но вот когда меняю конфигурацию в SalesLine , то в дебуге вижу совсем не такие данные , как SalesLinе ... Я и сам етого непонимаю ... С уважением , Римантас |
|
|