ledger_sync 1.3.3 → 1.3.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.
Files changed (71) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -1
  3. data/.rubocop_todo.yml +0 -3
  4. data/Gemfile.lock +47 -44
  5. data/ledger_sync.gemspec +1 -1
  6. data/lib/ledger_sync.rb +5 -0
  7. data/lib/ledger_sync/adaptors/adaptor.rb +28 -0
  8. data/lib/ledger_sync/adaptors/netsuite/account/operations/create.rb +1 -1
  9. data/lib/ledger_sync/adaptors/netsuite/account/searcher.rb +0 -16
  10. data/lib/ledger_sync/adaptors/netsuite/adaptor.rb +11 -3
  11. data/lib/ledger_sync/adaptors/netsuite/currency/operations/create.rb +1 -1
  12. data/lib/ledger_sync/adaptors/netsuite/customer/operations/create.rb +1 -1
  13. data/lib/ledger_sync/adaptors/netsuite/department/ledger_serializer.rb +17 -0
  14. data/lib/ledger_sync/adaptors/netsuite/department/operations/create.rb +25 -0
  15. data/lib/ledger_sync/adaptors/netsuite/department/operations/delete.rb +25 -0
  16. data/lib/ledger_sync/adaptors/netsuite/department/operations/find.rb +25 -0
  17. data/lib/ledger_sync/adaptors/netsuite/department/operations/update.rb +25 -0
  18. data/lib/ledger_sync/adaptors/netsuite/department/searcher.rb +12 -0
  19. data/lib/ledger_sync/adaptors/netsuite/ledger_serializer.rb +1 -1
  20. data/lib/ledger_sync/adaptors/netsuite/record/http_method.rb +14 -19
  21. data/lib/ledger_sync/adaptors/netsuite/record/metadata.rb +47 -21
  22. data/lib/ledger_sync/adaptors/netsuite/record/parameter.rb +20 -0
  23. data/lib/ledger_sync/adaptors/netsuite/record/property.rb +8 -31
  24. data/lib/ledger_sync/adaptors/netsuite/searcher.rb +19 -0
  25. data/lib/ledger_sync/adaptors/netsuite/vendor/operations/create.rb +1 -1
  26. data/lib/ledger_sync/adaptors/quickbooks_online/adaptor.rb +6 -11
  27. data/lib/ledger_sync/adaptors/quickbooks_online/bill_payment/ledger_serializer.rb +76 -0
  28. data/lib/ledger_sync/adaptors/quickbooks_online/bill_payment/operations/create.rb +33 -0
  29. data/lib/ledger_sync/adaptors/quickbooks_online/bill_payment/operations/find.rb +33 -0
  30. data/lib/ledger_sync/adaptors/quickbooks_online/bill_payment/operations/update.rb +33 -0
  31. data/lib/ledger_sync/adaptors/quickbooks_online/bill_payment_line_item/ledger_serializer.rb +19 -0
  32. data/lib/ledger_sync/adaptors/quickbooks_online/operation.rb +1 -1
  33. data/lib/ledger_sync/adaptors/quickbooks_online/operation/find.rb +0 -6
  34. data/lib/ledger_sync/adaptors/quickbooks_online/preferences/ledger_serializer.rb +45 -0
  35. data/lib/ledger_sync/adaptors/quickbooks_online/preferences/operations/find.rb +38 -0
  36. data/lib/ledger_sync/adaptors/quickbooks_online/resources/preferences.rb +24 -0
  37. data/lib/ledger_sync/adaptors/searcher.rb +4 -0
  38. data/lib/ledger_sync/error/operation_errors.rb +0 -10
  39. data/lib/ledger_sync/resource.rb +1 -1
  40. data/lib/ledger_sync/resources/bill_payment.rb +32 -0
  41. data/lib/ledger_sync/resources/bill_payment_line_item.rb +15 -0
  42. data/lib/ledger_sync/type/hash.rb +34 -0
  43. data/lib/ledger_sync/util/read_only_object.rb +54 -0
  44. data/lib/ledger_sync/version.rb +1 -1
  45. metadata +23 -30
  46. data/qa/env_spec.rb +0 -5
  47. data/qa/netsuite/account_spec.rb +0 -20
  48. data/qa/netsuite/currency_spec.rb +0 -16
  49. data/qa/netsuite/customer.rb +0 -76
  50. data/qa/netsuite/customer_spec.rb +0 -21
  51. data/qa/netsuite/vendor.rb +0 -76
  52. data/qa/netsuite/vendor_spec.rb +0 -23
  53. data/qa/netsuite_soap/customer_spec.rb +0 -21
  54. data/qa/netsuite_soap/subsidiary_spec.rb +0 -0
  55. data/qa/qa_helper.rb +0 -58
  56. data/qa/quickbooks_online/account_spec.rb +0 -14
  57. data/qa/quickbooks_online/customer_spec.rb +0 -13
  58. data/qa/quickbooks_online/expense_spec.rb +0 -31
  59. data/qa/quickbooks_online/vendor_spec.rb +0 -13
  60. data/qa/stripe/customers_spec.rb +0 -15
  61. data/qa/support/adaptor_helpers.rb +0 -99
  62. data/qa/support/adaptor_support_setup.rb +0 -23
  63. data/qa/support/netsuite_helpers.rb +0 -33
  64. data/qa/support/netsuite_shared_examples.rb +0 -30
  65. data/qa/support/netsuite_soap_helpers.rb +0 -33
  66. data/qa/support/netsuite_soap_shared_examples.rb +0 -10
  67. data/qa/support/quickbooks_online_helpers.rb +0 -42
  68. data/qa/support/quickbooks_online_shared_examples.rb +0 -82
  69. data/qa/support/shared_examples.rb +0 -127
  70. data/qa/support/stripe_helpers.rb +0 -22
  71. data/qa/support/stripe_shared_examples.rb +0 -10
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6c159bdb17d877ede52d532d64ca436bf590fd64d06f96f3302003bbade4a5e9
4
- data.tar.gz: 4146c094eb32435710901c88442ebab06e51bfb8b32144604c159a02f5287e33
3
+ metadata.gz: 3a9ac9abd02e87286bdff439fc491e286bb1d4d175f109f892061e7485cec2fd
4
+ data.tar.gz: ef25734c3e806d530e9b50b9cec78bc93de4c11ec87dc8c9be5f004650113487
5
5
  SHA512:
