sageone_sdk 0.0.1
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.
- checksums.yaml +7 -0
- data/.gitignore +15 -0
- data/.rspec +2 -0
- data/.travis.yml +15 -0
- data/Fudgefile +27 -0
- data/Gemfile +12 -0
- data/Guardfile +33 -0
- data/LICENSE +22 -0
- data/README.md +57 -0
- data/Rakefile +10 -0
- data/fudge_settings.yml +5 -0
- data/lib/sageone_sdk.rb +16 -0
- data/lib/sageone_sdk/authentication.rb +8 -0
- data/lib/sageone_sdk/client.rb +117 -0
- data/lib/sageone_sdk/client/account_types.rb +19 -0
- data/lib/sageone_sdk/client/bank_accounts.rb +18 -0
- data/lib/sageone_sdk/client/chart_of_accounts.rb +21 -0
- data/lib/sageone_sdk/client/contact_types.rb +20 -0
- data/lib/sageone_sdk/client/contacts.rb +82 -0
- data/lib/sageone_sdk/client/countries.rb +18 -0
- data/lib/sageone_sdk/client/expenditures.rb +26 -0
- data/lib/sageone_sdk/client/expense_methods.rb +19 -0
- data/lib/sageone_sdk/client/expense_types.rb +19 -0
- data/lib/sageone_sdk/client/financial_settings.rb +23 -0
- data/lib/sageone_sdk/client/income_methods.rb +19 -0
- data/lib/sageone_sdk/client/income_types.rb +19 -0
- data/lib/sageone_sdk/client/incomes.rb +51 -0
- data/lib/sageone_sdk/client/journals.rb +27 -0
- data/lib/sageone_sdk/client/ledger_accounts.rb +52 -0
- data/lib/sageone_sdk/client/payment_statuses.rb +18 -0
- data/lib/sageone_sdk/client/period_types.rb +19 -0
- data/lib/sageone_sdk/client/products.rb +50 -0
- data/lib/sageone_sdk/client/purchase_invoices.rb +61 -0
- data/lib/sageone_sdk/client/sales_invoices.rb +65 -0
- data/lib/sageone_sdk/client/services.rb +48 -0
- data/lib/sageone_sdk/client/tax_rates.rb +18 -0
- data/lib/sageone_sdk/client/transactions.rb +13 -0
- data/lib/sageone_sdk/configurable.rb +43 -0
- data/lib/sageone_sdk/default.rb +47 -0
- data/lib/sageone_sdk/middleware.rb +6 -0
- data/lib/sageone_sdk/middleware/sdata_parser.rb +29 -0
- data/lib/sageone_sdk/middleware/signature.rb +26 -0
- data/lib/sageone_sdk/sdata_error_response.rb +36 -0
- data/lib/sageone_sdk/sdata_response.rb +58 -0
- data/lib/sageone_sdk/signature.rb +115 -0
- data/lib/sageone_sdk/version.rb +3 -0
- data/sageone_sdk.gemspec +37 -0
- data/spec/cassettes/SageoneSdk_Client_AccountTypes/account_types/_id/returns_a_specific_account_type.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_AccountTypes/account_types/allows_pagination.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_AccountTypes/account_types/returns_all_account_types.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_BankAccounts/bank_accounts/_id/returns_a_specific_bank_account.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_BankAccounts/bank_accounts/allows_pagination.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_BankAccounts/bank_accounts/returns_all_bank_accounts.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_ChartOfAccounts/chart_of_accounts_structure/returns_the_chart_of_accounts_structure.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_ChartOfAccounts/chart_of_accounts_templates/returns_the_chart_of_accounts_templates.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_ContactTypes/contact_types/_id/returns_a_specific_contact_type.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_ContactTypes/contact_types/allows_pagination.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_ContactTypes/contact_types/returns_all_contact_types.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Contacts/contacts/_id/returns_a_specific_contact.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Contacts/contacts/allows_pagination.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Contacts/contacts/returns_all_contacts.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Contacts/create_contacts/creates_a_new_contact.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Contacts/create_contacts/on_error/responds_with_an_appropriate_error_message.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Contacts/delete_a_contact/deletes_the_contact.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Contacts/update_a_contact/updates_the_given_contact.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Countries/countries/_id/returns_a_specific_account_type.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Countries/countries/allows_pagination.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Countries/countries/returns_all_countries.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Expenditures/create_expenditures/creates_a_new_expenditure.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Expenditures/create_expenditures/on_error/responds_with_an_appropriate_error_message.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Expenditures/delete_an_expenditure/deletes_the_expenditure.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Expenditures/expenditures/_id/returns_a_specific_expenditure.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Expenditures/expenditures/allows_pagination.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Expenditures/expenditures/returns_all_expenditures.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Expenditures/update_an_expenditure/updates_the_given_expenditure.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_ExpenseMethods/expense_methods/_id/returns_a_specific_contact_type.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_ExpenseMethods/expense_methods/returns_all_expense_methods.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_ExpenseMethods/income_methods/_id/returns_a_specific_contact_type.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_ExpenseMethods/income_methods/allows_pagination.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_ExpenseMethods/income_methods/returns_all_income_methods.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_ExpenseTypes/expense_types/_id/returns_a_specific_contact_type.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_ExpenseTypes/expense_types/allows_pagination.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_ExpenseTypes/expense_types/returns_all_expense_types.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_FinancialSettings/financial_settings/returns_the_financial_settings.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_FinancialSettings/update_financial_settings/updates_the_financial_settings.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_IncomeMethods/income_methods/_id/returns_a_specific_contact_type.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_IncomeMethods/income_methods/returns_all_income_methods.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_IncomeTypes/income_types/_id/returns_a_specific_contact_type.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_IncomeTypes/income_types/allows_pagination.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_IncomeTypes/income_types/returns_all_income_types.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Incomes/create_incomes/creates_a_new_income.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Incomes/create_incomes/on_error/responds_with_an_appropriate_error_message.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Incomes/delete_an_income/deletes_the_income.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Incomes/incomes/_id/returns_a_specific_income.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Incomes/incomes/allows_pagination.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Incomes/incomes/returns_all_incomes.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Incomes/update_an_income/updates_the_given_income.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Journals/journals/creates_a_journal.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Journals/journals/on_error/responds_with_an_appropriate_error_message.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_LedgerAccounts/create_a_ledger_account/creates_a_new_ledger_account.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_LedgerAccounts/create_a_ledger_account/on_error/responds_with_an_appropriate_error_message.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_LedgerAccounts/ledger_account_balances/does_not_return_ledger_accounts_with_a_zero_balance.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_LedgerAccounts/ledger_account_balances/returns_ledger_accounts_with_a_balance.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_LedgerAccounts/ledger_accounts/_id/returns_a_specific_ledger_account.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_LedgerAccounts/ledger_accounts/allows_pagination.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_LedgerAccounts/ledger_accounts/returns_all_ledger_accounts.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_PaymentStatuses/payment_statuses/_id/returns_a_specific_contact_type.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_PaymentStatuses/payment_statuses/allows_pagination.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_PaymentStatuses/payment_statuses/returns_all_payment_statuses.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_PeriodTypes/period_types/_id/returns_a_specific_contact_type.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_PeriodTypes/period_types/allows_pagination.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_PeriodTypes/period_types/returns_all_period_types.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Products/create_products/creates_a_new_product.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Products/create_products/on_error/responds_with_an_appropriate_error_message.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Products/delete_a_product/deletes_the_product.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Products/products/_id/returns_a_specific_product.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Products/products/allows_pagination.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Products/products/returns_all_products.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Products/update_a_product/updates_the_given_product.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_PurchaseInvoices/create_purchase_invoices/creates_a_new_purchase_invoice.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_PurchaseInvoices/create_purchase_invoices/on_error/responds_with_an_appropriate_error_message.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_PurchaseInvoices/delete_a_purchase_invoice/deletes_the_purchase_invoice.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_PurchaseInvoices/purchase_invoices/_id/returns_a_specific_purchase_invoice.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_PurchaseInvoices/purchase_invoices/allows_pagination.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_PurchaseInvoices/purchase_invoices/returns_all_purchase_invoices.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_PurchaseInvoices/update_a_purchase_invoice/updates_the_given_purchase_invoice.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_SalesInvoices/create_sales_invoices/creates_a_new_sales_invoice.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_SalesInvoices/create_sales_invoices/on_error/responds_with_an_appropriate_error_message.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_SalesInvoices/delete_a_sales_invoice/deletes_the_sales_invoice.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_SalesInvoices/sales_invoices/_id/returns_a_specific_sales_invoice.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_SalesInvoices/sales_invoices/allows_pagination.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_SalesInvoices/sales_invoices/returns_all_sales_invoices.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_SalesInvoices/update_a_sales_invoice/updates_the_given_sales_invoice.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Services/create_services/creates_a_new_service.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Services/create_services/on_error/responds_with_an_appropriate_error_message.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Services/delete_a_service/deletes_the_service.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Services/services/_id/returns_a_specific_service.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Services/services/allows_pagination.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Services/services/returns_all_services.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Services/update_a_service/updates_the_given_service.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_TaxRates/tax_rates/_id/returns_a_specific_contact_type.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_TaxRates/tax_rates/allows_pagination.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_TaxRates/tax_rates/returns_all_tax_rates.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Transactions/transactions/returns_all_transactions.json +1 -0
- data/spec/cassettes/account_types_index.json +1 -0
- data/spec/cassettes/bank_accounts_index.json +1 -0
- data/spec/cassettes/contact_types_index.json +1 -0
- data/spec/cassettes/contacts_index.json +1 -0
- data/spec/cassettes/countries_index.json +1 -0
- data/spec/cassettes/customer_create.json +1 -0
- data/spec/cassettes/customers_index.json +1 -0
- data/spec/cassettes/expenditure_create.json +1 -0
- data/spec/cassettes/expenditures_index.json +1 -0
- data/spec/cassettes/expense_methods_index.json +1 -0
- data/spec/cassettes/expense_types_index.json +1 -0
- data/spec/cassettes/income_create.json +1 -0
- data/spec/cassettes/income_methods_index.json +1 -0
- data/spec/cassettes/income_types_index.json +1 -0
- data/spec/cassettes/incomes_index.json +1 -0
- data/spec/cassettes/ledger_accounts_index.json +1 -0
- data/spec/cassettes/payment_statuses_index.json +1 -0
- data/spec/cassettes/period_types_index.json +1 -0
- data/spec/cassettes/product_create.json +1 -0
- data/spec/cassettes/products_index.json +1 -0
- data/spec/cassettes/purchase_invoice_create.json +1 -0
- data/spec/cassettes/purchase_invoices_index.json +1 -0
- data/spec/cassettes/sales_invoice_create.json +1 -0
- data/spec/cassettes/sales_invoices_index.json +1 -0
- data/spec/cassettes/service_create.json +1 -0
- data/spec/cassettes/services_index.json +1 -0
- data/spec/cassettes/suppliers_index.json +1 -0
- data/spec/cassettes/tax_rates_index.json +1 -0
- data/spec/sageone_sdk/client/account_types_spec.rb +29 -0
- data/spec/sageone_sdk/client/bank_accounts_spec.rb +34 -0
- data/spec/sageone_sdk/client/chart_of_accounts_spec.rb +23 -0
- data/spec/sageone_sdk/client/contact_types_spec.rb +29 -0
- data/spec/sageone_sdk/client/contacts_spec.rb +75 -0
- data/spec/sageone_sdk/client/countries_spec.rb +29 -0
- data/spec/sageone_sdk/client/expenditures_spec.rb +113 -0
- data/spec/sageone_sdk/client/expense_methods_spec.rb +29 -0
- data/spec/sageone_sdk/client/expense_types_spec.rb +29 -0
- data/spec/sageone_sdk/client/financial_settings_spec.rb +23 -0
- data/spec/sageone_sdk/client/income_methods_spec.rb +29 -0
- data/spec/sageone_sdk/client/income_types_spec.rb +29 -0
- data/spec/sageone_sdk/client/incomes_spec.rb +114 -0
- data/spec/sageone_sdk/client/journals_spec.rb +39 -0
- data/spec/sageone_sdk/client/ledger_accounts_spec.rb +65 -0
- data/spec/sageone_sdk/client/payment_statuses_spec.rb +29 -0
- data/spec/sageone_sdk/client/period_types_spec.rb +29 -0
- data/spec/sageone_sdk/client/products_spec.rb +75 -0
- data/spec/sageone_sdk/client/purchase_invoices_spec.rb +124 -0
- data/spec/sageone_sdk/client/sales_invoices_spec.rb +126 -0
- data/spec/sageone_sdk/client/services_spec.rb +75 -0
- data/spec/sageone_sdk/client/tax_rates_spec.rb +29 -0
- data/spec/sageone_sdk/client/transactions_spec.rb +16 -0
- data/spec/sageone_sdk_spec.rb +19 -0
- data/spec/spec_helper.rb +40 -0
- metadata +601 -0
@@ -0,0 +1,82 @@
|
|
1
|
+
module SageoneSdk
|
2
|
+
class Client
|
3
|
+
# Represents the contacts for the authenticated user's business.
|
4
|
+
module Contacts
|
5
|
+
|
6
|
+
# @return [object] Returns all contacts for the authenticated user's business.
|
7
|
+
def contacts(options = {})
|
8
|
+
paginate "contacts", options
|
9
|
+
end
|
10
|
+
|
11
|
+
# @return [object] Returns the contact with the given id.
|
12
|
+
def contact(id, options = {})
|
13
|
+
get "contacts/#{id}", options
|
14
|
+
end
|
15
|
+
|
16
|
+
# @return [object] Returns all customers for the authenticated user's business.
|
17
|
+
def customers(options = {})
|
18
|
+
options["contact_type_id"] = ContactTypes::CUSTOMER
|
19
|
+
|
20
|
+
contacts(options)
|
21
|
+
end
|
22
|
+
|
23
|
+
# @return [object] Returns all suppliers for the authenticated user's business.
|
24
|
+
def suppliers(options = {})
|
25
|
+
options["contact_type_id"] = ContactTypes::SUPPLIER
|
26
|
+
|
27
|
+
contacts(options)
|
28
|
+
end
|
29
|
+
|
30
|
+
# Creates a contact record with the data provided.
|
31
|
+
# @example Create a new contact record
|
32
|
+
# @client.create_contact(1, {"name" => "My new customer",
|
33
|
+
# "company_name" => "Sage UK Ltd"})
|
34
|
+
# @param type [integer] The contact type id. 1 = Customer, 2 = Supplier.
|
35
|
+
# @param data [hash] The contact record information.
|
36
|
+
# @param options [hash]
|
37
|
+
def create_contact(type, data, options = {})
|
38
|
+
data['contact_type_id'] = type
|
39
|
+
|
40
|
+
post "contacts", :contact => data
|
41
|
+
end
|
42
|
+
|
43
|
+
# Creates a customer record with the data provided.
|
44
|
+
# @example Create a new customer record
|
45
|
+
# @client.create_customer({"name" => "My new customer",
|
46
|
+
# "company_name" => "Sage UK Ltd"})
|
47
|
+
# @param data [hash] The customer record information.
|
48
|
+
# @param options [hash]
|
49
|
+
def create_customer(data, options = {})
|
50
|
+
create_contact(ContactTypes::CUSTOMER, data, options)
|
51
|
+
end
|
52
|
+
|
53
|
+
# Creates a supplier record with the data provided.
|
54
|
+
# @example Create a new supplier record
|
55
|
+
# @client.create_supplier({"name" => "My new supplier",
|
56
|
+
# "company_name" => "Sage UK Ltd"})
|
57
|
+
# @param data [hash] The supplier record information.
|
58
|
+
# @param options [hash]
|
59
|
+
def create_supplier(data, options = {})
|
60
|
+
create_contact(ContactTypes::SUPPLIER, data, options)
|
61
|
+
end
|
62
|
+
|
63
|
+
# Updates the given contact record with the data provided.
|
64
|
+
# @example Update contact record with id 1234
|
65
|
+
# @client.update_contact(1234, {"name" => "Updated contact name",
|
66
|
+
# "company_name" => "Updated company name"})
|
67
|
+
# @param id [integer] The id of the contact record to update.
|
68
|
+
# @param data [hash] The contact record information to update.
|
69
|
+
# @param options [hash]
|
70
|
+
def update_contact(id, data, options = {})
|
71
|
+
put "contacts/#{id}", :contact => data
|
72
|
+
end
|
73
|
+
|
74
|
+
# Deletes the given contact record.
|
75
|
+
# @param id [integer] The id of the contact record to delete.
|
76
|
+
# @param options [hash]
|
77
|
+
def delete_contact(id, options = {})
|
78
|
+
delete "contacts/#{id}"
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module SageoneSdk
|
2
|
+
class Client
|
3
|
+
|
4
|
+
# Represents the countries available to select in Sage One.
|
5
|
+
module Countries
|
6
|
+
|
7
|
+
# @return [object] Returns all countries.
|
8
|
+
def countries(options = {})
|
9
|
+
get "countries", options
|
10
|
+
end
|
11
|
+
|
12
|
+
# @return [object] Returns the country with the given id.
|
13
|
+
def country(id, options = {})
|
14
|
+
get "countries/#{id}", options
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module SageoneSdk
|
2
|
+
class Client
|
3
|
+
# Expenditures
|
4
|
+
module Expenditures
|
5
|
+
def expenditures(options = {})
|
6
|
+
paginate "expenditures", options
|
7
|
+
end
|
8
|
+
|
9
|
+
def expenditure(id, options = {})
|
10
|
+
get "expenditures/#{id}", options
|
11
|
+
end
|
12
|
+
|
13
|
+
def create_expenditure(data, options = {})
|
14
|
+
post "expenditures", :expenditure => data
|
15
|
+
end
|
16
|
+
|
17
|
+
def update_expenditure(id, data, options = {})
|
18
|
+
put "expenditures/#{id}", :expenditure => data
|
19
|
+
end
|
20
|
+
|
21
|
+
def delete_expenditure(id, options = {})
|
22
|
+
delete "expenditures/#{id}"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module SageoneSdk
|
2
|
+
class Client
|
3
|
+
|
4
|
+
# Represents the payment methods available when recording a purchase.
|
5
|
+
# For example, credit card payment.
|
6
|
+
module ExpenseMethods
|
7
|
+
|
8
|
+
# @return [object] Returns all payment methods.
|
9
|
+
def expense_methods(options = {})
|
10
|
+
get "expense_methods", options
|
11
|
+
end
|
12
|
+
|
13
|
+
# @return [object] Returns the payment method with the given id.
|
14
|
+
def expense_method(id, options = {})
|
15
|
+
get "expense_methods/#{id}", options
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module SageoneSdk
|
2
|
+
class Client
|
3
|
+
|
4
|
+
# Represents types of expense in Sage One. These are the categories
|
5
|
+
# a user can make purchases against.
|
6
|
+
module ExpenseTypes
|
7
|
+
|
8
|
+
# @return [object] Returns all expense types.
|
9
|
+
def expense_types(options = {})
|
10
|
+
get "expense_types", options
|
11
|
+
end
|
12
|
+
|
13
|
+
# @return [object] Returns the expense type with the given id.
|
14
|
+
def expense_type(id, options = {})
|
15
|
+
get "expense_types/#{id}", options
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module SageoneSdk
|
2
|
+
class Client
|
3
|
+
|
4
|
+
# Represents the financial settings in Sage One. This includes
|
5
|
+
# year end date and tax schemes.
|
6
|
+
module FinancialSettings
|
7
|
+
|
8
|
+
# @return [object] Returns the financial settings.
|
9
|
+
def financial_settings(options = {})
|
10
|
+
get "financial_settings", options
|
11
|
+
end
|
12
|
+
|
13
|
+
# Updates the financial settings with the data provided.
|
14
|
+
# @example Change the year end date
|
15
|
+
# @client.update_financial_settings({"year_end_date" => "2016-12-31"})
|
16
|
+
# @param data [hash] The settings information to update.
|
17
|
+
# @param options [hash]
|
18
|
+
def update_financial_settings(data, options = {})
|
19
|
+
put "financial_settings", :financial_settings => data
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module SageoneSdk
|
2
|
+
class Client
|
3
|
+
|
4
|
+
# Represents the payment methods available when recording a sale.
|
5
|
+
# For example, bank receipt.
|
6
|
+
module IncomeMethods
|
7
|
+
|
8
|
+
# @return [object] Returns all payment methods.
|
9
|
+
def income_methods(options = {})
|
10
|
+
get "income_methods", options
|
11
|
+
end
|
12
|
+
|
13
|
+
# @return [object] Returns the payment method with the given id.
|
14
|
+
def income_method(id, options = {})
|
15
|
+
get "income_methods/#{id}", options
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module SageoneSdk
|
2
|
+
class Client
|
3
|
+
|
4
|
+
# Represents types of sale in Sage One. These are the categories
|
5
|
+
# a user can make sales against.
|
6
|
+
module IncomeTypes
|
7
|
+
|
8
|
+
# @return [object] Returns all sales types.
|
9
|
+
def income_types(options = {})
|
10
|
+
get "income_types", options
|
11
|
+
end
|
12
|
+
|
13
|
+
# @return [object] Returns the sales type with the given id.
|
14
|
+
def income_type(id, options = {})
|
15
|
+
get "income_types/#{id}", options
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
module SageoneSdk
|
2
|
+
class Client
|
3
|
+
|
4
|
+
# Represents other income transactions for the authenticated user's business.
|
5
|
+
module Incomes
|
6
|
+
|
7
|
+
# @return [object] Returns all other income transactions for the authenticated user's business.
|
8
|
+
def incomes(options = {})
|
9
|
+
paginate "incomes", options
|
10
|
+
end
|
11
|
+
|
12
|
+
# @return [object] Returns the other income transaction with the given id.
|
13
|
+
def income(id, options = {})
|
14
|
+
get "incomes/#{id}", options
|
15
|
+
end
|
16
|
+
|
17
|
+
# Creates an other income transaction with the data provided.
|
18
|
+
# @example Create a new income transaction
|
19
|
+
# @client.create_income({"date" => "2016-01-25",
|
20
|
+
# "amount" => 100.0,
|
21
|
+
# "tax_amount" => 20.0,
|
22
|
+
# "tax_percentage_rate" => 20.0,
|
23
|
+
# "tax_code_id" => 1,
|
24
|
+
# "source_id" => 434,
|
25
|
+
# "destination_id" => 415,
|
26
|
+
# "payment_method_id" => 2})
|
27
|
+
# @param data [hash] The transaction information.
|
28
|
+
# @param options [hash]
|
29
|
+
def create_income(data, options = {})
|
30
|
+
post "incomes", :income => data
|
31
|
+
end
|
32
|
+
|
33
|
+
# Updates the given transaction with the data provided.
|
34
|
+
# @example Update the date of an income transaction
|
35
|
+
# @client.update_income(655324, {"date" => "2016-01-31"})
|
36
|
+
# @param id [integer] The id of the income transaction to update.
|
37
|
+
# @param data [hash] The transaction information to update.
|
38
|
+
# @param options [hash]
|
39
|
+
def update_income(id, data, options = {})
|
40
|
+
put "incomes/#{id}", :income => data
|
41
|
+
end
|
42
|
+
|
43
|
+
# Deletes the given income transaction.
|
44
|
+
# @param id [integer] The id of the income transaction to delete.
|
45
|
+
# @param options [hash]
|
46
|
+
def delete_income(id, options = {})
|
47
|
+
delete "incomes/#{id}"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module SageoneSdk
|
2
|
+
class Client
|
3
|
+
|
4
|
+
# Represents journal trasnactions in Sage One.
|
5
|
+
module Journals
|
6
|
+
|
7
|
+
# Creates a journal entry with the data provided.
|
8
|
+
# @example Create a new journal transaction
|
9
|
+
# @client.create_journal({"reference" => "ref001",
|
10
|
+
# "description" => "description",
|
11
|
+
# "date" => "2016-01-01",
|
12
|
+
# "journal_lines[0][credit]" => 50.0,
|
13
|
+
# "journal_lines[0][debit]" => 0.0,
|
14
|
+
# "journal_lines[0][details]" => "detail",
|
15
|
+
# "journal_lines[0][ledger_account][nominal_code]" => 1,
|
16
|
+
# "journal_lines[1][credit]" => 0.0,
|
17
|
+
# "journal_lines[1][debit]" => 50.0,
|
18
|
+
# "journal_lines[1][details]" => "detail",
|
19
|
+
# "journal_lines[1][ledger_account][nominal_code]" => 9999})
|
20
|
+
# @param data [hash] The journal entry information.
|
21
|
+
# @param options [hash]
|
22
|
+
def create_journal(data, options = {})
|
23
|
+
post "journals", :journal => data
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
module SageoneSdk
|
2
|
+
class Client
|
3
|
+
|
4
|
+
# Represents ledger accounts for the authenticated user's business.
|
5
|
+
module LedgerAccounts
|
6
|
+
|
7
|
+
# @return [object] Returns all ledger accounts for the authenticated user's business.
|
8
|
+
def ledger_accounts(options = {})
|
9
|
+
get "ledger_accounts", options
|
10
|
+
end
|
11
|
+
|
12
|
+
# @return [object] Returns the ledger account with the given id.
|
13
|
+
def ledger_account(id, options = {})
|
14
|
+
get "ledger_accounts/#{id}", options
|
15
|
+
end
|
16
|
+
|
17
|
+
# @return [object] Returns all ledger accounts with a balance for the given date range.
|
18
|
+
# @param options [hash]
|
19
|
+
# @option options [date] from_date The transaction from date.
|
20
|
+
# @option options [date] to_date The transaction to date.
|
21
|
+
# @example Get balances for January 2015
|
22
|
+
# @client.ledger_account_balances({'from_date' => '2015-01-01', 'to_date' => '2015-01-31'})
|
23
|
+
def ledger_account_balances(options = {})
|
24
|
+
get "ledger_accounts/balances", options
|
25
|
+
end
|
26
|
+
|
27
|
+
# @return [object] Returns the given ledger account and its balance for the given date range.
|
28
|
+
# @param id [integer] The ledger account id.
|
29
|
+
# @param options [hash]
|
30
|
+
# @option options [date] from_date The transaction from date.
|
31
|
+
# @option options [date] to_date The transaction to date.
|
32
|
+
# @example Get balances for ledger account id 1233 for January 2015
|
33
|
+
# @client.ledger_account_balances(1233, {'from_date' => '2015-01-01', 'to_date' => '2015-01-31'})
|
34
|
+
def ledger_account_balance(id, options = {})
|
35
|
+
get "ledger_accounts/#{id}/balance", options
|
36
|
+
end
|
37
|
+
|
38
|
+
# Creates a ledger account with the data provided.
|
39
|
+
# @example Create a new ledger account
|
40
|
+
# @client.create_ledger_account({ledger_name: "My new ledger account",
|
41
|
+
# display_name: "My new ledger account",
|
42
|
+
# nominal_code: 1235,
|
43
|
+
# included_in_chart: true,
|
44
|
+
# category_id: 1})
|
45
|
+
# @param data [hash] The ledger account information.
|
46
|
+
# @param options [hash]
|
47
|
+
def create_ledger_account(data, options = {})
|
48
|
+
post "ledger_accounts", :ledger_account => data
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module SageoneSdk
|
2
|
+
class Client
|
3
|
+
|
4
|
+
# Represents the payment status of an invoice in Sage One. For example, Paid or Void.
|
5
|
+
module PaymentStatuses
|
6
|
+
|
7
|
+
# @return [object] Returns all payment statuses.
|
8
|
+
def payment_statuses(options = {})
|
9
|
+
get "payment_statuses", options
|
10
|
+
end
|
11
|
+
|
12
|
+
# @return [object] Returns the payment status with the given id.
|
13
|
+
def payment_status(id, options = {})
|
14
|
+
get "payment_statuses/#{id}", options
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module SageoneSdk
|
2
|
+
class Client
|
3
|
+
|
4
|
+
# Represents the rate frequency in Sage One and refers to the chargeable
|
5
|
+
# period of a service. For example, hourly or daily.
|
6
|
+
module PeriodTypes
|
7
|
+
|
8
|
+
# @return [object] Returns all rate frequencies.
|
9
|
+
def period_types(options = {})
|
10
|
+
get "period_types", options
|
11
|
+
end
|
12
|
+
|
13
|
+
# @return [object] Returns the rate frequency with the given id.
|
14
|
+
def period_type(id, options = {})
|
15
|
+
get "period_types/#{id}", options
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module SageoneSdk
|
2
|
+
class Client
|
3
|
+
|
4
|
+
# Represents the products for the authenticated user's business.
|
5
|
+
module Products
|
6
|
+
|
7
|
+
# @return [object] Returns all products for the authenticated user's business.
|
8
|
+
def products(options = {})
|
9
|
+
paginate "products", options
|
10
|
+
end
|
11
|
+
|
12
|
+
# @return [object] Returns the product with the given id.
|
13
|
+
def product(id, options = {})
|
14
|
+
get "products/#{id}", options
|
15
|
+
end
|
16
|
+
|
17
|
+
# Creates a product record with the data provided.
|
18
|
+
# @example Create a new product record
|
19
|
+
# @client.create_product({description: "My new product",
|
20
|
+
# sales_price_includes_tax: false,
|
21
|
+
# ledger_account_id: 438,
|
22
|
+
# tax_code_id: 1,
|
23
|
+
# product_code: "PROD001",
|
24
|
+
# last_cost_price: 41.5,
|
25
|
+
# sales_price: 99.99})
|
26
|
+
# @param data [hash] The product record information.
|
27
|
+
# @param options [hash]
|
28
|
+
def create_product(data, options = {})
|
29
|
+
post "products", :product => data
|
30
|
+
end
|
31
|
+
|
32
|
+
# Updates the given product record with the data provided.
|
33
|
+
# @example Update a product sales price
|
34
|
+
# @client.update_product(2341, {sales_price: 199.99})
|
35
|
+
# @param id [integer] The id of the product record to update.
|
36
|
+
# @param data [hash] The product information to update.
|
37
|
+
# @param options [hash]
|
38
|
+
def update_product(id, data, options = {})
|
39
|
+
put "products/#{id}", :product => data
|
40
|
+
end
|
41
|
+
|
42
|
+
# Deletes the given product record.
|
43
|
+
# @param id [integer] The id of the product record to delete.
|
44
|
+
# @param options [hash]
|
45
|
+
def delete_product(id, options = {})
|
46
|
+
delete "products/#{id}"
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|