通过一些帮助和大量的试验和错误,我能够创建一个允许以下内容的自定义:
总利润=分机价格 - 分机成本 GP%=(总利润/外部价格)* 100
这四个字段的计算在某些时候有效,但我注意到当我通过输入新行或使用Control + Enter提交行时,然后返回并更改Ext。成本,总利润和GP%不会更新。即使我保存并刷新它也会这样做。它似乎100%工作的唯一时间是我非常有条不紊地一步一步地进入它。但这不是如何计算开箱即用的总数。您在数量,价格等方面输入的订单无关紧要 - 开箱即用的总计会更新。如何在Acumatica中创建这样的四个自定义字段?
SOLine自定义字段(每个字段用空行分隔):
[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>))]
答案 0 :(得分:0)
PXFormula应该没有DAC扩展和自定义字段的问题。通过仅查看字段属性,很难分辨出问题所在。请至少使用DAC字段声明更新您的代码段,以便更清楚哪些属性属于哪个字段。