Update
1 min
The following is an example of update Purchase Order. The QuickBooks Purchase Order Id (id), Vendor Reference Id (VendorRef) and Sync Token (SyncToken) are required to update the Purchase Order (See Purchase Order for the available fields).
Note: You can only update one record at a time.
- When you want to update specific fields of an entity without affecting others, use a sparse update operation by setting sparse= 'true' in your request. This approach is more efficient and less prone to unintended changes than a full update.
// Create a Map to store all the data of a Purchase Order
Map<String, Object> purchaseOrderMap = new Map<String, Object>();
List<Object> lineItemList = new List<Object>();
List<Object> purchaseOrderList = new List<Object>();
// Assign value of Opportunity to QuickBook PurchaseOrder
purchaseOrderMap.put('TxnDate','2024-04-26');
purchaseOrderMap.put('DueDate','2024-05-26');
purchaseOrderMap.put('Id','193');
purchaseOrderMap.put('SyncToken','0');
purchaseOrderMap.put('PurchaseOrderEmail' , new Map<String, Object>{'EmailAddress' =>'[email protected]'});
purchaseOrderMap.put('VendorRef' , new Map<String, Object>{'value' => '83' });
purchaseOrderMap.put('PrivateNote' , 'updated');
// Assign value of OpportunityLineItem to QuickBook PurchaseOrder
Map<String, Object> lineItemMap = new Map<String, Object>();
Map<String, Object> salesLineItemDetailMap = new Map<String, Object>();
lineItemMap.put('Description','Updated');
lineItemMap.put('DetailType','ItemBasedExpenseLineDetail');
lineItemMap.put('Amount',100);
salesLineItemDetailMap.put('ItemRef' , new Map<String, Object>{'value' => '19' });
salesLineItemDetailMap.put('Qty','10');
salesLineItemDetailMap.put('UnitPrice','10');
if(lineItemMap.get('DetailType') == 'SalesItemLineDetail'){
lineItemMap.put('SalesItemLineDetail',salesLineItemDetailMap);
}else if(lineItemMap.get('DetailType') == 'ItemBasedExpenseLineDetail'){
lineItemMap.put('ItemBasedExpenseLineDetail',salesLineItemDetailMap);
}
lineItemList.add(lineItemMap);
// Adding the Line Items to QuickBook PurchaseOrder
purchaseOrderMap.put('Line',lineItemList);
purchaseOrderList.add(purchaseOrderMap);
Map<String, Object> reqJSONMap = new Map<String, Object>();
reqJSONMap.put('PurchaseOrder' , purchaseOrderList);
String reqJSON = JSON.serialize(reqJSONMap);
Map<String, Object> finalReqMap = new Map<String, Object>();
Map<String,Object> reqOptions = new Map<String,Object>();
finalReqMap.put('options' , reqOptions);
finalReqMap.put('version' , '1.0');
finalReqMap.put('action' , 'updatePurchaseOrder');
finalReqMap.put('RequestJSON' , reqJSON);
// Required, if QuickBooks Multi-Org is enabled in Breadwinner.
finalReqMap.put('qbOrgId' , '4620816365285051610');
finalReqMap.put('skipDML' , false);
System.debug('Request ::: ' + finalReqMap);
Map<String, Object> respMap = breadwinner_qbo.BreadwinnerQBAPI.call(finalReqMap);
System.debug('Response ::: ' + respMap);