С некоторой помощью, и много проб и ошибок, я был в состоянии создать настройку, которая позволяла следующее:Acumatica: заказ клиента на заказ расчет несогласованность
- поле «Общая прибыль» на суммарной площади Sales Order
- поле «GP%» на суммарной площади Sales Order
- поле «Общая прибыль» на заказ клиента детали площадь (по линии)
- поле «GP%» на заказ клиента детализирует область (по линии)
Общая прибыль = Внутренняя. Цена - экст. Стоимость GP% = (общая прибыль/внешняя цена) * 100
Расчет для этих четырех полей работает некоторое время, но я заметил, что когда я фиксирую строку либо путем ввода новой строки, либо с помощью Control + Войдите, а затем вернитесь и измените Ext. Стоимость, общая прибыль и GP% не обновляются. Даже когда я сохраняю и обновляю, он делает это. Единственный раз, когда кажется, что он работает на 100%, - это когда я вхожу в него очень методично, делая шаг за шагом. Но это не так, как рассчитываются итоги из коробки. Не имеет значения, какой заказ вы вводите в своем количестве, цене и т. Д. - итоговые значения из окна всегда обновляются. Как я могу сделать четыре своих пользовательских поля в Acumatica?
Солинах Пользовательские поля (каждое поле отделяется пустой строкой):
[PXDBCurrency(typeof(SOLine.curyInfoID), typeof(SOLineExt.usrTotalProfit))]
[PXUIField(DisplayName = "Total Profit", Enabled = false)]
[PXFormula(typeof(Sub<SOLine.curyLineAmt, SOLine.curyExtCost>))]
[PXDefault(TypeCode.Decimal, "0.0")]
[PXFormula(null, typeof(SumCalc<SOOrderExt.usrCuryOrderTotalProfit>))]
[PXDBDecimal(4)]
[PXDefault(TypeCode.Decimal, "0.0")]
[PXFormula(typeof(Switch<Case<Where<SOLine.curyLineAmt, Equal<decimal0>>, decimal0>, Div<SOLineExt.usrTotalProfit, SOLine.curyLineAmt>>))]
[PXDefault(TypeCode.Decimal, "0.0")]
[PXUIField(DisplayName = "GP %", Enabled = false)]
[PXFormula(typeof(Mult<SOLineExt.usrGPPercent, decimal100>))]
[PXDefault(TypeCode.Decimal, "0.0")]
SOOrder Пользовательские поля (каждое поле отделяется пустой строкой):
[PXDBCurrency(typeof(SOOrder.curyInfoID), typeof(SOOrderExt.usrOrderTotalProfit))]
[PXUIField(DisplayName = "Total Profit", Enabled = false)]
[PXDefault(TypeCode.Decimal, "0.0")]
[PXDBDecimal(4)]
[PXDefault(TypeCode.Decimal, "0.0")]
[PXFormula(typeof(Switch<Case<Where<SOOrder.curyOrderTotal, Equal<decimal0>>, decimal0>, Div<SOOrderExt.usrOrderTotalProfit, SOOrder.curyOrderTotal>>))]
[PXDefault(TypeCode.Decimal, "0.0")]
[PXUIField(DisplayName = "GP %", Enabled = false)]
[PXFormula(typeof(Mult<SOOrderExt.usrOrderGPPercent, decimal100>))]
Можете ли вы предоставить исходный код для вашего решения? Включите все пользовательские поля и атрибуты ЦАП, которые вы использовали. – Gabriel
Gabriel - я обновил свой оригинальный пост. Дай мне знать если тебе нужно что-нибудь еще! –
Если у вашей компании есть подписка на поддержку, я рекомендую создать файл для поддержки Acumatica. Это может значительно ускорить решение проблемы. –