ledger_sync 1.7.0 → 2.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (29) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/gem-workflow.yml +71 -0
  3. data/.rubocop.yml +1 -0
  4. data/Gemfile.lock +81 -99
  5. data/README.md +1 -0
  6. data/ledger_sync.gemspec +5 -4
  7. data/lib/ledger_sync.rb +3 -2
  8. data/lib/ledger_sync/ledgers/operation.rb +1 -1
  9. data/lib/ledger_sync/test/support.rb +9 -2
  10. data/lib/ledger_sync/test/support/qa/shared_examples.rb +13 -3
  11. data/lib/ledger_sync/test/support/test_ledger/customer/deserializer.rb +2 -0
  12. data/lib/ledger_sync/test/support/test_ledger/searcher.rb +1 -1
  13. data/lib/ledger_sync/util/dotenv_updator.rb +17 -15
  14. data/lib/ledger_sync/version.rb +6 -4
  15. metadata +41 -40
  16. data/.coveralls.yml +0 -1
  17. data/bin/qa +0 -3
  18. data/lib/ledger_sync/ledgers/netsuite_soap/client.rb +0 -88
  19. data/lib/ledger_sync/ledgers/netsuite_soap/config.rb +0 -7
  20. data/lib/ledger_sync/ledgers/netsuite_soap/customer/operations/create.rb +0 -66
  21. data/lib/ledger_sync/ledgers/netsuite_soap/customer/operations/find.rb +0 -49
  22. data/lib/ledger_sync/ledgers/netsuite_soap/operation.rb +0 -40
  23. data/lib/ledger_sync/ledgers/netsuite_soap/operation/create.rb +0 -29
  24. data/lib/ledger_sync/ledgers/netsuite_soap/operation/find.rb +0 -15
  25. data/lib/ledger_sync/ledgers/netsuite_soap/resource.rb +0 -10
  26. data/lib/ledger_sync/ledgers/netsuite_soap/resources/customer.rb +0 -29
  27. data/lib/ledger_sync/ledgers/netsuite_soap/resources/subsidiary.rb +0 -12
  28. data/lib/ledger_sync/ledgers/netsuite_soap/subsidiary/operations/create.rb +0 -42
  29. data/lib/ledger_sync/ledgers/netsuite_soap/subsidiary/operations/find.rb +0 -38
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b6c9d90718cf1237ee8b26dcdfe2c24cd0b3074f8932c1b2cc0f75f1c66b55b7
4
- data.tar.gz: 8fa65eefecfc2786f5f23628210e3f1dee2a8769a4bbdc7219b9ef20a578b1d7
3
+ metadata.gz: a508dbdc56b416d158b3e0e16ab48f41c412d31aa2c4f13117576ec9765fbacd
4
+ data.tar.gz: fe55e1cfbc4b805e0baa0687154631e732ec6cc1017c0a72c277a45d2cde7fe0
5
5
  SHA512:
6
- metadata.gz: f620d6e7cd123bfdf72c2d01cd82ab856cd67beafeb50188aa39a489223469064c4b0a16bde4a4f744a708f31b592872cb026980cd7e6c33b3041dc3e5d4dbfc
7
- data.tar.gz: 43ad05e848f1708fc0fddeaf5dbc585bdb7bcd42c1526ad58b068cff5677e03541fb1cdfc0d0600e08d5491abf07ece3db7ce65db6acadf08ecb4d73c4067cd2
6
+ metadata.gz: 7703a335bdeaae9f984a60461af9709832a454132af5b15a7732ecadf61a3e38a8d890cbcd145628d429acee71adc2c43a5c4a384cdbb19a385470e9a542d36f
7
+ data.tar.gz: 7f03b88e16c79ebc1fd2abb6b88e7e63c0af3563d31b6503c2cac1cdc189acdfc99de67641294678488ca5f0787d155d9156804b2587d72aec9c156ec2fcc4c1
@@ -0,0 +1,71 @@
1
+ name: Test and Deploy
2
+ on:
3
+ push:
4
+ pull_request:
5
+ release:
6
+ types: [created]
7
+ jobs:
8
+ rubocop:
9
+ strategy:
10
+ matrix:
11
+ ruby-version: [2.6.3, 2.6.6, 2.7.1]
12
+ runs-on: [ubuntu-latest]
13
+ steps:
14
+ - uses: actions/checkout@v2
15
+ with:
16
+ persist-credentials: false
17
+ fetch-depth: 0
18
+ - name: Ruby Setup and Bundle
19
+ uses: ruby/setup-ruby@v1
20
+ with:
21
+ ruby-version: ${{ matrix.ruby-version }}
22
+ bundler-cache: true
23
+ - run: bundle exec rubocop
24
+ rspec:
25
+ strategy:
26
+ matrix:
27
+ ruby-version: [2.6.3, 2.6.6, 2.7.1]
28
+ runs-on: [ubuntu-latest]
29
+ steps:
30
+ - uses: actions/checkout@v2
31
+ with:
32
+ persist-credentials: false
33
+ fetch-depth: 0
34
+ - name: Ruby Setup and Bundle
35
+ uses: ruby/setup-ruby@v1
36
+ with:
37
+ ruby-version: ${{ matrix.ruby-version }}
38
+ bundler-cache: true
39
+ - name: rspec and report to coveralls
40
+ run: bundle exec rspec --order rand
41
+ - name: Coveralls
42
+ uses: coverallsapp/github-action@master
43
+ with:
44
+ github-token: ${{ secrets.GITHUB_TOKEN }}
45
+ parallel: true
46
+ flag-name: run-${{ matrix.ruby-version }}
47
+ publish:
48
+ runs-on: ubuntu-latest
49
+ needs: ['rubocop', 'rspec']
50
+ if: github.event_name == 'release' && github.event.action == 'created'
51
+ steps:
52
+ - name: Checkout
53
+ uses: actions/checkout@v2
54
+ with:
55
+ persist-credentials: false
56
+ fetch-depth: 0
57
+ - name: Ruby Setup and Bundle
58
+ uses: ruby/setup-ruby@v1
59
+ with:
60
+ ruby-version: 2.7.1
61
+ bundler-cache: true
62
+ - name: Publish to RubyGems
63
+ run: |
64
+ mkdir -p $HOME/.gem
65
+ touch $HOME/.gem/credentials
66
+ chmod 0600 $HOME/.gem/credentials
67
+ printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
68
+ gem build *.gemspec
69
+ gem push *.gem
70
+ env:
71
+ GEM_HOST_API_KEY: "${{ secrets.RUBY_GEM_KEY }}"
data/.rubocop.yml CHANGED
@@ -3,6 +3,7 @@ inherit_from: .rubocop_todo.yml
3
3
  AllCops:
