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-а?