tlconnor-xero_gateway 1.0.2 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. data/CHANGELOG.textile +8 -2
  2. data/lib/xero_gateway/account.rb +27 -0
  3. data/lib/xero_gateway/contact.rb +88 -0
  4. data/lib/xero_gateway/error.rb +19 -0
  5. data/lib/xero_gateway/gateway.rb +54 -157
  6. data/lib/xero_gateway/invoice.rb +116 -0
  7. data/lib/xero_gateway/response.rb +1 -0
  8. data/lib/xero_gateway/tracking_category.rb +26 -0
  9. data/lib/xero_gateway.rb +1 -4
  10. data/test/integration/create_contact_test.rb +3 -1
  11. data/test/integration/create_invoice_test.rb +3 -1
  12. data/test/integration/get_accounts_test.rb +3 -2
  13. data/test/integration/get_contact_test.rb +3 -1
  14. data/test/integration/get_contacts_test.rb +3 -1
  15. data/test/integration/get_invoice_test.rb +5 -1
  16. data/test/integration/get_invoices_test.rb +5 -1
  17. data/test/integration/get_tracking_categories_test.rb +4 -1
  18. data/test/integration/update_contact_test.rb +3 -1
  19. data/test/stub_responses/accounts.xml +1 -0
  20. data/test/{integration/stub_responses → stub_responses}/contact.xml +0 -0
  21. data/test/{integration/stub_responses → stub_responses}/contacts.xml +0 -0
  22. data/test/stub_responses/invalid_api_key_error.xml +1 -0
  23. data/test/stub_responses/invalid_customer_key_error.xml +1 -0
  24. data/test/{integration/stub_responses → stub_responses}/invoice.xml +0 -0
  25. data/test/stub_responses/invoice_not_found_error.xml +1 -0
  26. data/test/{integration/stub_responses → stub_responses}/invoices.xml +0 -0
  27. data/test/{integration/stub_responses → stub_responses}/tracking_categories.xml +0 -0
  28. data/test/stub_responses/unknown_error.xml +1 -0
  29. data/test/test_helper.rb +65 -1
  30. data/test/unit/{messages/account_message_test.rb → account_test.rb} +4 -4
  31. data/test/unit/{messages/contact_message_test.rb → contact_test.rb} +6 -6
  32. data/test/unit/gateway_test.rb +66 -0
  33. data/test/unit/{messages/invoice_message_test.rb → invoice_test.rb} +6 -6
  34. data/test/unit/{messages/tracking_category_message_test.rb → tracking_category_test.rb} +4 -4
  35. data/xero_gateway.gemspec +18 -17
  36. metadata +18 -17
  37. data/lib/xero_gateway/messages/account_message.rb +0 -33
  38. data/lib/xero_gateway/messages/contact_message.rb +0 -93
  39. data/lib/xero_gateway/messages/invoice_message.rb +0 -122
  40. data/lib/xero_gateway/messages/tracking_category_message.rb +0 -32
  41. data/test/integration/integration_test_methods.rb +0 -64
  42. data/test/integration/stub_responses/accounts.xml +0 -1
