【问题标题】:Extend ARPaymentEntry Release Action扩展 ARPaymentEntry 释放操作
【发布时间】:2015-09-02 09:47:12
【问题描述】:

您好,我正在尝试扩展 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,我有一个我自己的方法,我想在它释放文档之前传递它。

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

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

【问题讨论】:

    标签: acumatica


    【解决方案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;
        }
    

    【讨论】:

    • 感谢工作。我在我的方法中更新了 ARAdjust 中的一个自定义字段,当它发布它时,我得到一个 ARADJUST 已被另一个进程更新,知道我如何解决这个问题吗?
    • 请给出完整代码以便更好地理解。我想你已经为此提出了一个新的案例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-18
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多