我有这样一个场景:系统 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)
}
}
最佳答案
使用自定义事务列字段的方法非常适合处理 NS 与使用 RESTlet 的外部系统之间的数据同步。但是我们有一个内置选项来执行此操作,这是执行此操作的标准方法。
ExternalId 是可用于记录和行项目的标准列,可用于更新/删除记录中的行项目。
此 ExternalId 无法在 NS 记录的 UI 中查看。这可以与存储在外部系统中的recordid一起存储。
例如,带有 SQL 表的外部系统存储一个 SalesOrder,它在该表中有一个 id 列,而且 SOLineItem 表存储相应的 salesorder 行项目也包含标识列。
现在,记录 ID 必须作为 SO 的 externalid 传递给 JSON,对于 JSON 中的项目对象,lineitems id 必须作为 lineitems 的 externalid 传递给 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,它在项目子列表中有一个名为 isremove 的属性。如果该设置为真,则必须删除相应的行项目。
关于javascript - NetSuite - 获取订单项 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36431354/