|
16.02.2009, 12:19 | #1 |
Участник
|
SalesTotals_clSalesLine
Привет, всем!
Был в Axapta 3.0 класс SalesTotals_OnlyLine (наследник SalesTotals), который подсчитывал итоги не для всего заказа, а только для указанной строки. В 4-ке (4.0.2501.166) такого класса нет. Думал, что теперь нечто похожее делает класс SalesTotals_clSalesLine, но он считает итоги для заказа целиком. Видимо необходимость в классе SalesTotals_OnlyLine отпала раз его убрали... Подскажите, пожалуйста, существует ли какой-нибудь механизм для подсчета итогов для отдельной строки в 4-ке? |
|
16.02.2009, 17:54 | #2 |
Участник
|
предположение
А метод calcGrossAmount таблицы SalesLine Вам не подходит?
|
|
|
За это сообщение автора поблагодарили: nano3 (1). |
05.03.2015, 14:40 | #3 |
Участник
|
На самом деле calcGrossAmount считает не совсем то что надо. Если надо узнать какова реально линия будет в инвойсе то я написал такой метод:
X++: // [CR372][Release 41] Created on 05 Mar 2015 by TE-korru: Customer credit limit management AmountMst CalcTotalAmountMst() { SalesTotals salesTotals; AmountMst ret; SalesParmTable tmpSalesParmTable; SalesParmLine salesParmLine; SalesQuantity salesQuantity; ParmId parmId = NumberSeq::newGetNum(CompanyInfo::numRefParmId()).num(); ; ttsbegin; tmpSalesParmTable.setTmp(); tmpSalesParmTable.initFromSalesTable(this.salesTable()); tmpSalesParmTable.ParmId = parmId; tmpSalesParmTable.TableRefId = parmId; tmpSalesParmTable.write(); salesParmLine.initFromSalesLine(this); salesParmLine.ParmId = parmId; salesParmLine.TableRefId = parmId; salesQuantity = SalesQuantity::construct(DocumentStatus::Invoice); [salesParmLine.DeliverNow, salesParmLine.RemainBefore , salesParmLine.RemainAfter ] = salesQuantity.qtySales (this); [salesParmLine.InventNow , salesParmLine.RemainBeforeInvent, salesParmLine.RemainAfterInvent] = salesQuantity.qtyInvent (this); salesParmLine.setLineAmount(this); salesParmLine.write(); salesTotals = SalesTotals::construct(tmpSalesParmTable, SalesUpdate::All, AccountOrder::None, parmId, '', DocumentStatus::Invoice); ret = Currency::amountCur2MST(salesTotals.totalAmount(),this.CurrencyCode); delete_from salesParmLine where salesParmLine.ParmId == parmId && salesParmLine.TableRefId == parmId; ttscommit; return ret; } |
|