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.
- checksums.yaml +4 -4
- data/.github/workflows/gem-workflow.yml +71 -0
- data/.rubocop.yml +1 -0
- data/Gemfile.lock +81 -99
- data/README.md +1 -0
- data/ledger_sync.gemspec +5 -4
- data/lib/ledger_sync.rb +3 -2
- data/lib/ledger_sync/ledgers/operation.rb +1 -1
- data/lib/ledger_sync/test/support.rb +9 -2
- data/lib/ledger_sync/test/support/qa/shared_examples.rb +13 -3
- data/lib/ledger_sync/test/support/test_ledger/customer/deserializer.rb +2 -0
- data/lib/ledger_sync/test/support/test_ledger/searcher.rb +1 -1
- data/lib/ledger_sync/util/dotenv_updator.rb +17 -15
- data/lib/ledger_sync/version.rb +6 -4
- metadata +41 -40
- data/.coveralls.yml +0 -1
- data/bin/qa +0 -3
- data/lib/ledger_sync/ledgers/netsuite_soap/client.rb +0 -88
- data/lib/ledger_sync/ledgers/netsuite_soap/config.rb +0 -7
- data/lib/ledger_sync/ledgers/netsuite_soap/customer/operations/create.rb +0 -66
- data/lib/ledger_sync/ledgers/netsuite_soap/customer/operations/find.rb +0 -49
- data/lib/ledger_sync/ledgers/netsuite_soap/operation.rb +0 -40
- data/lib/ledger_sync/ledgers/netsuite_soap/operation/create.rb +0 -29
- data/lib/ledger_sync/ledgers/netsuite_soap/operation/find.rb +0 -15
- data/lib/ledger_sync/ledgers/netsuite_soap/resource.rb +0 -10
- data/lib/ledger_sync/ledgers/netsuite_soap/resources/customer.rb +0 -29
- data/lib/ledger_sync/ledgers/netsuite_soap/resources/subsidiary.rb +0 -12
- data/lib/ledger_sync/ledgers/netsuite_soap/subsidiary/operations/create.rb +0 -42
- 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:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a508dbdc56b416d158b3e0e16ab48f41c412d31aa2c4f13117576ec9765fbacd
|
|
4
|
+
data.tar.gz: fe55e1cfbc4b805e0baa0687154631e732ec6cc1017c0a72c277a45d2cde7fe0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
ledger_sync (
|
|
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
|
-
|
|
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.
|
|
24
|
-
activesupport (= 6.0.3.
|
|
25
|
-
activesupport (6.0.3.
|
|
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
|
-
|
|
34
|
-
|
|
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.
|
|
38
|
+
climate_control (1.0.0)
|
|
43
39
|
colorator (1.1.0)
|
|
44
40
|
colorize (0.8.1)
|
|
45
|
-
concurrent-ruby (1.1.
|
|
46
|
-
coveralls (0.
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
crack (0.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.
|
|
51
|
+
docile (1.3.5)
|
|
55
52
|
dotenv (2.7.6)
|
|
56
|
-
dry-configurable (0.
|
|
53
|
+
dry-configurable (0.12.1)
|
|
57
54
|
concurrent-ruby (~> 1.0)
|
|
58
|
-
dry-core (~> 0.
|
|
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.
|
|
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
|
|
64
|
+
dry-logic (1.2.0)
|
|
69
65
|
concurrent-ruby (~> 1.0)
|
|
70
|
-
dry-core (~> 0.
|
|
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.
|
|
75
|
+
dry-types (1.5.1)
|
|
81
76
|
concurrent-ruby (~> 1.0)
|
|
82
77
|
dry-container (~> 0.3)
|
|
83
|
-
dry-core (~> 0.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
152
|
-
|
|
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
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
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.
|
|
171
|
-
parser (
|
|
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.
|
|
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.
|
|
177
|
+
regexp_parser (2.1.1)
|
|
185
178
|
resonad (1.4.0)
|
|
186
|
-
|
|
187
|
-
|
|
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.
|
|
187
|
+
rspec-core (3.10.1)
|
|
193
188
|
rspec-support (~> 3.10.0)
|
|
194
|
-
rspec-expectations (3.10.
|
|
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.
|
|
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.
|
|
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.
|
|
205
|
+
rubocop-ast (1.4.1)
|
|
211
206
|
parser (>= 2.7.1.5)
|
|
212
|
-
ruby-progressbar (1.
|
|
213
|
-
ruby2_keywords (0.0.
|
|
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
|
-
|
|
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
|
-
|
|
231
|
-
|
|
232
|
-
simplecov-html (0.
|
|
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
|
-
|
|
236
|
-
|
|
237
|
-
|
|
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 (
|
|
242
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
|
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
|
-
|
|
259
|
+
simplecov
|
|
260
|
+
simplecov-lcov
|
|
279
261
|
webmock
|
|
280
262
|
|
|
281
263
|
BUNDLED WITH
|
data/README.md
CHANGED
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'
|
|
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('
|
|
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('
|
|
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 '
|
|
14
|
-
require '
|
|
13
|
+
require 'rack'
|
|
14
|
+
require 'openssl'
|
|
15
|
+
require 'faraday'
|
|
15
16
|
require 'tempfile'
|
|
16
17
|
require 'pd_ruby'
|
|
17
18
|
|
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
@@ -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.
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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
|
|
data/lib/ledger_sync/version.rb
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
# :nocov:
|
|
3
4
|
module LedgerSync
|
|
4
|
-
VERSION = '
|
|
5
|
+
VERSION = '2.0.1'
|
|
5
6
|
|
|
6
7
|
def self.version
|
|
7
|
-
if
|
|
8
|
-
VERSION
|
|
8
|
+
if ENV['PRE_RELEASE']
|
|
9
|
+
"#{VERSION}.pre.#{ENV['GITHUB_RUN_NUMBER']}"
|
|
9
10
|
else
|
|
10
|
-
|
|
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:
|
|
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
|
|
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
|
|
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:
|
|
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:
|
|
392
|
+
name: nokogiri
|
|
379
393
|
requirement: !ruby/object:Gem::Requirement
|
|
380
394
|
requirements:
|
|
381
|
-
- - "
|
|
395
|
+
- - ">="
|
|
382
396
|
- !ruby/object:Gem::Version
|
|
383
|
-
version: 0
|
|
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
|
|
404
|
+
version: '0'
|
|
391
405
|
- !ruby/object:Gem::Dependency
|
|
392
|
-
name:
|
|
406
|
+
name: openssl
|
|
393
407
|
requirement: !ruby/object:Gem::Requirement
|
|
394
408
|
requirements:
|
|
395
|
-
- - "
|
|
409
|
+
- - "~>"
|
|
396
410
|
- !ruby/object:Gem::Version
|
|
397
|
-
version:
|
|
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:
|
|
418
|
+
version: 2.2.0
|
|
405
419
|
- !ruby/object:Gem::Dependency
|
|
406
|
-
name:
|
|
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:
|
|
434
|
+
name: rack
|
|
421
435
|
requirement: !ruby/object:Gem::Requirement
|
|
422
436
|
requirements:
|
|
423
|
-
- - "
|
|
437
|
+
- - "~>"
|
|
424
438
|
- !ruby/object:Gem::Version
|
|
425
|
-
version:
|
|
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:
|
|
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.
|
|
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,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,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,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
|