Обновление проблемы Acumatica SOLine Поле «Сумма скидки» - PullRequest
0 голосов
/ 27 марта 2019

У меня есть настройка для формы заказа на продажу (SO301000), которая действует очень странно.Цель состоит в том, чтобы использовать 5 настраиваемых полей для расчета добавленной стоимости в строке.У меня работают 5 полей (1 int, 4 decimal 8,3), я добавил код и атрибуты, чтобы они обновили строку после редактирования.После каждого обновления полей я запускаю функцию обновления строки, в конце которой он обновляет количество, сумму скидки и настраиваемое поле (предназначенное для устранения неполадок).

Что сводит меня с ума, так это то, что он отлично обновляет количество и настраиваемое поле ... но в 4 десятичных полях, похоже, он обновляет скидку только через раз.Сначала я подумал, что столкнулся с некоторой логикой: поле int (и я понятия не имею, связано ли оно с типом переменной, но это единственное различие, которое я вижу) работает каждый раз

Кодобновлять после каждого изменения поля все одно и то же (кроме, конечно, имени поля):

protected void SOLine_UsrWidthAdder_FieldUpdated(PXCache cache, PXFieldUpdatedEventArgs e)
{
    UpdateLineDirect(cache, (SOLine)e.Row);
}

А код в конце UpdateLineDirect выглядит так:

cache.SetValue<SOLine.manualDisc>(TheRow, true);
cache.SetValue<SOLine.discPct>(TheRow, dDiscountPercent); 
cache.SetValue<SOLineExt.usrCostCalc>(TheRow, TestString);
cache.SetValue<SOLine.curyDiscAmt>(TheRow, dDiscountAmount); 
cache.SetValueExt<SOLine.orderQty>(TheRow, dQO);  

Я пробовал различные порядки обновления полей и обновления их всех с помощью Ext для принудительного вычисления каждый раз, но ни одна из комбинаций, которые я пробовал, кажется, не имеет большого значения.

Заранее спасибо!

1 Ответ

0 голосов
/ 28 марта 2019

Похоже, Acumatica не любит обновлять сумму скидки и проценты одновременно.

Я удалил эту строку:

cache.SetValue<SOLine.discPct>(TheRow, dDiscountPercent); 

и обновил только эту(это то, что я хотел в первую очередь)

cache.SetValue<SOLine.curyDiscAmt>(TheRow, dDiscountAmount); 

и теперь он работает отлично.

...