xeroizer-3-pre-beta 3.0.0.pre.beta
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE.txt +41 -0
- data/README.md +34 -0
- data/lib/class_level_inheritable_attributes.rb +28 -0
- data/lib/xeroizer.rb +117 -0
- data/lib/xeroizer/application_http_proxy.rb +30 -0
- data/lib/xeroizer/ca-certificates.crt +2694 -0
- data/lib/xeroizer/configuration.rb +19 -0
- data/lib/xeroizer/connection.rb +31 -0
- data/lib/xeroizer/exceptions.rb +161 -0
- data/lib/xeroizer/generic_application.rb +90 -0
- data/lib/xeroizer/http.rb +160 -0
- data/lib/xeroizer/http_encoding_helper.rb +49 -0
- data/lib/xeroizer/http_response.rb +154 -0
- data/lib/xeroizer/logging.rb +8 -0
- data/lib/xeroizer/models/account.rb +72 -0
- data/lib/xeroizer/models/accounts_payable.rb +13 -0
- data/lib/xeroizer/models/accounts_receivable.rb +13 -0
- data/lib/xeroizer/models/address.rb +41 -0
- data/lib/xeroizer/models/allocation.rb +13 -0
- data/lib/xeroizer/models/attachment.rb +95 -0
- data/lib/xeroizer/models/balances.rb +17 -0
- data/lib/xeroizer/models/bank_account.rb +13 -0
- data/lib/xeroizer/models/bank_transaction.rb +95 -0
- data/lib/xeroizer/models/bank_transfer.rb +28 -0
- data/lib/xeroizer/models/batch_payment.rb +24 -0
- data/lib/xeroizer/models/batch_payments.rb +14 -0
- data/lib/xeroizer/models/bills.rb +13 -0
- data/lib/xeroizer/models/branding_theme.rb +62 -0
- data/lib/xeroizer/models/contact.rb +77 -0
- data/lib/xeroizer/models/contact_group.rb +64 -0
- data/lib/xeroizer/models/contact_person.rb +20 -0
- data/lib/xeroizer/models/contact_purchases_tracking_category.rb +19 -0
- data/lib/xeroizer/models/contact_sales_tracking_category.rb +19 -0
- data/lib/xeroizer/models/credit_note.rb +164 -0
- data/lib/xeroizer/models/currency.rb +30 -0
- data/lib/xeroizer/models/employee.rb +73 -0
- data/lib/xeroizer/models/expense_claim.rb +29 -0
- data/lib/xeroizer/models/external_link.rb +16 -0
- data/lib/xeroizer/models/from_bank_account.rb +13 -0
- data/lib/xeroizer/models/invoice.rb +229 -0
- data/lib/xeroizer/models/invoice_reminder.rb +19 -0
- data/lib/xeroizer/models/item.rb +39 -0
- data/lib/xeroizer/models/item_purchase_details.rb +20 -0
- data/lib/xeroizer/models/item_sales_details.rb +19 -0
- data/lib/xeroizer/models/journal.rb +27 -0
- data/lib/xeroizer/models/journal_line.rb +29 -0
- data/lib/xeroizer/models/journal_line_tracking_category.rb +21 -0
- data/lib/xeroizer/models/line_amount_type.rb +11 -0
- data/lib/xeroizer/models/line_item.rb +64 -0
- data/lib/xeroizer/models/line_item_sum.rb +21 -0
- data/lib/xeroizer/models/manual_journal.rb +49 -0
- data/lib/xeroizer/models/manual_journal_line.rb +28 -0
- data/lib/xeroizer/models/online_invoice.rb +37 -0
- data/lib/xeroizer/models/option.rb +18 -0
- data/lib/xeroizer/models/organisation.rb +85 -0
- data/lib/xeroizer/models/overpayment.rb +40 -0
- data/lib/xeroizer/models/payment.rb +48 -0
- data/lib/xeroizer/models/payment_service.rb +22 -0
- data/lib/xeroizer/models/payment_terms.rb +16 -0
- data/lib/xeroizer/models/payroll/address.rb +53 -0
- data/lib/xeroizer/models/payroll/bank_account.rb +35 -0
- data/lib/xeroizer/models/payroll/benefit_line.rb +26 -0
- data/lib/xeroizer/models/payroll/benefit_type.rb +45 -0
- data/lib/xeroizer/models/payroll/deduction_line.rb +32 -0
- data/lib/xeroizer/models/payroll/deduction_type.rb +49 -0
- data/lib/xeroizer/models/payroll/earnings_line.rb +39 -0
- data/lib/xeroizer/models/payroll/earnings_type.rb +53 -0
- data/lib/xeroizer/models/payroll/employee.rb +67 -0
- data/lib/xeroizer/models/payroll/leave_application.rb +27 -0
- data/lib/xeroizer/models/payroll/leave_line.rb +30 -0
- data/lib/xeroizer/models/payroll/leave_period.rb +15 -0
- data/lib/xeroizer/models/payroll/pay_items.rb +22 -0
- data/lib/xeroizer/models/payroll/pay_run.rb +33 -0
- data/lib/xeroizer/models/payroll/pay_schedule.rb +40 -0
- data/lib/xeroizer/models/payroll/pay_template.rb +24 -0
- data/lib/xeroizer/models/payroll/payment_method.rb +24 -0
- data/lib/xeroizer/models/payroll/paystub.rb +44 -0
- data/lib/xeroizer/models/payroll/reimbursement_line.rb +21 -0
- data/lib/xeroizer/models/payroll/reimbursement_type.rb +22 -0
- data/lib/xeroizer/models/payroll/salary_and_wage.rb +29 -0
- data/lib/xeroizer/models/payroll/super_line.rb +40 -0
- data/lib/xeroizer/models/payroll/tax_declaration.rb +50 -0
- data/lib/xeroizer/models/payroll/time_off_line.rb +20 -0
- data/lib/xeroizer/models/payroll/time_off_type.rb +32 -0
- data/lib/xeroizer/models/payroll/work_location.rb +25 -0
- data/lib/xeroizer/models/phone.rb +26 -0
- data/lib/xeroizer/models/prepayment.rb +41 -0
- data/lib/xeroizer/models/purchase_order.rb +49 -0
- data/lib/xeroizer/models/receipt.rb +39 -0
- data/lib/xeroizer/models/repeating_invoice.rb +80 -0
- data/lib/xeroizer/models/sales.rb +13 -0
- data/lib/xeroizer/models/schedule.rb +34 -0
- data/lib/xeroizer/models/tax_component.rb +13 -0
- data/lib/xeroizer/models/tax_rate.rb +36 -0
- data/lib/xeroizer/models/to_bank_account.rb +13 -0
- data/lib/xeroizer/models/tracking_category.rb +23 -0
- data/lib/xeroizer/models/tracking_category_child.rb +20 -0
- data/lib/xeroizer/models/user.rb +26 -0
- data/lib/xeroizer/oauth.rb +162 -0
- data/lib/xeroizer/oauth2.rb +66 -0
- data/lib/xeroizer/oauth2_application.rb +42 -0
- data/lib/xeroizer/partner_application.rb +52 -0
- data/lib/xeroizer/payroll_application.rb +33 -0
- data/lib/xeroizer/private_application.rb +26 -0
- data/lib/xeroizer/public_application.rb +22 -0
- data/lib/xeroizer/record/application_helper.rb +32 -0
- data/lib/xeroizer/record/base.rb +203 -0
- data/lib/xeroizer/record/base_model.rb +253 -0
- data/lib/xeroizer/record/base_model_http_proxy.rb +141 -0
- data/lib/xeroizer/record/model_definition_helper.rb +101 -0
- data/lib/xeroizer/record/payroll_base.rb +29 -0
- data/lib/xeroizer/record/payroll_base_model.rb +29 -0
- data/lib/xeroizer/record/record_association_helper.rb +141 -0
- data/lib/xeroizer/record/validation_helper.rb +75 -0
- data/lib/xeroizer/record/validators/associated_validator.rb +34 -0
- data/lib/xeroizer/record/validators/block_validator.rb +22 -0
- data/lib/xeroizer/record/validators/inclusion_of_validator.rb +22 -0
- data/lib/xeroizer/record/validators/length_of_validator.rb +23 -0
- data/lib/xeroizer/record/validators/presence_of_validator.rb +19 -0
- data/lib/xeroizer/record/validators/validator.rb +33 -0
- data/lib/xeroizer/record/xml_helper.rb +144 -0
- data/lib/xeroizer/report/aged_receivables_by_contact.rb +42 -0
- data/lib/xeroizer/report/base.rb +42 -0
- data/lib/xeroizer/report/cell.rb +32 -0
- data/lib/xeroizer/report/cell_xml_helper.rb +74 -0
- data/lib/xeroizer/report/factory.rb +54 -0
- data/lib/xeroizer/report/row/header.rb +12 -0
- data/lib/xeroizer/report/row/row.rb +48 -0
- data/lib/xeroizer/report/row/section.rb +10 -0
- data/lib/xeroizer/report/row/summary.rb +9 -0
- data/lib/xeroizer/report/row/xml_helper.rb +77 -0
- data/lib/xeroizer/report/xml_helper.rb +58 -0
- data/lib/xeroizer/response.rb +74 -0
- data/lib/xeroizer/version.rb +3 -0
- data/test/acceptance/about_creating_bank_transactions_test.rb +170 -0
- data/test/acceptance/about_creating_prepayment_test.rb +41 -0
- data/test/acceptance/about_fetching_bank_transactions_test.rb +53 -0
- data/test/acceptance/about_online_invoice_test.rb +25 -0
- data/test/acceptance/acceptance_test.rb +77 -0
- data/test/acceptance/bank_transaction_reference_data.rb +32 -0
- data/test/acceptance/bank_transfer_test.rb +21 -0
- data/test/acceptance/bulk_operations_test.rb +50 -0
- data/test/acceptance/connections_test.rb +11 -0
- data/test/stub_responses/accounts.xml +589 -0
- data/test/stub_responses/api_exception.xml +153 -0
- data/test/stub_responses/bad_request.json +6 -0
- data/test/stub_responses/bogus_oauth_error +1 -0
- data/test/stub_responses/branding_themes.xml +20 -0
- data/test/stub_responses/connections.json +16 -0
- data/test/stub_responses/contact.xml +54 -0
- data/test/stub_responses/contact_with_details.xml +79 -0
- data/test/stub_responses/contacts.xml +0 -0
- data/test/stub_responses/create_credit_note.xml +104 -0
- data/test/stub_responses/create_invoice.xml +64 -0
- data/test/stub_responses/credit_note.xml +75 -0
- data/test/stub_responses/credit_note_not_found_error.xml +1 -0
- data/test/stub_responses/credit_notes.xml +169 -0
- data/test/stub_responses/currencies.xml +12 -0
- data/test/stub_responses/employees.xml +29 -0
- data/test/stub_responses/expired_oauth2_token.json +6 -0
- data/test/stub_responses/generic_response_error.json +6 -0
- data/test/stub_responses/invalid_api_key_error.xml +1 -0
- data/test/stub_responses/invalid_consumer_key +1 -0
- data/test/stub_responses/invalid_oauth2_request_token.json +6 -0
- data/test/stub_responses/invalid_request_token +1 -0
- data/test/stub_responses/invalid_tenant_header.json +6 -0
- data/test/stub_responses/invoice.xml +84 -0
- data/test/stub_responses/invoice_not_found_error.xml +1 -0
- data/test/stub_responses/invoices.xml +1899 -0
- data/test/stub_responses/items.xml +112 -0
- data/test/stub_responses/manual_journal.xml +45 -0
- data/test/stub_responses/manual_journals.xml +40 -0
- data/test/stub_responses/nonce_used +1 -0
- data/test/stub_responses/object_not_found.json +6 -0
- data/test/stub_responses/organisation.xml +55 -0
- data/test/stub_responses/organisations.xml +35 -0
- data/test/stub_responses/payment_service.xml +15 -0
- data/test/stub_responses/payments.xml +1121 -0
- data/test/stub_responses/prepayments.xml +27 -0
- data/test/stub_responses/rate_limit_exceeded +1 -0
- data/test/stub_responses/records/contact-043892a1-aef1-4c18-88d8-b8ccb6d31466.xml +38 -0
- data/test/stub_responses/records/contact-09664078-efe2-4a88-89a5-67eac9b0047b.xml +40 -0
- data/test/stub_responses/records/contact-0a4cf37b-a1a8-4753-9ee2-f9207f63a8ff.xml +48 -0
- data/test/stub_responses/records/contact-0e74f929-11b9-4255-a035-1fdfe573e676.xml +40 -0
- data/test/stub_responses/records/contact-0f471ca5-15c9-405e-a1b9-7cc35194b673.xml +38 -0
- data/test/stub_responses/records/contact-13cd4c47-baa6-4f07-93f6-6442310df4bf.xml +47 -0
- data/test/stub_responses/records/contact-158a2667-82ee-43bf-8f33-a6cc9524092d.xml +38 -0
- data/test/stub_responses/records/contact-17465072-6fa3-40bf-bc42-97765d9e1bea.xml +38 -0
- data/test/stub_responses/records/contact-1975b0ed-b7ba-4c61-bae8-2aa6d78b0dee.xml +39 -0
- data/test/stub_responses/records/contact-1b2be6e9-8d58-4da9-aaf8-4fe5471b653c.xml +53 -0
- data/test/stub_responses/records/contact-1c40da58-fe1d-4e97-b729-b2abdae94d9e.xml +38 -0
- data/test/stub_responses/records/contact-258176a5-c622-4394-9c94-6f88c3ea12e5.xml +40 -0
- data/test/stub_responses/records/contact-299dd3a0-a417-4a37-8a04-2f55e91963e5.xml +40 -0
- data/test/stub_responses/records/contact-2be39278-5154-4ed1-8eb0-676f25acfc66.xml +40 -0
- data/test/stub_responses/records/contact-2e58cff6-488c-4a32-884b-baf848010229.xml +40 -0
- data/test/stub_responses/records/contact-2faccd41-935e-40aa-b74e-e2fc28ac34c3.xml +38 -0
- data/test/stub_responses/records/contact-31af01e7-2ca7-45b9-a500-b02db996568e.xml +38 -0
- data/test/stub_responses/records/contact-344f1113-a25b-4344-b82e-bedeacc17c8e.xml +40 -0
- data/test/stub_responses/records/contact-3e776c4b-ea9e-4bb1-96be-6b0c7a71a37f.xml +39 -0
- data/test/stub_responses/records/contact-3fc1fc6c-e5ff-4e40-b6f3-7eb535637d87.xml +38 -0
- data/test/stub_responses/records/contact-416ab20c-5357-4beb-a740-e8d175d71efb.xml +38 -0
- data/test/stub_responses/records/contact-41a42865-f15a-4fa1-b643-47877608f557.xml +54 -0
- data/test/stub_responses/records/contact-42771b60-19a7-4692-af81-dd9f9b9362d4.xml +43 -0
- data/test/stub_responses/records/contact-451ceb28-9610-44c9-8f35-3225482f2413.xml +40 -0
- data/test/stub_responses/records/contact-4ab343ad-1ebb-4afe-9d48-1814a93c2081.xml +38 -0
- data/test/stub_responses/records/contact-4bb77692-42d4-4565-85a0-8849eb85e039.xml +39 -0
- data/test/stub_responses/records/contact-4dec292f-3ab7-46a8-83e4-5fb5eac42c7f.xml +40 -0
- data/test/stub_responses/records/contact-4e2f192e-8397-4d4d-97ca-a4fc5ac531bf.xml +38 -0
- data/test/stub_responses/records/contact-5188c17c-7786-4436-ad6e-9da2997386d0.xml +40 -0
- data/test/stub_responses/records/contact-52442753-b1c4-40b7-9b79-c33997de5837.xml +40 -0
- data/test/stub_responses/records/contact-565acaa9-e7f3-4fbf-80c3-16b081ddae10.xml +38 -0
- data/test/stub_responses/records/contact-571a2414-81ff-4f8f-8498-d91d83793131.xml +44 -0
- data/test/stub_responses/records/contact-58697449-85ef-46ae-83fc-6a9446f037fb.xml +40 -0
- data/test/stub_responses/records/contact-58bf2ae3-5144-4628-8de2-e165ac2bcdc6.xml +40 -0
- data/test/stub_responses/records/contact-5d41dafd-eb7e-42c1-bd5a-ba3be1da0960.xml +38 -0
- data/test/stub_responses/records/contact-5f005a09-5ce4-4fb4-8096-e69c18be636e.xml +38 -0
- data/test/stub_responses/records/contact-60d578d9-3e10-4aef-b5dc-9d9fd60a3633.xml +47 -0
- data/test/stub_responses/records/contact-62392126-dba4-4a75-b907-5875ebf75259.xml +40 -0
- data/test/stub_responses/records/contact-642c7fb5-e8e5-48e1-a710-39a18c6c3217.xml +40 -0
- data/test/stub_responses/records/contact-64aebf9c-bb89-4b38-b99b-405bd1ece6fd.xml +40 -0
- data/test/stub_responses/records/contact-64eedbc9-1fa0-485a-837f-705f23188161.xml +38 -0
- data/test/stub_responses/records/contact-65e96c9f-1595-4653-9a8a-2a36d49223c2.xml +40 -0
- data/test/stub_responses/records/contact-67d26b93-ccb4-4890-9bf1-284b70ea755d.xml +38 -0
- data/test/stub_responses/records/contact-69d3e538-44b3-4e00-a5f6-7dddcb6e0656.xml +40 -0
- data/test/stub_responses/records/contact-6a8450bc-f81a-4bb0-a8f6-aa4afe9497c7.xml +40 -0
- data/test/stub_responses/records/contact-6c70e424-41d6-4b9b-af3e-b3a9f3589106.xml +40 -0
- data/test/stub_responses/records/contact-6de0b0cf-560c-4503-aab3-e1543c329deb.xml +54 -0
- data/test/stub_responses/records/contact-72dd6a02-396e-42a2-a4d6-cc3fa75dfece.xml +41 -0
- data/test/stub_responses/records/contact-755f1475-d255-43a8-bedc-5ea7fd26c71f.xml +51 -0
- data/test/stub_responses/records/contact-78a9d0a0-3d8c-4f84-af3e-f260bf4a9dc0.xml +38 -0
- data/test/stub_responses/records/contact-79aa39ca-22b0-42c2-9026-78757a29d665.xml +42 -0
- data/test/stub_responses/records/contact-804f4140-5978-48fe-ba20-b56e5b834b18.xml +40 -0
- data/test/stub_responses/records/contact-812d4f28-1681-4241-8e34-d15c5520ba35.xml +38 -0
- data/test/stub_responses/records/contact-860b99a9-0958-4c8d-a98f-bb1f092b16bb.xml +60 -0
- data/test/stub_responses/records/contact-87c8da45-97cc-46be-b170-398da0eacfb8.xml +40 -0
- data/test/stub_responses/records/contact-8a154a19-6c6c-404b-bbc9-6deae2d18251.xml +38 -0
- data/test/stub_responses/records/contact-8bb6931d-2865-44e9-9a23-ed1fb9c7a46c.xml +40 -0
- data/test/stub_responses/records/contact-936c9759-01da-4063-b472-424ab9f48212.xml +38 -0
- data/test/stub_responses/records/contact-9d12a994-9640-4b75-95cc-3de1e9d0ef09.xml +38 -0
- data/test/stub_responses/records/contact-9fe59245-1fbb-4157-93c3-dc97388f3746.xml +40 -0
- data/test/stub_responses/records/contact-a06a7225-6f8a-4522-8400-c534dd43a16e.xml +40 -0
- data/test/stub_responses/records/contact-a76a85fe-73a2-46fa-aba7-791f36103cdb.xml +40 -0
- data/test/stub_responses/records/contact-a93b5f40-0346-4d21-9181-431e129911c0.xml +40 -0
- data/test/stub_responses/records/contact-abf272dd-6b1d-4829-af88-c57bf55855e3.xml +38 -0
- data/test/stub_responses/records/contact-ad24c33b-256b-4157-ad56-cbcf0e8db7b1.xml +47 -0
- data/test/stub_responses/records/contact-b107129d-f4c9-438e-9573-64b778527f4a.xml +40 -0
- data/test/stub_responses/records/contact-b233288a-aa26-4b26-9fc7-779d797dd56f.xml +40 -0
- data/test/stub_responses/records/contact-b2b5333a-2546-4975-891f-d71a8a640d23.xml +38 -0
- data/test/stub_responses/records/contact-b4d149bf-1823-4bd2-96da-9032388c9686.xml +40 -0
- data/test/stub_responses/records/contact-b78d4fd1-4306-4d83-a0b9-61458d1c53a2.xml +40 -0
- data/test/stub_responses/records/contact-b7d108a8-d5f7-4f16-a7c9-26eaed98e8de.xml +40 -0
- data/test/stub_responses/records/contact-baeed0f3-7989-4874-99b3-59f23032cb73.xml +38 -0
- data/test/stub_responses/records/contact-bc51a3a1-b7f6-46ca-ac9e-19b87e6ca100.xml +40 -0
- data/test/stub_responses/records/contact-be9f3aab-52f5-4d9c-94b4-87f7d9e5ee8b.xml +38 -0
- data/test/stub_responses/records/contact-c135f994-01e4-427b-9e15-acfe8a477c16.xml +49 -0
- data/test/stub_responses/records/contact-c14edf75-15e4-4a9c-86e4-f52e2fe7cfa4.xml +40 -0
- data/test/stub_responses/records/contact-ca9b9abc-c2dc-4221-8101-31f464d314cc.xml +44 -0
- data/test/stub_responses/records/contact-cc4db604-9ed8-4eef-8a29-51b5b70496a0.xml +38 -0
- data/test/stub_responses/records/contact-cce9b044-be4a-43b3-9dc7-c027d8dd35b2.xml +38 -0
- data/test/stub_responses/records/contact-d0cd2c4f-18a0-4f7c-a32a-2db00f29d298.xml +43 -0
- data/test/stub_responses/records/contact-d6851dc2-9ed9-4515-bc0b-810b09c06a6a.xml +38 -0
- data/test/stub_responses/records/contact-d6a384fb-f46f-41a3-8ac7-b7bc9e0b5efa.xml +46 -0
- data/test/stub_responses/records/contact-d74e61cf-2ad0-4f0d-b9d1-6a808e3f70cf.xml +40 -0
- data/test/stub_responses/records/contact-d9ab0f61-3b56-4e2b-be39-f33c11bd99e3.xml +40 -0
- data/test/stub_responses/records/contact-dbb1f0b5-a71b-4458-8462-104acd0fec6b.xml +38 -0
- data/test/stub_responses/records/contact-dd981bd6-40dd-496d-a282-bf7d3391b8b9.xml +40 -0
- data/test/stub_responses/records/contact-e1826204-cc0a-42a5-a6d0-4b352d9d5953.xml +40 -0
- data/test/stub_responses/records/contact-e2d955db-f366-42dd-87f7-fbdb4da2306f.xml +40 -0
- data/test/stub_responses/records/contact-e32e2130-3d27-443a-8313-48fffa03cf53.xml +40 -0
- data/test/stub_responses/records/contact-e3a68332-d322-4816-8678-73a537c8cd33.xml +38 -0
- data/test/stub_responses/records/contact-e6ac76a3-ca32-4fa1-8ef9-6a4bf8b0ec2a.xml +40 -0
- data/test/stub_responses/records/contact-e6ca965d-7c48-480e-be39-e847307f474a.xml +38 -0
- data/test/stub_responses/records/contact-e77d1f20-2e8e-46ec-9a10-50335a216724.xml +40 -0
- data/test/stub_responses/records/contact-e8b98c13-a424-41d2-ba0e-7b7621411e7a.xml +38 -0
- data/test/stub_responses/records/contact-e8e9a2c2-3e7e-48ed-8528-c3d61b28f276.xml +39 -0
- data/test/stub_responses/records/contact-eb43fcc6-87ec-4a0a-b243-d718bee4e2cb.xml +38 -0
- data/test/stub_responses/records/contact-ef6f54c1-eb45-4956-b8cd-1be82ad665f2.xml +43 -0
- data/test/stub_responses/records/contact-efdb3600-f233-42e2-8f18-ce7e2a95e4b1.xml +38 -0
- data/test/stub_responses/records/contact-f7eca431-5c97-4d24-93fd-004bb8a6c644.xml +40 -0
- data/test/stub_responses/records/contact-fb078879-5d6d-474f-825f-61dc90689349.xml +38 -0
- data/test/stub_responses/records/contact-fc39b273-4aa2-4785-99ca-24672f6c0000.xml +38 -0
- data/test/stub_responses/records/contact-fc9ec3a6-a2fe-4300-a8cb-ca8a0b3662e0.xml +40 -0
- data/test/stub_responses/records/contact-fdf96102-7491-44b6-bf4d-7a77ff25f890.xml +40 -0
- data/test/stub_responses/records/contact-fe61ead1-8afc-4f0b-beda-066620227aad.xml +38 -0
- data/test/stub_responses/records/credit_note-371cd138-1e5c-4ec1-a8c6-a1c10e8bdab1.xml +73 -0
- data/test/stub_responses/records/credit_note-3bffc09b-79f2-490d-b91b-c59b700b43a4.xml +95 -0
- data/test/stub_responses/records/credit_note-43c678ee-f357-48e2-b192-b6e3634762f9.xml +94 -0
- data/test/stub_responses/records/credit_note-482c018b-d329-4e05-9b4f-7a4cfc695aa0.xml +77 -0
- data/test/stub_responses/records/credit_note-4f67130a-749a-4ee6-98b2-743adbc11245.xml +62 -0
- data/test/stub_responses/records/credit_note-50e98404-2fba-4031-af67-8ba4bb227c44.xml +77 -0
- data/test/stub_responses/records/credit_note-7df8949c-b71f-40c0-bbcf-39f2f450f286.xml +75 -0
- data/test/stub_responses/records/credit_note-b356e488-2678-4be4-ad4b-d294df2d48d6.xml +78 -0
- data/test/stub_responses/records/invoice-0032f627-3156-4d30-9b1c-4d3b994dc921.xml +84 -0
- data/test/stub_responses/records/invoice-00c9511b-24b9-4190-a90a-8abf2fe9f4a0.xml +76 -0
- data/test/stub_responses/records/invoice-024d7994-a26c-4c20-9894-13934840fc31.xml +74 -0
- data/test/stub_responses/records/invoice-0e64a623-c2a1-446a-93ed-eb897f118cbc.xml +97 -0
- data/test/stub_responses/records/invoice-15e88e57-2554-4496-a18e-eb3f5c622345.xml +75 -0
- data/test/stub_responses/records/invoice-166f0588-d0ba-458c-b28a-8edd4c8fc463.xml +75 -0
- data/test/stub_responses/records/invoice-1d1ba340-afa2-4f4c-8ff7-a147bda9a47b.xml +93 -0
- data/test/stub_responses/records/invoice-290ef4c4-baec-492b-b4dd-c102826470ae.xml +87 -0
- data/test/stub_responses/records/invoice-30a87092-31b5-4a2c-831e-327486533dd2.xml +79 -0
- data/test/stub_responses/records/invoice-30dbd181-72a8-43df-b392-4241bf43d5fc.xml +79 -0
- data/test/stub_responses/records/invoice-33e4123e-7cdd-4f05-9a0a-eb8adeb2b868.xml +94 -0
- data/test/stub_responses/records/invoice-387db692-26ac-47e6-b6cc-015343809bda.xml +75 -0
- data/test/stub_responses/records/invoice-3b28bf11-ed2f-4cf4-8e9e-fcae730cc292.xml +91 -0
- data/test/stub_responses/records/invoice-3fcb9847-b350-412e-ab90-7d9d774ad881.xml +91 -0
- data/test/stub_responses/records/invoice-440613e4-4785-4eff-9ba1-c432816cf8c7.xml +78 -0
- data/test/stub_responses/records/invoice-4602eda6-abe9-448e-b65f-ae6bea21f0eb.xml +98 -0
- data/test/stub_responses/records/invoice-46441f63-873f-4cdc-a278-b8fe516f3abb.xml +94 -0
- data/test/stub_responses/records/invoice-4ad1ec01-f4a3-41d7-bbb4-d2ab2fec8e65.xml +74 -0
- data/test/stub_responses/records/invoice-4b9afceb-f7c7-4e64-8aac-7b009971fd52.xml +86 -0
- data/test/stub_responses/records/invoice-4edbf6d5-4e92-43af-bedd-7effc0b86833.xml +70 -0
- data/test/stub_responses/records/invoice-4fad1af2-b871-4ac5-a15a-3c5e32d2e2c4.xml +93 -0
- data/test/stub_responses/records/invoice-52ee4d67-cae4-462c-adb2-182c39017f3d.xml +83 -0
- data/test/stub_responses/records/invoice-54585f46-c1a0-4432-bd4f-c1fae2fba59b.xml +67 -0
- data/test/stub_responses/records/invoice-5613938b-9e27-472e-92ae-3b038b669d10.xml +87 -0
- data/test/stub_responses/records/invoice-5aa9451d-95d1-4f95-a966-bbab2573f71c.xml +75 -0
- data/test/stub_responses/records/invoice-5aadcd34-01a9-4b8d-a2bb-d7cc1de9fa45.xml +89 -0
- data/test/stub_responses/records/invoice-5f6deadf-36a2-495a-9980-ceb11e8af9a9.xml +85 -0
- data/test/stub_responses/records/invoice-625ffe1b-f5d8-438e-a376-981de5f5a733.xml +77 -0
- data/test/stub_responses/records/invoice-64cd559e-8e03-46af-b461-8555285cee71.xml +86 -0
- data/test/stub_responses/records/invoice-666f8dbb-bc9a-476c-8ec4-4665d7f83190.xml +63 -0
- data/test/stub_responses/records/invoice-66fbe37f-49b1-43fd-97ed-85114022cd2f.xml +79 -0
- data/test/stub_responses/records/invoice-673dd7cc-beb7-4697-83d4-0c47cb400cc2.xml +95 -0
- data/test/stub_responses/records/invoice-69fc971e-9b37-41c5-9c87-174330f22343.xml +66 -0
- data/test/stub_responses/records/invoice-70e6db69-e5a4-42c7-a397-aa3212c2945f.xml +75 -0
- data/test/stub_responses/records/invoice-762aa45d-4632-45b5-8087-b4f47690665e.xml +54 -0
- data/test/stub_responses/records/invoice-766d1289-b440-4675-a656-1a0612ecac77.xml +76 -0
- data/test/stub_responses/records/invoice-76bcb361-f93b-4513-b312-5a4af306d276.xml +67 -0
- data/test/stub_responses/records/invoice-76e3f056-479f-417c-a72b-f3d767899b87.xml +91 -0
- data/test/stub_responses/records/invoice-77b338ef-ecc0-4b95-a0d7-2617b0054611.xml +114 -0
- data/test/stub_responses/records/invoice-7be9956d-5316-4f6b-a66a-d355b3f159b2.xml +84 -0
- data/test/stub_responses/records/invoice-7dae876a-b424-436b-a4e6-17b3fdeec80c.xml +91 -0
- data/test/stub_responses/records/invoice-7e862d93-8dab-4856-8b0c-d844e09d750f.xml +68 -0
- data/test/stub_responses/records/invoice-803f70b0-56d9-4157-9787-41df271777a0.xml +84 -0
- data/test/stub_responses/records/invoice-86102312-aa3f-438c-9938-6840f4d8dda6.xml +75 -0
- data/test/stub_responses/records/invoice-8694c9c5-7097-4449-a708-b8c1982921a4.xml +69 -0
- data/test/stub_responses/records/invoice-86d6e00f-ef56-49f7-9a54-796ccd5ca057.xml +85 -0
- data/test/stub_responses/records/invoice-88e77f0f-54a5-4efc-a979-7e22223cc4d7.xml +66 -0
- data/test/stub_responses/records/invoice-8b0ccb6a-d9b7-4da5-8360-ef7fb157b5aa.xml +66 -0
- data/test/stub_responses/records/invoice-935fc854-8037-4111-8d91-993010c331cc.xml +74 -0
- data/test/stub_responses/records/invoice-95ef3000-c764-4ba9-a66a-b6e2d161f839.xml +62 -0
- data/test/stub_responses/records/invoice-962ef33f-c9d2-4602-9b9f-93a02bea23b3.xml +93 -0
- data/test/stub_responses/records/invoice-9868b472-1983-48e9-8edf-7e81ddf2c03a.xml +85 -0
- data/test/stub_responses/records/invoice-9a448e9b-a9fa-4a8b-98f5-6dc892a37374.xml +62 -0
- data/test/stub_responses/records/invoice-a1d04a14-96a8-4067-a0ff-8136990a354f.xml +91 -0
- data/test/stub_responses/records/invoice-a3bc62ef-f11b-4a9c-a4f9-a342bda371b5.xml +66 -0
- data/test/stub_responses/records/invoice-a6894ca0-60ee-4d45-9dd4-b44fcba46ec5.xml +90 -0
- data/test/stub_responses/records/invoice-a77268ce-74b2-483d-a2b3-70dbdc9e49d2.xml +78 -0
- data/test/stub_responses/records/invoice-a9f765e6-b9bc-4505-a47b-fb3ecb327e7b.xml +88 -0
- data/test/stub_responses/records/invoice-aa0173af-8707-4e7f-8dde-4c7a357bd312.xml +109 -0
- data/test/stub_responses/records/invoice-ab63738a-370a-43a5-bfa3-620d684e66d0.xml +83 -0
- data/test/stub_responses/records/invoice-b0344791-5a8a-40dd-a208-d99a461a6c10.xml +84 -0
- data/test/stub_responses/records/invoice-b1e53910-473c-46a3-b3cb-38ece571220e.xml +76 -0
- data/test/stub_responses/records/invoice-b2c02d0b-41a8-4d4d-97d7-014c78b3547d.xml +93 -0
- data/test/stub_responses/records/invoice-b75b3928-ab72-4424-8b93-9cdbbde4cd72.xml +90 -0
- data/test/stub_responses/records/invoice-bcd8a71f-aa31-4d0f-8a01-13ea26363ddf.xml +94 -0
- data/test/stub_responses/records/invoice-bfbb7c45-de02-45e7-b065-d9863ecfb0d8.xml +66 -0
- data/test/stub_responses/records/invoice-c12aff7e-12bf-4185-8702-460929f19674.xml +77 -0
- data/test/stub_responses/records/invoice-c3380b96-976d-4b3e-8b26-8d01eb6a3742.xml +87 -0
- data/test/stub_responses/records/invoice-c963f2b0-cbe1-4abd-9ccc-7e512c942068.xml +67 -0
- data/test/stub_responses/records/invoice-cba46b29-3788-4158-b668-ab10160ccbfe.xml +78 -0
- data/test/stub_responses/records/invoice-d62646b9-d0a9-4fdb-9561-756a8b7eba45.xml +63 -0
- data/test/stub_responses/records/invoice-dba2f021-f149-4191-a126-5351d587ab0e.xml +75 -0
- data/test/stub_responses/records/invoice-de5d9c29-21b3-4342-958b-ed72c4bd7ab0.xml +108 -0
- data/test/stub_responses/records/invoice-e3d96555-2876-4364-a46a-7551a4f52611.xml +123 -0
- data/test/stub_responses/records/invoice-e4a0afbd-aea0-450b-ae23-0ce921e84a77.xml +102 -0
- data/test/stub_responses/records/invoice-e9cb9ecb-58ef-43a8-bd20-69a85338142d.xml +76 -0
- data/test/stub_responses/records/invoice-ec9a6f67-7128-4a63-8ba3-5e516f455f9b.xml +94 -0
- data/test/stub_responses/records/invoice-ed0f2587-84fc-4aef-bc4b-b1a262e24484.xml +81 -0
- data/test/stub_responses/records/invoice-f362ca53-8ade-4047-865a-bb64bee5863d.xml +74 -0
- data/test/stub_responses/records/invoice-f571c38b-5be1-41e1-ad5a-ff6184284beb.xml +114 -0
- data/test/stub_responses/records/invoice-f5832195-5cd3-4660-ad3f-b73d9c64f263.xml +85 -0
- data/test/stub_responses/records/invoice-f9c857eb-64cd-4235-a078-d04b52c77ea7.xml +76 -0
- data/test/stub_responses/records/manual_journal-4765d07b-aa03-4e56-9166-50661958c864.xml +38 -0
- data/test/stub_responses/records/manual_journal-53fc5558-5b76-4ecd-ae5c-c4af3ccde87c.xml +31 -0
- data/test/stub_responses/records/manual_journal-bb6cfcfc-4500-4475-bd3a-93ee512428e0.xml +31 -0
- data/test/stub_responses/records/manual_journal-f00a355b-7374-445c-886b-0437bea4095c.xml +45 -0
- data/test/stub_responses/records/prepayment-7d3619b1-82cc-405b-8f44-9d4f9a787a8a.xml +92 -0
- data/test/stub_responses/records/repeating_invoice-ad3550bc-1ae0-45c0-a782-48c6d2061127.xml +43 -0
- data/test/stub_responses/refresh_responses.rb +29 -0
- data/test/stub_responses/repeating_invoices.xml +43 -0
- data/test/stub_responses/reports/trial_balance.xml +1435 -0
- data/test/stub_responses/tax_rates.xml +198 -0
- data/test/stub_responses/token_expired +1 -0
- data/test/stub_responses/tracking_categories.xml +27 -0
- data/test/stub_responses/unknown_error.xml +1 -0
- data/test/stub_responses/users.xml +17 -0
- data/test/test_helper.rb +72 -0
- data/test/unit/generic_application_test.rb +52 -0
- data/test/unit/http_test.rb +302 -0
- data/test/unit/models/address_test.rb +92 -0
- data/test/unit/models/bank_transaction_model_parsing_test.rb +133 -0
- data/test/unit/models/bank_transaction_test.rb +44 -0
- data/test/unit/models/bank_transaction_validation_test.rb +115 -0
- data/test/unit/models/contact_test.rb +132 -0
- data/test/unit/models/credit_note_test.rb +37 -0
- data/test/unit/models/employee_test.rb +43 -0
- data/test/unit/models/invoice_test.rb +133 -0
- data/test/unit/models/journal_line_test.rb +22 -0
- data/test/unit/models/journal_test.rb +44 -0
- data/test/unit/models/line_item_sum_test.rb +25 -0
- data/test/unit/models/line_item_test.rb +59 -0
- data/test/unit/models/manual_journal_test.rb +25 -0
- data/test/unit/models/organisation_test.rb +52 -0
- data/test/unit/models/payment_service_test.rb +29 -0
- data/test/unit/models/phone_test.rb +31 -0
- data/test/unit/models/prepayment_test.rb +21 -0
- data/test/unit/models/repeating_invoice_test.rb +36 -0
- data/test/unit/models/tax_rate_test.rb +132 -0
- data/test/unit/oauth2_test.rb +171 -0
- data/test/unit/oauth_config_test.rb +20 -0
- data/test/unit/oauth_test.rb +179 -0
- data/test/unit/private_application_test.rb +20 -0
- data/test/unit/record/base_model_test.rb +58 -0
- data/test/unit/record/base_test.rb +174 -0
- data/test/unit/record/block_validator_test.rb +125 -0
- data/test/unit/record/connection_test.rb +60 -0
- data/test/unit/record/model_definition_test.rb +165 -0
- data/test/unit/record/parse_params_test.rb +59 -0
- data/test/unit/record/parse_where_hash_test.rb +63 -0
- data/test/unit/record/record_association_test.rb +93 -0
- data/test/unit/record/validators_test.rb +228 -0
- data/test/unit/record_definition_test.rb +27 -0
- data/test/unit/report_definition_test.rb +26 -0
- data/test/unit/report_test.rb +154 -0
- data/test/unit_test_helper.rb +16 -0
- metadata +1024 -0
@@ -0,0 +1,41 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
require "acceptance_test"
|
3
|
+
|
4
|
+
class AboutCreatingPrepayment < Test::Unit::TestCase
|
5
|
+
include AcceptanceTest
|
6
|
+
|
7
|
+
def any_line_items(account)
|
8
|
+
[{
|
9
|
+
:description => "Clingfilm bike shorts",
|
10
|
+
:quantity => 1,
|
11
|
+
:unit_amount => "200.00",
|
12
|
+
:account_code => account.code,
|
13
|
+
:tax_type => account.tax_type
|
14
|
+
}]
|
15
|
+
end
|
16
|
+
|
17
|
+
def assert_exists(prepayment, client)
|
18
|
+
assert_not_nil prepayment.id,
|
19
|
+
"Cannot check for exitence unless the prepayment (bank transaction) has non-null identifier"
|
20
|
+
assert_not_nil client.BankTransaction.find prepayment.id
|
21
|
+
end
|
22
|
+
|
23
|
+
setup do
|
24
|
+
@client = AcceptanceTestHelpers.oauth2_client
|
25
|
+
all_accounts = @client.Account.all
|
26
|
+
@account = all_accounts.select{|acct| acct.status == "ACTIVE" && acct.type == "REVENUE"}.first
|
27
|
+
@bank_account = all_accounts.select{|acct| acct.status == "ACTIVE" && acct.type == "BANK"}.first
|
28
|
+
end
|
29
|
+
|
30
|
+
can "create a new PrePayment bank transaction" do
|
31
|
+
new_transaction = @client.BankTransaction.build(
|
32
|
+
:type => "RECEIVE-PREPAYMENT",
|
33
|
+
:contact => { :name => "Jazz Kang" },
|
34
|
+
:line_items => any_line_items(@account),
|
35
|
+
:bank_account => { :account_id => @bank_account.account_id }
|
36
|
+
)
|
37
|
+
|
38
|
+
assert new_transaction.save, "Save failed with the following errors: #{new_transaction.errors.inspect}"
|
39
|
+
assert_exists new_transaction, @client
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
require "acceptance_test"
|
3
|
+
require "bank_transaction_reference_data"
|
4
|
+
|
5
|
+
class AboutFetchingBankTransactions < Test::Unit::TestCase
|
6
|
+
include AcceptanceTest
|
7
|
+
|
8
|
+
setup do
|
9
|
+
@client = AcceptanceTestHelpers.oauth2_client
|
10
|
+
end
|
11
|
+
|
12
|
+
context "when requesting a single bank transaction with a reference" do
|
13
|
+
setup do
|
14
|
+
@a_new_bank_transaction = BankTransactionReferenceData.new(@client).bank_transaction
|
15
|
+
end
|
16
|
+
|
17
|
+
it "has the extended set of attributes" do
|
18
|
+
keys = [:line_amount_types, :contact, :date, :status, :line_items,
|
19
|
+
:updated_date_utc, :currency_code, :bank_transaction_id,
|
20
|
+
:bank_account, :type, :reference, :is_reconciled, :currency_rate]
|
21
|
+
assert_equal(keys, @a_new_bank_transaction.attributes.keys)
|
22
|
+
end
|
23
|
+
|
24
|
+
it "returns full line item details" do
|
25
|
+
single_bank_transaction = @client.BankTransaction.find @a_new_bank_transaction.id
|
26
|
+
|
27
|
+
assert_not_empty single_bank_transaction.line_items,
|
28
|
+
"expected the bank transaction's line items to have been included"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
context "when requesting all bank transactions (i.e., without filter)" do
|
33
|
+
setup do
|
34
|
+
@the_first_bank_transaction = @client.BankTransaction.all.detect { |trans| trans.attributes.keys.include?(:reference) }
|
35
|
+
end
|
36
|
+
|
37
|
+
it "has the limited set of attributes" do
|
38
|
+
keys = [:line_amount_types, :contact, :date, :status, :updated_date_utc,
|
39
|
+
:currency_code, :bank_transaction_id, :bank_account, :type, :reference,
|
40
|
+
:is_reconciled]
|
41
|
+
assert_equal(keys, @the_first_bank_transaction.attributes.keys)
|
42
|
+
end
|
43
|
+
|
44
|
+
it "returns contact" do
|
45
|
+
assert_not_nil @the_first_bank_transaction.contact
|
46
|
+
end
|
47
|
+
|
48
|
+
it "returns the bank account" do
|
49
|
+
assert_not_nil @the_first_bank_transaction.bank_account
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
require "acceptance_test"
|
3
|
+
|
4
|
+
class AboutGetOnlineInvoiceUrl < Test::Unit::TestCase
|
5
|
+
include AcceptanceTest
|
6
|
+
|
7
|
+
setup do
|
8
|
+
@client = AcceptanceTestHelpers.oauth2_client
|
9
|
+
@invoice = @client.Invoice.all(:where => 'Type=="ACCREC"').first
|
10
|
+
@invoice_acc_pay = @client.Invoice.all(:where => 'Type=="ACCPAY"').first
|
11
|
+
end
|
12
|
+
|
13
|
+
can "Request OnlineInvoice of an AccRec invoice" do
|
14
|
+
@online_invoice = @invoice.online_invoice
|
15
|
+
|
16
|
+
assert @online_invoice.online_invoice_url, "online_invoice_url not found"
|
17
|
+
assert @online_invoice.online_invoice_url.start_with?('https://in.xero.com/'), "online_invoice_url returned in unexpected format"
|
18
|
+
end
|
19
|
+
|
20
|
+
can "Not request OnlineInvoice of an AccPay invoice" do
|
21
|
+
assert_raise do
|
22
|
+
@online_invoice_acc_pay = @invoice_acc_pay.online_invoice
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
module AcceptanceTestHelpers
|
2
|
+
def self.oauth_client
|
3
|
+
config = load_config_from_file || load_config_from_env
|
4
|
+
Xeroizer::PrivateApplication.new(config.consumer_key, config.consumer_secret, config.key_file)
|
5
|
+
end
|
6
|
+
|
7
|
+
def self.oauth2_client
|
8
|
+
config = self.load_oauth2_config_from_env
|
9
|
+
Xeroizer::OAuth2Application.new(
|
10
|
+
config.client_id,
|
11
|
+
config.client_secret,
|
12
|
+
access_token: config.access_token,
|
13
|
+
tenant_id: config.tenant_id
|
14
|
+
)
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.load_config_from_file
|
18
|
+
the_file_name = File.join(File.dirname(__FILE__), '..', '..', '.oauth')
|
19
|
+
|
20
|
+
return nil unless File.exist? the_file_name
|
21
|
+
|
22
|
+
Xeroizer::OAuthConfig.load IO.read the_file_name
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.load_config_from_env
|
26
|
+
raise "No CONSUMER_KEY environment variable specified." unless ENV["CONSUMER_KEY"]
|
27
|
+
raise "No CONSUMER_SECRET environment variable specified." unless ENV["CONSUMER_SECRET"]
|
28
|
+
raise "No PRIVATE_KEY_PATH environment variable specified." unless ENV["PRIVATE_KEY_PATH"]
|
29
|
+
raise "The file <#{ENV["PRIVATE_KEY_PATH"]}> does not exist." unless File.exist?(ENV["PRIVATE_KEY_PATH"])
|
30
|
+
Xeroizer::OAuthCredentials.new ENV["CONSUMER_KEY"], ENV["CONSUMER_SECRET"], ENV["PRIVATE_KEY_PATH"]
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.load_oauth2_config_from_env
|
34
|
+
raise "No XERO_CLIENT_ID environment variable specified." unless ENV["XERO_CLIENT_ID"]
|
35
|
+
raise "No XERO_CLIENT_SECRET environment variable specified." unless ENV["XERO_CLIENT_SECRET"]
|
36
|
+
raise "No XERO_ACCESS_TOKEN environment variable specified." unless ENV["XERO_ACCESS_TOKEN"]
|
37
|
+
raise "No XERO_TENANT_ID environment variable specified." unless ENV["XERO_TENANT_ID"]
|
38
|
+
|
39
|
+
OpenStruct.new(client_id: ENV["XERO_CLIENT_ID"],
|
40
|
+
client_secret: ENV["XERO_CLIENT_SECRET"],
|
41
|
+
access_token: ENV["XERO_ACCESS_TOKEN"],
|
42
|
+
tenant_id: ENV["XERO_TENANT_ID"])
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
module AcceptanceTest
|
47
|
+
class << self
|
48
|
+
def included(klass)
|
49
|
+
klass.class_eval do
|
50
|
+
def self.it_works_using_oauth1_and_oauth2(&block)
|
51
|
+
instance_exec(AcceptanceTestHelpers.oauth_client, 'oauth', &block)
|
52
|
+
instance_exec(AcceptanceTestHelpers.oauth2_client, 'oauth2', &block)
|
53
|
+
end
|
54
|
+
|
55
|
+
def self.log_to_console
|
56
|
+
Xeroizer::Logging.const_set :Log, Xeroizer::Logging::StdOutLog
|
57
|
+
end
|
58
|
+
|
59
|
+
def self.no_log
|
60
|
+
Xeroizer::Logging.const_set :Log, Xeroizer::Logging::DevNullLog
|
61
|
+
end
|
62
|
+
|
63
|
+
def self.let(symbol, &block)
|
64
|
+
return unless block_given?
|
65
|
+
|
66
|
+
unless respond_to? symbol
|
67
|
+
define_method symbol do
|
68
|
+
cached_method_result = instance_variable_get ivar_name = "@#{symbol}"
|
69
|
+
instance_variable_set(ivar_name, instance_eval(&block)) if cached_method_result.nil?
|
70
|
+
instance_variable_get ivar_name
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
class BankTransactionReferenceData
|
2
|
+
def initialize(client); @client = client; end
|
3
|
+
def bank_transaction; @bank_transaction ||= new_bank_transaction; end
|
4
|
+
|
5
|
+
private
|
6
|
+
|
7
|
+
def new_bank_transaction
|
8
|
+
all_accounts = @client.Account.all
|
9
|
+
|
10
|
+
account = all_accounts.select{|acct| acct.status == "ACTIVE" && acct.type == "REVENUE"}.first
|
11
|
+
bank_account = all_accounts.select{|acct| acct.status == "ACTIVE" && acct.type == "BANK"}.first
|
12
|
+
|
13
|
+
result = @client.BankTransaction.build(
|
14
|
+
:type => "SPEND",
|
15
|
+
:contact => { :name => "Jazz Kang" },
|
16
|
+
:line_items => [
|
17
|
+
:description => "Bike shorts made of clear, unbreathable material",
|
18
|
+
:quantity => 1,
|
19
|
+
:unit_amount => 39.99,
|
20
|
+
:account_code => account.code,
|
21
|
+
:tax_type => account.tax_type
|
22
|
+
],
|
23
|
+
:bank_account => { :account_id => bank_account.account_id },
|
24
|
+
:reference => "BTF323"
|
25
|
+
)
|
26
|
+
|
27
|
+
fail("Expected save to have succeeded, but it failed. #{result.errors.inspect}") unless result.save
|
28
|
+
|
29
|
+
result
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
require "acceptance_test"
|
3
|
+
|
4
|
+
class BankTransfer < Test::Unit::TestCase
|
5
|
+
include AcceptanceTest
|
6
|
+
|
7
|
+
it_works_using_oauth1_and_oauth2 do |client, client_type|
|
8
|
+
can "create a bank for #{client_type}" do
|
9
|
+
all_accounts = client.Account.all
|
10
|
+
@from_bank_account = all_accounts.select { |acct| acct.status == "ACTIVE" && acct.type == "BANK" }.first
|
11
|
+
@to_bank_account = all_accounts.select { |acct| acct.status == "ACTIVE" && acct.type == "BANK" }.last
|
12
|
+
|
13
|
+
new_transfer = client.BankTransfer.build(
|
14
|
+
:amount => 300,
|
15
|
+
:from_bank_account => { :account_id => @from_bank_account.account_id },
|
16
|
+
:to_bank_account => { :account_id => @to_bank_account.account_id }
|
17
|
+
)
|
18
|
+
assert new_transfer.save, "Save failed with the following errors: #{new_transfer.errors.inspect}"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
require "acceptance_test"
|
3
|
+
require "shoulda/matchers"
|
4
|
+
|
5
|
+
include Shoulda::Matchers
|
6
|
+
|
7
|
+
class BulkOperationsTest < Test::Unit::TestCase
|
8
|
+
include AcceptanceTest
|
9
|
+
|
10
|
+
def random_name
|
11
|
+
"test-person-#{rand 1000000000}"
|
12
|
+
end
|
13
|
+
|
14
|
+
setup do
|
15
|
+
@client = AcceptanceTestHelpers.oauth2_client
|
16
|
+
end
|
17
|
+
|
18
|
+
should "create multiple invoices at once" do
|
19
|
+
c1, c2 = nil, nil
|
20
|
+
assert_true(
|
21
|
+
@client.Contact.batch_save do
|
22
|
+
c1 = @client.Contact.build(name: random_name)
|
23
|
+
c2 = @client.Contact.build(name: random_name)
|
24
|
+
end
|
25
|
+
)
|
26
|
+
[c1, c2].each {|c| assert_false c.new_record? }
|
27
|
+
end
|
28
|
+
|
29
|
+
can "create and update new records in bulk" do
|
30
|
+
c1, c2 = nil, nil
|
31
|
+
assert_true(
|
32
|
+
@client.Contact.batch_save do
|
33
|
+
c1 = @client.Contact.create(name: random_name)
|
34
|
+
c1.email_address = "foo@bar.com"
|
35
|
+
c2 = @client.Contact.build(name: random_name)
|
36
|
+
end
|
37
|
+
)
|
38
|
+
[c1, c2].each {|c| assert_false c.new_record? }
|
39
|
+
c1.download_complete_record!
|
40
|
+
assert_equal c1.email_address, "foo@bar.com"
|
41
|
+
end
|
42
|
+
|
43
|
+
can "return false from #batch_save if validation fails" do
|
44
|
+
assert_false(
|
45
|
+
@client.Contact.batch_save do
|
46
|
+
@client.Contact.build(email_address: "guy-with-no-name@example.com")
|
47
|
+
end
|
48
|
+
)
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
require "acceptance_test"
|
3
|
+
|
4
|
+
class ConnectionsTest < Test::Unit::TestCase
|
5
|
+
include AcceptanceTest
|
6
|
+
|
7
|
+
should "be able to hit Xero to get current connections via OAuth2" do
|
8
|
+
connections = AcceptanceTestHelpers.oauth2_client.current_connections
|
9
|
+
assert_not_nil connections.first.tenant_id
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,589 @@
|
|
1
|
+
<Response xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
2
|
+
<Id>123bfff9-e1b6-481b-9f3b-41997d7bd627</Id>
|
3
|
+
<Status>OK</Status>
|
4
|
+
<ProviderName>Appcordion Private</ProviderName>
|
5
|
+
<DateTimeUTC>2010-12-21T00:56:58.7320527Z</DateTimeUTC>
|
6
|
+
<Accounts>
|
7
|
+
<Account>
|
8
|
+
<AccountID>13918178-849a-4823-9a31-57b7eac713d7</AccountID>
|
9
|
+
<Name>ANZ Business Account</Name>
|
10
|
+
<Status>ACTIVE</Status>
|
11
|
+
<Type>BANK</Type>
|
12
|
+
<TaxType>NONE</TaxType>
|
13
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
14
|
+
<BankAccountNumber>01023412345678</BankAccountNumber>
|
15
|
+
<CurrencyCode>AUD</CurrencyCode>
|
16
|
+
</Account>
|
17
|
+
<Account>
|
18
|
+
<AccountID>26028d3a-f981-44d6-a9ed-a522198870f8</AccountID>
|
19
|
+
<Code>099</Code>
|
20
|
+
<Name>Ridgeway Savings</Name>
|
21
|
+
<Status>ACTIVE</Status>
|
22
|
+
<Type>BANK</Type>
|
23
|
+
<TaxType>NONE</TaxType>
|
24
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
25
|
+
<BankAccountNumber>0932107654321</BankAccountNumber>
|
26
|
+
<CurrencyCode>AUD</CurrencyCode>
|
27
|
+
</Account>
|
28
|
+
<Account>
|
29
|
+
<AccountID>e2bacdc6-2006-43c2-a5da-3c0e5f43b452</AccountID>
|
30
|
+
<Code>200</Code>
|
31
|
+
<Name>Sales</Name>
|
32
|
+
<Status>ACTIVE</Status>
|
33
|
+
<Type>REVENUE</Type>
|
34
|
+
<TaxType>OUTPUT</TaxType>
|
35
|
+
<Description>Income from any normal business activity</Description>
|
36
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
37
|
+
</Account>
|
38
|
+
<Account>
|
39
|
+
<AccountID>39987591-5a9a-4513-8072-828069a65f9c</AccountID>
|
40
|
+
<Code>260</Code>
|
41
|
+
<Name>Other Revenue</Name>
|
42
|
+
<Status>ACTIVE</Status>
|
43
|
+
<Type>REVENUE</Type>
|
44
|
+
<TaxType>OUTPUT</TaxType>
|
45
|
+
<Description>Any other income that does not relate to normal business activities and is not recurring</Description>
|
46
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
47
|
+
</Account>
|
48
|
+
<Account>
|
49
|
+
<AccountID>1335b8b2-4d63-4af8-937f-04087ae2e36e</AccountID>
|
50
|
+
<Code>270</Code>
|
51
|
+
<Name>Interest Income</Name>
|
52
|
+
<Status>ACTIVE</Status>
|
53
|
+
<Type>REVENUE</Type>
|
54
|
+
<TaxType>NONE</TaxType>
|
55
|
+
<Description>Interest income</Description>
|
56
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
57
|
+
</Account>
|
58
|
+
<Account>
|
59
|
+
<AccountID>ee30a086-d381-4bd6-ba47-7af927d25825</AccountID>
|
60
|
+
<Code>300</Code>
|
61
|
+
<Name>Purchases</Name>
|
62
|
+
<Status>ACTIVE</Status>
|
63
|
+
<Type>DIRECTCOSTS</Type>
|
64
|
+
<TaxType>INPUT</TaxType>
|
65
|
+
<Description>Goods purchased with the intention of selling these to customers</Description>
|
66
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
67
|
+
<ReportingCode>EXP</ReportingCode>
|
68
|
+
<ReportingCodeName>Expense</ReportingCodeName>
|
69
|
+
</Account>
|
70
|
+
<Account>
|
71
|
+
<AccountID>d392fe47-c99d-499e-a200-46709dd6b6e7</AccountID>
|
72
|
+
<Code>400</Code>
|
73
|
+
<Name>Advertising</Name>
|
74
|
+
<Status>ACTIVE</Status>
|
75
|
+
<Type>EXPENSE</Type>
|
76
|
+
<TaxType>INPUT</TaxType>
|
77
|
+
<Description>Expenses incurred for advertising while trying to increase sales</Description>
|
78
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
79
|
+
</Account>
|
80
|
+
<Account>
|
81
|
+
<AccountID>959af5f4-9925-44e8-b283-7ddf4b427238</AccountID>
|
82
|
+
<Code>404</Code>
|
83
|
+
<Name>Bank Fees</Name>
|
84
|
+
<Status>ACTIVE</Status>
|
85
|
+
<Type>EXPENSE</Type>
|
86
|
+
<TaxType>NONE</TaxType>
|
87
|
+
<Description>Fees charged by your bank for transactions regarding your bank account(s).</Description>
|
88
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
89
|
+
</Account>
|
90
|
+
<Account>
|
91
|
+
<AccountID>ff09eac3-5b17-44fb-9eea-e2e9375e91b4</AccountID>
|
92
|
+
<Code>408</Code>
|
93
|
+
<Name>Cleaning</Name>
|
94
|
+
<Status>ACTIVE</Status>
|
95
|
+
<Type>EXPENSE</Type>
|
96
|
+
<TaxType>INPUT</TaxType>
|
97
|
+
<Description>Expenses incurred for cleaning business property.</Description>
|
98
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
99
|
+
</Account>
|
100
|
+
<Account>
|
101
|
+
<AccountID>6db51cfa-0326-4e63-a743-c78c4d99aba4</AccountID>
|
102
|
+
<Code>412</Code>
|
103
|
+
<Name>Consulting & Accounting</Name>
|
104
|
+
<Status>ACTIVE</Status>
|
105
|
+
<Type>EXPENSE</Type>
|
106
|
+
<TaxType>INPUT</TaxType>
|
107
|
+
<Description>Expenses related to paying consultants</Description>
|
108
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
109
|
+
</Account>
|
110
|
+
<Account>
|
111
|
+
<AccountID>7f940c53-bae5-41a8-a3a3-c841227fee01</AccountID>
|
112
|
+
<Code>416</Code>
|
113
|
+
<Name>Depreciation</Name>
|
114
|
+
<Status>ACTIVE</Status>
|
115
|
+
<Type>EXPENSE</Type>
|
116
|
+
<TaxType>NONE</TaxType>
|
117
|
+
<Description>The amount of the asset's cost (based on the useful life) that was consumed during the period</Description>
|
118
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
119
|
+
</Account>
|
120
|
+
<Account>
|
121
|
+
<AccountID>18e27517-81e0-437c-bc21-fbba8e30d6bb</AccountID>
|
122
|
+
<Code>420</Code>
|
123
|
+
<Name>Entertainment</Name>
|
124
|
+
<Status>ACTIVE</Status>
|
125
|
+
<Type>EXPENSE</Type>
|
126
|
+
<TaxType>NONE</TaxType>
|
127
|
+
<Description>Expenses paid by company for the business but are not deductable for income tax purposes.</Description>
|
128
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
129
|
+
</Account>
|
130
|
+
<Account>
|
131
|
+
<AccountID>c4a9d449-ef04-43a7-9af8-49c6558b361e</AccountID>
|
132
|
+
<Code>425</Code>
|
133
|
+
<Name>Freight & Courier</Name>
|
134
|
+
<Status>ACTIVE</Status>
|
135
|
+
<Type>EXPENSE</Type>
|
136
|
+
<TaxType>INPUT</TaxType>
|
137
|
+
<Description>Expenses incurred on courier & freight costs</Description>
|
138
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
139
|
+
</Account>
|
140
|
+
<Account>
|
141
|
+
<AccountID>94882296-5acf-4350-8c5b-82bc9370ab78</AccountID>
|
142
|
+
<Code>429</Code>
|
143
|
+
<Name>General Expenses</Name>
|
144
|
+
<Status>ACTIVE</Status>
|
145
|
+
<Type>EXPENSE</Type>
|
146
|
+
<TaxType>INPUT</TaxType>
|
147
|
+
<Description>General expenses related to the running of the business.</Description>
|
148
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
149
|
+
</Account>
|
150
|
+
<Account>
|
151
|
+
<AccountID>48a193e4-f1e3-49b8-8ff3-74137575f087</AccountID>
|
152
|
+
<Code>433</Code>
|
153
|
+
<Name>Insurance</Name>
|
154
|
+
<Status>ACTIVE</Status>
|
155
|
+
<Type>EXPENSE</Type>
|
156
|
+
<TaxType>INPUT</TaxType>
|
157
|
+
<Description>Expenses incurred for insuring the business' assets</Description>
|
158
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
159
|
+
</Account>
|
160
|
+
<Account>
|
161
|
+
<AccountID>a29e26fb-06ec-4aad-8a6f-6cadc52291f8</AccountID>
|
162
|
+
<Code>437</Code>
|
163
|
+
<Name>Interest Expense</Name>
|
164
|
+
<Status>ACTIVE</Status>
|
165
|
+
<Type>EXPENSE</Type>
|
166
|
+
<TaxType>NONE</TaxType>
|
167
|
+
<Description>Any interest expenses paid to ATO, business bank accounts or credit card accounts.</Description>
|
168
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
169
|
+
</Account>
|
170
|
+
<Account>
|
171
|
+
<AccountID>1b83b470-95ae-4b0b-a84e-8c407d5ea2ae</AccountID>
|
172
|
+
<Code>441</Code>
|
173
|
+
<Name>Legal expenses</Name>
|
174
|
+
<Status>ACTIVE</Status>
|
175
|
+
<Type>EXPENSE</Type>
|
176
|
+
<TaxType>INPUT</TaxType>
|
177
|
+
<Description>Expenses incurred on any legal matters</Description>
|
178
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
179
|
+
</Account>
|
180
|
+
<Account>
|
181
|
+
<AccountID>42a56c1a-6141-4bf2-913d-916dc1a35cfd</AccountID>
|
182
|
+
<Code>445</Code>
|
183
|
+
<Name>Light, Power, Heating</Name>
|
184
|
+
<Status>ACTIVE</Status>
|
185
|
+
<Type>EXPENSE</Type>
|
186
|
+
<TaxType>INPUT</TaxType>
|
187
|
+
<Description>Expenses incurred for lighting, powering or heating the premises</Description>
|
188
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
189
|
+
</Account>
|
190
|
+
<Account>
|
191
|
+
<AccountID>005f380d-4a9c-497f-b9d7-817f0f02790e</AccountID>
|
192
|
+
<Code>449</Code>
|
193
|
+
<Name>Motor Vehicle Expenses</Name>
|
194
|
+
<Status>ACTIVE</Status>
|
195
|
+
<Type>EXPENSE</Type>
|
196
|
+
<TaxType>INPUT</TaxType>
|
197
|
+
<Description>Expenses incurred on the running of company motor vehicles</Description>
|
198
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
199
|
+
</Account>
|
200
|
+
<Account>
|
201
|
+
<AccountID>8ab9d684-f897-4168-b5d1-2279bf74bb82</AccountID>
|
202
|
+
<Code>453</Code>
|
203
|
+
<Name>Office Expenses</Name>
|
204
|
+
<Status>ACTIVE</Status>
|
205
|
+
<Type>EXPENSE</Type>
|
206
|
+
<TaxType>INPUT</TaxType>
|
207
|
+
<Description>General expenses related to the running of the business office.</Description>
|
208
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
209
|
+
</Account>
|
210
|
+
<Account>
|
211
|
+
<AccountID>b18eaea6-4d11-462c-ac30-7975108b5859</AccountID>
|
212
|
+
<Code>461</Code>
|
213
|
+
<Name>Printing & Stationery</Name>
|
214
|
+
<Status>ACTIVE</Status>
|
215
|
+
<Type>EXPENSE</Type>
|
216
|
+
<TaxType>INPUT</TaxType>
|
217
|
+
<Description>Expenses incurred by the entity as a result of printing and stationery</Description>
|
218
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
219
|
+
</Account>
|
220
|
+
<Account>
|
221
|
+
<AccountID>f5f05ee3-f9cd-4bf9-9423-ed81de96b537</AccountID>
|
222
|
+
<Code>469</Code>
|
223
|
+
<Name>Rent</Name>
|
224
|
+
<Status>ACTIVE</Status>
|
225
|
+
<Type>EXPENSE</Type>
|
226
|
+
<TaxType>INPUT</TaxType>
|
227
|
+
<Description>The payment to lease a building or area.</Description>
|
228
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
229
|
+
</Account>
|
230
|
+
<Account>
|
231
|
+
<AccountID>e91eee7a-340e-4203-8af8-14db5121af35</AccountID>
|
232
|
+
<Code>473</Code>
|
233
|
+
<Name>Repairs and Maintenance</Name>
|
234
|
+
<Status>ARCHIVED</Status>
|
235
|
+
<Type>EXPENSE</Type>
|
236
|
+
<TaxType>INPUT</TaxType>
|
237
|
+
<Description>Expenses incurred on a damaged or run down asset that will bring the asset back to its original condition.</Description>
|
238
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
239
|
+
</Account>
|
240
|
+
<Account>
|
241
|
+
<AccountID>c4f12f09-846e-4f6f-b39c-dff3be3e49a7</AccountID>
|
242
|
+
<Code>477</Code>
|
243
|
+
<Name>Wages and Salaries</Name>
|
244
|
+
<Status>ACTIVE</Status>
|
245
|
+
<Type>EXPENSE</Type>
|
246
|
+
<TaxType>EXEMPTINPUT</TaxType>
|
247
|
+
<Description>Payment to employees in exchange for their resources</Description>
|
248
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
249
|
+
</Account>
|
250
|
+
<Account>
|
251
|
+
<AccountID>479252dc-1e01-4a86-a452-9552a191453f</AccountID>
|
252
|
+
<Code>478</Code>
|
253
|
+
<Name>Superannuation</Name>
|
254
|
+
<Status>ACTIVE</Status>
|
255
|
+
<Type>EXPENSE</Type>
|
256
|
+
<TaxType>EXEMPTINPUT</TaxType>
|
257
|
+
<Description>Superannuation contributions</Description>
|
258
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
259
|
+
<ReportingCode>EXP</ReportingCode>
|
260
|
+
<ReportingCodeName>Expense</ReportingCodeName>
|
261
|
+
</Account>
|
262
|
+
<Account>
|
263
|
+
<AccountID>98154d6b-0424-42f7-9aff-678db4ff62ba</AccountID>
|
264
|
+
<Code>479</Code>
|
265
|
+
<Name>Commission</Name>
|
266
|
+
<Status>ACTIVE</Status>
|
267
|
+
<Type>DIRECTCOSTS</Type>
|
268
|
+
<TaxType>NONE</TaxType>
|
269
|
+
<Description>% to staff for consultancy work invoiced to them</Description>
|
270
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
271
|
+
</Account>
|
272
|
+
<Account>
|
273
|
+
<AccountID>b3742a53-0f64-4765-b5cc-3ece843b2e91</AccountID>
|
274
|
+
<Code>485</Code>
|
275
|
+
<Name>Subscriptions</Name>
|
276
|
+
<Status>ACTIVE</Status>
|
277
|
+
<Type>EXPENSE</Type>
|
278
|
+
<TaxType>INPUT</TaxType>
|
279
|
+
<Description>E.g. Magazines, professional bodies.</Description>
|
280
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
281
|
+
</Account>
|
282
|
+
<Account>
|
283
|
+
<AccountID>266f40cc-5aa1-4f6c-b078-eb615171d6de</AccountID>
|
284
|
+
<Code>489</Code>
|
285
|
+
<Name>Telephone & Internet</Name>
|
286
|
+
<Status>ACTIVE</Status>
|
287
|
+
<Type>EXPENSE</Type>
|
288
|
+
<TaxType>INPUT</TaxType>
|
289
|
+
<Description>Expenditure incurred from any business-related phone calls, phone lines, or internet connections</Description>
|
290
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
291
|
+
</Account>
|
292
|
+
<Account>
|
293
|
+
<AccountID>25717024-5b50-4320-93b7-280c0614a613</AccountID>
|
294
|
+
<Code>493</Code>
|
295
|
+
<Name>Travel - National</Name>
|
296
|
+
<Status>ACTIVE</Status>
|
297
|
+
<Type>EXPENSE</Type>
|
298
|
+
<TaxType>INPUT</TaxType>
|
299
|
+
<Description>Expenses incurred from domestic travel which has a business purpose</Description>
|
300
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
301
|
+
</Account>
|
302
|
+
<Account>
|
303
|
+
<AccountID>eaa06c90-21e6-4176-9333-8ab4c23f0004</AccountID>
|
304
|
+
<Code>494</Code>
|
305
|
+
<Name>Travel - International</Name>
|
306
|
+
<Status>ACTIVE</Status>
|
307
|
+
<Type>EXPENSE</Type>
|
308
|
+
<TaxType>NONE</TaxType>
|
309
|
+
<Description>Expenses incurred from international travel which has a business purpose</Description>
|
310
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
311
|
+
</Account>
|
312
|
+
<Account>
|
313
|
+
<AccountID>d290c7f4-df33-46f0-917b-d188c6f517dc</AccountID>
|
314
|
+
<Code>497</Code>
|
315
|
+
<Name>Bank Revaluations</Name>
|
316
|
+
<Status>ARCHIVED</Status>
|
317
|
+
<Type>EXPENSE</Type>
|
318
|
+
<TaxType>NONE</TaxType>
|
319
|
+
<Description>Bank account revaluations due for foreign exchange rate changes</Description>
|
320
|
+
<SystemAccount>BANKCURRENCYGAIN</SystemAccount>
|
321
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
322
|
+
</Account>
|
323
|
+
<Account>
|
324
|
+
<AccountID>09ef3689-6913-4f31-aeca-81646680e623</AccountID>
|
325
|
+
<Code>498</Code>
|
326
|
+
<Name>Unrealised Currency Gains</Name>
|
327
|
+
<Status>ARCHIVED</Status>
|
328
|
+
<Type>EXPENSE</Type>
|
329
|
+
<TaxType>NONE</TaxType>
|
330
|
+
<Description>Unrealised currency gains on outstanding items</Description>
|
331
|
+
<SystemAccount>UNREALISEDCURRENCYGAIN</SystemAccount>
|
332
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
333
|
+
</Account>
|
334
|
+
<Account>
|
335
|
+
<AccountID>e0b4f130-7fb7-4e29-9a85-1e002ea5cc31</AccountID>
|
336
|
+
<Code>499</Code>
|
337
|
+
<Name>Realised Currency Gains</Name>
|
338
|
+
<Status>ARCHIVED</Status>
|
339
|
+
<Type>EXPENSE</Type>
|
340
|
+
<TaxType>NONE</TaxType>
|
341
|
+
<Description>Gains or losses made due to currency exchange rate changes</Description>
|
342
|
+
<SystemAccount>REALISEDCURRENCYGAIN</SystemAccount>
|
343
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
344
|
+
</Account>
|
345
|
+
<Account>
|
346
|
+
<AccountID>53bee866-8d31-4669-bd62-69026afcc86d</AccountID>
|
347
|
+
<Code>505</Code>
|
348
|
+
<Name>Income Tax Expense</Name>
|
349
|
+
<Status>ACTIVE</Status>
|
350
|
+
<Type>EXPENSE</Type>
|
351
|
+
<TaxType>EXEMPTINPUT</TaxType>
|
352
|
+
<Description>A percentage of total earnings paid to the government.</Description>
|
353
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
354
|
+
<ReportingCode>EXP</ReportingCode>
|
355
|
+
<ReportingCodeName>Expense</ReportingCodeName>
|
356
|
+
</Account>
|
357
|
+
<Account>
|
358
|
+
<AccountID>3dd5c80d-e109-4313-8c61-41648e33704f</AccountID>
|
359
|
+
<Code>610</Code>
|
360
|
+
<Name>Accounts Receivable</Name>
|
361
|
+
<Status>ACTIVE</Status>
|
362
|
+
<Type>CURRENT</Type>
|
363
|
+
<TaxType>NONE</TaxType>
|
364
|
+
<Description>Outstanding invoices the company has issued out to the client but has not yet received in cash at balance date.</Description>
|
365
|
+
<SystemAccount>DEBTORS</SystemAccount>
|
366
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
367
|
+
</Account>
|
368
|
+
<Account>
|
369
|
+
<AccountID>26a3ec3b-0aa8-4cbe-b0b1-20c6277a55ad</AccountID>
|
370
|
+
<Code>620</Code>
|
371
|
+
<Name>Prepayments</Name>
|
372
|
+
<Status>ARCHIVED</Status>
|
373
|
+
<Type>CURRENT</Type>
|
374
|
+
<TaxType>NONE</TaxType>
|
375
|
+
<Description>An expenditure that has been paid for in advance.</Description>
|
376
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
377
|
+
</Account>
|
378
|
+
<Account>
|
379
|
+
<AccountID>2d69b4ee-37d4-4f67-b950-32cbdd5765ed</AccountID>
|
380
|
+
<Code>710</Code>
|
381
|
+
<Name>Office Equipment</Name>
|
382
|
+
<Status>ACTIVE</Status>
|
383
|
+
<Type>FIXED</Type>
|
384
|
+
<TaxType>CAPEXINPUT</TaxType>
|
385
|
+
<Description>Office equipment that is owned and controlled by the business</Description>
|
386
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
387
|
+
</Account>
|
388
|
+
<Account>
|
389
|
+
<AccountID>24d010bf-5e4b-42dd-9aa3-a5484dd0686f</AccountID>
|
390
|
+
<Code>711</Code>
|
391
|
+
<Name>Less Accumulated Depreciation on Office Equipment</Name>
|
392
|
+
<Status>ACTIVE</Status>
|
393
|
+
<Type>FIXED</Type>
|
394
|
+
<TaxType>EXEMPTINPUT</TaxType>
|
395
|
+
<Description>The total amount of office equipment cost that has been consumed by the entity (based on the useful life)</Description>
|
396
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
397
|
+
<ReportingCode>ASS</ReportingCode>
|
398
|
+
<ReportingCodeName>Assets</ReportingCodeName>
|
399
|
+
</Account>
|
400
|
+
<Account>
|
401
|
+
<AccountID>75bbcb81-6b3d-4ca9-8522-3b582cb5c21a</AccountID>
|
402
|
+
<Code>720</Code>
|
403
|
+
<Name>Computer Equipment</Name>
|
404
|
+
<Status>ACTIVE</Status>
|
405
|
+
<Type>FIXED</Type>
|
406
|
+
<TaxType>CAPEXINPUT</TaxType>
|
407
|
+
<Description>Computer equipment that is owned and controlled by the business</Description>
|
408
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
409
|
+
</Account>
|
410
|
+
<Account>
|
411
|
+
<AccountID>44ef13ab-a913-4688-b6f0-52877b670ad4</AccountID>
|
412
|
+
<Code>721</Code>
|
413
|
+
<Name>Less Accumulated Depreciation on Computer Equipment</Name>
|
414
|
+
<Status>ACTIVE</Status>
|
415
|
+
<Type>FIXED</Type>
|
416
|
+
<TaxType>EXEMPTINPUT</TaxType>
|
417
|
+
<Description>The total amount of computer equipment cost that has been consumed by the business (based on the useful life)</Description>
|
418
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
419
|
+
<ReportingCode>ASS</ReportingCode>
|
420
|
+
<ReportingCodeName>Assets</ReportingCodeName>
|
421
|
+
</Account>
|
422
|
+
<Account>
|
423
|
+
<AccountID>8e9c5166-d3fe-4e21-827a-f42753568e80</AccountID>
|
424
|
+
<Code>800</Code>
|
425
|
+
<Name>Accounts Payable</Name>
|
426
|
+
<Status>ACTIVE</Status>
|
427
|
+
<Type>CURRLIAB</Type>
|
428
|
+
<TaxType>NONE</TaxType>
|
429
|
+
<Description>Outstanding invoices the company has received from suppliers but has not yet paid at balance date</Description>
|
430
|
+
<SystemAccount>CREDITORS</SystemAccount>
|
431
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
432
|
+
</Account>
|
433
|
+
<Account>
|
434
|
+
<AccountID>c11b84a9-e90a-4094-83d7-b8494d195ecc</AccountID>
|
435
|
+
<Code>801</Code>
|
436
|
+
<Name>Unpaid Expense Claims</Name>
|
437
|
+
<Status>ACTIVE</Status>
|
438
|
+
<Type>CURRLIAB</Type>
|
439
|
+
<TaxType>NONE</TaxType>
|
440
|
+
<Description>Expense claims typically made by employees/shareholder employees still outstanding.</Description>
|
441
|
+
<SystemAccount>UNPAIDEXPCLM</SystemAccount>
|
442
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
443
|
+
</Account>
|
444
|
+
<Account>
|
445
|
+
<AccountID>38b7b812-d334-46eb-872e-67c4cfb87538</AccountID>
|
446
|
+
<Code>805</Code>
|
447
|
+
<Name>Accrued Liabilities</Name>
|
448
|
+
<Status>ACTIVE</Status>
|
449
|
+
<Type>CURRLIAB</Type>
|
450
|
+
<TaxType>NONE</TaxType>
|
451
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
452
|
+
</Account>
|
453
|
+
<Account>
|
454
|
+
<AccountID>66e60a82-99d8-47d1-956b-5baea404acba</AccountID>
|
455
|
+
<Code>820</Code>
|
456
|
+
<Name>GST</Name>
|
457
|
+
<Status>ACTIVE</Status>
|
458
|
+
<Type>CURRLIAB</Type>
|
459
|
+
<TaxType>NONE</TaxType>
|
460
|
+
<Description>The balance in this account represents GST owing to or from the ATO. 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 ATO 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>
|
461
|
+
<SystemAccount>GST</SystemAccount>
|
462
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
463
|
+
</Account>
|
464
|
+
<Account>
|
465
|
+
<AccountID>4d111d55-1c71-46b4-8cbc-d8b54d8d54c5</AccountID>
|
466
|
+
<Code>825</Code>
|
467
|
+
<Name>PAYG Withholdings Payable</Name>
|
468
|
+
<Status>ACTIVE</Status>
|
469
|
+
<Type>CURRLIAB</Type>
|
470
|
+
<TaxType>NONE</TaxType>
|
471
|
+
<Description>The amount of PAYE tax that is due to be paid</Description>
|
472
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
473
|
+
</Account>
|
474
|
+
<Account>
|
475
|
+
<AccountID>a47d1f5b-5297-484a-8a8a-64a75053e4f4</AccountID>
|
476
|
+
<Code>826</Code>
|
477
|
+
<Name>Superannuation Payable</Name>
|
478
|
+
<Status>ACTIVE</Status>
|
479
|
+
<Type>CURRLIAB</Type>
|
480
|
+
<TaxType>NONE</TaxType>
|
481
|
+
<Description>The amount of superannuation that is due to be paid</Description>
|
482
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
483
|
+
</Account>
|
484
|
+
<Account>
|
485
|
+
<AccountID>eba8b619-8e5d-43df-bd0a-08c328021003</AccountID>
|
486
|
+
<Code>830</Code>
|
487
|
+
<Name>Income Tax Payable</Name>
|
488
|
+
<Status>ACTIVE</Status>
|
489
|
+
<Type>CURRLIAB</Type>
|
490
|
+
<TaxType>NONE</TaxType>
|
491
|
+
<Description>The amount of income tax that is due to be paid, also resident withholding tax paid on interest received.</Description>
|
492
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
493
|
+
</Account>
|
494
|
+
<Account>
|
495
|
+
<AccountID>305b05b3-01f3-4f47-a45d-edfa66ea03e7</AccountID>
|
496
|
+
<Code>840</Code>
|
497
|
+
<Name>Historical Adjustment</Name>
|
498
|
+
<Status>ACTIVE</Status>
|
499
|
+
<Type>CURRLIAB</Type>
|
500
|
+
<TaxType>NONE</TaxType>
|
501
|
+
<Description>For accountant adjustments</Description>
|
502
|
+
<SystemAccount>HISTORICAL</SystemAccount>
|
503
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
504
|
+
</Account>
|
505
|
+
<Account>
|
506
|
+
<AccountID>50031b5d-828f-4090-b1f1-d5eb591d8b18</AccountID>
|
507
|
+
<Code>850</Code>
|
508
|
+
<Name>Suspense</Name>
|
509
|
+
<Status>ACTIVE</Status>
|
510
|
+
<Type>CURRLIAB</Type>
|
511
|
+
<TaxType>NONE</TaxType>
|
512
|
+
<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>
|
513
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
514
|
+
</Account>
|
515
|
+
<Account>
|
516
|
+
<AccountID>37441137-cfe3-4c2b-a569-ef75e6b66ae4</AccountID>
|
517
|
+
<Code>860</Code>
|
518
|
+
<Name>Rounding</Name>
|
519
|
+
<Status>ACTIVE</Status>
|
520
|
+
<Type>CURRLIAB</Type>
|
521
|
+
<TaxType>NONE</TaxType>
|
522
|
+
<Description>An adjustment entry to allow for rounding</Description>
|
523
|
+
<SystemAccount>ROUNDING</SystemAccount>
|
524
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
525
|
+
</Account>
|
526
|
+
<Account>
|
527
|
+
<AccountID>a94c9633-aeb1-4b13-a96b-7998d887b770</AccountID>
|
528
|
+
<Code>877</Code>
|
529
|
+
<Name>Tracking Transfers</Name>
|
530
|
+
<Status>ACTIVE</Status>
|
531
|
+
<Type>CURRLIAB</Type>
|
532
|
+
<TaxType>NONE</TaxType>
|
533
|
+
<Description>Transfers between tracking categories</Description>
|
534
|
+
<SystemAccount>TRACKINGTRANSFERS</SystemAccount>
|
535
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
536
|
+
</Account>
|
537
|
+
<Account>
|
538
|
+
<AccountID>64ddb541-7e5f-4ded-a072-2f59d8898a8c</AccountID>
|
539
|
+
<Code>880</Code>
|
540
|
+
<Name>Owner A Drawings</Name>
|
541
|
+
<Status>ACTIVE</Status>
|
542
|
+
<Type>CURRLIAB</Type>
|
543
|
+
<TaxType>NONE</TaxType>
|
544
|
+
<Description>Withdrawals by the owners</Description>
|
545
|
+
<EnablePaymentsToAccount>true</EnablePaymentsToAccount>
|
546
|
+
</Account>
|
547
|
+
<Account>
|
548
|
+
<AccountID>16e01c0e-4fbd-4488-b4c3-e399903306aa</AccountID>
|
549
|
+
<Code>881</Code>
|
550
|
+
<Name>Owner A Funds Introduced</Name>
|
551
|
+
<Status>ACTIVE</Status>
|
552
|
+
<Type>CURRLIAB</Type>
|
553
|
+
<TaxType>NONE</TaxType>
|
554
|
+
<Description>Funds contributed by the owner</Description>
|
555
|
+
<EnablePaymentsToAccount>true</EnablePaymentsToAccount>
|
556
|
+
</Account>
|
557
|
+
<Account>
|
558
|
+
<AccountID>c1de1295-c39c-444c-abfa-447b2263563f</AccountID>
|
559
|
+
<Code>900</Code>
|
560
|
+
<Name>Loan</Name>
|
561
|
+
<Status>ARCHIVED</Status>
|
562
|
+
<Type>TERMLIAB</Type>
|
563
|
+
<TaxType>NONE</TaxType>
|
564
|
+
<Description>Money that has been borrowed from a creditor</Description>
|
565
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
566
|
+
</Account>
|
567
|
+
<Account>
|
568
|
+
<AccountID>e2eda5d3-a80f-45ff-af4c-74472fd904d4</AccountID>
|
569
|
+
<Code>960</Code>
|
570
|
+
<Name>Retained Earnings</Name>
|
571
|
+
<Status>ACTIVE</Status>
|
572
|
+
<Type>EQUITY</Type>
|
573
|
+
<TaxType>NONE</TaxType>
|
574
|
+
<Description>Do not Use</Description>
|
575
|
+
<SystemAccount>RETAINEDEARNINGS</SystemAccount>
|
576
|
+
<EnablePaymentsToAccount>false</EnablePaymentsToAccount>
|
577
|
+
</Account>
|
578
|
+
<Account>
|
579
|
+
<AccountID>dfe8ba15-3324-4d29-b4e2-2f23c05e8532</AccountID>
|
580
|
+
<Code>970</Code>
|
581
|
+
<Name>Owner A Share Capital</Name>
|
582
|
+
<Status>ACTIVE</Status>
|
583
|
+
<Type>EQUITY</Type>
|
584
|
+
<TaxType>NONE</TaxType>
|
585
|
+
<Description>The value of shares purchased by the shareholders</Description>
|
586
|
+
<EnablePaymentsToAccount>true</EnablePaymentsToAccount>
|
587
|
+
</Account>
|
588
|
+
</Accounts>
|
589
|
+
</Response>
|