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

如何在Acumatica中按条件阻止销售订单添加新SOLines

在Acumatica中阻止销售订单添加新行的正确实现方法

你的代码无法生效的核心问题是:在SOLine_RowInserting事件中调用Base.Transaction.Delete(row)没有意义——此时行还未被插入到缓存或数据库中,Delete操作无法作用于不存在的行。

正确的做法是在RowInserting事件中取消插入操作,并给用户明确的错误提示,具体实现如下:

protected void SOLine_RowInserting(PXCache cache, PXRowInsertingEventArgs e)
{
    var row = (SOLine)e.Row;
    if (row == null) return;

    // 替换为你的实际业务判断条件
    bool condition = /* 示例:Base.Document.Current.OrderType == "SO" && Base.Document.Current.Status == "C" */;

    if (condition)
    {
        // 取消新行的插入操作
        e.Cancel = true;
        // 在界面上显示错误提示,告知用户阻止原因
        cache.SetError(row, "无法添加新行:订单已关闭,不允许新增行");
    }
}

关键说明

  • e.Cancel = true:直接终止当前行的插入流程,彻底阻止行被添加到缓存和数据库
  • cache.SetError():给当前行添加错误标记,界面会显示红色提示信息,让用户清楚操作被拦截的原因
  • 条件逻辑需根据实际需求编写,比如检查订单状态、已添加行的数量、特定商品限制等

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 08:40:33