NetSuite - 获取行项目ID

时间:2016-04-05 15:55:01

标签: javascript restlet netsuite suitescript

我有这样的场景:系统A使用订单项创建发票并推送到NetSuite。以后可以修改系统A中的发票,其中更新或删除订单项并将其推回NetSuite。我们如何知道哪些订单项已被修改或删除?系统A应该发回一个行ID吗?在这种情况下,我试图找出如何获取订单项ID,但它没有返回值。



for (var x = 1; x <= itemcount; x++)
	{
	var lineid = nlapiGetLineItemValue('item', 'linenumber', x)
	nlapiLogExecution('DEBUG', 'removing  =  ', lineid);
		if(lineid == 1)
		{
            nlapiLogExecution('DEBUG', 'removing line item 1');
			nlapiRemoveLineItem('item', x)
		}
	}
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:3)

使用自定义事务列字段的方法处理NS与具有RESTlet的外部系统之间的数据同步是一件好事。但我们有一个内置选项来执行此操作,这是执行此操作的标准方法。

ExternalId是可用于记录和lineitems的标准列,其中可用于更新/删除记录上的lineitems。

在NS记录的UI中无法查看此ExternalId。这可以与存储在外部系统中的recordid一起存储。

例如,带有SQL表的外部系统存储SalesOrder并且该表中有一个id列,而且SOLineItem表还存储了salesorder的相应lineitem,它还包含identity列。

现在必须将记录ID作为SO的externalid传递给JSON,并且必须将线条项ID传递给JSON,作为JSON中items对象下的lineitems的externalid。

示例JSON

 {
      "internalid": "",
      "recordtype": "salesorder",
      "entity": "3217",
      "salesrep": "3209",
      "terms": "2",
      "trandate": "6\/16\/2014",
      "orderstatus": "A",
      "otherrefnum": "245852",
      "billaddress":"",
      "shipaddress":"",
      "externalid": "FF160614-SO03", //ID of SO record on SO SQL table
      "item": [
       {
          "isremove":"",
          "internalid": "",
          "item": "486",
          "amount": "50",
          "quantity": "5",
        "externalid": "FF160614-SO03-L1-INV-486" //ID of LineItems record SOLineItem SQL table
        },
        {
          "isremove":"",
          "internalid": "",
          "item": "700",
          "amount": "100",
          "quantity": "1",
          "externalid": "FF160614-SO03-L2-GRP-700A" //ID of LineItems record SOLineItem SQL table
        }
      ]
}

如果您注意到样本JSON,它在项子列表中有一个名为 isremove 的属性。如果设置为true,则必须删除相应的订单项。

答案 1 :(得分:2)

我们未发现任何NetSuite linenumber或其他此类字段是识别订单项的可靠方式。无论何时对线进行重新排序或修改,它们似乎都会在记录的整个生命周期中发生变化。

我们过去通过添加名为唯一ID 行ID 之类的自定义事务列字段或任何您想要的内容来完成此操作。然后,NetSuite或外部系统可以为每一行生成UUID并将其存储在自定义列中。只要两个系统都保持对每一行的UUID的引用,就可以使它们保持同步。