在单击自定义操作按钮后在Acumatica屏幕中启用保存按钮

问题描述 投票:0回答:1

[我已经在网格工具栏“全部标记为PO”中创建了一个自定义操作按钮,该按钮在销售订单屏幕(SO301000)中标记了网格列“标记为PO”的所有复选框。

单击我的自定义按钮后,“销售订单”屏幕左上角的保存按钮未启用,无法保存更改。请帮助我继续工作]

这里是我的图形代码.....

    public PXAction<SOOrder> markAllForPO;
      [PXButton(CommitChanges = true)]
      [PXUIField(DisplayName = "Mark All For PO", MapEnableRights = PXCacheRights.Select, MapViewRights = PXCacheRights.Select)]

      public virtual IEnumerable MarkAllForPO(PXAdapter adapter)
      {
          foreach (SOLine tran in Base.Transactions.Select())
          {
              if (tran.POCreate == true)
              {
                  tran.POCreate = false;
                  tran.POSource = "";
              }
              else
              {
                  tran.POCreate = true;
                  tran.POSource = INReplenishmentSource.PurchaseToOrder;
              }
          }
          return adapter.Get();
     }
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Following are the supporting images for the question

[1][SO301000=>Sales Order Screen]
[2][DataSource Property of the Action Button from Customization Editor]
[3][Grid Action bar Property of the Action Button]


[1]: https://i.stack.imgur.com/oCAzi.png
[2]: https://i.stack.imgur.com/1JKBX.png
[3]: https://i.stack.imgur.com/Jmvjt.png

customization acumatica
1个回答
1
投票

您快到了!

分配值后,您需要调用Update()方法,以使高速缓存知道记录的新版本。

  public class SOOrderEntry_Extension : PXGraphExtension<SOOrderEntry>
  {    
      public PXAction<SOOrder> markAllForPO;
      [PXButton(CommitChanges = true)]
      [PXUIField(DisplayName = "Mark All For PO", MapEnableRights = PXCacheRights.Select, MapViewRights = PXCacheRights.Select)]

      public virtual IEnumerable MarkAllForPO(PXAdapter adapter)
      {
          foreach (SOLine tran in Base.Transactions.Select())
          {
              if (tran.POCreate == true)
              {
                  tran.POCreate = false;
                  tran.POSource = "";
              }
              else
              {
                  tran.POCreate = true;
                  tran.POSource = INReplenishmentSource.PurchaseToOrder;
              }
              Base.Transactions.Update(tran); //Cache is updated
          }
          return adapter.Get();
     }    
  }
© www.soinside.com 2019 - 2024. All rights reserved.