6
- metadata.gz: 87e52ac4566ad46fd64a32a67e4ca2221b5c19638bd6fd0b2347a43b9934e4c6e2952a84efc83ee414e05c07e384b2e8e9f72a785066619b7c8a8a9780939f10
7
- data.tar.gz: f887774835cbfaa38bfcf9a6a7d4b69760961875e86bb6096fdc36e8bdf19bdcdc11a24777e9277c818c734eaf85f1d3eadbd1ef90bcffd483c99ae681ae52a2
6
+ metadata.gz: 34d67c0a951e721b66b61fd686cdb9258d11aa7270a61fe32e5aa2c0d66a1b614643b0f14d99c8c5d49f19a631cddc742b9afb3ad5035be164d903d77a3b727b
7
+ data.tar.gz: e21b60479be3bd1ed92ff65907b250e6286b0d37c9dc44ff2d3300d0aefdb6fe47d4d20359366a1be9133cb08fe3d6d2b1ee363c3c5eb2f5a44499a82827406f
data/.gitignore CHANGED
@@ -15,4 +15,6 @@
15
15
 
16
16
  .DS_Store
17
17
 
18
- .env
18
+ .env
19
+
20
+ .tool-versions
@@ -15,9 +15,6 @@ Metrics/BlockLength:
15
15
  Metrics/ClassLength:
16
16
  Enabled: False
17
17
 
18
- Metrics/LineLength:
19
- Enabled: False
20
-
21
18
  Metrics/MethodLength:
22
19
  Enabled: False
23
20
 
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ledger_sync (1.3.3)
4
+ ledger_sync (1.3.4)
5
5
  activemodel
6
6
  colorize
7
7
  coveralls
@@ -23,9 +23,9 @@ PATH
23
23
  GEM
24
24
  remote: https://rubygems.org/
25
25
  specs:
26
- activemodel (6.0.1)
27
- activesupport (= 6.0.1)
28
- activesupport (6.0.1)
26
+ activemodel (6.0.2.1)
27
+ activesupport (= 6.0.2.1)
28
+ activesupport (6.0.2.1)
29
29
  concurrent-ruby (~> 1.0, >= 1.0.2)