4
4
  Exclude:
5
5
  - "documentation/site/_plugins/**/*"
6
+ - "vendor/**/*"
6
7
  TargetRubyVersion: 2.5.8
7
8
  NewCops: enable
8
9
 
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ledger_sync (1.7.0)
4
+ ledger_sync (2.0.1)
5
5
  activemodel
6
6
  colorize
7
7
  dry-schema (~> 1.5.4)
@@ -10,19 +10,19 @@ PATH
10
10
  faraday-detailed_logger
11
11
  faraday_middleware
12
12
  fingerprintable (>= 1.2.1)
13
- netsuite (~> 0.8.6)
14
13
  nokogiri
15
- oauth2
14
+ openssl (~> 2.2.0)
16
15
  pd_ruby
16
+ rack (~> 2.2.3)
17
17
  resonad
18
18
  simply_serializable (>= 1.5.1)
19
19
 
20
20
  GEM
21
21
  remote: https://rubygems.org/
22
22
  specs:
23
- activemodel (6.0.3.4)
24
- activesupport (= 6.0.3.4)
25
- activesupport (6.0.3.4)
23
+ activemodel (6.0.3.6)
24
+ activesupport (= 6.0.3.6)
25
+ activesupport (6.0.3.6)
26
26
  concurrent-ruby (~> 1.0, >= 1.0.2)
27
27
  i18n (>= 0.7, < 2)
28
28
  minitest (~> 5.1)
@@ -30,45 +30,40 @@ GEM
30
30
  zeitwerk (~> 2.2, >= 2.2.2)
31
31
  addressable (2.7.0)
32
32
  public_suffix (>= 2.0.2, < 5.0)
33
- akami (1.3.1)
34
- gyoku (>= 0.4.0)
35
- nokogiri
36
- ast (2.4.1)
37
- awesome_print (1.8.0)
38
- builder (3.2.4)
33
+ ast (2.4.2)
34
+ awesome_print (1.9.2)
39
35
  bump (0.9.0)
40
36
  byebug (11.1.3)
41
37
  childprocess (4.0.0)
42
- climate_control (0.2.0)
38
+ climate_control (1.0.0)
43
39
  colorator (1.1.0)
44
40
  colorize (0.8.1)
45
- concurrent-ruby (1.1.7)
46
- coveralls (0.8.23)
47
- json (>= 1.8, < 3)
48
- simplecov (~> 0.16.1)
49
- term-ansicolor (~> 1.3)
50
- thor (>= 0.19.4, < 2.0)
51
- tins (~> 1.6)
52
- crack (0.4.4)
41
+ concurrent-ruby (1.1.8)
42
+ coveralls (0.7.2)
43
+ multi_json (~> 1.3)
44
+ rest-client (= 1.6.7)
45
+ simplecov (>= 0.7)
46
+ term-ansicolor (= 1.2.2)
47
+ thor (= 0.18.1)
48
+ crack (0.4.5)
49
+ rexml
53
50
  diff-lcs (1.4.4)
54
- docile (1.3.2)
51
+ docile (1.3.5)
55
52
  dotenv (2.7.6)
56
- dry-configurable (0.11.6)
53
+ dry-configurable (0.12.1)
57
54
  concurrent-ruby (~> 1.0)
58
- dry-core (~> 0.4, >= 0.4.7)
59
- dry-equalizer (~> 0.2)
55
+ dry-core (~> 0.5, >= 0.5.0)
60
56
  dry-container (0.7.2)
61
57
  concurrent-ruby (~> 1.0)
62
58
  dry-configurable (~> 0.1, >= 0.1.3)
63
- dry-core (0.5.0)
59
+ dry-core (0.6.0)
64
60
  concurrent-ruby (~> 1.0)
65
61
  dry-equalizer (0.3.0)
66
62
  dry-inflector (0.2.0)
67
63
  dry-initializer (3.0.4)
68
- dry-logic (1.0.8)
64
+ dry-logic (1.2.0)
69
65
  concurrent-ruby (~> 1.0)
70
- dry-core (~> 0.2)
71
- dry-equalizer (~> 0.2)
66
+ dry-core (~> 0.5, >= 0.5)
72
67
  dry-schema (1.5.6)
73
68
  concurrent-ruby (~> 1.0)
74
69
  dry-configurable (~> 0.8, >= 0.8.3)
@@ -77,11 +72,10 @@ GEM
77
72
  dry-initializer (~> 3.0)
78
73
  dry-logic (~> 1.0)
79
74
  dry-types (~> 1.4)
80
- dry-types (1.4.0)
75
+ dry-types (1.5.1)
81
76
  concurrent-ruby (~> 1.0)
82
77
  dry-container (~> 0.3)
83
- dry-core (~> 0.4, >= 0.4.4)
84
- dry-equalizer (~> 0.3)
78
+ dry-core (~> 0.5, >= 0.5)
85
79
  dry-inflector (~> 0.1, >= 0.1.2)
86
80
  dry-logic (~> 1.0, >= 1.0.2)
87
81
  dry-validation (1.5.6)
@@ -97,24 +91,29 @@ GEM
97
91
  eventmachine (1.2.7)
98
92
  factory_bot (6.1.0)
99
93
  activesupport (>= 5.0.0)
100
- faraday (1.1.0)
94
+ faraday (1.4.2)
95
+ faraday-em_http (~> 1.0)
96
+ faraday-em_synchrony (~> 1.0)
97
+ faraday-excon (~> 1.1)
98
+ faraday-net_http (~> 1.0)
99
+ faraday-net_http_persistent (~> 1.1)
101
100
  multipart-post (>= 1.2, < 3)
