You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Acumatica版本升级后在Process Invoice and Memos(SO505000)页面释放单据时获取CustomerID与CuryOrigDocAmt的方法咨询

解决Acumatica批量释放发票时获取单据信息的问题

在Acumatica Build 21.201.0086版本中,当使用**Process Invoice and Memos(SO505000)**页面批量释放发票时,Base.Document.Current为空是预期的设计行为——因为批量处理场景下系统不会将当前处理的单据赋值给Document.Current(这一属性仅在单个单据页面如SO303000中生效)。

要获取批量处理中每个单据的CustomerID和CuryOrigDocAmt,你需要从PXAdapter的Records集合中提取当前待处理的发票记录,具体修改代码如下:

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) {
     // 遍历所有待释放的发票记录
     foreach (ARInvoice invoice in adapter.Get<ARInvoice>())
     {
         if (invoice.CustomerID != null && invoice.CuryOrigDocAmt != null)
         {
             setCreditLimit(invoice.CustomerID.Value, invoice.CuryOrigDocAmt.Value);
         }
     }
     return baseMethod(adapter);
 }
 }
}

关键说明:

  • adapter.Get<ARInvoice>()会返回SO505000页面中选中的所有待释放发票记录,遍历集合即可逐个处理每个单据的信息。
  • 这种方式同时兼容单个单据释放(SO303000)和批量释放场景,因为在单个页面时,adapter的Records集合只会包含当前打开的那一条记录。

这样修改后,无论你是从SO303000单独释放,还是从SO505000批量处理,都能正确获取到单据的CustomerID和CuryOrigDocAmt来执行你的setCreditLimit逻辑。

内容的提问来源于stack exchange,提问作者JvD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.01 03:02:30