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

Acumatica弹窗设置InventoryID后缺失默认确认弹窗异常

解决Acumatica中设置InventoryID后Item Class确认弹窗异常触发的问题

嘿,看起来你遇到的问题是自定义代码设置InventoryID后,Acumatica把新物料误判成了已创建的现有物料,导致修改Item Class时触发了不该出现的确认弹窗。我来帮你梳理下原因和修复方案:

核心原因分析

Acumatica的Item Class确认弹窗,通常是在InventoryItem DAC的ItemClassID字段相关的RowUpdating事件中触发的——逻辑是仅当物料是已存在(已保存到数据库)的记录时,修改Item Class才会弹出确认框。你的自定义代码可能不小心让缓存里的物料记录被标记为「已存在/待更新」状态,而非「新增」状态,导致系统误触发了这个逻辑。

从你提供的代码片段看,PXCache<InventoryItem>.CreateCopy(Base.Item.Current)是关键隐患:复制当前缓存里的记录时,会继承原记录的缓存状态(比如如果原记录是从数据库加载的,复制后的实例可能会被标记为待更新状态)。

修复方案

方案1:创建全新的InventoryItem实例(推荐)

避免复制现有记录,直接构建新实例并插入缓存,确保系统识别为新增物料:

[PXButton]
[PXUIField(DisplayName = "Generate")]
public IEnumerable GenerateInv(PXAdapter adapter)
{
    string inventoryCD = "ACUMATICA";
    // 直接初始化新的物料实例,而非复制现有记录
    InventoryItem newItem = new InventoryItem
    {
        InventoryCD = inventoryCD,
        // 可以在这里设置其他默认字段值,比如ItemStatus等
        ItemStatus = InventoryItemStatus.Active
    };

    // 将新实例插入缓存,并标记为新增状态
    Base.Item.Cache.Insert(newItem);

    return adapter.Get();
}

方案2:如果必须使用CreateCopy,手动重置缓存状态

如果你需要基于现有记录的模板来创建新物料,记得手动重置缓存状态,清除原有Item Class的痕迹:

[PXButton]
[PXUIField(DisplayName = "Generate")]
public IEnumerable GenerateInv(PXAdapter adapter)
{
    string inventoryCD = "ACUMATICA";
    InventoryItem item = PXCache<InventoryItem>.CreateCopy(Base.Item.Current);
    
    // 重置为新增状态,告诉系统这是一条新记录
    Base.Item.Cache.SetStatus(item, PXEntryStatus.Insert);
    // 清除原有Item Class值,避免触发「变更检测」逻辑
    item.ItemClassID = null;
    // 设置新的InventoryID
    item.InventoryCD = inventoryCD;

    // 插入缓存
    Base.Item.Cache.Insert(item);

    return adapter.Get();
}

调试小技巧

可以在代码中添加日志,验证缓存记录的状态是否正确:

// 输出当前记录的缓存状态,确认是Insert而非Update
PXTrace.WriteInformation($"Current Item Status: {Base.Item.Cache.GetStatus(item)}");

这样修改后,系统会正确识别这条物料是新增的,修改Item Class时就不会触发针对现有物料的确认弹窗了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:10:54