30
30
  i18n (>= 0.7, < 2)
31
31
  minitest (~> 5.1)
@@ -39,10 +39,10 @@ GEM
39
39
  ast (2.4.0)
40
40
  awesome_print (1.8.0)
41
41
  builder (3.2.4)
42
- bump (0.8.0)
43
- byebug (11.0.1)
42
+ bump (0.9.0)
43
+ byebug (11.1.1)
44
44
  colorize (0.8.1)
45
- concurrent-ruby (1.1.5)
45
+ concurrent-ruby (1.1.6)
46
46
  coveralls (0.8.23)
47
47
  json (>= 1.8, < 3)
48
48
  simplecov (~> 0.16.1)
@@ -54,9 +54,10 @@ GEM
54
54
  diff-lcs (1.3)
55
55
  docile (1.3.2)
56
56
  dotenv (2.7.5)
57
- dry-configurable (0.9.0)
57
+ dry-configurable (0.11.3)
58
58
  concurrent-ruby (~> 1.0)
59
59
  dry-core (~> 0.4, >= 0.4.7)
60
+ dry-equalizer (~> 0.2)
60
61
  dry-container (0.7.2)
61
62
  concurrent-ruby (~> 1.0)
62
63
  dry-configurable (~> 0.1, >= 0.1.3)
@@ -65,7 +66,7 @@ GEM
65
66
  dry-equalizer (0.3.0)
66
67
  dry-inflector (0.2.0)
67
68
  dry-initializer (3.0.3)
68
- dry-logic (1.0.5)
69
+ dry-logic (1.0.6)
69
70
  concurrent-ruby (~> 1.0)
70
71
  dry-core (~> 0.2)
71
72
  dry-equalizer (~> 0.2)
@@ -77,7 +78,7 @@ GEM
77
78
  dry-initializer (~> 3.0)
78
79
  dry-logic (~> 1.0)
79
80
  dry-types (~> 1.2)
80
- dry-types (1.2.2)
81
+ dry-types (1.4.0)
81
82
  concurrent-ruby (~> 1.0)
82
83
  dry-container (~> 0.3)
83
84
  dry-core (~> 0.4, >= 0.4.4)
@@ -91,11 +92,11 @@ GEM
91
92
  dry-equalizer (~> 0.2)
92
93
  dry-initializer (~> 3.0)
93
94
  dry-schema (~> 1.4, >= 1.4.3)
94
- factory_bot (4.11.1)
95
- activesupport (>= 3.0.0)
95
+ factory_bot (5.1.1)
96
+ activesupport (>= 4.2.0)
96
97
  faraday (0.17.3)
97
98
  multipart-post (>= 1.2, < 3)
98
- faraday-detailed_logger (2.2.0)
99
+ faraday-detailed_logger (2.3.0)
99
100
  faraday (>= 0.8, < 2)
100
101
  faraday_middleware (0.14.0)
101
102
  faraday (>= 0.7.4, < 1.0)
@@ -103,59 +104,61 @@ GEM
103
104
  colorize
104
105
  gyoku (1.3.1)
105
106
  builder (>= 2.1.2)
106
- hashdiff (1.0.0)
107
+ hashdiff (1.0.1)
107
108
  httpi (2.4.4)
108
109
  rack
109
110
  socksify
110
- i18n (1.7.0)
111
+ i18n (1.8.2)
111
112
  concurrent-ruby (~> 1.0)
112
- jaro_winkler (1.5.3)
113
+ jaro_winkler (1.5.4)
113
114
  json (2.3.0)
114
115
  jwt (2.2.1)
115
116
  mini_portile2 (2.4.0)
116
- minitest (5.13.0)
117
+ minitest (5.14.0)
117
118
  multi_json (1.14.1)
118
119
  multi_xml (0.6.0)
119
120
  multipart-post (2.1.1)
120
121
  netsuite (0.8.5)
121
122
  savon (>= 2.3.0)
122
- nokogiri (1.10.7)
123
+ nokogiri (1.10.9)
123
124
  mini_portile2 (~> 2.4.0)
124
125
  nori (2.6.0)
125
- oauth2 (1.4.3)
126
+ oauth2 (1.4.4)
126
127
  faraday (>= 0.8, < 2.0)
