【发布时间】:2015-05-08 06:06:46
【问题描述】:
我有一个更新客户的 restlet 脚本。在客户中,我想遍历传入的订阅对象,但我只有订阅名称来匹配它们。
有人知道如何访问 Netsuite 中的订阅对象吗?
【问题讨论】:
标签: netsuite subscription
我有一个更新客户的 restlet 脚本。在客户中,我想遍历传入的订阅对象,但我只有订阅名称来匹配它们。
有人知道如何访问 Netsuite 中的订阅对象吗?
【问题讨论】:
标签: netsuite subscription
我收到了来自 Netsuite 的回复,您无法访问 Netsuite 中的订阅对象,因此我不得不编写一些小技巧。我所做的是抓住一个现有的成员并加载它们。该成员应该有一个包含所有活动订阅的数组。
然后我遍历它们并创建一个数组对象以传回包含订阅名称和 internalid。
然后我可以使用该数组循环通过仅使用名称传入的客户订阅并获取匹配的 internalid。
这是我写的代码。如果您认为它可以写得更好,请随时对其进行精简。
var campaigns = new Array();
try {
// NETSUITE DOES NOT EXPOSE THE CAMPAIGN SUBSCRIPTIONS
var filters = new Array();
filters[0] = new nlobjSearchFilter('internalid', null, 'is', 26); //ANON CUSTOMER
var columns = new Array();
columns[0] = new nlobjSearchColumn('internalid');
//columns[1] = new nlobjSearchColumn('campaign', null, null);
results = nlapiSearchRecord('customer', null, filters, columns);
resultsTotal = (results != null) ? results.length : 0;
if (resultsTotal > 0) {
var customerid = results[0].getId();
var customer = nlapiLoadRecord('customer', customerid, {
customform: -2
});
var mystring = JSON.stringify(customer); //CONVERT TO STRING
var data = JSON.parse(mystring); //THEN PARSE TO JSON
for (var node in data) { //FOR EACH NODE IN DATA
for (attr in data[node]) { //FOR EACH ATTRIBUTE IN THE NODE
if (node == "subscriptions") {
for (var node2 in data[node][attr]) { //FOR EACH NODE IN SUBSCRIPTIONS
if (node2 == 'subscription') { //GET SUBSCRIPTION NODES
var campaign = new Object();
var name = '';
var internalid = 0;
for (var node3 in data[node][attr][node2]) {
if (node3 == 'name') {
name = data[node][attr][node2][node3];
} else if (node3 == 'internalid') {
internalid = parseInt(data[node][attr][node2][node3]);
}
}
//nlapiLogExecution('AUDIT', name, internalid); //NAME
campaign[name] = internalid;
if (!campaigns.hasObject()) {
campaigns.push(campaign);
}
//nlapiLogExecution('AUDIT', node2, JSON.stringify(data[node][attr][node2])); //SUBSCRIPTION
}
//nlapiLogExecution('AUDIT', node2, JSON.stringify(data[node][attr][node2]));
}
//nlapiLogExecution('AUDIT', node, JSON.stringify(data[node][attr])); //SUBSCRIPTIONS
}
}
}
nlapiLogExecution('AUDIT', 'CAMPAIGNS', JSON.stringify(campaigns));
}
} catch (e) {
nlapiLogExecution('ERROR', 'Error', 'There was an error. ' + e.name + ' - ' + e.message + '.');
}
return campaigns;
【讨论】: