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

NetSuite:如何为已作废/已取消的供应商账单设置事件处理程序

NetSuite供应商账单作废/取消事件监听方案

原来监听DELETE事件的方案不适用,因为用户不会直接删除供应商账单,而是通过修改账单状态标记为作废/取消。正确的做法是监听EDIT事件,对比账单状态的新旧值来触发逻辑。

实现思路

  • 供应商账单的作废操作本质是编辑记录并修改状态字段,因此需要监听EDIT事件
  • 在afterSubmit阶段,对比旧记录和新记录的状态值,确认是否从有效状态变为作废/取消状态
  • 满足条件时执行后续业务逻辑(比如同步到外部系统)

修改后的代码示例

/**
 *@NApiVersion 2.1
 *@NScriptType UserEventScript
 */
define(["N/record", "N/https", "N/file", "./ent_sync_funciones"], (...args) => {
  const [record, https, file, entSync] = args;

  const afterSubmit = (context) => {
    // 仅处理编辑事件
    if (context.type !== context.UserEventType.EDIT) return;

    const oldRecord = context.oldRecord;
    const newRecord = context.newRecord;

    // 获取状态字段值(若使用自定义状态字段,需替换对应的fieldId)
    const oldStatus = oldRecord.getValue({ fieldId: 'status' });
    const newStatus = newRecord.getValue({ fieldId: 'status' });

    // 判断是否从有效状态变为取消状态(状态值需匹配你的NetSuite实例配置)
    // 常见标准状态值:'Open'=未付款, 'Cancelled'=已取消, 'Paid'=已付款
    if (oldStatus === 'Open' && newStatus === 'Cancelled') {
      // 此处执行作废后的业务逻辑,比如调用同步函数
      // entSync.yourSyncFunction(newRecord.id);
    }
  };

  return {
    afterSubmit,
  };
});

注意事项

  • 状态字段ID和枚举值可能因NetSuite配置不同有所差异,建议通过NetSuite自定义字段界面确认准确的fieldId和状态值
  • 若需更可靠的判断,可改用状态字段的内部ID对比(通过getValue时指定value: 'id'参数)
  • 部署脚本时,需确保勾选供应商账单的“编辑”事件触发权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 22:40:30