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
相关产品推荐
相关产品推荐

