29.03.2007, 09:28 | #1 |
Участник
|
SalesPrices и PriceDiscTable
Здраствуйте !
Дело с договорными ценами , которые введется в PriceDiscTablе . Потом введется заказ продажи и указываеться ID - PriceGroupId в SalesTable . Никак немогу перехватить в каком месте изменяет цены в SalesLine salesPrice . Дело в том , что я добавил несколько полей в PriceDiscTable из за своих нужд предприятия чтобы ещё по своим требованиям отыскать цены . Надо перехватить замену PriceGroupId и добавить свои требования ... Спасибо заранее ! С уважением , Римантас |
|
29.03.2007, 09:54 | #2 |
Участник
|
Смотри Maps SalesPurchLine, в нем метод setPriceAgreement. Сам поиск идет в классе PriceDisc
|
|
29.03.2007, 11:50 | #3 |
Участник
|
Цитата:
С уважением , Римантас |
|
29.03.2007, 11:56 | #4 |
Участник
|
В смысле как получить? Он же есть в самом мапе SalesPurchLine это раз. Передается InventDim в качестве параметра - это два.
|
|
29.03.2007, 12:14 | #5 |
Участник
|
Цитата:
Мне надо поравнивать размеры , только от них зависят цена . Код: nSize = ConfigTable::find( itemRelation, InventDim::find( _inventDimId, false ).configId, false ).CIRFASSizeValue; if ( nSize != 0 ) ... С уважением , Римантас |
|
29.03.2007, 12:36 | #6 |
Участник
|
Посмотрите метод \Classes\PriceDisc\findPrice
В нем аналитика подбирается в зависимости от активности аналитики (включенности). Возможно просто у вас они выключены? |
|
29.03.2007, 12:49 | #7 |
Участник
|
Простите - ето я ошибся ! . Поправил по нужному findPriceAgreement() - _inventDimId там правильный . Всё хорошо !
Последний раз редактировалось Rimantas; 29.03.2007 в 16:56. |
|
29.03.2007, 16:57 | #8 |
Участник
|
Цитата:
С уважением , Римантас |
|
29.03.2007, 17:00 | #9 |
Участник
|
Честно говоря, читаю ваши сообщения, и как сквозь чащи пробираюсь. Почти ничего непонятно
А по поводу ваших проблем с классами. Вы явно что-то не договариваете здесь Как может в класс PriceDisc передаться неверная номенклатура, если метод этот вызывается из МАПа SalesPurchLine, который имеет маппинг на код номенклатуры для заказа? Ответ: никак, если до этого кто-то что-то не испортил. А вот это вы, видимо, как раз и не договорили. Так что ищите в пред. модификациях, кто чего трогал. |
|
29.03.2007, 17:33 | #10 |
Участник
|
Цитата:
Сообщение от kashperuk
Честно говоря, читаю ваши сообщения, и как сквозь чащи пробираюсь. Почти ничего непонятно
А по поводу ваших проблем с классами. Вы явно что-то не договариваете здесь Как может в класс PriceDisc передаться неверная номенклатура, если метод этот вызывается из МАПа SalesPurchLine, который имеет маппинг на код номенклатуры для заказа? Ответ: никак, если до этого кто-то что-то не испортил. А вот это вы, видимо, как раз и не договорили. Так что ищите в пред. модификациях, кто чего трогал. Код: 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е ... Я и сам етого непонимаю ... С уважением , Римантас |
|