AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.02.2009, 12:19   #1  
nano3 is offline
nano3
Участник
 
57 / 24 (1) +++
Регистрация: 21.03.2007
SalesTotals_clSalesLine
Привет, всем!

Был в Axapta 3.0 класс SalesTotals_OnlyLine (наследник SalesTotals), который подсчитывал итоги не для всего заказа, а только для указанной строки. В 4-ке (4.0.2501.166) такого класса нет. Думал, что теперь нечто похожее делает класс SalesTotals_clSalesLine, но он считает итоги для заказа целиком. Видимо необходимость в классе SalesTotals_OnlyLine отпала раз его убрали...

Подскажите, пожалуйста, существует ли какой-нибудь механизм для подсчета итогов для отдельной строки в 4-ке?
Старый 16.02.2009, 17:54   #2  
AxaptaUser is offline
AxaptaUser
Участник
 
56 / 17 (1) ++
Регистрация: 09.03.2007
предположение
А метод calcGrossAmount таблицы SalesLine Вам не подходит?
За это сообщение автора поблагодарили: nano3 (1).
Старый 05.03.2015, 14:40   #3  
rkorchagin is offline
rkorchagin
Участник
 
81 / 69 (3) ++++
Регистрация: 26.09.2006
На самом деле 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;


}
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 21:27.