Sample code for 30+ languages & platforms
Tcl

Quickbooks Delete an Invoice

See more QuickBooks Examples

Demonstrates how to delete an invoice using the Quickbooks REST API.

Chilkat Tcl Downloads

Tcl

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