【问题标题】:NetSuite Create Transfer Order from Sales OrderNetSuite 从销售订单创建转移订单
【发布时间】:2019-01-09 17:25:42
【问题描述】:

我正在尝试编写一个脚本,该脚本将根据销售订单创建新的转移订单,并复制流程中的所有行。我已经编写了脚本,但是我收到了一个错误,即“定义”未定义。这个脚本是从另一个脚本修改的,所以我可能遗漏了一些东西。我是脚本新手,因此我将不胜感激任何帮助,并且可以不受批评(即使我的脚本完全是垃圾)。

/**
***************** ALEM ********************
* After Submit User Event script running on Sales Orders. Generates a TO.

*   Version    Date            Author           Remarks
*   1.0         9 Jan          madams          Initial Create
*/

/**
* @NApiVersion 2.0
* @NScriptType UserEventScript
* @NModuleScope Public
*
*/

define(['N/record',], function (record) {
  function afterSubmit(context) {
    if(context.type == 'delete'){
        log.debug('Exiting script', '...');
        return;
    }
    try{
    var so = record.load({
        type:'salesorder',
        id:context.newRecord.id
    });
    var so_items = so.getLineCount({sublistId:'item'});


    // Create new Transfer Order if Record is On Create.
     var to_record = record.create({
        type:'transferorder',
        isDynamic:true
    });

    to_record.setValue({fieldId:'customform', value:136});
    to_record.setValue({fieldId:'class', value:so.getValue('class')});
    to_record.setValue({fieldId:'transferlocation', 
value:so.getValue('location')});

    setLineItemsOnTO(so_items, to_record, so);

    to_record.setValue({fieldId:'custbody_related_record', 
value:context.newRecord.id});
    so.setValue({fieldId:'custbody_related_record', 
value:to_record.save()});
    so.setValue({fieldId:'orderstatus',value:'B'});
    so.save({ignoreMandatoryFields:true});
    } catch(e){
        log.debug('Error Loading Record' + context.newRecord.id, e);
        return;
    }

}
return {
    afterSubmit: afterSubmit
}

function setLineItemsOnTO(so_items, to_record, so){
     for(var i=0; i<so_items; i++){
        to_record.selectNewLine({sublistId:'item'});
        to_record.setCurrentSublistValue({
            sublistId:'item',
            fieldId:'item',
            value:so.getSublistValue({
                sublistId:'item',
                fieldId:'item',
                line:i
            })
        });
        to_record.setCurrentSublistValue({
            sublistId:'item',
            fieldId:'quantity',
            value:so.getSublistValue({
                sublistId:'item',
                fieldId:'quantity',
                line:i
            })
        });
        to_record.commitLine({sublistId:'item'});
    }
}

});

【问题讨论】:

  • 需要导入define or const define = require(' ')

标签: netsuite suitescript suitescript2.0


【解决方案1】:

NetSuite 是否将脚本作为 SuiteScript 2.0 导入?它可能将脚本导入为 SS1.0。

包含@NApiVersion 2.0 的注释块需要是文件中的第一个注释块。 NetSuite 仅在文件顶部查找该块以识别 SS2.0 脚本。

【讨论】:

  • 谢谢,我把评论区移到了顶部,它确实上传为 2.0。该错误消失了,但现在我收到此错误: {"type":"error.SuiteScriptModuleLoaderError","name":"MODULE_DOES_NOT_EXIST","message":"Module does not exist: /SuiteScripts/user_so_create_to.js", “堆栈”:[]}
  • @M.Adams你检查错误中的路径是否是js文件的正确路径。根据错误消息,它没有找到文件。
  • 是的,我发现另一个线程解决了这个问题。我需要将 .js 添加到我的脚本文件的名称中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多