Create
2 min
In Xero, the "Invoice" object includes Invoices, Bills, and Credit Notes. So, when creating the Invoice, set the field "Type" with the value "ACCREC".
// Create a Map to store all the data of a Invoice
List<Object> invoiceList = new List<Object>();
Map<String, Object> invoiceMap = new Map<String, Object>();
invoiceMap.put('Type', 'ACCREC');
invoiceMap.put('DateString', '2021-11-11T00:00:00');
invoiceMap.put('DueDateString', '2021-12-06T00:00:00');
invoiceMap.put('LineAmountTypes', 'Exclusive');
invoiceMap.put('Status', 'DRAFT');
invoiceMap.put('emailInvoice', false);
// Initializing the Contact
Map<String, Object> contactMap = new Map<String, Object>();
contactMap.put('ContactID', 'c84ebb15-0a8d-4145-933f-203e68d014a0');
invoiceMap.put('Contact', contactMap);
// Initializing the Invoice Line Items
List<Object> lineItemList = new List<Object>();
Map<String, Object> lineItemMap = new Map<String, Object>();
lineItemMap.put('Description', 'Line Item Description');
lineItemMap.put('UnitAmount', 100);
lineItemMap.put('Quantity', 10);
lineItemMap.put('AccountCode', '200');
lineItemList.add(lineItemMap);
// Adding the Line Items to Invoice
invoiceMap.put('LineItems', lineItemList);
invoiceList.add(invoiceMap);
// Initializing the RequestJSON Data to be passed.
Map<String, Object> reqJSONMap = new Map<String, Object>();
reqJSONMap.put('invoices', invoiceList);
String reqJSON = JSON.serialize(reqJSONMap);
Map<String, Object> finalReqMap = new Map<String, Object>();
Map<String, Object> reqOptions = new Map<String, Object>();
finalReqMap.put('queryParameters', reqOptions);
finalReqMap.put('version', '1.0');
finalReqMap.put('action', 'createInvoice');
finalReqMap.put('RequestJSON', reqJSON);
finalReqMap.put('skipDML', false);
//Required, if Xero Multi-Org is enabled in Breadwinner.
finalReqMap.put('xeroOrgId', '!aa00TM');
System.debug('Request ::: ' + finalReqMap);
// Placing a request to Breadwinner Global API
Map<String, Object> respMap = bread_winner.breadwinnerXeroAPI.call(finalReqMap);
System.debug('Response ::: ' + respMap);Create and Send
In order to send a Xero Invoice via email after successful creation, use the 'emailInvoice' parameter in the 'requestJSON' section of the code provided for creating an Invoice. Simply pass it as shown in the create request example above.
invoiceMap.put('emailInvoice', true);