Показать сообщение отдельно
Старый 09.02.2018, 02:47   #1  
alicedr is offline
alicedr
Участник
 
173 / 43 (2) +++
Регистрация: 06.07.2012
Адрес: Канада
Общая сумма частичной накладной на возврат
AX2012 R3 CU13
Задача - в RMA (он же return order. Как в русской версии звучит, увы, не знаю, думаю что это "накладная на возврат") сразу после выбора sales Order-а запускается некая функциональность, для которой надо посчитать общую сумму возврата. В идеале со всеми дополнительными Charges, которые были добавлены в sales order. В совершенном идеале возврат делается частичный, и сумма берется только по этому частичному возврату.

В силу исторических причин, мой код расположен в SalesCopying_CreditNote.copyCreditCardTrans().

К сожалению, по какой-то причине все попытки получить общую сумму возвращают ноль, хотя на других версиях вроде бы работали.
К еще большему сожалению, на R3 CU11 это тоже воспроизводится.
Вот что я пробую:
X++:
custPaymTotals = MCRCustPaymTotals::construct(salesTable.TableId,salesTable.RecId);
amount = custPaymTotals.getTotalSalesAmount(); //amount=0

SalesTotals.calc();
amount = conPeek(salesTotals.displayFields(), TradeTotals::posTotalAmount());  //amount=0
Я подозреваю, что причина нулевой суммы в том, что в SalesCopying.copy(), который выполняется раньше, количество обнуляется, что в итоге дает ноль в SalesTotals:

X++:
419    salesLine.LineAmount 	= salesLine.returnLineAmount();
420    salesLine.SalesQty    	= 0;
Простой деревенский способ просуммировать все salesLine.LineAmount работает, хотя и не учитывает дополнительные Charges.
Однако хотелось бы использовать какой-то более стандартный вариант, чтобы быть полностью уверенным в его корректности.

Какие могут быть варианты для подсчета общей суммы RMA сразу после выбора строк sales order-а?