Tcl
Tcl
Xero Get Invoices
See more Xero Examples
Get Xero company invoices.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.
set http [new_CkHttp]
set jsonToken [new_CkJsonObject]
set success [CkJsonObject_LoadFile $jsonToken "qa_data/tokens/xero-access-token.json"]
if {$success == 0} then {
puts [CkJsonObject_lastErrorText $jsonToken]
delete_CkHttp $http
delete_CkJsonObject $jsonToken
exit
}
CkHttp_put_AuthToken $http [CkJsonObject_stringOf $jsonToken "access_token"]
# Replace the value here with an actual tenant ID obtained from this example:
# Get Xero Tenant IDs
CkHttp_SetRequestHeader $http "Xero-tenant-id" "83299b9e-5747-4a14-a18a-a6c94f824eb7"
CkHttp_put_Accept $http "application/json"
set resp [new_CkHttpResponse]
set success [CkHttp_HttpNoBody $http "GET" "https://api.xero.com/api.xro/2.0/Invoices" $resp]
if {$success == 0} then {
puts [CkHttp_lastErrorText $http]
delete_CkHttp $http
delete_CkJsonObject $jsonToken
delete_CkHttpResponse $resp
exit
}
puts "Response Status Code: [CkHttpResponse_get_StatusCode $resp]"
set jsonResponse [new_CkJsonObject]
CkJsonObject_Load $jsonResponse [CkHttpResponse_bodyStr $resp]
CkJsonObject_put_EmitCompact $jsonResponse 0
puts [CkJsonObject_emit $jsonResponse]
if {[CkHttpResponse_get_StatusCode $resp] != 200} then {
puts "Failed."
delete_CkHttp $http
delete_CkJsonObject $jsonToken
delete_CkHttpResponse $resp
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
# {
# "Id": "bda1f62f-0d63-4178-8d54-e91fd226987a",
# "Status": "OK",
# "ProviderName": "Chilkat2222",
# "DateTimeUTC": "\/Date(1587210234493)\/",
# "Invoices": [
# {
# "Type": "ACCPAY",
# "InvoiceID": "0032f627-3156-4d30-9b1c-4d3b994dc921",
# "InvoiceNumber": "9871",
# "Reference": "",
# "Payments": [
# {
# "PaymentID": "22974891-3689-4694-9ee7-fd2ba917af55",
# "Date": "\/Date(1579737600000+0000)\/",
# "Amount": 148.50,
# "Reference": "Chq 409",
# "HasAccount": false,
# "HasValidationErrors": false
# }
# ],
# "CreditNotes": [
# ],
# "Prepayments": [
# ],
# "Overpayments": [
# ],
# "AmountDue": 0.00,
# "AmountPaid": 148.50,
# "AmountCredited": 0.00,
# "IsDiscounted": false,
# "HasAttachments": false,
# "HasErrors": false,
# "Contact": {
# "ContactID": "d6a384fb-f46f-41a3-8ac7-b7bc9e0b5efa",
# "Name": "Melrose Parking",
# "Addresses": [
# ],
# "Phones": [
# ],
# "ContactGroups": [
# ],
# "ContactPersons": [
# ],
# "HasValidationErrors": false
# },
# "DateString": "2020-01-15T00:00:00",
# "Date": "\/Date(1579046400000+0000)\/",
# "DueDateString": "2020-01-24T00:00:00",
# "DueDate": "\/Date(1579824000000+0000)\/",
# "Status": "PAID",
# "LineAmountTypes": "Exclusive",
# "LineItems": [
# ],
# "SubTotal": 135.00,
# "TotalTax": 13.50,
# "Total": 148.50,
# "UpdatedDateUTC": "\/Date(1221560931500+0000)\/",
# "CurrencyCode": "AUD",
# "FullyPaidOnDate": "\/Date(1579737600000+0000)\/"
# },
# {
# "Type": "ACCPAY",
# "InvoiceID": "673dd7cc-beb7-4697-83d4-0c47cb400cc2",
# "InvoiceNumber": "",
# "Reference": "",
# "Payments": [
# {
# "PaymentID": "4d06f609-5200-4364-9c8b-d4379a945252",
# "Date": "\/Date(1580688000000+0000)\/",
# "Amount": 974.60,
# "Reference": "DD # 96013",
# "HasAccount": false,
# "HasValidationErrors": false
# }
# ],
# "CreditNotes": [
# {
# "CreditNoteID": "7df8949c-b71f-40c0-bbcf-39f2f450f286",
# "CreditNoteNumber": "03391",
# "ID": "7df8949c-b71f-40c0-bbcf-39f2f450f286",
# "HasErrors": false,
# "AppliedAmount": 218.90,
# "DateString": "2020-01-29T00:00:00",
# "Date": "\/Date(1580256000000+0000)\/",
# "LineItems": [
# ],
# "Total": 218.90
# }
# ],
# "Prepayments": [
# ],
# "Overpayments": [
# ],
# "AmountDue": 0.00,
# "AmountPaid": 974.60,
# "AmountCredited": 218.90,
# "IsDiscounted": false,
# "HasAttachments": false,
# "HasErrors": false,
# "Contact": {
# "ContactID": "d0cd2c4f-18a0-4f7c-a32a-2db00f29d298",
# "Name": "PC Complete",
# "Addresses": [
# ],
# "Phones": [
# ],
# "ContactGroups": [
# ],
# "ContactPersons": [
# ],
# "HasValidationErrors": false
# },
# "DateString": "2020-01-28T00:00:00",
# "Date": "\/Date(1580169600000+0000)\/",
# "DueDateString": "2020-02-04T00:00:00",
# "DueDate": "\/Date(1580774400000+0000)\/",
# "Status": "PAID",
# "LineAmountTypes": "Exclusive",
# "LineItems": [
# ],
# "SubTotal": 1085.00,
# "TotalTax": 108.50,
# "Total": 1193.50,
# "UpdatedDateUTC": "\/Date(1221561913790+0000)\/",
# "CurrencyCode": "AUD",
# "FullyPaidOnDate": "\/Date(1580688000000+0000)\/"
# },
# {
# "Type": "ACCPAY",
# "InvoiceID": "c12aff7e-12bf-4185-8702-460929f19674",
# "InvoiceNumber": "",
# "Reference": "",
# "Payments": [
# ],
# "CreditNotes": [
# ],
# "Prepayments": [
# ],
# "Overpayments": [
# ],
# "AmountDue": 2166.99,
# "AmountPaid": 0.00,
# "AmountCredited": 0.00,
# "CurrencyRate": 1.000000,
# "IsDiscounted": false,
# "HasAttachments": false,
# "HasErrors": false,
# "Contact": {
# "ContactID": "d0cd2c4f-18a0-4f7c-a32a-2db00f29d298",
# "Name": "PC Complete",
# "Addresses": [
# ],
# "Phones": [
# ],
# "ContactGroups": [
# ],
# "ContactPersons": [
# ],
# "HasValidationErrors": false
# },
# "DateString": "2020-04-10T00:00:00",
# "Date": "\/Date(1586476800000+0000)\/",
# "DueDateString": "2020-05-05T00:00:00",
# "DueDate": "\/Date(1588636800000+0000)\/",
# "Status": "AUTHORISED",
# "LineAmountTypes": "Exclusive",
# "LineItems": [
# ],
# "SubTotal": 1969.99,
# "TotalTax": 197.00,
# "Total": 2166.99,
# "UpdatedDateUTC": "\/Date(1497965301980+0000)\/",
# "CurrencyCode": "AUD"
# }
# ]
# }
#
set Id [CkJsonObject_stringOf $jsonResponse "Id"]
set Status [CkJsonObject_stringOf $jsonResponse "Status"]
set ProviderName [CkJsonObject_stringOf $jsonResponse "ProviderName"]
set DateTimeUTC [CkJsonObject_stringOf $jsonResponse "DateTimeUTC"]
set i 0
set count_i [CkJsonObject_SizeOfArray $jsonResponse "Invoices"]
while {$i < $count_i} {
CkJsonObject_put_I $jsonResponse $i
set Type [CkJsonObject_stringOf $jsonResponse "Invoices[i].Type"]
set InvoiceID [CkJsonObject_stringOf $jsonResponse "Invoices[i].InvoiceID"]
set InvoiceNumber [CkJsonObject_stringOf $jsonResponse "Invoices[i].InvoiceNumber"]
set Reference [CkJsonObject_stringOf $jsonResponse "Invoices[i].Reference"]
set AmountDue [CkJsonObject_stringOf $jsonResponse "Invoices[i].AmountDue"]
set AmountPaid [CkJsonObject_stringOf $jsonResponse "Invoices[i].AmountPaid"]
set AmountCredited [CkJsonObject_stringOf $jsonResponse "Invoices[i].AmountCredited"]
set IsDiscounted [CkJsonObject_BoolOf $jsonResponse "Invoices[i].IsDiscounted"]
set HasAttachments [CkJsonObject_BoolOf $jsonResponse "Invoices[i].HasAttachments"]
set HasErrors [CkJsonObject_BoolOf $jsonResponse "Invoices[i].HasErrors"]
set ContactContactID [CkJsonObject_stringOf $jsonResponse "Invoices[i].Contact.ContactID"]
set ContactName [CkJsonObject_stringOf $jsonResponse "Invoices[i].Contact.Name"]
set ContactHasValidationErrors [CkJsonObject_BoolOf $jsonResponse "Invoices[i].Contact.HasValidationErrors"]
set DateString [CkJsonObject_stringOf $jsonResponse "Invoices[i].DateString"]
set Date [CkJsonObject_stringOf $jsonResponse "Invoices[i].Date"]
set DueDateString [CkJsonObject_stringOf $jsonResponse "Invoices[i].DueDateString"]
set DueDate [CkJsonObject_stringOf $jsonResponse "Invoices[i].DueDate"]
set Status [CkJsonObject_stringOf $jsonResponse "Invoices[i].Status"]
set LineAmountTypes [CkJsonObject_stringOf $jsonResponse "Invoices[i].LineAmountTypes"]
set SubTotal [CkJsonObject_stringOf $jsonResponse "Invoices[i].SubTotal"]
set TotalTax [CkJsonObject_stringOf $jsonResponse "Invoices[i].TotalTax"]
set Total [CkJsonObject_stringOf $jsonResponse "Invoices[i].Total"]
set UpdatedDateUTC [CkJsonObject_stringOf $jsonResponse "Invoices[i].UpdatedDateUTC"]
set CurrencyCode [CkJsonObject_stringOf $jsonResponse "Invoices[i].CurrencyCode"]
set FullyPaidOnDate [CkJsonObject_stringOf $jsonResponse "Invoices[i].FullyPaidOnDate"]
set CurrencyRate [CkJsonObject_stringOf $jsonResponse "Invoices[i].CurrencyRate"]
set j 0
set count_j [CkJsonObject_SizeOfArray $jsonResponse "Invoices[i].Payments"]
while {$j < $count_j} {
CkJsonObject_put_J $jsonResponse $j
set PaymentID [CkJsonObject_stringOf $jsonResponse "Invoices[i].Payments[j].PaymentID"]
set Date [CkJsonObject_stringOf $jsonResponse "Invoices[i].Payments[j].Date"]
set Amount [CkJsonObject_stringOf $jsonResponse "Invoices[i].Payments[j].Amount"]
set Reference [CkJsonObject_stringOf $jsonResponse "Invoices[i].Payments[j].Reference"]
set HasAccount [CkJsonObject_BoolOf $jsonResponse "Invoices[i].Payments[j].HasAccount"]
set HasValidationErrors [CkJsonObject_BoolOf $jsonResponse "Invoices[i].Payments[j].HasValidationErrors"]
set j [expr $j + 1]
}
set j 0
set count_j [CkJsonObject_SizeOfArray $jsonResponse "Invoices[i].CreditNotes"]
while {$j < $count_j} {
CkJsonObject_put_J $jsonResponse $j
set CreditNoteID [CkJsonObject_stringOf $jsonResponse "Invoices[i].CreditNotes[j].CreditNoteID"]
set CreditNoteNumber [CkJsonObject_stringOf $jsonResponse "Invoices[i].CreditNotes[j].CreditNoteNumber"]
set ID [CkJsonObject_stringOf $jsonResponse "Invoices[i].CreditNotes[j].ID"]
set HasErrors [CkJsonObject_BoolOf $jsonResponse "Invoices[i].CreditNotes[j].HasErrors"]
set AppliedAmount [CkJsonObject_stringOf $jsonResponse "Invoices[i].CreditNotes[j].AppliedAmount"]
set DateString [CkJsonObject_stringOf $jsonResponse "Invoices[i].CreditNotes[j].DateString"]
set Date [CkJsonObject_stringOf $jsonResponse "Invoices[i].CreditNotes[j].Date"]
set Total [CkJsonObject_stringOf $jsonResponse "Invoices[i].CreditNotes[j].Total"]
set k 0
set count_k [CkJsonObject_SizeOfArray $jsonResponse "Invoices[i].CreditNotes[j].LineItems"]
while {$k < $count_k} {
CkJsonObject_put_K $jsonResponse $k
set k [expr $k + 1]
}
set j [expr $j + 1]
}
set j 0
set count_j [CkJsonObject_SizeOfArray $jsonResponse "Invoices[i].Prepayments"]
while {$j < $count_j} {
CkJsonObject_put_J $jsonResponse $j
set j [expr $j + 1]
}
set j 0
set count_j [CkJsonObject_SizeOfArray $jsonResponse "Invoices[i].Overpayments"]
while {$j < $count_j} {
CkJsonObject_put_J $jsonResponse $j
set j [expr $j + 1]
}
set j 0
set count_j [CkJsonObject_SizeOfArray $jsonResponse "Invoices[i].Contact.Addresses"]
while {$j < $count_j} {
CkJsonObject_put_J $jsonResponse $j
set j [expr $j + 1]
}
set j 0
set count_j [CkJsonObject_SizeOfArray $jsonResponse "Invoices[i].Contact.Phones"]
while {$j < $count_j} {
CkJsonObject_put_J $jsonResponse $j
set j [expr $j + 1]
}
set j 0
set count_j [CkJsonObject_SizeOfArray $jsonResponse "Invoices[i].Contact.ContactGroups"]
while {$j < $count_j} {
CkJsonObject_put_J $jsonResponse $j
set j [expr $j + 1]
}
set j 0
set count_j [CkJsonObject_SizeOfArray $jsonResponse "Invoices[i].Contact.ContactPersons"]
while {$j < $count_j} {
CkJsonObject_put_J $jsonResponse $j
set j [expr $j + 1]
}
set j 0
set count_j [CkJsonObject_SizeOfArray $jsonResponse "Invoices[i].LineItems"]
while {$j < $count_j} {
CkJsonObject_put_J $jsonResponse $j
set j [expr $j + 1]
}
set i [expr $i + 1]
}
delete_CkHttp $http
delete_CkJsonObject $jsonToken
delete_CkHttpResponse $resp
delete_CkJsonObject $jsonResponse