2015-09-01 3 views
0

Привет, Я пытаюсь расширить график ARPaymentEntry, чтобы я мог сделать некоторые дополнительные вещи, когда пользователь освобождает платеж.Extend ARPaymentEntry Release Action

я продлил paymententry график и копировал действия отпускайте как так

public PXAction<ARPayment> release; 
    [PXUIField(DisplayName = "Release", MapEnableRights = PXCacheRights.Update, MapViewRights = PXCacheRights.Update)] 
    [PXProcessButton] 
    public virtual IEnumerable Release(PXAdapter adapter) 
    { 

     PXCache cache = Base.Document.Cache; 
     List<ARRegister> list = new List<ARRegister>(); 
     foreach (ARPayment ardoc in adapter.Get<ARPayment>()) 
     { 
      if (!(bool)ardoc.Hold) 
      { 
       cache.Update(ardoc); 
       list.Add(ardoc); 
      } 
     } 
     if (list.Count == 0) 
     { 
      throw new PXException(Messages.Document_Status_Invalid); 
     } 
     Base.Save.Press(); 

     PXLongOperation.StartOperation(this, delegate() 
     { 
      if (SyncPaymentToRex(list)) 
      { 
       ARDocumentRelease.ReleaseDoc(list, false); 
      } 
     }); 

     return list; 
    } 

Если вы посмотрите на PXLongOperation у меня есть свой собственный метод, который я хочу, чтобы пройти, прежде чем он идет и выпускает документ.

Теперь это работает для меня, но на экране нет обратной связи с пользователем (например, элемент управления не отключен, значок обработки не отображается во время выполнения операции и т. Д.), А также экран не перезагружается, мне приходится вручную перезагружать страницу перед тем, как я увижу, что платеж был выпущен и т. д.

Могу ли я получить некоторую помощь, чтобы я мог обновлять страницу и реагировать так, как это обычно бывает при выпуске, но с моим кодом там?

ответ

1

Попробуйте это

 public PXAction<ARPayment> release; 


    [PXUIField(DisplayName = "Release", MapEnableRights = PXCacheRights.Update, MapViewRights = PXCacheRights.Update)] 
    [PXProcessButton] 
    [PXOverride] 
    public virtual IEnumerable Release(PXAdapter adapter) 
    { 

     PXCache cache = Base.Document.Cache; 
     List<ARRegister> list = new List<ARRegister>(); 
     foreach (ARPayment ardoc in adapter.Get<ARPayment>()) 
     { 
      if (!(bool)ardoc.Hold) 
      { 
       cache.Update(ardoc); 
       list.Add(ardoc); 
      } 
     } 
     if (list.Count == 0) 
     { 
      throw new PXException(Messages.Document_Status_Invalid); 
     } 
     Base.Save.Press(); 

     PXLongOperation.StartOperation(this.Base, delegate() 
     { 
      if (SyncPaymentToRex(list)) 
      { 
       ARDocumentRelease.ReleaseDoc(list, false); 
      } 
     }); 

     return list; 
    } 
+0

Спасибо, что работали. Я обновляю настраиваемое поле в ARAdjust в моем методе, когда он идет, чтобы освободить его. Я получаю ARADJUST, был обновлен другим процессом, любая идея о том, как я обходила это? – GrayFoxNZ

+0

, пожалуйста, укажите полный код для лучшего понимания. Я думаю, что вы подняли для этого новый случай. – Hybridzz