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

Item Receipt行级落地成本录入后无可用脚本触发事件的咨询

解决Item Receipt弹窗录入成本后无法触发客户端脚本事件的问题

问题根源

库存详情/落地成本弹窗是独立的子记录界面,和主Item Receipt记录的客户端脚本上下文不共享,所以主记录的fieldChanged或postSourcing事件不会被触发。

解决方案

1. 监听弹窗关闭事件,主动刷新主记录数据

在主Item Receipt的客户端脚本中,监听弹窗关闭事件,重新读取子记录的成本数据并更新主记录的显示字段:

/**
 * @NApiVersion 2.x
 * @NScriptType ClientScript
 */
define(['N/currentRecord'], function(currentRecord) {
    function pageInit(context) {
        var mainRec = context.currentRecord;
        // 监听页面可见性变化,检测弹窗关闭
        document.addEventListener('visibilitychange', function() {
            if (!document.hidden) {
                // 判断是否从目标弹窗返回
                var isInventoryDetail = window.location.pathname.includes('/inventorydetail.nl');
                var isLandedCost = window.location.pathname.includes('/landedcost.nl');
                if (isInventoryDetail || isLandedCost) {
                    // 获取对应的子记录,根据实际字段ID调整
                    var subRec = mainRec.getSubrecord({fieldId: 'inventorydetail'});
                    if (subRec) {
                        // 读取子记录中的落地成本值,替换为实际字段ID
                        var actualLandedCost = subRec.getValue({fieldId: 'custcol_landed_cost_per_line'});
                        // 更新主记录的自定义显示字段
                        mainRec.setValue({
                            fieldId: 'custcol_actual_landed_cost_display',
                            value: actualLandedCost
                        });
                        // 强制刷新字段显示
                        mainRec.refresh();
                    }
                }
            }
        });
    }

    return {
        pageInit: pageInit
    };
});

2. 给子记录附加客户端脚本,主动同步到主记录

如果有权限给库存详情/落地成本子记录添加客户端脚本,可以在子记录的fieldChanged事件中直接更新主记录:

/**
 * @NApiVersion 2.x
 * @NScriptType ClientScript
 */
define(['N/currentRecord'], function(currentRecord) {
    function fieldChanged(context) {
        var subRec = context.currentRecord;
        // 当落地成本字段变更时触发同步
        if (context.fieldId === 'custcol_landed_cost_per_line') {
            // 获取主Item Receipt记录
            var mainRec = subRec.parent;
            if (mainRec) {
                // 同步成本值到主记录的显示字段
                mainRec.setValue({
                    fieldId: 'custcol_actual_landed_cost_display',
                    value: subRec.getValue({fieldId: 'custcol_landed_cost_per_line'})
                });
            }
        }
    }

    return {
        fieldChanged: fieldChanged
    };
});

注意事项

  • 替换代码中的字段ID为你实际使用的NetSuite字段ID,包括子记录和主记录的自定义字段。
  • 监听visibilitychange事件比beforeunload更可靠,能避免部分浏览器兼容性问题。
  • 子记录脚本需要绑定到对应的子记录类型,比如Inventory Detail,确保触发时机正确。
  • 避免无意义的刷新操作,只在确认成本字段变更时执行同步,减少性能消耗。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 20:35:27