ledger_sync 1.7.0 → 2.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.
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