102
- ruby2_keywords
101
+ ruby2_keywords (>= 0.0.4)
103
102
  faraday-detailed_logger (2.3.0)
104
103
  faraday (>= 0.8, < 2)
104
+ faraday-em_http (1.0.0)
105
+ faraday-em_synchrony (1.0.0)
106
+ faraday-excon (1.1.0)
107
+ faraday-net_http (1.0.1)
108
+ faraday-net_http_persistent (1.1.0)
105
109
  faraday_middleware (1.0.0)
106
110
  faraday (~> 1.0)
107
- ffi (1.13.1)
111
+ ffi (1.15.0)
108
112
  fingerprintable (1.2.1)
109
113
  colorize
110
114
  forwardable-extended (2.6.0)
111
- gyoku (1.3.1)
112
- builder (>= 2.1.2)
113
115
  hashdiff (1.0.1)
114
116
  http_parser.rb (0.6.0)
115
- httpi (2.4.5)
116
- rack
117
- socksify
118
117
  i18n (0.9.5)
119
118
  concurrent-ruby (~> 1.0)
120
119
  iniparse (1.5.0)
@@ -140,64 +139,60 @@ GEM
140
139
  sass (~> 3.4)
141
140
  jekyll-watch (2.2.1)
142
141
  listen (~> 3.0)
143
- json (2.3.1)
144
- jwt (2.2.2)
145
142
  kramdown (1.17.0)
146
143
  liquid (4.0.3)
147
- listen (3.2.1)
144
+ listen (3.5.1)
148
145
  rb-fsevent (~> 0.10, >= 0.10.3)
149
146
  rb-inotify (~> 0.9, >= 0.9.10)
150
147
  mercenary (0.3.6)
151
- mini_portile2 (2.4.0)
152
- minitest (5.14.2)
148
+ mime-types (3.3.1)
149
+ mime-types-data (~> 3.2015)
150
+ mime-types-data (3.2021.0225)
151
+ mini_portile2 (2.5.3)
152
+ minitest (5.14.4)
153
153
  multi_json (1.15.0)
154
- multi_xml (0.6.0)
155
154
  multipart-post (2.1.1)
156
- netsuite (0.8.6)
157
- savon (>= 2.3.0, <= 2.11.1)
158
- nokogiri (1.10.10)
159
- mini_portile2 (~> 2.4.0)
160
- nori (2.6.0)
161
- oauth2 (1.4.4)
162
- faraday (>= 0.8, < 2.0)
163
- jwt (>= 1.0, < 3.0)
164
- multi_json (~> 1.3)
165
- multi_xml (~> 0.5)
166
- rack (>= 1.2, < 3)
155
+ nokogiri (1.11.7)
156
+ mini_portile2 (~> 2.5.0)
157
+ racc (~> 1.4)
158
+ openssl (2.2.0)
167
159
  overcommit (0.57.0)
168
160
  childprocess (>= 0.6.3, < 5)
169
161
  iniparse (~> 1.4)
170
- parallel (1.20.0)
171
- parser (2.7.2.0)
162
+ parallel (1.20.1)
163
+ parser (3.0.1.0)
172
164
  ast (~> 2.4.1)
173
165
  pathutil (0.16.2)
174
166
  forwardable-extended (~> 2.6)
175
167
  pd_ruby (0.2.3)
176
168
  colorize
177
169
  public_suffix (4.0.6)
170
+ racc (1.5.2)
178
171
  rack (2.2.3)
179
172
  rainbow (3.0.0)
180
- rake (13.0.1)
173
+ rake (13.0.3)
181
174
  rb-fsevent (0.10.4)
182
175
  rb-inotify (0.10.1)
183
176
  ffi (~> 1.0)
184
- regexp_parser (1.8.2)
177
+ regexp_parser (2.1.1)
185
178
  resonad (1.4.0)
186
- rexml (3.2.4)
187
- rouge (3.24.0)
179
+ rest-client (1.6.7)
180
+ mime-types (>= 1.16)
181
+ rexml (3.2.5)
182
+ rouge (3.26.0)
188
183
  rspec (3.10.0)
189
184
  rspec-core (~> 3.10.0)
190
185
  rspec-expectations (~> 3.10.0)
191
186
  rspec-mocks (~> 3.10.0)
192
- rspec-core (3.10.0)
187
+ rspec-core (3.10.1)
193
188
  rspec-support (~> 3.10.0)
194
- rspec-expectations (3.10.0)
189
+ rspec-expectations (3.10.1)
195
190
  diff-lcs (>= 1.2.0, < 2.0)
196
191
  rspec-support (~> 3.10.0)
197
- rspec-mocks (3.10.0)
192
+ rspec-mocks (3.10.2)
198
193
  diff-lcs (>= 1.2.0, < 2.0)
199
194
  rspec-support (~> 3.10.0)
200
- rspec-support (3.10.0)
195
+ rspec-support (3.10.2)
201
196
  rubocop (1.0.0)
202
197
  parallel (~> 1.10)
203
198
  parser (>= 2.7.1.5)
@@ -207,52 +202,38 @@ GEM
207
202
  rubocop-ast (>= 0.6.0)
208
203
  ruby-progressbar (~> 1.7)
209
204
  unicode-display_width (>= 1.4.0, < 2.0)
210
- rubocop-ast (1.1.1)
205
+ rubocop-ast (1.4.1)
211
206
  parser (>= 2.7.1.5)
212
- ruby-progressbar (1.10.1)
213
- ruby2_keywords (0.0.2)
207
+ ruby-progressbar (1.11.0)
208
+ ruby2_keywords (0.0.4)
214
209
  safe_yaml (1.0.5)
215
210
  sass (3.7.4)
216
211
  sass-listen (~> 4.0.0)
217
212
  sass-listen (4.0.0)
218
213
  rb-fsevent (~> 0.9, >= 0.9.4)
219
214
  rb-inotify (~> 0.9, >= 0.9.7)
