Включить кнопку «Сохранить» на экране Acumatica после нажатия кнопки настраиваемого действия - PullRequest
0 голосов
/ 31 марта 2020

Я создал кнопку настраиваемого действия на панели инструментов сетки «Отметить все для заказа на поставку», которая помечает все флажки для столбца сетки «Отметить для заказа на поставку» на экране заказа на продажу (SO301000).

После нажатия на моей пользовательской кнопке кнопка сохранения в левом верхнем углу экрана «Заказ на продажу» не активируется и не может сохранить изменения. Пожалуйста, помогите мне продолжить мою работу

Здесь идет мой график код .....

    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

1 Ответ

1 голос
/ 31 марта 2020

Вы были почти там!

После того, как значение присвоено, вам нужно вызвать метод 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();
     }    
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...