在处理发票和备忘录处理按钮期间收集图形数据

Collecting Graph data during Process invoice and memos process button

我目前正在将代码从 Build 19.213.0029 升级到 Build 21.201.0086。

我在开具发票时有代码 运行。

namespace JVDnamespace 
{
    public class JVDSOInvoiceEntry_Extension : PXGraphExtension<SOInvoiceEntry>
    {
        public static bool IsActive() => true;

        #region Event Handlers
        public delegate IEnumerable ReleaseDelegate(PXAdapter adapter);
        [PXOverride]
        public IEnumerable Release(PXAdapter adapter, ReleaseDelegate baseMethod)
        {

            if ( !(Base.Document.Current is null) && !(Base.Document.Current.CuryOrigDocAmt is null))
            {
                setCreditLimit(Base.Document.Current.CustomerID.Value, Base.Document.Current.CuryOrigDocAmt.Value);
            }

            return baseMethod(adapter); ;
        }

我使用 Process Invoice and Memos(SO505000) 来 process/Release 我所有的文件,然后上面的代码会为我做一个计算。

问题出在新版本的 Acumatica(Build 21.201.0086)Base.Document.current 为空,我可以找到一种方法来查看当前正在处理的文档。如果您从发票 (SO303000) 中释放文档,则情况并非如此,然后填充当前数据。

问题: 在页面 'Process Invoice and Memos(SO505000)'.

的处理(发布)期间,是否有新方法或其他方法获取当前 CustomerID 和 CuryOrigDocAmt

您可以使用 adpater.Get<ARInvoice>() 获取正在发布的发票列表,然后针对每张发票执行您需要的任何逻辑。如果您从输入页面发布,这应该在两个页面上都有效,它将只是该发票的列表。

public class SOInvoiceEntryExt : PXGraphExtension<SOInvoiceEntry>
{
    public static bool IsActive() => true;

    public delegate IEnumerable ReleaseDelegate(PXAdapter adapter);
    [PXOverride]
    public IEnumerable Release(PXAdapter adapter, ReleaseDelegate baseMethod)
    {
        foreach(ARInvoice inv in adapter.Get<ARInvoice>())
        {
            // Exceute logic here per invoice
        }
        return baseMethod(adapter); ;
    }
}