Javascript 在Netsuite suitescript中将项目添加到销售订单

Javascript 在Netsuite suitescript中将项目添加到销售订单,javascript,netsuite,Javascript,Netsuite,我试图找出一个新的销售订单背后的代码,该订单包含一个名为“修理”的项目,并在用户提交之前添加第二个名为“修理成本”的项目。我有点迷路了,我欢迎任何能给我的帮助。我希望此脚本使用Javascript,并将其附加到Netsuite中的销售订单表单中以运行。您需要做的第一件事是获取项目“修复”和“修复成本”的内部id 在本例中,假设修理的内部id=100,修理成本=200 function recalc(type) { if(type == 'item') { var

我试图找出一个新的销售订单背后的代码,该订单包含一个名为“修理”的项目,并在用户提交之前添加第二个名为“修理成本”的项目。我有点迷路了,我欢迎任何能给我的帮助。我希望此脚本使用Javascript,并将其附加到Netsuite中的销售订单表单中以运行。

您需要做的第一件事是获取项目“修复”和“修复成本”的内部id

在本例中,假设修理的内部id=100,修理成本=200

function recalc(type)
{
    if(type == 'item')
    {
        var itemId = nlapiGetCurrentLineItemValue('item', 'item'); //Get the Item ID
        if(itemId == 100) //Repair Cost
        {
                //Insert item
                nlapiSelectNewLineItem('item');
                nlapiSetCurrentLineItemValue('item', 'item', 200); //Repair Cost
                nlapiSetCurrentLineItemValue('item', 'quantity', 1);
                nlapiSetCurrentLineItemValue('item', 'amount', '0.00');
                nlapiCommitLineItem('item');
        }
    }
    return true;
}
以下是密码:

function afterSubmit(type)
{
    if(type == 'create' || type == 'edit')
    {
        var record = nlapiLoadRecord(nlapiGetRecordType(), nlapiGetRecordId()); //Load the record

        //Loop to all sublist item
        var count = record.getLineItemCount('item');
        for(var i = 1; i <= count; i++)
        {
            var item = record.getLineItemValue('item', 'item', i); //This will return the internal id of the item
            if(item == 100) //Item is equal to 100; insert one item
            {
                record.insertLineItem('item', i);
                record.setLineItemValue('item', 'item', i, 200); //Repair Cost internal id
                record.setLineItemValue('item', 'quantity', i, 1); //You should put some quantity; depending on your account setup all required fields should be set here.
            }
        }

        //Submit the changes
        nlapiSubmitRecord(record, true);
    }
}
提交后的函数(类型)
{
如果(类型=='create'| |类型=='edit')
{
var record=nlapioadrecord(nlapiGetRecordType(),nlapiGetRecordId());//加载记录
//循环到所有子列表项
var count=record.getLineItemCount('item');

对于(var i=1;i,这里有一个样本溶液:

我们仍然假设项目内部ID为Repair=100,Repair Cost=200

function recalc(type)
{
    if(type == 'item')
    {
        var itemId = nlapiGetCurrentLineItemValue('item', 'item'); //Get the Item ID
        if(itemId == 100) //Repair Cost
        {
                //Insert item
                nlapiSelectNewLineItem('item');
                nlapiSetCurrentLineItemValue('item', 'item', 200); //Repair Cost
                nlapiSetCurrentLineItemValue('item', 'quantity', 1);
                nlapiSetCurrentLineItemValue('item', 'amount', '0.00');
                nlapiCommitLineItem('item');
        }
    }
    return true;
}
将其部署为客户端代码,并确保该函数为Recalc


要了解有关客户端脚本的更多信息:

因此,我将此脚本放在Netsuite帐户中,并将其添加到销售订单表单中,结果出现错误:此页面上运行的脚本中出现意外错误。AddItemStorePairso.js(fieldChange)customform.JS_EXCEPTION ReferenceError additemtorepairSO未定义。有什么想法吗?我想知道这是否与任何必填字段有关。我将处理必填字段并回复。您是如何部署的?这应该作为销售订单记录中的用户事件脚本部署的。我知道您希望在客户端执行此操作。添加新行每当添加特定sku时,都会使用指定sku的项。我显示的代码用于用户事件脚本。我将使用客户端代码与您联系。“additemtorepairSO.js(fieldChange)customform.js\u异常引用错误additemtorepairSO”-关于此错误,这意味着您的函数未在部署中定义。我非常感谢您在这方面所做的工作,但我收到了此错误:此页面上运行的脚本中发生了意外错误。recalc(recalc)customform意外_错误(id=he7iqv95g6hfigxhujc7)出现意外错误。请单击以通知支持人员并提供您的联系信息。我已在form.Nevermind上的recalc函数中列出了此信息。该错误是由于我添加了额外的LineItemValue代码。一切正常。谢谢!