220
- savon (2.11.1)
221
- akami (~> 1.2)
222
- builder (>= 2.1.2)
223
- gyoku (~> 1.2)
224
- httpi (~> 2.3)
225
- nokogiri (>= 1.4.0)
226
- nori (~> 2.4)
227
- wasabi (~> 3.4)
228
- simplecov (0.16.1)
215
+ simplecov (0.21.2)
229
216
  docile (~> 1.1)
230
- json (>= 1.8, < 3)
231
- simplecov-html (~> 0.10.0)
232
- simplecov-html (0.10.2)
217
+ simplecov-html (~> 0.11)
218
+ simplecov_json_formatter (~> 0.1)
219
+ simplecov-html (0.12.3)
220
+ simplecov-lcov (0.8.0)
221
+ simplecov_json_formatter (0.1.2)
233
222
  simply_serializable (1.5.1)
234
223
  fingerprintable (>= 1.2.1)
235
- socksify (1.7.1)
236
- sync (0.5.0)
237
- term-ansicolor (1.7.1)
238
- tins (~> 1.0)
239
- thor (1.0.1)
224
+ term-ansicolor (1.2.2)
225
+ tins (~> 0.8)
226
+ thor (0.18.1)
240
227
  thread_safe (0.3.6)
241
- tins (1.26.0)
242
- sync
243
- tzinfo (1.2.8)
228
+ tins (0.13.2)
229
+ tzinfo (1.2.9)
244
230
  thread_safe (~> 0.1)
245
231
  unicode-display_width (1.7.0)
246
- vcr (6.0.0)
247
- wasabi (3.6.1)
248
- addressable
249
- httpi (~> 2.0)
250
- nokogiri (>= 1.4.2)
251
- webmock (3.9.5)
232
+ webmock (3.12.2)
252
233
  addressable (>= 2.3.6)
253
234
  crack (>= 0.3.2)
254
235
  hashdiff (>= 0.4.0, < 2.0.0)
255
- zeitwerk (2.4.1)
236
+ zeitwerk (2.4.2)
256
237
 
257
238
  PLATFORMS
258
239
  ruby
@@ -263,7 +244,7 @@ DEPENDENCIES
263
244
  bundler (~> 2.1)
264
245
  byebug
265
246
  climate_control
266
- coveralls (~> 0.8.23)
247
+ coveralls
267
248
  dotenv
268
249
  factory_bot (~> 6.1.0)
269
250
  jekyll (~> 3.8.4)
@@ -275,7 +256,8 @@ DEPENDENCIES
275
256
  rake (~> 13.0)
276
257
  rspec (~> 3.2)
277
258
  rubocop (= 1.0.0)
278
- vcr
259
+ simplecov
260
+ simplecov-lcov
279
261
  webmock
280
262
 
281
263
  BUNDLED WITH
