ledger_sync 1.4.2 → 1.4.4
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 +4 -4
- data/.overcommit.yml +30 -0
- data/.travis.yml +6 -1
- data/Gemfile +2 -0
- data/Gemfile.lock +11 -5
- data/Rakefile +2 -0
- data/bin/console +1 -0
- data/bin/quickbooks_online_oauth_server.rb +5 -4
- data/documentation/generators/generator.rb +4 -4
- data/documentation/site/LICENSE.md +14 -14
- data/documentation/site/_includes/header.html +34 -34
- data/documentation/site/_includes/section_content.html +25 -30
- data/documentation/site/_includes/section_cta.html +20 -24
- data/documentation/site/_includes/section_grid.html +39 -54
- data/documentation/site/_includes/section_hero.html +19 -24
- data/documentation/site/_includes/submenu.html +6 -7
- data/documentation/site/_layouts/advanced.html +0 -1
- data/documentation/site/_layouts/guides.html +2 -2
- data/documentation/site/_layouts/page.html +2 -2
- data/documentation/site/_plugins/filters.rb +3 -3
- data/documentation/site/_templates/reference/resources/resource.md.erb +14 -0
- data/documentation/site/assets/js/plugins.js +1 -1
- data/documentation/site/guides/architecture/searchers.md +3 -3
- data/documentation/site/reference/netsuite/resources/account.md +6 -0
- data/documentation/site/reference/netsuite/resources/check.md +6 -0
- data/documentation/site/reference/netsuite/resources/check_line_item.md +4 -0
- data/documentation/site/reference/netsuite/resources/currency.md +4 -0
- data/documentation/site/reference/netsuite/resources/customer.md +6 -0
- data/documentation/site/reference/netsuite/resources/customer_deposit.md +6 -0
- data/documentation/site/reference/netsuite/resources/department.md +6 -0
- data/documentation/site/reference/netsuite/resources/deposit.md +4 -0
- data/documentation/site/reference/netsuite/resources/deposit_line_item.md +4 -0
- data/documentation/site/reference/netsuite/resources/invoice.md +4 -0
- data/documentation/site/reference/netsuite/resources/invoice_line_item.md +4 -0
- data/documentation/site/reference/netsuite/resources/item.md +4 -0
- data/documentation/site/reference/netsuite/resources/journal_entry.md +4 -0
- data/documentation/site/reference/netsuite/resources/journal_entry_line_item.md +4 -0
- data/documentation/site/reference/netsuite/resources/ledger_class.md +6 -0
- data/documentation/site/reference/netsuite/resources/location.md +6 -0
- data/documentation/site/reference/netsuite/resources/resource.md +4 -0
- data/documentation/site/reference/netsuite/resources/subsidiary.md +6 -0
- data/documentation/site/reference/netsuite/resources/vendor.md +6 -0
- data/documentation/site/reference/netsuite_soap/resources/customer.md +4 -0
- data/documentation/site/reference/netsuite_soap/resources/resource.md +4 -0
- data/documentation/site/reference/netsuite_soap/resources/subsidiary.md +4 -0
- data/documentation/site/reference/quickbooks_online/resources/account.md +6 -0
- data/documentation/site/reference/quickbooks_online/resources/bill.md +6 -0
- data/documentation/site/reference/quickbooks_online/resources/bill_line_item.md +4 -0
- data/documentation/site/reference/quickbooks_online/resources/bill_payment.md +4 -0
- data/documentation/site/reference/quickbooks_online/resources/bill_payment_line_item.md +4 -0
- data/documentation/site/reference/quickbooks_online/resources/currency.md +4 -0
- data/documentation/site/reference/quickbooks_online/resources/customer.md +6 -0
- data/documentation/site/reference/quickbooks_online/resources/department.md +6 -0
- data/documentation/site/reference/quickbooks_online/resources/deposit.md +6 -0
- data/documentation/site/reference/quickbooks_online/resources/deposit_line_item.md +4 -0
- data/documentation/site/reference/quickbooks_online/resources/expense.md +6 -0
- data/documentation/site/reference/quickbooks_online/resources/expense_line_item.md +4 -0
- data/documentation/site/reference/quickbooks_online/resources/invoice.md +4 -0
- data/documentation/site/reference/quickbooks_online/resources/invoice_sales_line_item.md +4 -0
- data/documentation/site/reference/quickbooks_online/resources/item.md +4 -0
- data/documentation/site/reference/quickbooks_online/resources/journal_entry.md +6 -0
- data/documentation/site/reference/quickbooks_online/resources/journal_entry_line_item.md +4 -0
- data/documentation/site/reference/quickbooks_online/resources/ledger_class.md +6 -0
- data/documentation/site/reference/quickbooks_online/resources/payment.md +4 -0
- data/documentation/site/reference/quickbooks_online/resources/payment_line_item.md +4 -0
- data/documentation/site/reference/quickbooks_online/resources/preferences.md +4 -0
- data/documentation/site/reference/quickbooks_online/resources/primary_email_addr.md +4 -0
- data/documentation/site/reference/quickbooks_online/resources/primary_phone.md +4 -0
- data/documentation/site/reference/quickbooks_online/resources/resource.md +4 -0
- data/documentation/site/reference/quickbooks_online/resources/subsidiary.md +4 -0
- data/documentation/site/reference/quickbooks_online/resources/transfer.md +4 -0
- data/documentation/site/reference/quickbooks_online/resources/vendor.md +6 -0
- data/documentation/site/reference/stripe/resources/customer.md +4 -0
- data/documentation/site/reference/stripe/resources/resource.md +4 -0
- data/ledger_sync.gemspec +3 -1
- data/lib/ledger_sync.rb +3 -1
- data/lib/ledger_sync/concerns/validatable.rb +2 -0
- data/lib/ledger_sync/error/operation_errors.rb +1 -1
- data/lib/ledger_sync/error/resource_errors.rb +3 -2
- data/lib/ledger_sync/ledger_configuration_store.rb +5 -1
- data/lib/ledger_sync/ledgers/client.rb +12 -4
- data/lib/ledger_sync/ledgers/mixins/infer_serializer_mixin.rb +3 -1
- data/lib/ledger_sync/ledgers/netsuite/account/operations/find.rb +1 -1
- data/lib/ledger_sync/ledgers/netsuite/client.rb +2 -2
- data/lib/ledger_sync/ledgers/netsuite/dashboard_url_helper.rb +1 -1
- data/lib/ledger_sync/ledgers/netsuite/error.rb +1 -0
- data/lib/ledger_sync/ledgers/netsuite/journal_entry_line_item/deserializer.rb +0 -3
- data/lib/ledger_sync/ledgers/netsuite/resources/account.rb +1 -2
- data/lib/ledger_sync/ledgers/netsuite/searcher.rb +3 -1
- data/lib/ledger_sync/ledgers/netsuite/token.rb +1 -1
- data/lib/ledger_sync/ledgers/netsuite/type/deserializer_entity_type.rb +6 -6
- data/lib/ledger_sync/ledgers/netsuite/vendor/operations/create.rb +1 -1
- data/lib/ledger_sync/ledgers/netsuite/vendor/operations/delete.rb +1 -1
- data/lib/ledger_sync/ledgers/netsuite/vendor/operations/find.rb +1 -1
- data/lib/ledger_sync/ledgers/netsuite/vendor/operations/update.rb +1 -1
- data/lib/ledger_sync/ledgers/netsuite_soap/client.rb +15 -21
- data/lib/ledger_sync/ledgers/netsuite_soap/customer/operations/create.rb +2 -0
- data/lib/ledger_sync/ledgers/operation.rb +5 -3
- data/lib/ledger_sync/ledgers/quickbooks_online/account/operations/create.rb +2 -0
- data/lib/ledger_sync/ledgers/quickbooks_online/account/operations/find.rb +2 -0
- data/lib/ledger_sync/ledgers/quickbooks_online/bill/operations/create.rb +2 -0
- data/lib/ledger_sync/ledgers/quickbooks_online/bill/operations/find.rb +2 -0
- data/lib/ledger_sync/ledgers/quickbooks_online/bill/operations/update.rb +2 -0
- data/lib/ledger_sync/ledgers/quickbooks_online/client.rb +12 -4
- data/lib/ledger_sync/ledgers/quickbooks_online/customer/searcher.rb +2 -0
- data/lib/ledger_sync/ledgers/quickbooks_online/dashboard_url_helper.rb +22 -22
- data/lib/ledger_sync/ledgers/quickbooks_online/department/operations/create.rb +2 -0
- data/lib/ledger_sync/ledgers/quickbooks_online/department/operations/find.rb +2 -0
- data/lib/ledger_sync/ledgers/quickbooks_online/deposit/operations/create.rb +2 -0
- data/lib/ledger_sync/ledgers/quickbooks_online/deposit/operations/find.rb +2 -0
- data/lib/ledger_sync/ledgers/quickbooks_online/deposit/searcher.rb +1 -0
- data/lib/ledger_sync/ledgers/quickbooks_online/deserializer.rb +4 -2
- data/lib/ledger_sync/ledgers/quickbooks_online/expense/deserializer.rb +3 -2
- data/lib/ledger_sync/ledgers/quickbooks_online/expense/operations/create.rb +2 -0
- data/lib/ledger_sync/ledgers/quickbooks_online/expense/operations/find.rb +2 -0
- data/lib/ledger_sync/ledgers/quickbooks_online/expense/operations/update.rb +2 -0
- data/lib/ledger_sync/ledgers/quickbooks_online/invoice/operations/find.rb +2 -0
- data/lib/ledger_sync/ledgers/quickbooks_online/invoice/operations/update.rb +2 -0
- data/lib/ledger_sync/ledgers/quickbooks_online/journal_entry/operations/create.rb +2 -0
- data/lib/ledger_sync/ledgers/quickbooks_online/journal_entry/operations/find.rb +2 -0
- data/lib/ledger_sync/ledgers/quickbooks_online/journal_entry/operations/update.rb +2 -0
- data/lib/ledger_sync/ledgers/quickbooks_online/ledger_class/deserializer.rb +0 -1
- data/lib/ledger_sync/ledgers/quickbooks_online/ledger_class/operations/create.rb +2 -0
- data/lib/ledger_sync/ledgers/quickbooks_online/ledger_class/operations/find.rb +2 -0
- data/lib/ledger_sync/ledgers/quickbooks_online/operation.rb +1 -1
- data/lib/ledger_sync/ledgers/quickbooks_online/payment/operations/find.rb +2 -0
- data/lib/ledger_sync/ledgers/quickbooks_online/payment/operations/update.rb +2 -0
- data/lib/ledger_sync/ledgers/quickbooks_online/resources/customer.rb +4 -0
- data/lib/ledger_sync/ledgers/quickbooks_online/transfer/operations/create.rb +2 -0
- data/lib/ledger_sync/ledgers/quickbooks_online/transfer/operations/find.rb +2 -0
- data/lib/ledger_sync/ledgers/quickbooks_online/util/error_matcher.rb +8 -5
- data/lib/ledger_sync/ledgers/quickbooks_online/util/ledger_error_parser.rb +3 -3
- data/lib/ledger_sync/ledgers/quickbooks_online/util/operation_error_parser.rb +2 -2
- data/lib/ledger_sync/ledgers/quickbooks_online/webhook_event.rb +3 -1
- data/lib/ledger_sync/ledgers/quickbooks_online/webhook_notification.rb +4 -3
- data/lib/ledger_sync/ledgers/response.rb +3 -1
- data/lib/ledger_sync/ledgers/stripe/client.rb +1 -1
- data/lib/ledger_sync/ledgers/stripe/dashboard_url_helper.rb +1 -1
- data/lib/ledger_sync/ledgers/stripe/operation/create.rb +0 -2
- data/lib/ledger_sync/ledgers/stripe/operation/delete.rb +0 -2
- data/lib/ledger_sync/ledgers/stripe/operation/update.rb +0 -2
- data/lib/ledger_sync/resource.rb +3 -1
- data/lib/ledger_sync/resource_attribute/dirty_mixin.rb +1 -1
- data/lib/ledger_sync/resource_attribute/mixin.rb +3 -3
- data/lib/ledger_sync/resource_attribute_set.rb +1 -1
- data/lib/ledger_sync/result.rb +7 -12
- data/lib/ledger_sync/serialization/deserializer_attribute.rb +6 -2
- data/lib/ledger_sync/serializer.rb +3 -1
- data/lib/ledger_sync/type/reference_one.rb +1 -1
- data/lib/ledger_sync/util/hash_helpers.rb +12 -2
- data/lib/ledger_sync/util/mixins/delegate_iterable_methods_mixin.rb +1 -0
- data/lib/ledger_sync/util/read_only_object.rb +1 -1
- data/lib/ledger_sync/util/resource_converter.rb +12 -8
- data/lib/ledger_sync/util/resource_converter/attribute.rb +3 -1
- data/lib/ledger_sync/util/resource_converter/attribute_set.rb +2 -1
- data/lib/ledger_sync/util/resources_builder.rb +5 -5
- data/lib/ledger_sync/version.rb +3 -1
- metadata +17 -10
- data/documentation/site/reference/architecture/clients.md +0 -33
- data/documentation/site/reference/architecture/index.md +0 -14
- data/documentation/site/reference/architecture/operations.md +0 -6
- data/documentation/site/reference/architecture/resources.md +0 -38
- data/documentation/site/reference/architecture/results.md +0 -6
- data/documentation/site/reference/architecture/searchers.md +0 -6
- data/documentation/site/reference/architecture/serialization.md +0 -6
data/ledger_sync.gemspec
CHANGED
|
@@ -11,7 +11,8 @@ Gem::Specification.new do |spec|
|
|
|
11
11
|
# spec.required_rubygems_version = Gem::Requirement.new('>= 0') if spec.respond_to? :required_rubygems_version=
|
|
12
12
|
spec.authors = ['Ryan Jackson']
|
|
13
13
|
spec.date = '2019-05-21'
|
|
14
|
-
spec.description = 'LedgerSync is a simple library that allows you to sync common objects to popular accounting
|
|
14
|
+
spec.description = 'LedgerSync is a simple library that allows you to sync common objects to popular accounting '\
|
|
15
|
+
'software like QuickBooks Online, Xero, NetSuite, etc.'
|
|
15
16
|
spec.email = ['ryanwjackson@gmail.com']
|
|
16
17
|
spec.homepage = 'https://github.com/LedgerSync/ledger_sync'
|
|
17
18
|
spec.licenses = ['MIT']
|
|
@@ -36,6 +37,7 @@ Gem::Specification.new do |spec|
|
|
|
36
37
|
spec.add_development_dependency('jekyll-menus', '~> 0.6.0')
|
|
37
38
|
spec.add_development_dependency('jekyll-paginate', '~> 1.1')
|
|
38
39
|
spec.add_development_dependency('jekyll-paginate-v2', '~> 1.9')
|
|
40
|
+
spec.add_development_dependency('overcommit')
|
|
39
41
|
spec.add_development_dependency('rake', '~> 13.0')
|
|
40
42
|
spec.add_development_dependency('rspec', '~> 3.2')
|
|
41
43
|
spec.add_development_dependency('rubocop', '>= 0')
|
data/lib/ledger_sync.rb
CHANGED
|
@@ -90,7 +90,9 @@ module LedgerSync
|
|
|
90
90
|
end
|
|
91
91
|
|
|
92
92
|
def self.log_level=(val)
|
|
93
|
-
|
|
93
|
+
if !val.nil? && ![LEVEL_DEBUG, LEVEL_ERROR, LEVEL_INFO].include?(val)
|
|
94
|
+
raise ArgumentError, 'log_level should only be set to `nil`, `debug` or `info`'
|
|
95
|
+
end
|
|
94
96
|
|
|
95
97
|
@log_level = val
|
|
96
98
|
end
|
|
@@ -31,7 +31,7 @@ module LedgerSync
|
|
|
31
31
|
attr_reader :attribute,
|
|
32
32
|
:validation
|
|
33
33
|
|
|
34
|
-
def initialize(message:, attribute:, operation:, validation:, response:nil)
|
|
34
|
+
def initialize(message:, attribute:, operation:, validation:, response: nil)
|
|
35
35
|
@attribute = attribute
|
|
36
36
|
@validation = validation
|
|
37
37
|
|
|
@@ -22,7 +22,8 @@ module LedgerSync
|
|
|
22
22
|
when LedgerSync::ResourceAttribute::Reference::Many
|
|
23
23
|
invalid_classes = value.reject { |e| e.is_a?(type_resource_class) }.map(&:class)
|
|
24
24
|
if type_resource_class.is_a?(Array)
|
|
25
|
-
"an array of one or more of the following: #{type_resource_class.name}. Given array containing:
|
|
25
|
+
"an array of one or more of the following: #{type_resource_class.name}. Given array containing: "\
|
|
26
|
+
"#{invalid_classes.join(', ')}"
|
|
26
27
|
else
|
|
27
28
|
"an array of #{type_resource_class.name}. Given array containing: #{invalid_classes.join(', ')}"
|
|
28
29
|
end
|
|
@@ -43,7 +44,7 @@ module LedgerSync
|
|
|
43
44
|
else
|
|
44
45
|
attribute.type.valid_classes
|
|
45
46
|
end
|
|
46
|
-
|
|
47
|
+
end
|
|
47
48
|
end
|
|
48
49
|
end
|
|
49
50
|
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module LedgerSync
|
|
2
4
|
class LedgerConfigurationStore
|
|
3
5
|
include Enumerable
|
|
@@ -13,7 +15,9 @@ module LedgerSync
|
|
|
13
15
|
|
|
14
16
|
def add_alias(client_key, existing_config)
|
|
15
17
|
if respond_to?(client_key)
|
|
16
|
-
|
|
18
|
+
if send(client_key) != existing_config
|
|
19
|
+
raise LedgerSync::ConfigurationError, "Alias already taken: #{client_key}"
|
|
20
|
+
end
|
|
17
21
|
|
|
18
22
|
return
|
|
19
23
|
end
|
|
@@ -45,12 +45,12 @@ module LedgerSync
|
|
|
45
45
|
)
|
|
46
46
|
end
|
|
47
47
|
|
|
48
|
-
def searcher_for(
|
|
49
|
-
|
|
48
|
+
def searcher_for(*args)
|
|
49
|
+
self.class.searcher_for(*args)
|
|
50
50
|
end
|
|
51
51
|
|
|
52
|
-
def searcher_class_for(
|
|
53
|
-
|
|
52
|
+
def searcher_class_for(*args)
|
|
53
|
+
self.class.searcher_class_for(*args)
|
|
54
54
|
end
|
|
55
55
|
|
|
56
56
|
def url_for(*_args)
|
|
@@ -106,6 +106,14 @@ module LedgerSync
|
|
|
106
106
|
@root_key ||= config.root_key
|
|
107
107
|
end
|
|
108
108
|
|
|
109
|
+
def self.searcher_for(resource_type:, query: '')
|
|
110
|
+
searcher_class_for(resource_type: resource_type).new(client: self, query: query)
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
def self.searcher_class_for(resource_type:)
|
|
114
|
+
base_module.const_get(LedgerSync::Util::StringHelpers.camelcase(resource_type.to_s))::Searcher
|
|
115
|
+
end
|
|
116
|
+
|
|
109
117
|
def self.url_for(resource: nil); end
|
|
110
118
|
end
|
|
111
119
|
end
|
|
@@ -25,7 +25,9 @@ module LedgerSync
|
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
def inferred_searcher_deserializer_class_name
|
|
28
|
-
@inferred_searcher_deserializer_class_name ||=
|
|
28
|
+
@inferred_searcher_deserializer_class_name ||= begin
|
|
29
|
+
"#{inferred_resource_class.resource_module_str}::SearcherDeserializer"
|
|
30
|
+
end
|
|
29
31
|
end
|
|
30
32
|
|
|
31
33
|
def inferred_serializer_class
|
|
@@ -37,7 +37,7 @@ module LedgerSync
|
|
|
37
37
|
end
|
|
38
38
|
|
|
39
39
|
def account_id_for_oauth
|
|
40
|
-
account_id.gsub(
|
|
40
|
+
account_id.gsub(/-/, '_').upcase
|
|
41
41
|
end
|
|
42
42
|
|
|
43
43
|
def account_id_for_url
|
|
@@ -64,7 +64,7 @@ module LedgerSync
|
|
|
64
64
|
resource = args.fetch(:resource, nil)
|
|
65
65
|
params = args.fetch(:params, {})
|
|
66
66
|
|
|
67
|
-
ret = self.class.ledger_resource_type_for(resource_class: resource.class)
|
|
67
|
+
ret = self.class.ledger_resource_type_for(resource_class: resource.class)
|
|
68
68
|
ret += "/#{resource.ledger_id}" if resource.ledger_id.present? && args.fetch(:id, true)
|
|
69
69
|
Util::URLHelpers.merge_params_in_path(
|
|
70
70
|
path: ret,
|
|
@@ -4,7 +4,7 @@ module LedgerSync
|
|
|
4
4
|
module Ledgers
|
|
5
5
|
module NetSuite
|
|
6
6
|
class DashboardURLHelper < LedgerSync::Ledgers::DashboardURLHelper
|
|
7
|
-
def resource_path
|
|
7
|
+
def resource_path # rubocop:disable Metrics/CyclomaticComplexity
|
|
8
8
|
@resource_path = case resource
|
|
9
9
|
when NetSuite::Account
|
|
10
10
|
"/app/accounting/account/account.nl?id=#{resource.ledger_id}"
|
|
@@ -42,7 +42,9 @@ module LedgerSync
|
|
|
42
42
|
when 404
|
|
43
43
|
[]
|
|
44
44
|
when 400
|
|
45
|
-
if request.body[
|
|
45
|
+
if request.body['title'].include?(
|
|
46
|
+
'Invalid search query Search error occurred: Record ‘subsidiary’ was not found'
|
|
47
|
+
)
|
|
46
48
|
raise LedgerSync::Ledgers::NetSuite::Error::SubsidiariesNotEnabled
|
|
47
49
|
end
|
|
48
50
|
end
|
|
@@ -141,7 +141,7 @@ module LedgerSync
|
|
|
141
141
|
def url_params
|
|
142
142
|
return {} if uri.query.nil?
|
|
143
143
|
|
|
144
|
-
@url_params ||=
|
|
144
|
+
@url_params ||= CGI.parse(uri.query).transform_values(&:first)
|
|
145
145
|
end
|
|
146
146
|
|
|
147
147
|
def url_without_params
|
|
@@ -10,12 +10,12 @@ module LedgerSync
|
|
|
10
10
|
def cast_value(args = {})
|
|
11
11
|
value = args.fetch(:value)
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
13
|
+
return if value.nil?
|
|
14
|
+
|
|
15
|
+
resource = value.fetch('links').first.fetch('href').include?('vendor') ? Vendor : Customer
|
|
16
|
+
resource.new(
|
|
17
|
+
ledger_id: value['id']
|
|
18
|
+
)
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
def valid_classes
|