Tcl
Tcl
Xero Update Account
Demonstrates how to update an account in Xero.Note: Requires Chilkat v9.5.0.64 or greater.
Chilkat Tcl Downloads
load ./chilkat.dll
set success 0
# Note: Requires Chilkat v9.5.0.64 or greater.
# This requires the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.
set rest [new_CkRest]
# Before sending REST API calls, the REST object needs to be
# initialized for OAuth1.
# See Xero 2-Legged OAuth1 Setup for sample code.
# Assuming the REST object's OAuth1 authenticator is setup, and the initial
# connection was made, we may now send REST HTTP requests..
# --------------------------------------------------------------
# The Account to be updated already contains this data:
# <Account>
# <AccountID>afe53f21-1221-451c-a8c4-08457e129d84</AccountID>
# <Code>160</Code>
# <Name>Computer Equipment</Name>
# <Status>ACTIVE</Status>
# <Type>FIXED</Type>
# <TaxType>TAX002</TaxType>
# <Description>Computer equipment that is owned and controlled by the business</Description>
# <Class>ASSET</Class>
# <EnablePaymentsToAccount>false</EnablePaymentsToAccount>
# <ShowInExpenseClaims>true</ShowInExpenseClaims>
# <ReportingCode>ASS</ReportingCode>
# <ReportingCodeName>Assets</ReportingCodeName>
# <HasAttachments>false</HasAttachments>
# <UpdatedDateUTC>2016-10-15T22:22:44.53</UpdatedDateUTC>
# </Account>
# --------------------------------------------------------------
# Build the XML to update the description
set xml [new_CkXml]
CkXml_put_Tag $xml "Account"
CkXml_NewChild2 $xml "AccountID" "afe53f21-1221-451c-a8c4-08457e129d84"
CkXml_NewChild2 $xml "Description" "Computer equipment owned by the business."
CkXml_put_EmitCompact $xml 1
# Do not emit the XML declarator. Xero does not accept the XML if it
# has the initial line: <?xml version="1.0" encoding="utf-8"?>
CkXml_put_EmitXmlDecl $xml 0
CkRest_AddQueryParam $rest "xml" [CkXml_getXml $xml]
# Use a POST to update (a PUT is to create)
set responseXml [CkRest_fullRequestFormUrlEncoded $rest "POST" "/api.xro/2.0/Accounts"]
if {[CkRest_get_LastMethodSuccess $rest] != 1} then {
puts [CkRest_lastErrorText $rest]
delete_CkRest $rest
delete_CkXml $xml
exit
}
# A 200 response is expected for actual success.
if {[CkRest_get_ResponseStatusCode $rest] != 200} then {
puts "$responseXml"
delete_CkRest $rest
delete_CkXml $xml
exit
}
# Examine the XML response
puts "$responseXml"
# A successful XML response is as follows:
# <Response xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
# <Id>8efc8fb9-1f78-438c-a2d3-46954bb82183</Id>
# <Status>OK</Status>
# <ProviderName>ChilkatPrivate</ProviderName>
# <DateTimeUTC>2016-11-11T02:24:01.1692715Z</DateTimeUTC>
# <Accounts>
# <Account>
# <AccountID>afe53f21-1221-451c-a8c4-08457e129d84</AccountID>
# <Code>160</Code>
# <Name>Computer Equipment</Name>
# <Status>ACTIVE</Status>
# <Type>FIXED</Type>
# <TaxType>TAX002</TaxType>
# <Description>Computer equipment owned by the business.</Description>
# <Class>ASSET</Class>
# <EnablePaymentsToAccount>false</EnablePaymentsToAccount>
# <ShowInExpenseClaims>false</ShowInExpenseClaims>
# <ReportingCode>ASS</ReportingCode>
# <ReportingCodeName>Assets</ReportingCodeName>
# <UpdatedDateUTC>2016-11-11T02:24:01.3</UpdatedDateUTC>
# </Account>
# </Accounts>
# </Response>
delete_CkRest $rest
delete_CkXml $xml