data/README.md CHANGED
@@ -24,3 +24,4 @@ A big thank you to our maintainers:
24
24
  - [@jozefvaclavik](https://github.com/jozefvaclavik)
25
25
  - [@SeanBolt](https://github.com/SeanBolt)
26
26
  - And the whole [Modern Treasury](https://www.moderntreasury.com) team
27
+
data/ledger_sync.gemspec CHANGED
@@ -35,7 +35,7 @@ Gem::Specification.new do |spec|
35
35
  spec.add_development_dependency('bundler', '~> 2.1')
36
36
  spec.add_development_dependency('byebug', '>= 0')
37
37
  spec.add_development_dependency('climate_control')
38
- spec.add_development_dependency('coveralls', '~> 0.8.23')
38
+ spec.add_development_dependency('coveralls')
39
39
  spec.add_development_dependency('dotenv')
40
40
  spec.add_development_dependency('factory_bot', '~> 6.1.0')
41
41
  spec.add_development_dependency('jekyll', '~> 3.8.4')
@@ -46,7 +46,8 @@ Gem::Specification.new do |spec|
46
46
  spec.add_development_dependency('rake', '~> 13.0')
47
47
  spec.add_development_dependency('rspec', '~> 3.2')
48
48
  spec.add_development_dependency('rubocop', '1.0.0')
49
- spec.add_development_dependency('vcr', '>= 0')
49
+ spec.add_development_dependency('simplecov')
50
+ spec.add_development_dependency('simplecov-lcov')
50
51
  spec.add_development_dependency('webmock', '>= 0')
51
52
  spec.add_runtime_dependency('activemodel', '>= 0')
52
53
  spec.add_runtime_dependency('colorize', '>= 0')
@@ -56,10 +57,10 @@ Gem::Specification.new do |spec|
56
57
  spec.add_runtime_dependency('faraday-detailed_logger', '>= 0')
57
58
  spec.add_runtime_dependency('faraday_middleware', '>= 0')
58
59
  spec.add_runtime_dependency('fingerprintable', '>= 1.2.1')
59
- spec.add_runtime_dependency('netsuite', '~> 0.8.6')
60
60
  spec.add_runtime_dependency('nokogiri', '>= 0')
61
- spec.add_runtime_dependency('oauth2', '>= 0')
61
+ spec.add_runtime_dependency('openssl', '~> 2.2.0')
62
62
  spec.add_runtime_dependency('pd_ruby', '>= 0')
63
+ spec.add_runtime_dependency('rack', '~> 2.2.3')
63
64
  spec.add_runtime_dependency('resonad', '>= 0')
64
65
  spec.add_runtime_dependency('simply_serializable', '>= 1.5.1')
65
66
  end
data/lib/ledger_sync.rb CHANGED
@@ -10,8 +10,9 @@ require 'colorize'
10
10
  require 'fingerprintable'
11
11
  require 'simply_serializable'
12
12
  require 'active_model'
13
- require 'netsuite'
14
- require 'oauth2'
13
+ require 'rack'
14
+ require 'openssl'
15
+ require 'faraday'
15
16
  require 'tempfile'
16
17
  require 'pd_ruby'
17
18
 
@@ -16,7 +16,7 @@ module LedgerSync
16
16
  end
17
17
 
18
18
  def operation_method
19
- @operation_method ||= name.split('::').last.snakecase.to_sym
19
+ @operation_method ||= name.split('::').last.underscore.to_sym
20
20
  end
21
21
 
22
22
  def operations_module
@@ -39,17 +39,24 @@ module LedgerSync
39
39
 
40
40
  require 'webmock/rspec'
41
41
  require 'simplecov'
42
+ require 'simplecov-lcov'
42
43
  require 'coveralls'
44
+
45
+ SimpleCov::Formatter::LcovFormatter.config do |c|
46
+ c.report_with_single_file = true
47
+ c.single_report_path = 'coverage/lcov.info'
48
+ end
43
49
  Coveralls.wear!('rails')
44
50
 
45
51
  SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new(
46
52
  [
47
53
  Coveralls::SimpleCov::Formatter,
48
- SimpleCov::Formatter::HTMLFormatter
54
+ SimpleCov::Formatter::HTMLFormatter,
55
+ SimpleCov::Formatter::LcovFormatter
49
56
  ]
50
57
  )
51
58
 
52
- SimpleCov.start do
59
+ SimpleCov.start('rails') do
53
60
  add_filter 'lib/ledger_sync/util/debug.rb'
54
61
  end
55
62
 
@@ -7,7 +7,10 @@ RSpec.shared_examples 'a create' do |delete: true|
7
7
  resource: resource
8
8
  )
9
9
 
10
- byebug if result.failure? # rubocop:disable Lint/Debugger
10
+ if result.failure?
11
+ pd result.response.response.body
12
+ byebug if ENV['DEBUG'] # rubocop:disable Lint/Debugger
13
+ end
11
14
 
12
15
  expect(result).to be_success
13
16
 
@@ -52,7 +55,11 @@ RSpec.shared_examples 'a find' do |delete: true|
52
55
  resource: resource
53
56
  )
54
57
 
55
- byebug if result.failure? # rubocop:disable Lint/Debugger
58
+ if result.failure?
59
+ pd result.response.response.body
60
+ byebug if ENV['DEBUG'] # rubocop:disable Lint/Debugger
61
+ end
62
+
56
63
  result.raise_if_error
57
64
  expect(result).to be_success
58
65
  resource = result.resource
@@ -146,7 +153,10 @@ RSpec.shared_examples 'a searcher' do
146
153
  it do
147
154
  result = client.searcher_for(resource_type: resource.class.resource_module_str).search
148
155
 
149
- byebug if result.failure? # rubocop:disable Lint/Debugger
156
+ if result.failure?
157
+ pd result.response.response.body
158
+ byebug if ENV['DEBUG'] # rubocop:disable Lint/Debugger
159
+ end
150
160
 
151
161
  expect(result).to be_success
152
162
  end
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative '../subsidiary/deserializer'
4
+
3
5
  module LedgerSync
4
6
  module Ledgers
5
7
  module TestLedger
@@ -36,7 +36,7 @@ module LedgerSync
36
36
 
37
37
  def search
38
38
  super
39
- rescue OAuth2::Error => e
39
+ rescue => e # rubocop:disable Style/RescueStandardError
40
40
  @response = e # TODO: Better catch/raise errors as LedgerSync::Error
41
41
  failure
42
42
  end
@@ -9,27 +9,29 @@ module LedgerSync
9
9
  @file_path = args.fetch(:file_path, File.join(Dir.pwd, '.env.local'))
10
10
  end
11
11
 
12
- def update(args = {})
12
+ def update(args = {}) # rubocop:disable Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity
13
13
  client = args.fetch(:client)
14
14
  prefix = args.fetch(:prefix, "#{client.class.config.root_key.upcase}_")
15
15
 
16
16
  to_save = client.ledger_attributes_to_save.dup.stringify_keys
17
17
 
18
18
  Tempfile.open(".#{File.basename(file_path)}", File.dirname(file_path)) do |tempfile|
19
- File.open(file_path).each do |line|
20
- env_key = line.split('=').first
21
- client_method = env_key.split(prefix).last.downcase
22
-
23
- if line =~ /\A#{prefix}/ && to_save.key?(client_method)
24
- env_value = ENV[env_key]
25
- new_value = to_save.delete(client_method)
26
- tempfile.puts "#{env_key}=#{new_value}"
27
- next if env_value == new_value.to_s
28
-
29
- ENV[env_key] = new_value.to_s
30
- tempfile.puts "# #{env_key}=#{env_value} # Updated on #{Time.now}"
31
- else
32
- tempfile.puts line
19
+ if File.file?(file_path)
20
+ File.open(file_path).each do |line|
21
+ env_key = line.split('=').first
22
+ client_method = env_key.split(prefix).last.downcase
23
+
24
+ if line =~ /\A#{prefix}/ && to_save.key?(client_method)
25
+ env_value = ENV[env_key]
26
+ new_value = to_save.delete(client_method)
27
+ tempfile.puts "#{env_key}=#{new_value}"
28
+ next if env_value == new_value.to_s
29
+
30
+ ENV[env_key] = new_value.to_s
31
+ tempfile.puts "# #{env_key}=#{env_value} # Updated on #{Time.now}"
32
+ else
33
+ tempfile.puts line
34
+ end
33
35
  end
34
36
  end
35
37
 
@@ -1,13 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # :nocov:
3
4
  module LedgerSync
4
- VERSION = '1.7.0'
5
+ VERSION = '2.0.1'
5
6
 
6
7
  def self.version
7
- if !ENV['TRAVIS'] || ENV.fetch('TRAVIS_TAG', '') != ''
8
- VERSION
8
+ if ENV['PRE_RELEASE']
9
+ "#{VERSION}.pre.#{ENV['GITHUB_RUN_NUMBER']}"
9
10
  else
10
- "#{VERSION}.pre.#{ENV['TRAVIS_BUILD_NUMBER']}"
11
+ VERSION
11
12
  end
12
13
  end
13
14
  end
15
+ # :nocov:
metadata CHANGED
@@ -1,11 +1,11 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ledger_sync
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.0
4
+ version: 2.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Jackson
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
11
  date: 2019-05-21 00:00:00.000000000 Z
@@ -84,16 +84,16 @@ dependencies:
84
84
  name: coveralls
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "~>"
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: 0.8.23
89
+ version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - "~>"
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
- version: 0.8.23
96
+ version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: dotenv
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -235,7 +235,21 @@ dependencies:
235
235
  - !ruby/object:Gem::Version
236
236
  version: 1.0.0
237
237
  - !ruby/object:Gem::Dependency
238
- name: vcr
238
+ name: simplecov
239
+ requirement: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - ">="
242
+ - !ruby/object:Gem::Version
243
+ version: '0'
244
+ type: :development
245
+ prerelease: false
246
+ version_requirements: !ruby/object:Gem::Requirement
247
+ requirements:
248
+ - - ">="
249
+ - !ruby/object:Gem::Version
250
+ version: '0'
251
+ - !ruby/object:Gem::Dependency
252
+ name: simplecov-lcov
239
253
  requirement: !ruby/object:Gem::Requirement
240
254
  requirements:
241
255
  - - ">="
@@ -375,35 +389,35 @@ dependencies:
375
389
  - !ruby/object:Gem::Version
376
390
  version: 1.2.1
377
391
  - !ruby/object:Gem::Dependency
378
- name: netsuite
392
+ name: nokogiri
379
393
  requirement: !ruby/object:Gem::Requirement
380
394
  requirements:
381
- - - "~>"
395
+ - - ">="
382
396
  - !ruby/object:Gem::Version
383
- version: 0.8.6
397
+ version: '0'
384
398
  type: :runtime
385
399
  prerelease: false
386
400
  version_requirements: !ruby/object:Gem::Requirement
387
401
  requirements:
388
- - - "~>"
402
+ - - ">="
389
403
  - !ruby/object:Gem::Version
390
- version: 0.8.6
404
+ version: '0'
391
405
  - !ruby/object:Gem::Dependency
392
- name: nokogiri
406
+ name: openssl
393
407
  requirement: !ruby/object:Gem::Requirement
394
408
  requirements:
395
- - - ">="
409
+ - - "~>"
396
410
  - !ruby/object:Gem::Version
397
- version: '0'
411
+ version: 2.2.0
398
412
  type: :runtime
399
413
  prerelease: false
400
414
  version_requirements: !ruby/object:Gem::Requirement
401
415
  requirements:
402
- - - ">="
416
+ - - "~>"
403
417
  - !ruby/object:Gem::Version
404
- version: '0'
418
+ version: 2.2.0
405
419
  - !ruby/object:Gem::Dependency
406
- name: oauth2
420
+ name: pd_ruby
407
421
  requirement: !ruby/object:Gem::Requirement
408
422
  requirements:
409
423
  - - ">="
@@ -417,19 +431,19 @@ dependencies:
417
431
  - !ruby/object:Gem::Version
418
432
  version: '0'
419
433
  - !ruby/object:Gem::Dependency
420
- name: pd_ruby
434
+ name: rack
421
435
  requirement: !ruby/object:Gem::Requirement
422
436
  requirements:
423
- - - ">="
437
+ - - "~>"
424
438
  - !ruby/object:Gem::Version
425
- version: '0'
439
+ version: 2.2.3
426
440
  type: :runtime
427
441
  prerelease: false
428
442
  version_requirements: !ruby/object:Gem::Requirement
429
443
  requirements:
430
- - - ">="
444
+ - - "~>"
431
445
  - !ruby/object:Gem::Version
432
- version: '0'
446
+ version: 2.2.3
433
447
  - !ruby/object:Gem::Dependency
434
448
  name: resonad
435
449
  requirement: !ruby/object:Gem::Requirement
@@ -466,10 +480,10 @@ executables: []
466
480
  extensions: []
467
481
  extra_rdoc_files: []
468
482
  files:
469
- - ".coveralls.yml"
470
483
  - ".env.template"
471
484
  - ".github/ISSUE_TEMPLATE/bug_report.md"
472
485
  - ".github/ISSUE_TEMPLATE/feature_request.md"
486
+ - ".github/workflows/gem-workflow.yml"
473
487
  - ".gitignore"
474
488
  - ".overcommit.yml"
475
489
  - ".rubocop.yml"
@@ -483,7 +497,6 @@ files:
483
497
  - README.md
484
498
  - Rakefile
485
499
  - bin/console
486
- - bin/qa
487
500
  - bin/setup
488
501
  - docker-compose.yml
489
502
  - docs/.gitignore
@@ -712,18 +725,6 @@ files:
712
725
  - lib/ledger_sync/ledgers/mixins/infer_validation_contract_mixin.rb
713
726
  - lib/ledger_sync/ledgers/mixins/offset_and_limit_pagination_searcher_mixin.rb
714
727
  - lib/ledger_sync/ledgers/mixins/serialization_mixin.rb
715
- - lib/ledger_sync/ledgers/netsuite_soap/client.rb
716
- - lib/ledger_sync/ledgers/netsuite_soap/config.rb
717
- - lib/ledger_sync/ledgers/netsuite_soap/customer/operations/create.rb
718
- - lib/ledger_sync/ledgers/netsuite_soap/customer/operations/find.rb
719
- - lib/ledger_sync/ledgers/netsuite_soap/operation.rb
720
- - lib/ledger_sync/ledgers/netsuite_soap/operation/create.rb
721
- - lib/ledger_sync/ledgers/netsuite_soap/operation/find.rb
722
- - lib/ledger_sync/ledgers/netsuite_soap/resource.rb
723
- - lib/ledger_sync/ledgers/netsuite_soap/resources/customer.rb
724
- - lib/ledger_sync/ledgers/netsuite_soap/resources/subsidiary.rb
725
- - lib/ledger_sync/ledgers/netsuite_soap/subsidiary/operations/create.rb
726
- - lib/ledger_sync/ledgers/netsuite_soap/subsidiary/operations/find.rb
727
728
  - lib/ledger_sync/ledgers/operation.rb
728
729
  - lib/ledger_sync/ledgers/request.rb
729
730
  - lib/ledger_sync/ledgers/response.rb
@@ -832,7 +833,7 @@ homepage: https://github.com/LedgerSync/ledger_sync
832
833
  licenses:
833
834
  - MIT
834
835
  metadata: {}
835
- post_install_message:
836
+ post_install_message:
836
837
  rdoc_options: []
837
838
  require_paths:
838
839
  - lib
@@ -847,8 +848,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
847
848
  - !ruby/object:Gem::Version
848
849
  version: '0'
849
850
  requirements: []
850
- rubygems_version: 3.0.3
851
- signing_key:
851
+ rubygems_version: 3.1.6
852
+ signing_key:
852
853
  specification_version: 4
853
854
  summary: Sync common objects to accounting software.
854
855
  test_files: []
data/.coveralls.yml DELETED
@@ -1 +0,0 @@
1
- service_name: travis-ci
data/bin/qa DELETED
@@ -1,3 +0,0 @@
1
- #!/bin/bash
2
-
3
- bundle exec rspec qa -I ./qa --require qa_helper.rb $@
@@ -1,88 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'oauth2'
4
-
5
- module LedgerSync
6
- module Ledgers
7
- module NetSuiteSOAP
8
- class Client
9
- include Ledgers::Client::Mixin
10
-
11
- DEFAULT_API_VERSION = '2016_2'
12
-
13
- attr_reader :account_id,
14
- :api_version,
15
- :consumer_key,
16
- :consumer_secret,
17
- :token_id,
18
- :token_secret
19
-
20
- def initialize(args = {})
21
- @account_id = args.fetch(:account_id)
22
- @api_version = args.fetch(:api_version, DEFAULT_API_VERSION)
23
- @consumer_key = args.fetch(:consumer_key)
24
- @consumer_secret = args.fetch(:consumer_secret)
25
- @token_id = args.fetch(:token_id)
26
- @token_secret = args.fetch(:token_secret)
27
- end
28
-
29
- #
30
- # Converts an account_id for use by the NetSuite gem
31
- #
32
- # @return [String] Converted account_id
33
- #
34
- def account_id_for_gem
35
- account_id.downcase.split('-sb').join('_SB')
36
- end
37
-
38
- #
39
- # Converts an account_id for use in the API URL
40
- #
41
- # @return [String] API URL compliant account_id
42
- #
43
- def account_id_for_url
44
- account_id.downcase.split('_SB').join('-sb')
45
- end
46
-
47
- def setup
48
- setup_account_id_for_gem = account_id_for_gem
49
- setup_account_id_for_url = account_id_for_url
50
- setup_api_version = api_version
51
- setup_consumer_key = consumer_key
52
- setup_consumer_secret = consumer_secret
53
- setup_token_id = token_id
54
- setup_token_secret = token_secret
55
-
56
- ::NetSuite.configure do
57
- reset!
58
-
59
- account setup_account_id_for_gem
60
- consumer_key setup_consumer_key
61
- consumer_secret setup_consumer_secret
62
- token_id setup_token_id
63
- token_secret setup_token_secret
64
- api_version setup_api_version
65
- wsdl_domain "#{setup_account_id_for_url}.suitetalk.api.netsuite.com"
66
- end
67
- end
68
-
69
- def teardown
70
- ::NetSuite.configure do
71
- reset!
72
- end
73
- end
74
-
75
- def wrap_perform
76
- setup
77
- yield
78
- ensure
79
- teardown
80
- end
81
-
82
- def self.ledger_attributes_to_save
83
- []
84
- end
85
- end
86
- end
87
- end
88
- end
@@ -1,7 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative 'client'
4
-
5
- LedgerSync.register_ledger(:netsuite_soap, base_module: LedgerSync::Ledgers::NetSuiteSOAP) do |config|
6
- config.name = 'NetSuite SOAP'
7
- end
@@ -1,66 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module LedgerSync
4
- module Ledgers
5
- module NetSuiteSOAP
6
- class Customer
7
- module Operations
8
- class Create < NetSuiteSOAP::Operation::Create
9
- class Contract < LedgerSync::Ledgers::Contract
10
- params do
11
- required(:external_id).maybe(:string)
12
- required(:ledger_id).value(:nil)
13
- required(:email).maybe(:string)
14
- required(:name).filled(:string)
15
- required(:phone_number).maybe(:string)
16
- required(:subsidiary).hash(Types::Reference)
17
- end
18
- end
19
-
20
- private
21
-
22
- def operate
23
- netsuite_subsidiary = ::NetSuite::Records::Subsidiary.get(
24
- internal_id: resource.subsidiary.ledger_id
25
- )
26
-
27
- unless netsuite_subsidiary
28
- return failure(
29
- error: Error::OperationError.new(
30
- message: "Subsidiary with ID '#{resource.subsidiary.ledger_id}' does not exist.",
31
- operation: self
32
- )
33
- )
34
- end
35
-
36
- netsuite_resource = ::NetSuite::Records::Customer.new(
37
- company_name: resource.name,
38
- email: resource.email,
39
- external_id: resource.external_id,
40
- entity_id: resource.external_id,
41
- first_name: resource.first_name,
42
- last_name: resource.last_name,
43
- phone: resource.phone_number,
44
- subsidiary: netsuite_subsidiary
45
- )
46
-
47
- return netsuite_failure(netsuite_resource: netsuite_resource) unless netsuite_resource.add
48
-
49
- resource.email = netsuite_resource.email
50
- resource.external_id = netsuite_resource.external_id
51
- resource.name = "#{netsuite_resource.first_name} #{netsuite_resource.last_name}"
52
- resource.phone_number = netsuite_resource.phone
53
-
54
- resource.ledger_id = netsuite_resource.internal_id
55
-
56
- success(
57
- resource: resource,
58
- response: netsuite_resource
59
- )
60
- end
61
- end
62
- end
63
- end
64
- end
65
- end
66
- end
@@ -1,49 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module LedgerSync
4
- module Ledgers
5
- module NetSuiteSOAP
6
- class Customer
7
- module Operations
8
- class Find < NetSuiteSOAP::Operation::Find
9
- class Contract < LedgerSync::Ledgers::Contract
10
- params do
11
- optional(:external_id).maybe(:string)
12
- required(:ledger_id).filled(:string)
13
- optional(:email).maybe(:string)
14
- optional(:name).maybe(:string)
15
- optional(:phone_number).maybe(:string)
16
- required(:subsidiary).maybe(:hash, Types::Reference)
17
- end
18
- end
19
-
20
- private
21
-
22
- def operate
23
- customer = ::NetSuite::Records::Customer.get(
24
- internal_id: resource.ledger_id
25
- )
26
-
27
- resource.email = customer.email
28
- resource.external_id = customer.external_id
29
- resource.external_id = customer.internal_id
30
- resource.name = if customer.is_person
31
- "#{customer.first_name} #{customer.last_name}"
32
- else
33
- customer.company_name
34
- end
35
- resource.phone_number = customer.phone
36
-
37
- resource.ledger_id = customer.internal_id
38
-
39
- success(
40
- resource: resource,
41
- response: customer
42
- )
43
- end
44
- end
45
- end
46
- end
47
- end
48
- end
49
- end
@@ -1,40 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module LedgerSync
4
- module Ledgers
5
- module NetSuiteSOAP
6
- class Operation
7
- module Mixin
8
- def self.included(base)
9
- base.include Ledgers::Operation::Mixin
10
- base.include InstanceMethods
11
- end
12
-
13
- module InstanceMethods
14
- def netsuite_resource_class
15
- @netsuite_resource_class ||= serializer.class::NETSUITE_RESOURCE_CLASS
16
- end
17
-
18
- def netsuite_error(netsuite_resource:)
19
- Error::OperationError.new(
20
- message: netsuite_resource.errors.first.message,
21
- operation: self,
22
- response: netsuite_resource
23
- )
24
- end
25
-
26
- def netsuite_failure(netsuite_resource:)
27
- failure(netsuite_error(netsuite_resource: netsuite_resource))
28
- end
29
-
30
- def perform
31
- client.wrap_perform do
32
- super
33
- end
34
- end
35
- end
36
- end
37
- end
38
- end
39
- end
40
- end
@@ -1,29 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative '../operation'
4
-
5
- module LedgerSync
6
- module Ledgers
7
- module NetSuiteSOAP
8
- class Operation
9
- class Create
10
- include NetSuiteSOAP::Operation::Mixin
11
-
12
- private
13
-
14
- def operate
15
- response = client.post(
16
- resource: netsuite_online_resource_type,
17
- payload: serializer.serialize
18
- )
19
-
20
- success(
21
- resource: serializer.deserialize(hash: response),
22
- response: response
23
- )
24
- end
25
- end
26
- end
27
- end
28
- end
29
- end
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative '../operation'
4
-
5
- module LedgerSync
6
- module Ledgers
7
- module NetSuiteSOAP
8
- class Operation
9
- class Find
10
- include NetSuiteSOAP::Operation::Mixin
11
- end
12
- end
13
- end
14
- end
15
- end
@@ -1,10 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module LedgerSync
4
- module Ledgers
5
- module NetSuiteSOAP
6
- class Resource < LedgerSync::Resource
7
- end
8
- end
9
- end
10
- end
@@ -1,29 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative 'subsidiary'
4
-
5
- module LedgerSync
6
- module Ledgers
7
- module NetSuiteSOAP
8
- class Customer < NetSuiteSOAP::Resource
9
- attribute :email, type: LedgerSync::Type::String
10
- attribute :name, type: LedgerSync::Type::String
11
- attribute :phone_number, type: LedgerSync::Type::String
12
-
13
- references_one :subsidiary, to: Subsidiary
14
-
15
- def first_name
16
- return if name.nil?
17
-
18
- name.split(' ').first
19
- end
20
-
21
- def last_name
22
- return if name.nil?
23
-
24
- name.split(' ')[1..-1]
25
- end
26
- end
27
- end
28
- end
29
- end
@@ -1,12 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module LedgerSync
4
- module Ledgers
5
- module NetSuiteSOAP
6
- class Subsidiary < NetSuiteSOAP::Resource
7
- attribute :name, type: LedgerSync::Type::String
8
- attribute :state, type: LedgerSync::Type::String
9
- end
10
- end
11
- end
12
- end
@@ -1,42 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module LedgerSync
4
- module Ledgers
5
- module NetSuiteSOAP
6
- class Subsidiary
7
- module Operations
8
- class Create < NetSuiteSOAP::Operation::Create
9
- class Contract < LedgerSync::Ledgers::Contract
10
- params do
11
- required(:external_id).filled(:string)
12
- required(:ledger_id).value(:nil)
13
- required(:name).filled(:string)
14
- required(:state).filled(:string)
15
- end
16
- end
17
-
18
- private
19
-
20
- def operate
21
- netsuite_resource = ::NetSuite::Records::Subsidiary.new(
22
- external_id: resource.external_id,
23
- name: resource.name,
24
- state: resource.state
25
- )
26
-
27
- return netsuite_failure(netsuite_resource: netsuite_resource) unless netsuite_resource.add
28
-
29
- resource.name = netsuite_resource.name
30
- resource.ledger_id = netsuite_resource.internal_id
31
-
32
- success(
33
- resource: resource,
34
- response: netsuite_resource
35
- )
36
- end
37
- end
38
- end
39
- end
40
- end
41
- end
42
- end
@@ -1,38 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module LedgerSync
4
- module Ledgers
5
- module NetSuiteSOAP
6
- class Subsidiary
7
- module Operations
8
- class Find < NetSuiteSOAP::Operation::Find
9
- class Contract < LedgerSync::Ledgers::Contract
10
- params do
11
- required(:external_id).maybe(:string)
12
- required(:ledger_id).filled(:string)
13
- required(:name).maybe(:string)
14
- required(:state).maybe(:string)
15
- end
16
- end
17
-
18
- private
19
-
20
- def operate
21
- netsuite_resource = ::NetSuite::Records::Subsidiary.get(
22
- internal_id: resource.ledger_id
23
- )
24
-
25
- resource.name = netsuite_resource.name
26
- resource.ledger_id = netsuite_resource.internal_id
27
-
28
- success(
29
- resource: resource,
30
- response: netsuite_resource
31
- )
32
- end
33
- end
34
- end
35
- end
36
- end
37
- end
38
- end