Global API
...
Code Examples
Custom Record Type Flow
Class(Create NetSuite CustomObject Record)
1min
Apex
Apex Test
public with sharing class createNSCustomObjectRecordUsingFuture {
public createNSCustomObjectRecordUsingFuture() {
}
@InvocableMethod(label='Create NetSuite Custom Object Record'
description='Create NetSuite Custom Object Record'
category='Breadwinner'
)
public static void createNSCustomObjectRecordUsingFuture(List<Requests> requestList){
createNetSuiteCustomObjectRecord(JSON.serialize(requestList));
}
@future(callout = true)
public static void createNetSuiteCustomObjectRecord(String requestListJSON){
List<Requests> requestList = (List<Requests>)JSON.deserialize(requestListJSON, List<Requests>.class);
List<Object> netSuiteCustomObjectList = new List<Object>();
for(Requests req : requestList){
netSuiteCustomObjectList.add(generateNetSuiteCustomObjectMap(req));
}
// Sending request to NetSuite via exposed Global API
Map<String, Object> reqJSONMap = new Map<String, Object>();
reqJSONMap.put('customObjectRecords' , netSuiteCustomObjectList);
reqJSONMap.put('customObjectId' , '196');
String reqJSON = JSON.serialize(reqJSONMap);
Map<String, Object> finalReqMap = new Map<String, Object>();
finalReqMap.put('version' , '1.0');
finalReqMap.put('action' , 'createCustomObjectRecord');
finalReqMap.put('RequestJSON' , reqJSON);
System.debug('Request ::: ' + finalReqMap);
Map<String, Object> respMap = breadwinner_ns.BreadwinnerNetSuiteAPI.call(finalReqMap);
System.debug('Response ::: ' + respMap);
}
public class Requests{
@InvocableVariable(label='NetSuite Custom Object Record Name'
description='NetSuite Custom Object Record Name'
required=true)
public String name;
@InvocableVariable(label='Is Inactive' description='IS Inactive')
public Boolean isInactive;
@InvocableVariable(label='Parent Field' description='Parent Field')
public String custrecord239_string_text; // This field is the lookup field
//which is passed as internalId of the parent record
@InvocableVariable(label='Quantity' description='Quantity')
public String custrecord241_string_decimal;
@InvocableVariable(label='Cost' description='Cost')
public String custrecord242_string_currency;
@InvocableVariable(label='Is purchased' description='Is Purchased')
public Boolean custrecord243_boolean_boolean;
}
public static Map<String, Object> generateNetSuiteCustomObjectMap(Requests req){
Set<String> standardFieldSet = new set<String>{'name','isInactive','internalId' };
Map<String, Object> netSuiteCustomObjectMap = new Map<String, Object>();
Map<String,Object> reqMap = (Map<String,Object>) JSON.deserializeUntyped(JSON.serialize(req));
List<Object> customObjectCustomFieldList = new List<Object>();
for(String field : reqMap.keySet()){
if(standardFieldSet.contains(field)) netSuiteCustomObjectMap.put(field,reqMap.get(field));
else{
Map<String,Object> customObjectCustomField = new Map<String,Object>();
customObjectCustomField.put('fieldType', field.split('_')[1]);
customObjectCustomField.put('scriptId', field.split('_')[0]);
if(field.split('_')[2]=='currency' || field.split('_')[2]=='number' || field.split('_')[2]=='decimal' || field.split('_')[2]=='integer' ) customObjectCustomField.put('value', String.valueOf(reqMap.get(field)).remove(','));
else customObjectCustomField.put('value', reqMap.get(field));
customObjectCustomFieldList.add(customObjectCustomField);
}
}
netSuiteCustomObjectMap.put('customFieldList', new Map<String,Object>{'customField'=>customObjectCustomFieldList});
return netSuiteCustomObjectMap;
}
}
Updated 15 May 2023
![Doc contributor](https://s3.amazonaws.com/archbee-animals/koala.png)
Did this page help you?