127
128
  jwt (>= 1.0, < 3.0)
128
129
  multi_json (~> 1.3)
129
130
  multi_xml (~> 0.5)
130
131
  rack (>= 1.2, < 3)
131
- parallel (1.17.0)
132
- parser (2.6.4.1)
132
+ parallel (1.19.1)
133
+ parser (2.7.0.3)
133
134
  ast (~> 2.4.0)
134
135
  pd_ruby (0.2.0)
135
136
  colorize
136
- public_suffix (4.0.1)
137
- rack (2.1.2)
137
+ public_suffix (4.0.3)
138
+ rack (2.2.2)
138
139
  rainbow (3.0.0)
139
- rake (10.5.0)
140
+ rake (13.0.1)
140
141
  resonad (1.2.0)
141
- rspec (3.8.0)
142
- rspec-core (~> 3.8.0)
143
- rspec-expectations (~> 3.8.0)
144
- rspec-mocks (~> 3.8.0)
145
- rspec-core (3.8.2)
146
- rspec-support (~> 3.8.0)
147
- rspec-expectations (3.8.4)
142
+ rexml (3.2.4)
143
+ rspec (3.9.0)
144
+ rspec-core (~> 3.9.0)
145
+ rspec-expectations (~> 3.9.0)
146
+ rspec-mocks (~> 3.9.0)
147
+ rspec-core (3.9.1)
148
+ rspec-support (~> 3.9.1)
149
+ rspec-expectations (3.9.0)
148
150
  diff-lcs (>= 1.2.0, < 2.0)
149
- rspec-support (~> 3.8.0)
150
- rspec-mocks (3.8.1)
151
+ rspec-support (~> 3.9.0)
152
+ rspec-mocks (3.9.1)
151
153
  diff-lcs (>= 1.2.0, < 2.0)
152
- rspec-support (~> 3.8.0)
153
- rspec-support (3.8.2)
154
- rubocop (0.74.0)
154
+ rspec-support (~> 3.9.0)
155
+ rspec-support (3.9.2)
156
+ rubocop (0.80.0)
155
157
  jaro_winkler (~> 1.5.1)
156
158
  parallel (~> 1.10)
157
- parser (>= 2.6)
159
+ parser (>= 2.7.0.1)
158
160
  rainbow (>= 2.2.2, < 4.0)
161
+ rexml
159
162
  ruby-progressbar (~> 1.7)
160
163
  unicode-display_width (>= 1.4.0, < 1.7)
161
164
  ruby-progressbar (1.10.1)
@@ -176,22 +179,22 @@ GEM
176
179
  simply_serializable (1.4.2)
177
180
  fingerprintable (>= 1.2.1)
178
181
  socksify (1.7.1)
179
- stripe (5.14.0)
182
+ stripe (5.17.0)
180
183
  sync (0.5.0)
181
184
  term-ansicolor (1.7.1)
182
185
  tins (~> 1.0)
183
186
  thor (1.0.1)
184
187
  thread_safe (0.3.6)
185
- tins (1.24.0)
188
+ tins (1.24.1)
186
189
  sync
187
- tzinfo (1.2.5)
190
+ tzinfo (1.2.6)
188
191
  thread_safe (~> 0.1)
189
- unicode-display_width (1.6.0)
190
- vcr (5.0.0)
192
+ unicode-display_width (1.6.1)
193
+ vcr (5.1.0)
191
194
  wasabi (3.5.0)
192
195
  httpi (~> 2.0)
193
196
  nokogiri (>= 1.4.2)
194
- webmock (3.7.5)
197
+ webmock (3.8.2)
195
198
  addressable (>= 2.3.6)
196
199
  crack (>= 0.3.2)
197
200
  hashdiff (>= 0.4.0, < 2.0.0)
@@ -207,7 +210,7 @@ DEPENDENCIES
207
210
  byebug
208
211
  factory_bot
209
212
  ledger_sync!
210
- rake (~> 10.0)
213
+ rake (~> 13.0)
211
214
  rspec (~> 3.2)
212
215
  rubocop
213
216
  vcr
@@ -32,7 +32,7 @@ Gem::Specification.new do |spec|
32
32
  spec.add_development_dependency('bundler', '~> 1.16')
