【问题标题】:Calculate field value by PXformula attribute in Acumatica通过 Acumatica 中的 PXformula 属性计算字段值
【发布时间】:2020-03-30 05:36:58
【问题描述】:

我正在使用 pxformula 将值相乘,但未能得到它。当我将诸如十进制100 *十进制100之类的常量值相乘时,它给了我结果。但是当我使用 avgcost 时,它不起作用。我认为 pxformula 中使用的 avgcost 来自 INItemCost 表。 以下是我从 acumatica 得到的文章。

您可以使用数据访问类 (DAC) 中的预定义属性 PXFormula 和 PXUnboundFormula 来根据同一数据记录的值计算字段值。您还可以计算详细数据记录的聚合值,并将聚合值分配给主数据记录的字段。

屏幕截图显示没有渲染结果。

请建议我解决这个问题。

【问题讨论】:

    标签: acumatica


    【解决方案1】:

    在这种情况下,您希望使用来自 DAC INItemCost 的信息更新来自 DAC CSAnswer 的值。据我了解,PXFormula[] 属性可用于更新同一 DAC 记录中的值,和/或用于聚合计算。

    典型示例:网格的单价数量用于获取扩展价格(来自相同的 DAC 记录)。并且该结果在文档的总数(汇总总数)中更新 我还没有看到它被用在像你这样的例子中。

    但是,我能够使用这种替代方法更新值:

      public class InventoryItemMaint_Extension : PXGraphExtension<InventoryItemMaint>
      {  
           protected virtual void CSAnswers_Value_FieldUpdated(PXCache sender, PXFieldUpdatedEventArgs e)
           {
               if (e.Row == null) return;
    
              CSAnswers answer = (CSAnswers)e.Row;
              CSAnswersExt answerExt = sender.GetExtension<CSAnswersExt>(answer);
    
              if (answerExt != null)
              {
    
                  INItemCost itemCost = PXSelect<INItemCost, Where<INItemCost.inventoryID, Equal<Required<InventoryItem.inventoryID>>>>.Select(this.Base, this.Base.Item.Current.InventoryID);
    
                  if (itemCost != null && itemCost.AvgCost != null)
                  {
                      answerExt.UsrPrice = itemCost.AvgCost * (decimal)365;
                  }
              }
            }
        }
    

    结果

    补充说明

    • 鉴于平均成本是禁用字段,我使用 CSAnswers_Value 字段更新数据
    • 此逻辑将更新新记录中的 UsrPrice 以及正在更新的特定属性行。如果您希望批量更新现有数据,则必须使用额外的逻辑。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-15
      • 1970-01-01
      • 2021-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多