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

如何通过脚本访问并编辑客户单价(Customer Unit Price)

在NetSuite中访问并编辑客户Item Pricing子列表的单价字段

1. 脚本访问与编辑方法

该单价字段属于客户记录的itempricing子列表,而非Item记录,因此必须通过加载客户记录来操作。以下是SuiteScript 2.x的实现示例:

服务器端脚本示例

/**
 * @NApiVersion 2.x
 * @NScriptType UserEventScript
 */
define(['N/record'], function(record) {
    function afterSubmit(context) {
        // 加载目标客户记录
        const customerRecord = record.load({
            type: record.Type.CUSTOMER,
            id: 12345, // 替换为实际客户ID
            isDynamic: false
        });

        // 获取子列表行数
        const lineCount = customerRecord.getLineCount({sublistId: 'itempricing'});

        // 遍历子列表定位目标商品行
        for (let i = 0; i < lineCount; i++) {
            const itemId = customerRecord.getSublistValue({
                sublistId: 'itempricing',
                fieldId: 'item',
                line: i
            });

            if (itemId === 67890) { // 替换为目标商品ID
                // 获取当前单价
                const currentPrice = customerRecord.getSublistValue({
                    sublistId: 'itempricing',
                    fieldId: 'price',
                    line: i
                });
                log.debug('当前客户专属单价', currentPrice);

                // 修改并保存单价
                customerRecord.setSublistValue({
                    sublistId: 'itempricing',
                    fieldId: 'price',
                    line: i,
                    value: 99.99 // 替换为新单价
                });
                customerRecord.save();
                break;
            }
        }
    }
    return { afterSubmit: afterSubmit };
});

客户端脚本示例(客户页面内操作)

/**
 * @NApiVersion 2.x
 * @NScriptType ClientScript
 */
define(['N/currentRecord'], function(currentRecord) {
    function fieldChanged(context) {
        const currRec = currentRecord.get();
        const lineCount = currRec.getLineCount({sublistId: 'itempricing'});

        // 定位目标行修改单价
        for (let i = 0; i < lineCount; i++) {
            const itemId = currRec.getSublistValue({
                sublistId: 'itempricing',
                fieldId: 'item',
                line: i
            });
            if (itemId === 67890) {
                currRec.setSublistValue({
                    sublistId: 'itempricing',
                    fieldId: 'price',
                    line: i,
                    value: 89.99
                });
                break;
            }
        }
    }
    return { fieldChanged: fieldChanged };
});

2. 单价字段的生成逻辑

这个单价是客户专属的自定义定价,仅关联客户记录,不会存储在Item记录中,生成时机包括:

  • 手动在客户记录的Financial子标签→Item Pricing子列表中添加并录入
  • 通过NetSuite的价格规则(Price Rule)自动生成:当配置了针对该客户/客户组的价格规则时,系统会自动在子列表中生成对应商品的单价
  • 通过批量更新、CSV导入等工具批量设置客户的商品定价

3. Record Browser相关说明

你在Record Browser中看到的单价信息,归属于Customer记录的itempricing子列表字段,而非Item记录的属性。因此在Item记录的Record Browser中无法找到对应内容——该数据是和客户绑定的,不属于商品本身的基础信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 12:22:19