33
33
  spec.add_development_dependency('byebug', '>= 0')
34
34
  spec.add_development_dependency('factory_bot')
35
- spec.add_development_dependency('rake', '~> 10.0')
35
+ spec.add_development_dependency('rake', '~> 13.0')
36
36
  spec.add_development_dependency('rspec', '~> 3.2')
37
37
  spec.add_development_dependency('rubocop', '>= 0')
38
38
  spec.add_development_dependency('vcr', '>= 0')
@@ -37,6 +37,7 @@ Gem.find_files('ledger_sync/error/**/*.rb').each { |path| require path }
37
37
  require 'ledger_sync/util/resonad'
38
38
  require 'ledger_sync/util/signer'
39
39
  require 'ledger_sync/util/hash_helpers'
40
+ require 'ledger_sync/util/read_only_object'
40
41
  require 'ledger_sync/util/resources_builder'
41
42
  require 'ledger_sync/adaptor_configuration'
42
43
  require 'ledger_sync/adaptor_configuration_store'
@@ -59,6 +60,8 @@ require 'ledger_sync/adaptors/request'
59
60
  require 'ledger_sync/resource' # Template class
60
61
  Gem.find_files('ledger_sync/resources/**/*.rb').each { |path| require path }
61
62
 
63
+ Gem.find_files('ledger_sync/adaptors/quickbooks_online/resources/**/*.rb').each { |path| require path }
64
+
62
65
  module LedgerSync
63
66
  @log_level = nil
64
67
  @logger = nil
@@ -143,3 +146,5 @@ LedgerSync.register_resource(resource: LedgerSync::Payment)
143
146
  LedgerSync.register_resource(resource: LedgerSync::PaymentLineItem)
144
147
  LedgerSync.register_resource(resource: LedgerSync::Transfer)
145
148
  LedgerSync.register_resource(resource: LedgerSync::Vendor)
149
+
150
+ LedgerSync.register_resource(resource: LedgerSync::Adaptors::QuickBooksOnline::Preferences)
@@ -31,6 +31,16 @@ module LedgerSync
31
31
  end]
32
32
  end
33
33
 
34
+ def operation_for(method:, resource:)
35
+ self.class.operation_class_for(
36
+ method: method,
37
+ resource_class: resource.class
38
+ ).new(
39
+ adaptor: self,
40
+ resource: resource
41
+ )
42
+ end
43
+
34
44
  def searcher_for?(resource_type:)
35
45
  searcher_klass_for(resource_type: resource_type)
36
46
  rescue NameError
@@ -68,6 +78,24 @@ module LedgerSync
68
78
  raise NotImplementedError
69
79
  end
70
80
 
81
+ def self.ledger_resource_type_for(resource_class:)
82
+ ledger_resource_type_overrides[resource_class] || resource_class.resource_type.to_s
83
+ end
84
+
85
+ def self.ledger_resource_type_overrides
86
+ {}
87
+ end
88
+
89
+ def self.operation_class_for(method:, resource_class:)
90
+ base_operation_module_for(resource_class: resource_class)
91
+ .const_get(LedgerSync::Util::StringHelpers.camelcase(method.to_s))
92
+ end
93
+
94
+ def self.resource_from_ledger_type(type:, converter: nil)
95
+ converter ||= Proc.new { |n| n.underscore }
96
+ ledger_resource_type_overrides.invert[converter.call(type).to_sym] || LedgerSync.resources[converter.call(type).to_sym]
97
+ end
98
+
71
99
  def self.url_for(resource: nil); end
72
100
  end
73
101
  end
@@ -8,7 +8,7 @@ module LedgerSync
8
8
  class Create < NetSuite::Operation::Create
9
9
  class Contract < LedgerSync::Adaptors::Contract
10
10
  params do
11
- required(:external_id).maybe(:string)
11
+ required(:external_id).filled(:string)
12
12
  required(:ledger_id).value(:nil)
13
13
  required(:name).filled(:string)
14
14
  required(:classification).maybe(:string)
@@ -5,22 +5,6 @@ module LedgerSync
5
5
  module NetSuite
6
6
  module Account
7
7
  class Searcher < Searcher
