NetSuite - 使用订单项创建 PO

NetSuite - Creating PO with line items

使用 Restlets 我可以在 NetSuite 中创建任何记录。但是,我们如何创建包含行项目的记录?我知道我们可以使用 getLineItemCount,遍历这些项目并使用 setLineItemValue 来设置行项目。

我不确定的是我们将如何传递此类数据。因此,我们希望外部系统提交一些数据,然后我需要使用我的 Restlet 创建带有订单项的 PO。

理想情况下,我想使用 fire fox Poster 对此进行测试,但不确定如何对数据建模。像这样的东西可以很好地通过传递如下数据使用海报创建普通记录:

{ "subsidiary" : 2, "entity" : 1084,"currency" : 2,"approvalstatus" : 2}

但是我们如何发送行项目数据?

我的 JSon 对象如下所示:

{"subsidiary" : 2, 
"entity" : 1275,
"currency" : 2,
"approvalstatus" : 2,
"item": [{"item" : -3, "taxrate": 6},
            {"item" : -3, "taxrate": 6}]
}

我尝试使用以下代码从嵌套的 jason 对象中获取数据,但效果不佳...itemid 为空

for (var x = 1; x <= jsonobject.item.length; x++)
{
    var itemid = record.getLineItemValue('item', jsonobject.item['item'], x);
    nlapiLogExecution('DEBUG', 'itemid', itemid)
    record.setLineItemValue('item', itemid, x);
}

您可以尝试在 JSON 中使用数组来封装行项目,例如:

{"subsidiary" : 2, 
"entity" : 1084,
"currency" : 2,
"approvalstatus" : 2,
"items": [{name:"item1", price: "100"},
        {name:"item2", price:"200"}]
}

然后您的 RESTlet 代码必须对此进行消化,并调用您提到的相关 NS 函数。

正如 TonyH 所提到的,您的代码有一个错误,您应该首先获取数组索引。此外,您的索引应该从 0 开始,而不是 1,因为您正在遍历 JS 数组,而不是 NetSuite 子列表:

for (var x = 0; x < jsonobject.item.length; x++)
{    
  var itemid = jsonobject.item[x]['item'];
}

如果你想获得税率,同样如此:

for (var x = 0; x < jsonobject.item.length; x++)
{    
  var taxrate = jsonobject.item[x]['taxrate'];
}