【问题标题】:Adding custom button in acumatica在 acumatica 中添加自定义按钮
【发布时间】:2017-08-17 16:13:03
【问题描述】:

我是 Acumatica 的新手,正在尝试探索一些自定义功能。

我在销售订单屏幕上创建了 2 个标签 - CstLabeltotal 和 CstLabelqty

我正在尝试找出一种方法,除了总标签将显示“文档详细信息”选项卡中的交易总数(第 1 列)和“数量”标签显示“文档详细信息”选项卡(第 9 列)中的总数量

谁能帮我解决这个问题?

【问题讨论】:

  • 标题应该是如何添加自定义总计我相信因为问题描述不是关于按钮而是总计。

标签: customization acumatica


【解决方案1】:

使用自定义未绑定字段 (NonPersistedField) 作为占位符来显示总计。

首先将这些自定义字段添加到 SOOrder DAC 扩展:

总量自定义字段:

总交易自定义字段:

创建一个 SOOrderEntry 图形扩展来计算/更新总数:

在销售订单界面添加自定义字段,无需使用标签控件,DAC DisplayName 属性将作为字段标签:

找到 Base graph Transactions DataView,其中包含计算总计所需的详细数据(仅供参考):

在您的 SOOrderEntry 扩展中,使用 Base Graph 中的 Transactions DataView 来计算总计:

namespace PX.Objects.SO
{
  public class SOOrderEntry_Extension:PXGraphExtension<SOOrderEntry>
  {
      // Initialize unbound values in FieldSelecting events
      public void SOOrder_UsrTotalQty_FieldSelecting(PXCache sender, PXFieldSelectingEventArgs e)
      {
          e.ReturnValue = GetTotalQty(sender);
      }

      public void SOOrder_UsrTotalTransactions_FieldSelecting(PXCache sender, PXFieldSelectingEventArgs e)
      {
          e.ReturnValue = GetTotalTransactions(sender);
      }

      // Update values
      public void SOLine_RowDeleted(PXCache sender, PXRowDeletedEventArgs e)
      {
          UpdateTotals(sender, e.Row as SOOrder, true, true);
      }

      public void SOLine_RowInserted(PXCache sender, PXRowInsertedEventArgs e)
      {
          UpdateTotals(sender, e.Row as SOOrder, true, true);
      }

      public void SOLine_OrderQty_FieldUpdated(PXCache sender, PXFieldUpdatedEventArgs e)
      {
          UpdateTotals(sender, e.Row as SOOrder, true, false);
      }

      public void UpdateTotals(PXCache sender, SOOrder soOrder, bool isUpdateQty, bool isUpdateTranCount)
      {
          // Get SOOrder DAC extension
          if (soOrder != null)
          {
              SOOrderExt soOrderExt = sender.GetExtension<SOOrderExt>(soOrder);
              
              if (soOrderExt != null)
              {
                   // Update values
                   if (isUpdateQty)
                   {
                       soOrderExt.UsrTotalQty = GetTotalQty(sender);
                   }
               
                   if (isUpdateTranCount)
                   {
                       soOrderExt.UsrTotalTransactions= GetTotalTransactions(sender);
                   } 
              }
          }
      }
            
      // Compute totals
      public decimal? GetTotalQty(PXCache sender)
      {
          decimal? totalQty = 0M;

          // Compute quantity from SOOrderEntry base graph Transactions DataView
          foreach (SOLine soLine in Base.Transactions.Select())
          {
              totalQty += soLine.OrderQty;
          }

          return totalQty;
      }

      public int? GetTotalTransactions(PXCache sender)
      {
          return Base.Transactions.Select().Count();
      }
  }
}

总计显示在销售订单屏幕中,在插入/删除交易行和修改订单数量时会更新:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-18
    • 1970-01-01
    • 2020-11-29
    • 2017-11-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-03
    相关资源
    最近更新 更多