Global API
Code Examples
Invoice Flow (Apex)
1min
// start apex class public with sharing class creatensinvoicerunasync { public creatensinvoicerunasync() { } @invocablemethod(label='create netsuite invoice' description='create netsuite invoice') public static list\<response> createnetsuiteinvoice(list\<requests> requestlist){ list\<response> restobereturnedlist = new list\<response>(); list\<object> netsuiteinvoicelist = new list\<object>(); for(requests req requestlist){ netsuiteinvoicelist add(generatenetsuiteinvoicemap(req)); } // sending request to netsuite via exposed global api map\<string, object> reqjsonmap = new map\<string, object>(); reqjsonmap put('invoices' , netsuiteinvoicelist); string reqjson = json serialize(reqjsonmap); map\<string, object> finalreqmap = new map\<string, object>(); finalreqmap put('version' , '1 0'); finalreqmap put('action' , 'createinvoice'); finalreqmap put('requestjson' , reqjson); system debug('request ' + finalreqmap); map\<string, object> respmap = breadwinner ns breadwinnernetsuiteapi call(finalreqmap); system debug('response ' + respmap); return restobereturnedlist; } 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='due date' description='due date') public datetime duedate; @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='location' description='location') public string location; //lookup @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; //invoice line items @invocablevariable(label='invoice line items' description='invoice line items') public list\<sobject> invlines; @invocablevariable(label='line amount' description='line amount') public string lineamount; @invocablevariable(label='line class' description='line class') public string lineclassification; @invocablevariable(label='line department' description='line department') public string linedepartment; @invocablevariable(label='line description' description='line description') public string linedescription; @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 quantity' description='line quantity') public string linequantity; @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> generatenetsuiteinvoicemap(requests req){ map\<string, object> netsuiteinvoicemap = new map\<string, object>(); // assign values from the request to netsuite invoice if(req classification != null) netsuiteinvoicemap put('classification', new map\<string, object>{'internalid'=>req classification}); if(req currencyrecord != null) netsuiteinvoicemap put('currencyrecord', new map\<string, object>{'internalid'=>req currencyrecord}); if(req customform != null) netsuiteinvoicemap put('customform', new map\<string, object>{'internalid'=>req customform}); if(req createdfrom != null) netsuiteinvoicemap put('createdfrom', new map\<string, object>{'internalid'=>req createdfrom}); if(req department != null) netsuiteinvoicemap put('department', new map\<string, object>{'internalid'=>req department}); if(req duedate != null) { netsuiteinvoicemap put('duedate', req duedate gettime()/1000); } if(req discountitem != null) netsuiteinvoicemap put('discountitem', new map\<string, object>{'internalid'=>req discountitem}); if(req discountrate != null) netsuiteinvoicemap put('discountrate',req discountrate); if(req discounttotal != null) netsuiteinvoicemap put('discounttotal',req discounttotal); if(req entity != null) netsuiteinvoicemap put('entity', new map\<string, object>{'internalid'=>req entity}); if(req exchangerate != null) netsuiteinvoicemap put('exchangerate',req exchangerate); if(req externalid != null) netsuiteinvoicemap put('externalid',req externalid); if(req handlingcost != null) netsuiteinvoicemap put('handlingcost',req handlingcost); if(req location != null) netsuiteinvoicemap put('location', new map\<string, object>{'internalid'=>req location}); if(req memo != null) netsuiteinvoicemap put('memo',req memo); if(req otherrefnum != null) netsuiteinvoicemap put('otherrefnum',req otherrefnum); if(req salesrep != null) netsuiteinvoicemap put('salesrep', new map\<string, object>{'internalid'=>req salesrep}); if(req shippingcost != null) netsuiteinvoicemap put('shippingcost',req shippingcost); if(req status != null) netsuiteinvoicemap put('status',req status); if(req subtotal != null) netsuiteinvoicemap put('subtotal',req subtotal); if(req subsidiary != null) netsuiteinvoicemap put('subsidiary', new map\<string, object>{'internalid'=>req subsidiary}); if(req taxtotal != null) netsuiteinvoicemap put('taxtotal',req taxtotal); if(req total != null) netsuiteinvoicemap put('total',req total); if(req trandate != null){ netsuiteinvoicemap put('trandate',req trandate gettime()/1000); } if(req tranid != null) netsuiteinvoicemap put('tranid',req tranid); if(!(req invlines) isempty()){ // initializing the invoice line items list\<object> lineitemlist = new list\<object>(); for(sobject sobj req invlines){ map\<string, object> lineitemmap = new map\<string, object>(); if(req lineamount != null) lineitemmap put('amount', sobj get(req lineamount)); if(req lineclassification != null) lineitemmap put('classification' , new map\<string, object>{'internalid' => sobj get(req lineclassification)}); if(req linedepartment != null) lineitemmap put('department' , new map\<string, object>{'internalid' => sobj get(req linedepartment)}); if(req linedescription != null) lineitemmap put('description', sobj get(req linedescription)); 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 linequantity != null) lineitemmap put('quantity', sobj get(req linequantity)); 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 invoice map\<string, object> lineitemobjmap = new map\<string, object>(); lineitemobjmap put('item',lineitemlist); netsuiteinvoicemap put('itemlist',lineitemobjmap); } return netsuiteinvoicemap; } }