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

NetSuite beforeSubmit用户事件脚本修改发票税值未保存问题咨询

问题定位及修复方案

核心问题点

  • 脚本注解配置错误:@appliedtorecord 标注为 customer,代表脚本仅对客户记录生效,你需要修改发票记录,应该改为 invoice,否则脚本根本不会在发票创建/编辑的事件中触发。
  • setSublistValue 传参错误:代码末尾有一行 currentRecord.setSublistValue('item', 'taxrate1', i, 10.0);,NetSuite 2.x版本的sublist操作方法不支持按该顺序传参,仅支持传入配置对象,错误的传参导致赋值失败,同时该行在判断逻辑外,会覆盖你之前条件判断里的赋值结果。
  • 税率字段重复赋值逻辑错误:taxcode 关联了对应的税率规则,设置enableSourcing: true时,修改taxcode后系统会自动带出对应税率,手动修改只读属性taxrate1会被系统覆盖,无需单独赋值。
  • 冗余判断无效:代码中if (sublistName === 'item')属于无效判断,sublistName是你提前写死的固定值item,该判断永远为真,不影响功能但冗余。

修正后的代码

define(['N/log'], function (log) {
    /**
     * 发票税费修改用户事件脚本
     *
     * @NApiVersion 2.x
     * @NModuleScope SameAccount
     * @NScriptType UserEventScript
     * @appliedtorecord invoice
     */
    function beforeSubmit(context) {
        try {
            var currentRecord = context.newRecord;
            log.debug({
                title: 'currentRecord', 
                details: currentRecord
            });
            var sublistName = "item";
            var subsidiary_id = currentRecord.getValue({fieldId:'subsidiary'});
            var inv_type = currentRecord.getText({fieldId: 'custbody3'});
            log.debug({title: 'inv_type', details: inv_type});
            log.debug({title: 'subsidiary_id', details: subsidiary_id});
              
            if (subsidiary_id == 6 && inv_type == "Services") {
                var lines = currentRecord.getLineCount({sublistId: 'item'});
                log.debug({title:'lines',details:lines});     
                for (var i = 0; i < lines; i++) {
                    var descriptionValue = currentRecord.getSublistValue({
                        sublistId: sublistName,
                        fieldId: "description",
                        line: i
                    });
                    log.debug({title: 'descriptionValue', details: descriptionValue});
                    if (/JP/ig.test(descriptionValue)) {
                        currentRecord.setSublistValue({
                            sublistId: 'item',
                            fieldId: 'taxcode',
                            value: 6880,
                            ignoreFieldChange: false,
                            enableSourcing: true,
                            line: i
                        });
                    }
                }
            }   
        } catch (e) {
            log.error('Error in beforeSubmit', e);
        }
    }
    return {
        beforeSubmit: beforeSubmit
    };
});

额外检查项

  • 脚本部署时请确认上下文过滤已添加你创建发票使用的API类型(SuiteTalk/RESTlet等),避免API触发的操作不执行脚本。
  • 确认内部ID为6880的税码对subsidiary 6可用,且对应税率为10%。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 06:39:03