Tcl
Tcl
Quickbooks Delete an Invoice
See more QuickBooks Examples
Demonstrates how to delete an invoice using the Quickbooks REST API.Chilkat Tcl Downloads
load ./chilkat.dll
set success 0
# 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.
set jsonToken [new_CkJsonObject]
set success [CkJsonObject_LoadFile $jsonToken "qa_data/tokens/qb-access-token.json"]
set rest [new_CkRest]
# Connect to the REST server.
set bTls 1
set port 443
set bAutoReconnect 1
set success [CkRest_Connect $rest "sandbox-quickbooks.api.intuit.com" $port $bTls $bAutoReconnect]
set sbAuth [new_CkStringBuilder]
CkStringBuilder_Append $sbAuth "Bearer "
CkStringBuilder_Append $sbAuth [CkJsonObject_stringOf $jsonToken "access_token"]
CkRest_put_Authorization $rest [CkStringBuilder_getAsString $sbAuth]
# --------------------------------------------------------------------------
# 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:
# {
# "SyncToken": "3",
# "Id": "33"
# }
#
# Use the this online tool to generate the code from sample JSON:
# Generate Code to Create JSON
set jsonReq [new_CkJsonObject]
CkJsonObject_UpdateString $jsonReq "SyncToken" "3"
CkJsonObject_UpdateString $jsonReq "Id" "33"
set sbRequestBody [new_CkStringBuilder]
CkJsonObject_EmitSb $jsonReq $sbRequestBody
CkRest_AddHeader $rest "Content-Type" "application/json"
CkRest_AddHeader $rest "Accept" "application/json"
CkRest_put_AllowHeaderFolding $rest 0
set sbResponseBody [new_CkStringBuilder]
set success [CkRest_FullRequestSb $rest "POST" "/v3/company/<realmID>/invoice?operation=delete" $sbRequestBody $sbResponseBody]
if {$success != 1} then {
puts [CkRest_lastErrorText $rest]
delete_CkJsonObject $jsonToken
delete_CkRest $rest
delete_CkStringBuilder $sbAuth
delete_CkJsonObject $jsonReq
delete_CkStringBuilder $sbRequestBody
delete_CkStringBuilder $sbResponseBody
exit
}
set respStatusCode [CkRest_get_ResponseStatusCode $rest]
# Success is indicated by a 200 response status code.
puts "response status code = $respStatusCode"
set jsonResponse [new_CkJsonObject]
CkJsonObject_LoadSb $jsonResponse $sbResponseBody
CkJsonObject_put_EmitCompact $jsonResponse 0
puts [CkJsonObject_emit $jsonResponse]
if {[CkRest_get_ResponseStatusCode $rest] != 200} then {
puts "Failed."
delete_CkJsonObject $jsonToken
delete_CkRest $rest
delete_CkStringBuilder $sbAuth
delete_CkJsonObject $jsonReq
delete_CkStringBuilder $sbRequestBody
delete_CkStringBuilder $sbResponseBody
delete_CkJsonObject $jsonResponse
exit
}
# 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": {
# "status": "Deleted",
# "domain": "QBO",
# "Id": "33"
# },
# "time": "2013-03-15T00:18:15.322-07:00"
# }
#
set InvoiceStatus [CkJsonObject_stringOf $jsonResponse "Invoice.status"]
set InvoiceDomain [CkJsonObject_stringOf $jsonResponse "Invoice.domain"]
set InvoiceId [CkJsonObject_stringOf $jsonResponse "Invoice.Id"]
set time [CkJsonObject_stringOf $jsonResponse "time"]
delete_CkJsonObject $jsonToken
delete_CkRest $rest
delete_CkStringBuilder $sbAuth
delete_CkJsonObject $jsonReq
delete_CkStringBuilder $sbRequestBody
delete_CkStringBuilder $sbResponseBody
delete_CkJsonObject $jsonResponse