Chilkat HOME Android™ Classic ASP C C++ C# Mono C# .NET Core C# C# UWP/WinRT DataFlex Delphi ActiveX Delphi DLL Visual FoxPro Java Lianja MFC Objective-C Perl PHP ActiveX PHP Extension PowerBuilder PowerShell PureBasic CkPython Chilkat2-Python Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ Visual Basic 6.0 VB.NET VB.NET UWP/WinRT VBScript Xojo Plugin Node.js Excel Go
(Excel) Quickbooks Update an InvoiceDemonstrates how to update an invoice using the Quickbooks REST API. For more information, see https://www.developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/invoice#full-update-an-invoice
' This example requires the Chilkat API to have been previously unlocked. ' See Global Unlock Sample for sample code. ' First get our previously obtained OAuth2 access token. Dim jsonToken As Chilkat.JsonObject Set jsonToken = Chilkat.NewJsonObject success = jsonToken.LoadFile("qa_data/tokens/qb-access-token.json") Dim rest As Chilkat.Rest Set rest = Chilkat.NewRest ' Connect to the REST server. bTls = True port = 443 bAutoReconnect = True success = rest.Connect("sandbox-quickbooks.api.intuit.com",port,bTls,bAutoReconnect) Dim sbAuth As Chilkat.StringBuilder Set sbAuth = Chilkat.NewStringBuilder Dim success As Boolean success = sbAuth.Append("Bearer ") success = sbAuth.Append(jsonToken.StringOf("access_token")) rest.Authorization = sbAuth.GetAsString() ' -------------------------------------------------------------------------- ' Note: The above code to setup the initial REST connection ' can be done once. After connecting, any number of REST calls can be made. ' If the connection is lost, the next REST method call will automatically ' reconnect if needed. ' -------------------------------------------------------------------------- ' Create the following JSON: ' { ' "DocNumber": "1070", ' "SyncToken": "0", ' "domain": "QBO", ' "Balance": 150.0, ' "BillAddr": { ' "City": "Bayshore", ' "Line1": "4581 Finch St.", ' "PostalCode": "94326", ' "Lat": "INVALID", ' "Long": "INVALID", ' "CountrySubDivisionCode": "CA", ' "Id": "2" ' }, ' "TxnDate": "2015-07-24", ' "TotalAmt": 150.0, ' "CustomerRef": { ' "name": "Amy's Bird Sanctuary", ' "value": "1" ' }, ' "CustomerMemo": { ' "value": "Added customer memo." ' }, ' "ShipAddr": { ' "City": "Bayshore", ' "Line1": "4581 Finch St.", ' "PostalCode": "94326", ' "Lat": "INVALID", ' "Long": "INVALID", ' "CountrySubDivisionCode": "CA", ' "Id": "109" ' }, ' "LinkedTxn": [ ' ], ' "DueDate": "2015-08-23", ' "PrintStatus": "NeedToPrint", ' "EmailStatus": "NotSet", ' "sparse": false, ' "Line": [ ' { ' "LineNum": 1, ' "Amount": 150.0, ' "SalesItemLineDetail": { ' "TaxCodeRef": { ' "value": "NON" ' }, ' "ItemRef": { ' "name": "Services", ' "value": "1" ' } ' }, ' "Id": "1", ' "DetailType": "SalesItemLineDetail" ' }, ' { ' "DetailType": "SubTotalLineDetail", ' "Amount": 150.0, ' "SubTotalLineDetail": {} ' } ' ], ' "ApplyTaxAfterDiscount": false, ' "CustomField": [ ' { ' "DefinitionId": "1", ' "Type": "StringType", ' "Name": "Crew #" ' } ' ], ' "Id": "239", ' "TxnTaxDetail": { ' "TotalTax": 0 ' }, ' "MetaData": { ' "CreateTime": "2015-07-24T10:35:08-07:00", ' "LastUpdatedTime": "2015-07-24T10:35:08-07:00" ' } ' } ' ' Use the this online tool to generate the code from sample JSON: ' Generate Code to Create JSON Dim jsonReq As Chilkat.JsonObject Set jsonReq = Chilkat.NewJsonObject success = jsonReq.UpdateString("DocNumber","1070") success = jsonReq.UpdateString("SyncToken","0") success = jsonReq.UpdateString("domain","QBO") success = jsonReq.UpdateNumber("Balance","150.0") success = jsonReq.UpdateString("BillAddr.City","Bayshore") success = jsonReq.UpdateString("BillAddr.Line1","4581 Finch St.") success = jsonReq.UpdateString("BillAddr.PostalCode","94326") success = jsonReq.UpdateString("BillAddr.Lat","INVALID") success = jsonReq.UpdateString("BillAddr.Long","INVALID") success = jsonReq.UpdateString("BillAddr.CountrySubDivisionCode","CA") success = jsonReq.UpdateString("BillAddr.Id","2") success = jsonReq.UpdateString("TxnDate","2015-07-24") success = jsonReq.UpdateNumber("TotalAmt","150.0") success = jsonReq.UpdateString("CustomerRef.name","Amy's Bird Sanctuary") success = jsonReq.UpdateString("CustomerRef.value","1") success = jsonReq.UpdateString("CustomerMemo.value","Added customer memo.") success = jsonReq.UpdateString("ShipAddr.City","Bayshore") success = jsonReq.UpdateString("ShipAddr.Line1","4581 Finch St.") success = jsonReq.UpdateString("ShipAddr.PostalCode","94326") success = jsonReq.UpdateString("ShipAddr.Lat","INVALID") success = jsonReq.UpdateString("ShipAddr.Long","INVALID") success = jsonReq.UpdateString("ShipAddr.CountrySubDivisionCode","CA") success = jsonReq.UpdateString("ShipAddr.Id","109") success = jsonReq.UpdateNewArray("LinkedTxn") success = jsonReq.UpdateString("DueDate","2015-08-23") success = jsonReq.UpdateString("PrintStatus","NeedToPrint") success = jsonReq.UpdateString("EmailStatus","NotSet") success = jsonReq.UpdateBool("sparse",False) success = jsonReq.UpdateInt("Line[0].LineNum",1) success = jsonReq.UpdateNumber("Line[0].Amount","150.0") success = jsonReq.UpdateString("Line[0].SalesItemLineDetail.TaxCodeRef.value","NON") success = jsonReq.UpdateString("Line[0].SalesItemLineDetail.ItemRef.name","Services") success = jsonReq.UpdateString("Line[0].SalesItemLineDetail.ItemRef.value","1") success = jsonReq.UpdateString("Line[0].Id","1") success = jsonReq.UpdateString("Line[0].DetailType","SalesItemLineDetail") success = jsonReq.UpdateString("Line[1].DetailType","SubTotalLineDetail") success = jsonReq.UpdateNumber("Line[1].Amount","150.0") success = jsonReq.UpdateNewObject("Line[1].SubTotalLineDetail") success = jsonReq.UpdateBool("ApplyTaxAfterDiscount",False) success = jsonReq.UpdateString("CustomField[0].DefinitionId","1") success = jsonReq.UpdateString("CustomField[0].Type","StringType") success = jsonReq.UpdateString("CustomField[0].Name","Crew #") success = jsonReq.UpdateString("Id","239") success = jsonReq.UpdateInt("TxnTaxDetail.TotalTax",0) success = jsonReq.UpdateString("MetaData.CreateTime","2015-07-24T10:35:08-07:00") success = jsonReq.UpdateString("MetaData.LastUpdatedTime","2015-07-24T10:35:08-07:00") Dim sbRequestBody As Chilkat.StringBuilder Set sbRequestBody = Chilkat.NewStringBuilder success = jsonReq.EmitSb(sbRequestBody) success = rest.AddHeader("Content-Type","application/json") success = rest.AddHeader("Accept","application/json") rest.AllowHeaderFolding = False Dim sbResponseBody As Chilkat.StringBuilder Set sbResponseBody = Chilkat.NewStringBuilder success = rest.FullRequestSb("POST","/v3/company/<realmID>/invoice",sbRequestBody,sbResponseBody) If (success <> True) Then Debug.Print rest.LastErrorText Exit Sub End If respStatusCode = rest.ResponseStatusCode ' Success is indicated by a 200 response status code. Debug.Print "response status code = "; respStatusCode Dim jsonResponse As Chilkat.JsonObject Set jsonResponse = Chilkat.NewJsonObject success = jsonResponse.LoadSb(sbResponseBody) jsonResponse.EmitCompact = False Debug.Print jsonResponse.Emit() If (rest.ResponseStatusCode <> 200) Then Debug.Print "Failed." Exit Sub End If ' Sample output... ' (See the parsing code below..) ' ' Use the this online tool to generate parsing code from sample JSON: ' Generate Parsing Code from JSON ' { ' "Invoice": { ' "TxnDate": "2015-07-24", ' "domain": "QBO", ' "PrintStatus": "NeedToPrint", ' "TotalAmt": 150.0, ' "Line": [ ' { ' "LineNum": 1, ' "Amount": 150.0, ' "SalesItemLineDetail": { ' "TaxCodeRef": { ' "value": "NON" ' }, ' "ItemRef": { ' "name": "Services", ' "value": "1" ' } ' }, ' "Id": "1", ' "DetailType": "SalesItemLineDetail" ' }, ' { ' "DetailType": "SubTotalLineDetail", ' "Amount": 150.0, ' "SubTotalLineDetail": {} ' } ' ], ' "DueDate": "2015-08-23", ' "ApplyTaxAfterDiscount": false, ' "DocNumber": "1070", ' "sparse": false, ' "CustomerMemo": { ' "value": "Added customer memo." ' }, ' "Deposit": 0, ' "Balance": 150.0, ' "CustomerRef": { ' "name": "Amy's Bird Sanctuary", ' "value": "1" ' }, ' "TxnTaxDetail": { ' "TotalTax": 0 ' }, ' "SyncToken": "1", ' "LinkedTxn": [ ' ], ' "ShipAddr": { ' "CountrySubDivisionCode": "CA", ' "City": "Bayshore", ' "PostalCode": "94326", ' "Id": "118", ' "Line1": "4581 Finch St." ' }, ' "EmailStatus": "NotSet", ' "BillAddr": { ' "CountrySubDivisionCode": "CA", ' "City": "Bayshore", ' "PostalCode": "94326", ' "Id": "117", ' "Line1": "4581 Finch St." ' }, ' "MetaData": { ' "CreateTime": "2015-07-24T10:35:08-07:00", ' "LastUpdatedTime": "2015-07-24T10:53:39-07:00" ' }, ' "CustomField": [ ' { ' "DefinitionId": "1", ' "Type": "StringType", ' "Name": "Crew #" ' } ' ], ' "Id": "239" ' }, ' "time": "2015-07-24T10:53:39.287-07:00" ' } ' InvoiceTxnDate = jsonResponse.StringOf("Invoice.TxnDate") InvoiceDomain = jsonResponse.StringOf("Invoice.domain") InvoicePrintStatus = jsonResponse.StringOf("Invoice.PrintStatus") InvoiceTotalAmt = jsonResponse.StringOf("Invoice.TotalAmt") InvoiceDueDate = jsonResponse.StringOf("Invoice.DueDate") InvoiceApplyTaxAfterDiscount = jsonResponse.BoolOf("Invoice.ApplyTaxAfterDiscount") InvoiceDocNumber = jsonResponse.StringOf("Invoice.DocNumber") InvoiceSparse = jsonResponse.BoolOf("Invoice.sparse") InvoiceCustomerMemoValue = jsonResponse.StringOf("Invoice.CustomerMemo.value") InvoiceDeposit = jsonResponse.IntOf("Invoice.Deposit") InvoiceBalance = jsonResponse.StringOf("Invoice.Balance") InvoiceCustomerRefName = jsonResponse.StringOf("Invoice.CustomerRef.name") InvoiceCustomerRefValue = jsonResponse.StringOf("Invoice.CustomerRef.value") InvoiceTxnTaxDetailTotalTax = jsonResponse.IntOf("Invoice.TxnTaxDetail.TotalTax") InvoiceSyncToken = jsonResponse.StringOf("Invoice.SyncToken") InvoiceShipAddrCountrySubDivisionCode = jsonResponse.StringOf("Invoice.ShipAddr.CountrySubDivisionCode") InvoiceShipAddrCity = jsonResponse.StringOf("Invoice.ShipAddr.City") InvoiceShipAddrPostalCode = jsonResponse.StringOf("Invoice.ShipAddr.PostalCode") InvoiceShipAddrId = jsonResponse.StringOf("Invoice.ShipAddr.Id") InvoiceShipAddrLine1 = jsonResponse.StringOf("Invoice.ShipAddr.Line1") InvoiceEmailStatus = jsonResponse.StringOf("Invoice.EmailStatus") InvoiceBillAddrCountrySubDivisionCode = jsonResponse.StringOf("Invoice.BillAddr.CountrySubDivisionCode") InvoiceBillAddrCity = jsonResponse.StringOf("Invoice.BillAddr.City") InvoiceBillAddrPostalCode = jsonResponse.StringOf("Invoice.BillAddr.PostalCode") InvoiceBillAddrId = jsonResponse.StringOf("Invoice.BillAddr.Id") InvoiceBillAddrLine1 = jsonResponse.StringOf("Invoice.BillAddr.Line1") InvoiceMetaDataCreateTime = jsonResponse.StringOf("Invoice.MetaData.CreateTime") InvoiceMetaDataLastUpdatedTime = jsonResponse.StringOf("Invoice.MetaData.LastUpdatedTime") InvoiceId = jsonResponse.StringOf("Invoice.Id") time = jsonResponse.StringOf("time") i = 0 count_i = jsonResponse.SizeOfArray("Invoice.Line") Do While i < count_i jsonResponse.I = i LineNum = jsonResponse.IntOf("Invoice.Line[i].LineNum") Amount = jsonResponse.StringOf("Invoice.Line[i].Amount") SalesItemLineDetailTaxCodeRefValue = jsonResponse.StringOf("Invoice.Line[i].SalesItemLineDetail.TaxCodeRef.value") SalesItemLineDetailItemRefName = jsonResponse.StringOf("Invoice.Line[i].SalesItemLineDetail.ItemRef.name") SalesItemLineDetailItemRefValue = jsonResponse.StringOf("Invoice.Line[i].SalesItemLineDetail.ItemRef.value") Id = jsonResponse.StringOf("Invoice.Line[i].Id") DetailType = jsonResponse.StringOf("Invoice.Line[i].DetailType") i = i + 1 Loop i = 0 count_i = jsonResponse.SizeOfArray("Invoice.LinkedTxn") Do While i < count_i jsonResponse.I = i i = i + 1 Loop i = 0 count_i = jsonResponse.SizeOfArray("Invoice.CustomField") Do While i < count_i jsonResponse.I = i DefinitionId = jsonResponse.StringOf("Invoice.CustomField[i].DefinitionId") invType = jsonResponse.StringOf("Invoice.CustomField[i].Type") Name = jsonResponse.StringOf("Invoice.CustomField[i].Name") i = i + 1 Loop |
© 2000-2022 Chilkat Software, Inc. All Rights Reserved.