8
- def resources
9
- @resources ||= begin
10
- @request = adaptor
11
- .get(
12
- path: "/record/account?limit=#{limit}&offset=#{offset}"
13
- )
14
-
15
- request.body
16
- .fetch('items')
17
- .map do |c|
18
- LedgerDeserializer.new(
19
- resource: LedgerSync::Account.new
20
- ).deserialize(hash: c)
21
- end
22
- end
23
- end
24
8
  end
25
9
  end
26
10
  end
@@ -44,7 +44,7 @@ module LedgerSync
44
44
  end
45
45
 
46
46
  def api_base_url
47
- @api_base_url ||= "https://#{api_host}/rest/platform/v1"
47
+ @api_base_url ||= "https://#{api_host}/services/rest/record/v1"
48
48
  end
49
49
 
50
50
  def api_host
@@ -59,6 +59,13 @@ module LedgerSync
59
59
  request(keywords.merge(method: :get))
60
60
  end
61
61
 
62
+ def metadata_for(record:)
63
+ Record::Metadata.new(
64
+ adaptor: self,
65
+ record: record
66
+ )
67
+ end
68
+
62
69
  def patch(headers: {}, **keywords)
63
70
  request(
64
71
  keywords.merge(
@@ -109,6 +116,7 @@ module LedgerSync
109
116
 
110
117
  def request(body: nil, headers: {}, method:, path: nil)
111
118
  request_url = url_from_path(path: path)
119
+
112
120
  token = new_token(
113
121
  body: body,
114
122
  method: method,
@@ -136,8 +144,8 @@ module LedgerSync
136
144
 
137
145
  def url_from_path(path:)
138
146
  request_url = api_base_url
139
- request_url += '/' unless path.start_with?('/')
140
- request_url + path
147
+ request_url += '/' unless path.to_s.start_with?('/')
148
+ request_url + path.to_s
141
149
  end
142
150
  end
143
151
  end
@@ -10,7 +10,7 @@ module LedgerSync
10
10
  class Create < NetSuite::Operation::Create
11
11
  class Contract < LedgerSync::Adaptors::Contract
12
12
  params do
13
- required(:external_id).maybe(:string)
13
+ required(:external_id).filled(:string)
14
14
  required(:ledger_id).value(:nil)
15
15
  required(:exchange_rate).filled(:float)
16
16
  required(:name).filled(:string)
@@ -8,7 +8,7 @@ module LedgerSync
8
8
  class Create < NetSuite::Operation::Create
9
9
  class Contract < LedgerSync::Adaptors::Contract
10
10
  params do
11
- required(:external_id).maybe(:string)
11
+ required(:external_id).filled(:string)
12
12
  required(:ledger_id).value(:nil)
13
13
  required(:email).maybe(:string)
14
14
  required(:name).filled(:string)
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module LedgerSync
4
+ module Adaptors
5
+ module NetSuite
6
+ module Department
7
+ class LedgerSerializer < NetSuite::LedgerSerializer
8
+ api_resource_type :department
9
+
10
+ attribute ledger_attribute: :name,
11
+ resource_attribute: :name
12
+
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module LedgerSync
4
+ module Adaptors
5
+ module NetSuite
6
+ module Department
7
+ module Operations
8
+ class Create < NetSuite::Operation::Create
9
+ class Contract < LedgerSync::Adaptors::Contract
10
+ params do
11
+ required(:external_id).filled(:string)
12
+ required(:ledger_id).value(:nil)
13
+ required(:name).filled(:string)
14
+ optional(:active).maybe(:bool?)
15
+ optional(:sub_department).maybe(:bool?)
16
+ optional(:fully_qualified_name).maybe(:string)
17
+ optional(:parent).maybe(:hash, Types::Reference)
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module LedgerSync
4
+ module Adaptors
5
+ module NetSuite
6
+ module Department
7
+ module Operations
8
+ class Delete < NetSuite::Operation::Delete
9
+ class Contract < LedgerSync::Adaptors::Contract
10
+ params do
11
+ required(:external_id).maybe(:string)
12
+ required(:ledger_id).filled(:string)
13
+ required(:name).maybe(:string)
14
+ optional(:active).maybe(:bool?)
15
+ optional(:sub_department).maybe(:bool?)
16
+ optional(:fully_qualified_name).maybe(:string)
17
+ optional(:parent).maybe(:hash, Types::Reference)
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end