Javascript NetSuite-获取行项目ID
我有这样一个场景:系统a使用行项目创建发票,并将其推入NetSuite。稍后,可能会修改系统A中的发票,其中行项目会被更新或删除并推回到NetSuite中。我们如何知道哪些行项目已被修改或删除?系统A应该发回线路id吗?在这种情况下,我试图找出如何获取行项目Id,但它没有返回值Javascript NetSuite-获取行项目ID,javascript,netsuite,suitescript,Javascript,Netsuite,Suitescript,我有这样一个场景:系统a使用行项目创建发票,并将其推入NetSuite。稍后,可能会修改系统A中的发票,其中行项目会被更新或删除并推回到NetSuite中。我们如何知道哪些行项目已被修改或删除?系统A应该发回线路id吗?在这种情况下,我试图找出如何获取行项目Id,但它没有返回值 for(var x=1;x我们没有发现NetSuite的行号或其他此类字段是识别行项目的可靠方法。每当行被重新排序或修改时,它们似乎会在记录的整个生命周期内发生变化 过去,我们通过添加一个自定义事务列字段(称为Uniq
for(var x=1;x我们没有发现NetSuite的行号
或其他此类字段是识别行项目的可靠方法。每当行被重新排序或修改时,它们似乎会在记录的整个生命周期内发生变化
过去,我们通过添加一个自定义事务列字段(称为Unique ID或Line ID或任何您想要的内容)来实现这一点。然后,NetSuite或外部系统可以为每一行生成UUID并将其存储在自定义列中。只要两个系统都为每一行维护对UUID的引用,您就可以保留它们是同步的。我们没有发现NetSuite的行号
或其他类似字段是识别行项目的可靠方法。只要行被重新排序或修改,它们似乎会在记录的整个生命周期内发生变化
过去,我们通过添加一个自定义事务列字段(称为Unique ID或Line ID或任何您想要的内容)来实现这一点。然后,NetSuite或外部系统可以为每一行生成UUID并将其存储在自定义列中。只要两个系统都为每一行维护对UUID的引用,您就可以保留它们是同步的。使用自定义事务列字段处理NS之间的数据同步以及使用RESTlet与外部系统之间的数据同步是一件好事。但我们有一个内置选项来执行此操作,这是执行此操作的标准方法
ExternalId是可用于记录和行项目的标准列,可用于更新/删除记录上的行项目
此ExternalId无法在NS记录的UI中查看。它可以与存储在外部系统中的recordid一起存储
例如,带有SQL表的外部系统存储一个SalesOrder,该表中有一个id列,SOLineItem表存储SalesOrder的相应lineitem,还包含identity列
现在,记录id必须作为SO的外部id传递给JSON,而lineitems id必须作为JSON中items对象下lineitems的外部id传递给JSON
示例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,它在item sublist中有一个名为isremove的属性。如果该属性设置为true,则必须删除相应的行项目。使用自定义事务列字段的方法对于处理NS之间的数据同步以及使用RESTlet与外部系统之间的数据同步是一件好事。但是我们有一个内置的t选项执行此操作,这是执行此操作的标准方式
ExternalId是可用于记录和行项目的标准列,可用于更新/删除记录上的行项目
此ExternalId无法在NS记录的UI中查看。它可以与存储在外部系统中的recordid一起存储
例如,带有SQL表的外部系统存储一个SalesOrder,该表中有一个id列,SOLineItem表存储SalesOrder的相应lineitem,还包含identity列
现在,记录id必须作为SO的外部id传递给JSON,而lineitems id必须作为JSON中items对象下lineitems的外部id传递给JSON
示例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,它在item子列表中有一个名为isremove的属性。如果该属性设置为true,则必须删除相应的行项目。谢谢-我将采用这种方法。因此,如果发送给NetSuite的原始发票有三个行项目,而后来修改的版本有两个行项目…我可以比较客户如果没有匹配项,我可以假设它已被删除,因此在NetSuite中删除发票上的行项目。但我如何知道行项目的字段是否已更新?您必须手动比较所有感兴趣的字段值。我建议将每行上的值解析为具有相同结构的JS对象e作为JSON中的行对象。然后您可以比较这两个对象。谢谢-我将采用这种方法。因此,如果发送给NetSuite的原始发票有三个行项目,而后来修改的版本有两个行项目…我可以比较自定义ID,如果没有匹配项,我可以假设它已被删除,从而删除inv上的行项目NetSuite中的oice。但我如何知道行项目的字段是否已更新?您必须手动比较所有感兴趣的字段值。我建议将每行上的值解析为JSON中与行对象结构相同的JS对象。然后您可以比较这两个对象。感谢Frederick-将有一个去吧。让我知道结果:)谢谢弗雷德里克-会去的。让我知道结果:)