扩展 ARPaymentEntry 发布操作

Extend ARPaymentEntry Release Action

您好,我正在尝试扩展 ARPaymentEntry 图,以便在用户释放付款时我可以做一些额外的事情。

我已经扩展了 paymententry 图并像这样复制了 Release 操作

    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,我有一个我自己的方法,我想在它发布文件之前传递。

现在这对我有用,但是屏幕上没有用户反馈(例如控件未禁用,执行操作时没有处理图标出现等)并且屏幕没有重新加载,我必须手动重新加载在我看到付款之前的页面已经发布等

我能得到一些帮助吗?这样我就可以更新页面并像通常在发布时那样做出反应,但我的代码也在那里?

试试这个

     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;
    }