@@ -1,93 +0,0 @@
1
- module XeroGateway
2
- module Messages
3
- class ContactMessage
4
- include Dates
5
-
6
- def self.build_xml(contact)
7
- b = Builder::XmlMarkup.new
8
-
9
- b.Contact {
10
- b.ContactID contact.contact_id if contact.contact_id
11
- b.ContactNumber contact.contact_number if contact.contact_number
12
- b.Name contact.name
13
- b.EmailAddress contact.email if contact.email
14
- b.Addresses {
15
- contact.addresses.each do |address|
16
- b.Address {
17
- b.AddressType address.address_type
18
- b.AddressLine1 address.line_1 if address.line_1
19
- b.AddressLine2 address.line_2 if address.line_2
20
- b.AddressLine3 address.line_3 if address.line_3
21
- b.AddressLine4 address.line_4 if address.line_4
22
- b.City address.city if address.city
23
- b.Region address.region if address.region
24
- b.PostalCode address.post_code if address.post_code
25
- b.Country address.country if address.country
26
- }
27
- end
28
- }
29
- b.Phones {
30
- contact.phones.each do |phone|
31
- b.Phone {
32
- b.PhoneType phone.phone_type
33
- b.PhoneNumber phone.number
34
- b.PhoneAreaCode phone.area_code if phone.area_code
35
- b.PhoneCountryCode phone.country_code if phone.country_code
36
- }
37
- end
38
- }
39
- }
40
- end
41
-
42
- # Take a Contact element and convert it into an Contact object
43
- def self.from_xml(contact_element)
44
- contact = Contact.new
45
- contact_element.children.each do |element|
46
- case(element.name)
47
- when "ContactID" then contact.contact_id = element.text
48
- when "ContactNumber" then contact.contact_number = element.text
49
- when "ContactStatus" then contact.status = element.text
50
- when "Name" then contact.name = element.text
51
- when "EmailAddress" then contact.email = element.text
52
- when "Addresses" then element.children.each {|address| contact.addresses << parse_address(address)}
53
- when "Phones" then element.children.each {|phone| contact.phones << parse_phone(phone)}
54
- end
55
- end
56
- contact
57
- end
58
-
59
- private
60
-
61
- def self.parse_address(address_element)
62
- address = Address.new
63
- address_element.children.each do |element|
64
- case(element.name)
65
- when "AddressType" then address.address_type = element.text
66
- when "AddressLine1" then address.line_1 = element.text
67
- when "AddressLine2" then address.line_2 = element.text
68
- when "AddressLine3" then address.line_3 = element.text
69
- when "AddressLine4" then address.line_4 = element.text
70
- when "City" then address.city = element.text
71
- when "Region" then address.region = element.text
72
- when "PostalCode" then address.post_code = element.text
73
- when "Country" then address.country = element.text
74
- end
75
- end
76
- address
77
- end
78
-
79
- def self.parse_phone(phone_element)
80
- phone = Phone.new
81
- phone_element.children.each do |element|
82
- case(element.name)
83
- when "PhoneType" then phone.phone_type = element.text
84
- when "PhoneNumber" then phone.number = element.text
85
- when "PhoneAreaCode" then phone.area_code = element.text
86
- when "PhoneCountryCode" then phone.country_code = element.text
87
- end
88
- end
89
- phone
90
- end
91
- end
92
- end
93
- end
@@ -1,122 +0,0 @@
1
- module XeroGateway
2
- module Messages
3
- class InvoiceMessage
4
- include Dates
5
- include Money
6
-
7
- def self.build_xml(invoice)
8
- b = Builder::XmlMarkup.new
9
-
10
- b.Invoice {
11
- b.InvoiceType invoice.invoice_type
12
- b.Contact {
13
- b.ContactID invoice.contact.contact_id if invoice.contact.contact_id
14
- b.Name invoice.contact.name
15
- b.EmailAddress invoice.contact.email if invoice.contact.email
16
- b.Addresses {
17
- invoice.contact.addresses.each do |address|
18
- b.Address {
19
- b.AddressType address.address_type
20
- b.AddressLine1 address.line_1 if address.line_1
21
- b.AddressLine2 address.line_2 if address.line_2
22
- b.AddressLine3 address.line_3 if address.line_3
23
- b.AddressLine4 address.line_4 if address.line_4
24
- b.City address.city if address.city
25
- b.Region address.region if address.region
26
- b.PostalCode address.post_code if address.post_code
27
- b.Country address.country if address.country
28
- }
29
- end
30
- }
31
- b.Phones {
32
- invoice.contact.phones.each do |phone|
33
- b.Phone {
34
- b.PhoneType phone.phone_type
35
- b.PhoneNumber phone.number
36
- b.PhoneAreaCode phone.area_code if phone.area_code
37
- b.PhoneCountryCode phone.country_code if phone.country_code
38
- }
39
- end
40
- }
41
- }
42
- b.InvoiceDate format_date_time(invoice.date)
43
- b.DueDate format_date_time(invoice.due_date) if invoice.due_date
44
- b.InvoiceNumber invoice.invoice_number
45
- b.Reference invoice.reference if invoice.reference
46
- b.TaxInclusive invoice.tax_inclusive if invoice.tax_inclusive
47
- b.IncludesTax invoice.includes_tax
48
- b.SubTotal format_money(invoice.sub_total) if invoice.sub_total
49
- b.TotalTax format_money(invoice.total_tax) if invoice.total_tax
50
- b.Total format_money(invoice.total) if invoice.total
51
- b.LineItems {
52
- invoice.line_items.each do |line_item|
53
- b.LineItem {
54
- b.Description line_item.description
55
- b.Quantity line_item.quantity if line_item.quantity
56
- b.UnitAmount format_money(line_item.unit_amount)
57
- b.TaxType line_item.tax_type if line_item.tax_type
58
- b.TaxAmount format_money(line_item.tax_amount) if line_item.tax_amount
59
- b.LineAmount format_money(line_item.line_amount)
60
- b.AccountCode line_item.account_code || 200
61
- b.Tracking {
62
- b.TrackingCategory {
63
- b.Name line_item.tracking_category
64
- b.Option line_item.tracking_option
65
- }
66
- }
67
- }
68
- end
69
- }
70
- }
71
- end
72
-
73
- # Take an Invoice element and convert it into an Invoice object
74
- def self.from_xml(invoice_element)
75
- invoice = Invoice.new
76
- invoice_element.children.each do |element|
77
- case(element.name)
78
- when "InvoiceStatus" then invoice.invoice_status = element.text
79
- when "InvoiceID" then invoice.invoice_id = element.text
80
- when "InvoiceNumber" then invoice.invoice_number = element.text
81
- when "InvoiceType" then invoice.invoice_type = element.text
82
- when "InvoiceDate" then invoice.date = parse_date_time(element.text)
83
- when "DueDate" then invoice.due_date = parse_date_time(element.text)
84
- when "Reference" then invoice.reference = element.text
85
- when "TaxInclusive" then invoice.tax_inclusive = (element.text == "true")
86
- when "IncludesTax" then invoice.includes_tax = (element.text == "true")
87
- when "SubTotal" then invoice.sub_total = BigDecimal.new(element.text)
88
- when "TotalTax" then invoice.total_tax = BigDecimal.new(element.text)
89
- when "Total" then invoice.total = BigDecimal.new(element.text)
90
- when "Contact" then invoice.contact = ContactMessage.from_xml(element)
91
- when "LineItems" then element.children.each {|line_item| invoice.line_items << parse_line_item(line_item)}
92
- end
93
- end
94
- invoice
95
- end
96
-
97
- private
98
-
99
- def self.parse_line_item(line_item_element)
100
- line_item = LineItem.new
101
- line_item_element.children.each do |element|
102
- case(element.name)
103
- when "LineItemID" then line_item.line_item_id = element.text
104
- when "Description" then line_item.description = element.text
105
- when "Quantity" then line_item.quantity = element.text.to_i
106
- when "UnitAmount" then line_item.unit_amount = BigDecimal.new(element.text)
107
- when "TaxType" then line_item.tax_type = element.text
108
- when "TaxAmount" then line_item.tax_amount = BigDecimal.new(element.text)
109
- when "LineAmount" then line_item.line_amount = BigDecimal.new(element.text)
110
- when "AccountCode" then line_item.account_code = element.text
111
- when "Tracking" then
112
- if element.elements['TrackingCategory']
113
- line_item.tracking_category = element.elements['TrackingCategory/Name'].text
114
- line_item.tracking_option = element.elements['TrackingCategory/Option'].text
115
- end
116
- end
117
- end
118
- line_item
119
- end
120
- end
121
- end
122
- end
@@ -1,32 +0,0 @@
1
- module XeroGateway
2
- module Messages
3
- class TrackingCategoryMessage
4
-
5
- def self.build_xml(tracking_category)
6
- b = Builder::XmlMarkup.new
7
-
8
- b.TrackingCategory {
9
- b.Name tracking_category.name
10
- b.Options {
11
- tracking_category.options.each do |option|
12
- b.Option {
13
- b.Name option
14
- }
15
- end
16
- }
17
- }
18
- end
19
-
20
- def self.from_xml(tracking_category_element)
21
- tracking_category = TrackingCategory.new
22
- tracking_category_element.children.each do |element|
23
- case(element.name)
24
- when "Name" then tracking_category.name = element.text
25
- when "Options" then element.children.each {|option| tracking_category.options << option.children.first.text}
26
- end
27
- end
28
- tracking_category
29
- end
30
- end
31
- end
32
- end
@@ -1,64 +0,0 @@
1
- module IntegrationTestMethods
2
- # The integration tests can be run against the Xero test environment. You mush have a company set up in the test
3
- # environment, and you must have set up a customer key for that account.
4
- #
5
- # You can then run the tests against the test environment using the commands (linux or mac):
6
- # export STUB_XERO_CALLS=false
7
- # export API_KEY=[your_api_key]
8
- # export CUSTOMER_KEY=[your_customer_key]
9
- # rake test
10
- STUB_XERO_CALLS = ENV["STUB_XERO_CALLS"].nil? ? true : (ENV["STUB_XERO_CALLS"] == "true") unless defined? STUB_XERO_CALLS
11
-
12
- API_KEY = ENV["API_KEY"] unless defined? API_KEY
13
- CUSTOMER_KEY = ENV["CUSTOMER_KEY"] unless defined? CUSTOMER_KEY
14
-
15
-
16
- def dummy_invoice
17
- invoice = XeroGateway::Invoice.new({
18
- :invoice_type => "ACCREC",
19
- :due_date => Date.today + 20,
20
- :invoice_number => STUB_XERO_CALLS ? "INV-0001" : "#{Time.now.to_f}",
21
- :reference => "YOUR REFERENCE (NOT NECESSARILY UNIQUE!)",
22
- :sub_total => 1000,
23
- :total_tax => 125,
24
- :total => 1125
25
- })
26
- invoice.contact = dummy_contact
27
- invoice.line_items << XeroGateway::LineItem.new(
28
- :description => "THE DESCRIPTION OF THE LINE ITEM",
29
- :unit_amount => 1000,
30
- :tax_amount => 125,
31
- :line_amount => 1000,
32
- :tracking_category => "THE TRACKING CATEGORY FOR THE LINE ITEM",
33
- :tracking_option => "THE TRACKING OPTION FOR THE LINE ITEM"
34
- )
35
- invoice
36
- end
37
-
38
- def dummy_contact
39
- unique_id = Time.now.to_f
40
- contact = XeroGateway::Contact.new(:name => STUB_XERO_CALLS ? "CONTACT NAME" : "THE NAME OF THE CONTACT #{unique_id}")
41
- contact.email = "bob#{unique_id}@example.com"
42
- contact.phone.number = "12345"
43
- contact.address.line_1 = "LINE 1 OF THE ADDRESS"
44
- contact.address.line_2 = "LINE 2 OF THE ADDRESS"
45
- contact.address.line_3 = "LINE 3 OF THE ADDRESS"
46
- contact.address.line_4 = "LINE 4 OF THE ADDRESS"
47
- contact.address.city = "WELLINGTON"
48
- contact.address.region = "WELLINGTON"
49
- contact.address.country = "NEW ZEALAND"
50
- contact.address.post_code = "6021"
51
-
52
- contact
53
- end
54
-
55
- def get_file_as_string(filename)
56
- data = ''
57
- f = File.open(File.dirname(__FILE__) + "/stub_responses/" + filename, "r")
58
- f.each_line do |line|
59
- data += line
60
- end
61
- f.close
62
- return data
63
- end
64
- end
@@ -1 +0,0 @@
1
- <?xml version="1.0"?><Response xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><ID>cf37ba46-29a7-4824-ad63-43482463afed</ID><Status>OK</Status><ProviderName>WebStock</ProviderName><DateTimeUTC>2008-12-01T08:39:54.70175Z</DateTimeUTC><Accounts><Account><Code>200</Code><Name>Sales</Name><Type>REVENUE</Type><TaxType>OUTPUT</TaxType><Description>Income from any normal business activity</Description></Account><Account><Code>260</Code><Name>Other Revenue</Name><Type>REVENUE</Type><TaxType>OUTPUT</TaxType><Description>Any other income that does not relate to normal business activities and is not recurring</Description></Account><Account><Code>270</Code><Name>Interest Income</Name><Type>REVENUE</Type><TaxType>NONE</TaxType><Description>Gross interest income (i.e. before deducting Residential Withholding Tax), such as bank interest</Description></Account><Account><Code>400</Code><Name>Advertising</Name><Type>OVERHEADS</Type><TaxType>INPUT</TaxType><Description>Expenses incurred for advertising while trying to increase sales</Description></Account><Account><Code>404</Code><Name>Bank Fees</Name><Type>OVERHEADS</Type><TaxType>NONE</TaxType><Description>Fees charged by your bank for transactions regarding your bank account(s).</Description></Account><Account><Code>408</Code><Name>Cleaning</Name><Type>OVERHEADS</Type><TaxType>INPUT</TaxType><Description>Expenses incurred for cleaning business property.</Description></Account><Account><Code>412</Code><Name>Consulting &amp; Accounting</Name><Type>OVERHEADS</Type><TaxType>INPUT</TaxType><Description>Expenses related to paying consultants</Description></Account><Account><Code>416</Code><Name>Depreciation</Name><Type>OVERHEADS</Type><TaxType>NONE</TaxType><Description>The amount of the asset's cost (based on the useful life) that was consumed during the period</Description></Account><Account><Code>420</Code><Name>Entertainment</Name><Type>OVERHEADS</Type><TaxType>INPUT</TaxType><Description>50% of the total expense relating to business-related entertainment. E.g. shouting clients or employees a drink or a meal etc.</Description></Account><Account><Code>424</Code><Name>Entertainment - Non deductible</Name><Type>OVERHEADS</Type><TaxType>NONE</TaxType><Description>Expenses paid by company for the business but are not deductable for income tax purposes.</Description></Account><Account><Code>425</Code><Name>Freight &amp; Courier</Name><Type>OVERHEADS</Type><TaxType>INPUT</TaxType><Description>Expenses incurred on courier &amp; freight costs</Description></Account><Account><Code>429</Code><Name>General Expenses</Name><Type>OVERHEADS</Type><TaxType>INPUT</TaxType><Description>General expenses related to the running of the business.</Description></Account><Account><Code>433</Code><Name>Insurance</Name><Type>OVERHEADS</Type><TaxType>INPUT</TaxType><Description>Expenses incurred for insuring the business' assets</Description></Account><Account><Code>437</Code><Name>Interest Expense</Name><Type>OVERHEADS</Type><TaxType>NONE</TaxType><Description>Any interest expenses paid to IRD, business bank accounts or credit card accounts.</Description></Account><Account><Code>441</Code><Name>Legal expenses</Name><Type>OVERHEADS</Type><TaxType>INPUT</TaxType><Description>Expenses incurred on any legal matters</Description></Account><Account><Code>445</Code><Name>Light, Power, Heating</Name><Type>OVERHEADS</Type><TaxType>INPUT</TaxType><Description>Expenses incurred for lighting, powering or heating the premises</Description></Account><Account><Code>449</Code><Name>Motor Vehicle Expenses</Name><Type>OVERHEADS</Type><TaxType>INPUT</TaxType><Description>Expenses incurred on the running of company motor vehicles</Description></Account><Account><Code>453</Code><Name>Office Expenses</Name><Type>OVERHEADS</Type><TaxType>INPUT</TaxType><Description>General expenses related to the running of the business office.</Description></Account><Account><Code>461</Code><Name>Printing &amp; Stationery</Name><Type>OVERHEADS</Type><TaxType>INPUT</TaxType><Description>Expenses incurred by the entity as a result of printing and stationery</Description></Account><Account><Code>469</Code><Name>Rent</Name><Type>OVERHEADS</Type><TaxType>INPUT</TaxType><Description>The payment to lease a building or area.</Description></Account><Account><Code>473</Code><Name>Repairs and Maintenance</Name><Type>OVERHEADS</Type><TaxType>INPUT</TaxType><Description>Expenses incurred on a damaged or run down asset that will bring the asset back to its original condition.</Description></Account><Account><Code>477</Code><Name>Salaries</Name><Type>OVERHEADS</Type><TaxType>NONE</TaxType><Description>Payment to employees in exchange for their resources</Description></Account><Account><Code>478</Code><Name>KiwiSaver Employer Contributions</Name><Type>OVERHEADS</Type><TaxType>NONE</TaxType><Description>KiwiSaver employer contributions</Description></Account><Account><Code>485</Code><Name>Subscriptions</Name><Type>OVERHEADS</Type><TaxType>INPUT</TaxType><Description>E.g. Magazines, professional bodies.</Description></Account><Account><Code>489</Code><Name>Telephone &amp; Internet</Name><Type>OVERHEADS</Type><TaxType>INPUT</TaxType><Description>Expenditure incurred from any business-related phone calls, phone lines, or internet connections</Description></Account><Account><Code>493</Code><Name>Travel - National</Name><Type>OVERHEADS</Type><TaxType>INPUT</TaxType><Description>Expenses incurred from domestic travel which has a business purpose</Description></Account><Account><Code>494</Code><Name>Travel - International</Name><Type>OVERHEADS</Type><TaxType>NONE</TaxType><Description>Expenses incurred from international travel which has a business purpose</Description></Account><Account><Code>505</Code><Name>Income Tax Expense</Name><Type>EXPENSE</Type><TaxType>NONE</TaxType><Description>A percentage of total earnings paid to the government.</Description></Account><Account><Code>610</Code><Name>Accounts Receivable</Name><Type>CURRENT</Type><TaxType>NONE</TaxType><Description>Outstanding invoices the company has issued out to the client but has not yet received in cash at balance date.</Description></Account><Account><Code>611</Code><Name>less Provision for Doubtful Debts</Name><Type>CURRENT</Type><TaxType>NONE</TaxType><Description>A provision anticipating that some of the accounts receivables will become bad debts.</Description></Account><Account><Code>620</Code><Name>Prepayments</Name><Type>CURRENT</Type><TaxType>NONE</TaxType><Description>An expenditure that has been paid for in advance.</Description></Account><Account><Code>625</Code><Name>Withholding tax paid</Name><Type>CURRENT</Type><TaxType>NONE</TaxType><Description>Withholding tax paid</Description></Account><Account><Code>710</Code><Name>Office Equipment</Name><Type>FIXED</Type><TaxType>INPUT</TaxType><Description>Office equipment that is owned and controlled by the business</Description></Account><Account><Code>711</Code><Name>Less Accumulated Depreciation on Office Equipment</Name><Type>FIXED</Type><TaxType>NONE</TaxType><Description>The total amount of office equipment cost that has been consumed by the entity (based on the useful life)</Description></Account><Account><Code>720</Code><Name>Computer Equipment</Name><Type>FIXED</Type><TaxType>INPUT</TaxType><Description>Computer equipment that is owned and controlled by the business</Description></Account><Account><Code>721</Code><Name>Less Accumulated Depreciation on Computer Equipment</Name><Type>FIXED</Type><TaxType>NONE</TaxType><Description>The total amount of computer equipment cost that has been consumed by the business (based on the useful life)</Description></Account><Account><Code>800</Code><Name>Accounts Payable</Name><Type>CURRLIAB</Type><TaxType>NONE</TaxType><Description>Outstanding invoices the company has received from suppliers but has not yet paid at balance date</Description></Account><Account><Code>801</Code><Name>Unpaid Expense Claims</Name><Type>CURRLIAB</Type><TaxType>NONE</TaxType><Description>Expense claims typically made by employees/shareholder employees still outstanding.</Description></Account><Account><Code>820</Code><Name>GST</Name><Type>CURRLIAB</Type><TaxType>NONE</TaxType><Description>The balance in this account represents GST owing to or from the IRD. At the end of the GST period, it is this account that should be used to code against either the 'refunds from' or 'payments to' the IRD that will appear on the bank statement. Xero has been designed to use only one GST account to track GST on income and expenses, so there is no need to add any new GST accounts to Xero.</Description></Account><Account><Code>821</Code><Name>GST On Imports</Name><Type>CURRLIAB</Type><TaxType>NONE</TaxType><Description>GST paid to customs.</Description></Account><Account><Code>825</Code><Name>PAYE Payable</Name><Type>CURRLIAB</Type><TaxType>NONE</TaxType><Description>The amount of PAYE tax that is due to be paid</Description></Account><Account><Code>830</Code><Name>Income Tax</Name><Type>CURRLIAB</Type><TaxType>NONE</TaxType><Description>The amount of income tax that is due to be paid, also resident withholding tax paid on interest received.</Description></Account><Account><Code>840</Code><Name>Historical Adjustment</Name><Type>CURRLIAB</Type><TaxType>NONE</TaxType><Description>For accountant adjustments</Description></Account><Account><Code>850</Code><Name>Suspense</Name><Type>CURRLIAB</Type><TaxType>NONE</TaxType><Description>An entry that allows an unknown transaction to be entered, so the accounts can still be worked on in balance and the entry can be dealt with later.</Description></Account><Account><Code>860</Code><Name>Rounding</Name><Type>CURRLIAB</Type><TaxType>NONE</TaxType><Description>An adjustment entry to allow for rounding</Description></Account><Account><Code>877</Code><Name>Tracking Transfers</Name><Type>CURRLIAB</Type><TaxType>NONE</TaxType><Description>Transfers between tracking categories</Description></Account><Account><Code>900</Code><Name>Loan</Name><Type>TERMLIAB</Type><TaxType>NONE</TaxType><Description>Money that has been borrowed from a creditor</Description></Account><Account><Code>960</Code><Name>Retained Earnings</Name><Type>EQUITY</Type><TaxType>NONE</TaxType><Description>Do not Use</Description></Account><Account><Code>970</Code><Name>Owner A Funds Introduced</Name><Type>EQUITY</Type><TaxType>NONE</TaxType><Description>Funds contributed by the owner</Description></Account><Account><Code>980</Code><Name>Owner A Drawings</Name><Type>EQUITY</Type><TaxType>NONE</TaxType><Description>Withdrawals by the owners</Description></Account></Accounts></Response>