2015-05-08 54 views
0

我有一個更新客戶的restlet腳本。在客戶中,我想循環傳入的訂閱對象,但我只有訂閱名稱才能匹配它們。Netsuite訂閱Restlet

有誰知道如何訪問Netsuite中的訂閱對象?

回答

1

我得到了Netsuite的回覆,你無法訪問Netsuite中的訂閱對象,所以我不得不寫一點點黑客。我所做的是抓住現有成員並加載它們。成員應該擁有所有活動訂閱的數組。

然後我遍歷它們並創建一個包含訂閱名稱和內部id的數組對象。

然後,我可以使用該數組遍歷僅傳入名稱的客戶訂閱並獲取匹配的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;