Global API
...
Code Examples
Sales Order Flow
Class (Apex)
1min
Apex
Apex Test
// Start Apex Class
public with sharing class createNSSalesOrderRunAsync {
public createNSSalesOrderRunAsync() {
}
@InvocableMethod(label='Create NetSuite Sales Order' description='Create NetSuite Sales Order')
public static List<Response> createNetSuiteSalesOrder(List<Requests> requestList){
List<Response> resToBeReturnedList = new List<Response>();
List<Object> netSuiteSalesOrderList = new List<Object>();
for(Requests req : requestList){
netSuiteSalesOrderList.add(generateNetSuiteSalesOrderMap(req));
}
// Sending request to NetSuite via exposed Global API
Map<String, Object> reqJSONMap = new Map<String, Object>();
reqJSONMap.put('salesOrders' , netSuiteSalesOrderList);
String reqJSON = JSON.serialize(reqJSONMap);
Map<String, Object> finalReqMap = new Map<String, Object>();
finalReqMap.put('version' , '1.0');
finalReqMap.put('action' , 'createSalesOrder');
finalReqMap.put('RequestJSON' , reqJSON);
System.debug('Request ::: ' + finalReqMap);
Map<String, Object> respMap = breadwinner_ns.BreadwinnerNetSuiteAPI.call(finalReqMap);
System.debug('Response ::: ' + respMap);
Map<String,Object> soResponseJSONMap = (Map<String,Object>)JSON.deserializeUntyped((String)respMap.get('responseJSON'));
Response responseReturn = new Response();
if(soResponseJSONMap !=NULL && soResponseJSONMap.containskey('status') && soResponseJSONMap.get('status')!=null){
responseReturn.statusCode = (String)soResponseJSONMap.get('status');
}
if(soResponseJSONMap !=NULL && soResponseJSONMap.containskey('salesOrders') && soResponseJSONMap.get('salesOrders')!=null){
List<Object> soObj = (List<Object>)soResponseJSONMap.get('salesOrders');
Map<String,Object> savedSO = (Map<String,Object>)soObj[0];
responseReturn.recordId = (String)savedSO.get('salesforceID');
}
if(soResponseJSONMap !=NULL && soResponseJSONMap.containskey('errors') && soResponseJSONMap.get('errors')!=null){
responseReturn.error = JSON.serialize((List<Object>)soResponseJSONMap.get('errors'));
}
resToBeReturnedList.add(responseReturn);
//sendReqFuture(JSON.serialize(finalReqMap));
return resToBeReturnedList;
}
/*@future(callout = true)
public static void sendReqFuture(String jsonString){
Map<String, Object> finalReqMap = (Map<String, Object>)JSON.deserializeUntyped(jsonString);
Map<String, Object> respMap = breadwinner_ns.BreadwinnerNetSuiteAPI.call(finalReqMap);
System.debug('Response ::: ' + respMap);
}*/
public class Requests{
@InvocableVariable(label='Class' description='Class')
public String classification; //lookup
@InvocableVariable(label='Created From' description='Created From')
public String createdFrom; //lookup
@InvocableVariable(label='Currency' description='Currency')
public String currencyRecord; //lookup
@InvocableVariable(label='Custom Form' description='Custom Form')
public String customForm; //lookup
@InvocableVariable(label='Department' description='Department')
public String department; //lookup
@InvocableVariable(label='Location' description='Location')
public String location; //lookup
@InvocableVariable(label='Discount Item' description='Discount Item')
public String discountItem; //lookup
@InvocableVariable(label='Discount Rate' description='Discount Rate')
public String discountRate;
@InvocableVariable(label='Discount Total' description='Discount Total')
public Double discountTotal;
@InvocableVariable(label='Entity' description='Entity')
public String entity;//lookup
@InvocableVariable(label='Exchange Rate' description='Exchange Rate')
public Double exchangeRate;
@InvocableVariable(label='External Id' description='External Id')
public String externalId;
@InvocableVariable(label='Handling Cost' description='Handling Cost')
public Double handlingCost;
@InvocableVariable(label='Memo' description='Memo')
public String memo;
@InvocableVariable(label='Other Ref Num Id' description='Other Ref Num Id')
public String otherRefNum;
@InvocableVariable(label='Sales Rep' description='Sales Rep')
public String salesRep;
@InvocableVariable(label='Shipping Cost' description='Shipping Cost')
public Double shippingCost;
@InvocableVariable(label='Status' description='Status')
public String status;
@InvocableVariable(label='Sub Total Cost' description='Sub Total Cost')
public Double subTotal;
@InvocableVariable(label='Subsidiary' description='Subsidiary')
public String subsidiary;
@InvocableVariable(label='Tax Total' description='Tax Total')
public Double taxTotal;
@InvocableVariable(label='Total' description='Total')
public Double total;
@InvocableVariable(label='Tran Date' description='Tran Date')
public DateTime tranDate;
@InvocableVariable(label='Tran Id' description='Tran Id')
public String tranId;
//Sales Order Line items
@InvocableVariable(label='Sales Order Line Items' description='Sales Order Line Items')
public List<SObject> soLines;
@InvocableVariable(label='Line Description' description='Line Description')
public String lineDescription;
@InvocableVariable(label='Line Unit Amount' description='Line Unit Amount')
public String lineUnitAmount;
@InvocableVariable(label='Line Quantity' description='Line Quantity')
public String lineQuantity;
@InvocableVariable(label='Line Department' description='Line Department')
public String lineDepartment; //lookup
@InvocableVariable(label='Line Gross Amt' description='Line Gross Amt')
public String GrossAmt;
@InvocableVariable(label='Line Item' description='Line Item')
public String Items;
@InvocableVariable(label='Line Number' description='Line Number')
public String Line;
@InvocableVariable(label='Line Location' description='Line Location')
public String lineLocation;
@InvocableVariable(label='Line Price' description='Line Price')
public String Price;
@InvocableVariable(label='Line Rate' description='Line Rate')
public String Rate;
@InvocableVariable(label='Line RevRec EndDate' description='Line RevRec EndDate')
public String RevRecEndDate;
@InvocableVariable(label='Line RevRec Schedule' description='Line RevRec Schedule')
public String RevRecSchedule;
@InvocableVariable(label='Line RevRec StartDate' description='Line RevRec StartDate')
public String RevRecStartDate;
@InvocableVariable(label='Line Tax1 Amt' description=' Line Tax1 Amt')
public String Tax1Amt;
@InvocableVariable(label='Line Tax Code' description='Line Tax Code')
public String TaxCode;
@InvocableVariable(label='Line Tax Rate1' description='Line Tax Rate1')
public String TaxRate1;
}
public class Response{
@InvocableVariable(label='status Code' description='Status of the request')
public string statusCode;
@InvocableVariable(label='SF Record Id' description='SF Record Id')
public Id recordId;
@InvocableVariable(label='Error' description='Error')
public string error;
}
public static Map<String, Object> generateNetSuiteSalesOrderMap(Requests req){
Map<String, Object> netSuiteSalesOrderMap = new Map<String, Object>();
// Assign values from the Request to NetSuite Sales Order
If(req.classification != NULL)
netSuiteSalesOrderMap.put('classification', new Map<String, Object>{'internalId'=>req.classification});
If(req.currencyRecord != NULL)
netSuiteSalesOrderMap.put('currencyRecord', new Map<String, Object>{'internalId'=>req.currencyRecord});
If(req.customForm != NULL)
netSuiteSalesOrderMap.put('customForm', new Map<String, Object>{'internalId'=>req.customForm});
If(req.createdFrom != NULL)
netSuiteSalesOrderMap.put('createdFrom', new Map<String, Object>{'internalId'=>req.createdFrom});
If(req.department != null)
netSuiteSalesOrderMap.put('department', new Map<String, Object>{'internalId'=>req.department});
If(req.location != null)
netSuiteSalesOrderMap.put('location', new Map<String, Object>{'internalId'=>req.location});
If(req.discountItem != NULL)
netSuiteSalesOrderMap.put('discountItem', new Map<String, Object>{'internalId'=>req.discountItem});
If(req.discountRate != NULL)
netSuiteSalesOrderMap.put('discountRate',req.discountRate);
If(req.discountTotal != NULL)
netSuiteSalesOrderMap.put('discountTotal',req.discountTotal);
If(req.entity != NULL)
netSuiteSalesOrderMap.put('entity', new Map<String, Object>{'internalId'=>req.entity});
If(req.exchangeRate != NULL)
netSuiteSalesOrderMap.put('exchangeRate',req.exchangeRate);
If(req.externalId != NULL)
netSuiteSalesOrderMap.put('externalId',req.externalId);
If(req.handlingCost != NULL)
netSuiteSalesOrderMap.put('handlingCost',req.handlingCost);
If(req.memo != NULL)
netSuiteSalesOrderMap.put('memo',req.memo);
If(req.otherRefNum != NULL)
netSuiteSalesOrderMap.put('otherRefNum',req.otherRefNum);
If(req.salesRep != NULL)
netSuiteSalesOrderMap.put('salesRep', new Map<String, Object>{'internalId'=>req.salesRep});
If(req.shippingCost != NULL)
netSuiteSalesOrderMap.put('shippingCost',req.shippingCost);
If(req.status != NULL)
netSuiteSalesOrderMap.put('status',req.status);
If(req.subTotal != NULL)
netSuiteSalesOrderMap.put('subTotal',req.subTotal);
If(req.subsidiary != NULL)
netSuiteSalesOrderMap.put('subsidiary', new Map<String, Object>{'internalId'=>req.subsidiary});
If(req.taxTotal != NULL)
netSuiteSalesOrderMap.put('taxTotal',req.taxTotal);
If(req.total != NULL)
netSuiteSalesOrderMap.put('total',req.total);
if(req.tranDate != null){
netSuiteSalesOrderMap.put('tranDate',req.tranDate.getTime()/1000);
}
If(req.tranId != NULL)
netSuiteSalesOrderMap.put('tranId',req.tranId);
if(!(req.soLines).isEmpty()){
// Initializing the Sales Order Line Items
List<Object> lineItemList = new List<Object>();
for(SObject sobj : req.soLines){
Map<String, Object> lineItemMap = new Map<String, Object>();
if(req.lineDescription != null){
lineItemMap.put('description', sobj.get(req.lineDescription));
}
if(req.lineUnitAmount != null){
lineItemMap.put('amount', sobj.get(req.lineUnitAmount));
}
if(req.lineQuantity != null){
lineItemMap.put('quantity', sobj.get(req.lineQuantity));
}
if(req.lineDepartment != null)
lineItemMap.put('department' , new Map<String, Object>{'internalId' => sobj.get(req.lineDepartment)});
if(req.GrossAmt != null)
lineItemMap.put('grossAmt', sobj.get(req.GrossAmt));
if(req.Items != null)
lineItemMap.put('item' , new Map<String, Object>{'internalId' => sobj.get(req.Items)});
if(req.Line != null)
lineItemMap.put('line', sobj.get(req.Line));
if(req.lineLocation != null)
lineItemMap.put('location' , new Map<String, Object>{'internalId' => sobj.get(req.lineLocation)});
if(req.Price != null)
lineItemMap.put('price' , new Map<String, Object>{'internalId' => sobj.get(req.Price)});
if(req.Rate != null)
lineItemMap.put('rate', String.valueOf(sobj.get(req.Rate)));
if(req.RevRecStartDate != null){
DateTime getStartDate = DateTime.valueOf(sobj.get(req.RevRecStartDate));
lineItemMap.put('revRecStartDate', getStartDate.getTime()/1000);
}
if(req.RevRecEndDate != null){
DateTime getEndDate = DateTime.valueOf(sobj.get(req.RevRecEndDate));
lineItemMap.put('revRecEndDate', getEndDate.getTime()/1000);
}
if(req.RevRecSchedule != null)
lineItemMap.put('revRecSchedule', new Map<String, Object>{'internalId' => sobj.get(req.RevRecSchedule)});
if(req.Tax1Amt != null)
lineItemMap.put('tax1Amt', sobj.get(req.Tax1Amt));
if(req.TaxCode != null)
lineItemMap.put('taxCode' , new Map<String, Object>{'internalId' => sobj.get(req.TaxCode)});
if(req.TaxRate1 != null)
lineItemMap.put('taxRate1', sobj.get(req.TaxRate1));
lineItemList.add(lineItemMap);
}
// Adding the Line Items to Sales Order
Map<String, Object> LineItemObjMap = new Map<String, Object>();
LineItemObjMap .put('item',lineItemList);
netSuiteSalesOrderMap.put('itemList',LineItemObjMap );
}
return netSuiteSalesOrderMap;
}
}
Updated 25 Mar 2024
Did this page help you?