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

如何在用户事件脚本中显示警告或弹窗?行项目金额验证咨询

解决方案

服务器端脚本无法直接触发客户端弹窗,但可以通过拦截保存请求、校验行项目金额、阻止保存并返回错误提示的方式,让前端展示警告信息,完全满足你阻止负金额发票保存的需求。

通用后端实现思路

  • 拦截发票保存的API请求,在服务器端接收数据后执行校验
  • 遍历所有行项目,检查是否存在金额小于0的条目
  • 若检测到负金额,返回400状态码及明确错误信息,阻止后续保存逻辑
  • 前端捕获错误响应后,通过自身逻辑弹出警告弹窗(如alert()或UI组件)

示例代码(Node.js/Express)

// 发票保存接口
app.post('/api/invoices/save', (req, res) => {
  const invoice = req.body;
  // 检查行项目是否有负金额
  const hasNegative = invoice.lineItems.some(item => item.amount < 0);

  if (hasNegative) {
    return res.status(400).json({
      success: false,
      message: '发票行项目存在负金额,无法保存'
    });
  }

  // 校验通过,执行数据库存储
  // saveInvoice(invoice);
  res.status(200).json({ success: true, message: '保存成功' });
});

ERP平台专属实现(以NetSuite SuiteScript为例)

如果是在NetSuite这类ERP系统中开发,可利用beforeSubmit服务器端事件直接拦截保存操作,系统会自动在前端弹出警告:

/**
 * @NApiVersion 2.x
 * @NScriptType UserEventScript
 */
define(['N/error'], error => {
  function beforeSubmit(context) {
    const invoice = context.newRecord;
    const lineCount = invoice.getLineCount({ sublistId: 'item' });

    for (let i = 0; i < lineCount; i++) {
      const amount = invoice.getSublistValue({
        sublistId: 'item',
        fieldId: 'amount',
        line: i
      });

      if (amount < 0) {
        // 抛出错误,系统自动阻止保存并展示警告
        throw error.create({
          name: 'NEGATIVE_AMOUNT',
          message: '发票行项目包含负金额,无法保存',
          notifyOff: false
        });
      }
    }
  }

  return { beforeSubmit };
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 18:47:18