Acumatica:销售订单自定义计算不一致

时间:2016-06-27 14:26:56

标签: customization acumatica

通过一些帮助和大量的试验和错误,我能够创建一个允许以下内容的自定义:

  1. “销售订单摘要”区域中的“总利润”字段
  2. “销售订单摘要”区域中的“GP%”字段
  3. 销售订单详细信息区域中的
  4. “总利润”字段(按行)
  5. 销售订单详细信息区域中的
  6. “GP%”字段(按行)
  7. 总利润=分机价格 - 分机成本 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>))]
    

1 个答案:

答案 0 :(得分:0)

PXFormula应该没有DAC扩展和自定义字段的问题。通过仅查看字段属性,很难分辨出问题所在。请至少使用DAC字段声明更新您的代码段,以便更清楚哪些属性属于哪个字段。