tsubaiso-sdk 1.1.0 → 1.2.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +5 -5
  2. data/Rakefile +4 -3
  3. data/lib/tsubaiso_api.rb +67 -0
  4. data/lib/tsubaiso_sdk.rb +946 -381
  5. data/sample.rb +120 -33
  6. data/test/stubbings/stub_register.rb +196 -0
  7. data/test/test_tsubaiso_api.rb +149 -0
  8. data/test/tsubaiso_sdk/common_setup_and_teardown.rb +23 -0
  9. data/test/tsubaiso_sdk/test_ap_reason_masters.rb +26 -0
  10. data/test/tsubaiso_sdk/test_api_history.rb +27 -0
  11. data/test/tsubaiso_sdk/test_ar_reason_masters.rb +26 -0
  12. data/test/tsubaiso_sdk/test_bank_account.rb +34 -0
  13. data/test/tsubaiso_sdk/test_bank_account_master.rb +119 -0
  14. data/test/tsubaiso_sdk/test_bank_account_transaction.rb +61 -0
  15. data/test/tsubaiso_sdk/test_bank_reason_master.rb +90 -0
  16. data/test/tsubaiso_sdk/test_bonus.rb +26 -0
  17. data/test/tsubaiso_sdk/test_bulk_scheduled_dates.rb +24 -0
  18. data/test/tsubaiso_sdk/test_corporate_master.rb +27 -0
  19. data/test/tsubaiso_sdk/test_customer.rb +71 -0
  20. data/test/tsubaiso_sdk/test_dept.rb +66 -0
  21. data/test/tsubaiso_sdk/test_fixed_assets.rb +18 -0
  22. data/test/tsubaiso_sdk/test_journal.rb +53 -0
  23. data/test/tsubaiso_sdk/test_journal_distribution.rb +29 -0
  24. data/test/tsubaiso_sdk/test_manual_journal.rb +84 -0
  25. data/test/tsubaiso_sdk/test_payrolles.rb +26 -0
  26. data/test/tsubaiso_sdk/test_petty_cash_reason_master.rb +72 -0
  27. data/test/tsubaiso_sdk/test_physical_inventory_master.rb +84 -0
  28. data/test/tsubaiso_sdk/test_purchase.rb +120 -0
  29. data/test/tsubaiso_sdk/test_reimbursement_reason_master.rb +27 -0
  30. data/test/tsubaiso_sdk/test_reimbursements.rb +63 -0
  31. data/test/tsubaiso_sdk/test_reimbursements_transactions.rb +75 -0
  32. data/test/tsubaiso_sdk/test_sale.rb +125 -0
  33. data/test/tsubaiso_sdk/test_scheduled_dates.rb +16 -0
  34. data/test/tsubaiso_sdk/test_staff.rb +26 -0
  35. data/test/tsubaiso_sdk/test_staff_data.rb +71 -0
  36. data/test/tsubaiso_sdk/test_staff_datum_master.rb +37 -0
  37. data/test/tsubaiso_sdk/test_tag.rb +53 -0
  38. data/test/tsubaiso_sdk/test_tax_master.rb +25 -0
  39. metadata +38 -6
  40. data/test/test_tsubaiso_sdk.rb +0 -780
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 6a427717922d3d59b6816207cffd61f417e78ddf
4
- data.tar.gz: 93becc79ecf8a3cbb692707cdfa536f60c409b00
2
+ SHA256:
3
+ metadata.gz: 394ff46b866be9b88b3f3240d749d5981ae40c659f08c388adc763908f15b861
4
+ data.tar.gz: caa5951cfbc2dbcb16a72f240e5ebdfb3f70151eb7b763bb2c52a158fa72200d
5
5
  SHA512:
6
- metadata.gz: c2376f73fe25ff678949e42baf73c991d0dc21ee829d8ceb592a0c66010fcaec176fc62d024c0e80745ecc21b8f5717cb8bb2fe04988f7c285be99b002b0085f
7
- data.tar.gz: fdf3f55f2847df47042ca9ef8f7badd9c032cc2f9781b42fba06394cacdea0da1a157a81625bbc06f7871b494bf22c7d875e1b73ac70535e670d2b756ee82817
6
+ metadata.gz: 7681bd9b474bf300e774b8d4594dd99580924af1563e8bafe2e605503023f8f66b87aaf976bf3539038240c74e67b817466e6eafb87127e603d2cb7a638d5a92
7
+ data.tar.gz: 8f8b1b847e9e876a5be43ea21826bd72144c26c4b2a45d67d732fd25a7d3d373129e20e1ea9120a762451f1fdf6bd53b40f765444420ae5f9b52462adb05ea88
data/Rakefile CHANGED
@@ -1,8 +1,9 @@
1
1
  require 'rake/testtask'
2
2
 
3
3
  Rake::TestTask.new do |t|
4
- t.libs << 'test'
4
+ t.libs << 'test'
5
+ t.test_files = FileList['test/tsubaiso_sdk/test_*']
5
6
  end
6
7
 
7
- desc "Run tests"
8
- task :default => :test
8
+ desc 'Run tests'
9
+ task :default => :test
@@ -0,0 +1,67 @@
1
+ # ..
2
+ class TsubaisoAPI
3
+ require 'net/http'
4
+ require 'json'
5
+
6
+ def initialize(options = {})
7
+ @base_url = options[:base_url] || 'https://tsubaiso.net'
8
+ @access_token = options[:access_token]
9
+ end
10
+
11
+ def list(resource, params = {})
12
+ api_request(url_parse(resource + '/list'), 'GET', params)
13
+ end
14
+
15
+ def show(resource, params = {})
16
+ api_request(url_parse(resource + "/show/#{params[:id]}"), 'GET', params)
17
+ end
18
+
19
+ def create(resource, params = {})
20
+ api_request(url_parse(resource + '/create'), 'POST', params)
21
+ end
22
+
23
+ def update(resource, params = {})
24
+ api_request(url_parse(resource + '/update'), 'POST', params)
25
+ end
26
+
27
+ def destroy(resource, params = {})
28
+ api_request(url_parse(resource + '/destroy'), 'POST', params)
29
+ end
30
+
31
+ def get(url, params = {})
32
+ api_request(url_parse(url), 'GET', params)
33
+ end
34
+
35
+ def post(url, params = {})
36
+ api_request(url_parse(url), 'POST', params)
37
+ end
38
+
39
+ private
40
+
41
+ def api_request(uri, http_verb, params)
42
+ http = Net::HTTP.new(uri.host, uri.port)
43
+ initheader = { 'Content-Type' => 'application/json', 'Accept' => 'application/json' }
44
+ http.use_ssl = true if @base_url =~ /^https/
45
+ if http_verb == 'GET'
46
+ request = Net::HTTP::Get.new(uri.path, initheader)
47
+ else
48
+ request = Net::HTTP::Post.new(uri.path, initheader)
49
+ end
50
+ request['Access-Token'] = @access_token
51
+ request.body = params.to_json
52
+ response = http.request(request)
53
+ if response.body
54
+ begin
55
+ { status: response.code, json: JSON.parse(response.body) }
56
+ rescue
57
+ response.body
58
+ end
59
+ else
60
+ { status: response.code, json: {}.to_json }
61
+ end
62
+ end
63
+
64
+ def url_parse(end_point)
65
+ URI.parse(@base_url + end_point)
66
+ end
67
+ end
data/lib/tsubaiso_sdk.rb CHANGED
@@ -1,355 +1,713 @@
1
1
  class TsubaisoSDK
2
- require "net/http"
3
- require "json"
2
+ require 'net/http'
3
+ require 'json'
4
+
5
+ module UrlBuilder
6
+ def url(root, resource, method, year = nil, month = nil)
7
+ if year && month && method == "list"
8
+ return root + "/" + resource + "/list/" + year.to_s + "/" + month.to_s
9
+ else
10
+ return root + "/" + resource + "/" + method
11
+ end
12
+ end
13
+ end
4
14
 
5
15
  def initialize(options = {})
6
16
  @base_url = options[:base_url] || 'https://tsubaiso.net'
7
- @access_token = options[:access_token]
17
+ @access_token = options[:access_token] || "Fake_Token"
18
+ end
19
+
20
+ def list_bank_account_masters
21
+ params = { 'format' => 'json' }
22
+ uri = URI.parse(@base_url + '/bank_account_masters/list')
23
+ api_request(uri, 'GET', params)
24
+ end
25
+
26
+
27
+ def update_bank_account_master(options)
28
+ params = {}
29
+ candidate_keys = [
30
+ :name,
31
+ :account_type,
32
+ :account_number,
33
+ :nominee,
34
+ :memo,
35
+ :start_ymd,
36
+ :finish_ymd,
37
+ :zengin_bank_code,
38
+ :zengin_branch_code,
39
+ :zengin_client_code_sogo,
40
+ :currency_code,
41
+ :currency_rate_master_code
42
+ ]
43
+
44
+ params = create_parameters(candidate_keys,options)
45
+ params['format'] = 'json'
46
+ uri = URI.parse(@base_url + '/bank_account_masters/update/' + options[:id].to_s)
47
+ api_request(uri, 'POST', params)
48
+ end
49
+
50
+ def list_bank_account_transactions(bank_account_id)
51
+ params = {
52
+ 'format' => 'json',
53
+ 'bank_account_id' => bank_account_id.to_i
54
+ }
55
+ uri = URI.parse(@base_url + "/bank_account_transactions/list")
56
+ api_request(uri, 'GET', params)
57
+ end
58
+
59
+ def show_bank_account_transaction(id)
60
+ params = {
61
+ 'format' => 'json',
62
+ }
63
+ uri = URI.parse(@base_url + "/bank_account_transactions/show/#{id}")
64
+ api_request(uri, 'GET', params)
65
+ end
66
+
67
+ def create_bank_account_transaction(options)
68
+ params = {
69
+ 'bank_account_id' => options[:bank_account_id],
70
+ 'journal_timestamp' => options[:journal_timestamp],
71
+ 'price_value' => options[:price_value],
72
+ 'price_value_fc' => options[:price_value_fc],
73
+ 'exchange_rate' => options[:exchange_rate],
74
+ 'reason_code' => options[:reason_code],
75
+ 'dc' => options[:dc],
76
+ 'brief' => options[:brief],
77
+ 'memo' => options[:memo],
78
+ 'tag_list' => options[:tag_list],
79
+ 'dept_code' => options[:dept_code],
80
+ 'format' => 'json'
81
+ }
82
+ uri = URI.parse(@base_url + '/bank_account_transactions/create')
83
+ api_request(uri, 'POST', params)
84
+ end
85
+
86
+ def destroy_bank_account_transaction(id)
87
+ params = {
88
+ 'format' => 'json'
89
+ }
90
+ uri = URI.parse(@base_url + "/bank_account_transactions/destroy/#{id}")
91
+ api_request(uri, 'POST', params)
92
+ end
93
+
94
+ def update_bank_account_transaction(options)
95
+ params = {}
96
+ candidate_keys = [
97
+ :bank_account_id,
98
+ :journal_timestamp,
99
+ :price_value,
100
+ :price_value_fc,
101
+ :exchange_rate,
102
+ :reason_code,
103
+ :dc,
104
+ :brief,
105
+ :memo,
106
+ :tag_list,
107
+ :dept_code,
108
+ ]
109
+
110
+ params = create_parameters(candidate_keys,options)
111
+ params['format'] = 'json'
112
+ uri = URI.parse(@base_url + "/bank_account_transactions/update/#{options[:id]}")
113
+ api_request(uri, "POST",params)
114
+ end
115
+
116
+ def list_bank_account(options)
117
+ params = {
118
+ 'format' => 'json',
119
+ }
120
+ uri = URI.parse(@base_url + "/bank_accounts/list/#{options[:year]}/#{options[:month]}")
121
+ api_request(uri,'GET',params)
122
+ end
123
+
124
+ def create_bank_account(options)
125
+ params = {
126
+ 'bank_account_master_id' => options[:bank_account_master_id],
127
+ 'start_timestamp' => options[:start_timestamp],
128
+ 'finish_timestamp' => options[:finish_timestamp],
129
+ 'format' => 'json'
130
+ }
131
+
132
+ uri = URI.parse(@base_url + '/bank_accounts/create')
133
+ api_request(uri, 'POST', params)
134
+ end
135
+
136
+ def show_bank_account_master(master_id)
137
+ params = { 'format' => 'json' }
138
+ uri = URI.parse(@base_url + '/bank_account_masters/show/' + master_id.to_s)
139
+ api_request(uri, 'GET', params)
140
+ end
141
+
142
+ def destroy_bank_account_master(destroy_id)
143
+ params = { 'format' => 'json' }
144
+ uri = URI.parse(@base_url + '/bank_account_masters/destroy/' + destroy_id.to_s)
145
+ api_request(uri, 'POST', params)
146
+ end
147
+
148
+ def create_bank_account_master(options)
149
+ params = {
150
+ 'format' => 'json',
151
+ 'name' => options[:name],
152
+ 'account_type' => options[:account_type],
153
+ 'account_number' => options[:account_number],
154
+ 'nominee' => options[:nominee],
155
+ 'memo' => options[:memo],
156
+ 'start_ymd' => options[:start_ymd],
157
+ 'finish_ymd' => options[:finish_ymd],
158
+ 'zengin_bank_code' => options[:zengin_bank_code],
159
+ 'zengin_branch_code' => options[:zengin_branch_code],
160
+ 'zengin_client_code_sogo' => options[:zengin_client_code_sogo],
161
+ 'currency_code' => options[:currency_code],
162
+ 'currency_rate_master_code' => options[:currency_rate_master_code]
163
+ }
164
+
165
+ uri = URI.parse(@base_url + '/bank_account_masters/create')
166
+ api_request(uri, 'POST', params)
167
+ end
168
+
169
+ def index_api_history
170
+ params = { 'format' => 'json' }
171
+ uri = URI.parse(@base_url + '/api_histories/index')
172
+ api_request(uri, 'GET', params)
8
173
  end
9
174
 
10
175
  def list_sales(year, month)
11
- params = { "year" => year,
12
- "month" => month,
13
- "format" => "json"
14
- }
15
- uri = URI.parse(@base_url + "/ar/list/")
16
- api_request(uri, "GET", params)
176
+ params = {
177
+ 'format' => 'json'
178
+ }
179
+ uri = URI.parse(@base_url + "/ar/list/#{year.to_i}/#{month.to_i}")
180
+ api_request(uri, 'GET', params)
17
181
  end
18
182
 
19
183
  def list_sales_and_account_balances(year, month, options = {})
20
- params = { "year" => year,
21
- "month" => month,
22
- "customer_master_code" => options[:customer_master_code],
23
- "ar_segment" => options[:ar_segment],
24
- "format" => "json"
184
+ params = {
185
+ 'year' => year,
186
+ 'month' => month,
187
+ 'customer_master_id' => options[:customer_master_id],
188
+ 'ar_segment' => options[:ar_segment],
189
+ 'format' => 'json'
25
190
  }
26
- uri = URI.parse(@base_url + "/ar_receipts/balance/")
27
- api_request(uri, "GET", params)
191
+ uri = URI.parse(@base_url + '/ar/balance')
192
+ api_request(uri, 'GET', params)
28
193
  end
29
194
 
30
195
  def list_purchases(year, month)
31
- params = { "year" => year,
32
- "month" => month,
33
- "format" => "json"
34
- }
35
- uri = URI.parse(@base_url + "/ap_payments/list/")
36
- api_request(uri, "GET", params)
196
+ params = {
197
+ 'format' => 'json'
198
+ }
199
+ uri = URI.parse(@base_url + "/ap_payments/list/#{year.to_i}/#{month.to_i}")
200
+ api_request(uri, 'GET', params)
37
201
  end
38
202
 
39
203
  def list_purchases_and_account_balances(year, month, options = {})
40
- params = { "year" => year,
41
- "month" => month,
42
- "customer_master_id" => options[:customer_master_id],
43
- "ap_segment" => options[:ap_segment],
44
- "format" => "json"
204
+ params = {
205
+ 'year' => year,
206
+ 'month' => month,
207
+ 'customer_master_id' => options[:customer_master_id],
208
+ 'ap_segment' => options[:ap_segment],
209
+ 'format' => 'json'
45
210
  }
46
- uri = URI.parse(@base_url + "/ap_payments/balance/")
47
- api_request(uri, "GET", params)
211
+ uri = URI.parse(@base_url + '/ap_payments/balance')
212
+ api_request(uri, 'GET', params)
48
213
  end
49
214
 
50
215
  def list_customers
51
- params = { "format" => "json" }
52
- uri = URI.parse(@base_url + "/customer_masters/list/")
53
- api_request(uri, "GET", params)
216
+ params = { 'format' => 'json' }
217
+ uri = URI.parse(@base_url + '/customer_masters/list')
218
+ api_request(uri, 'GET', params)
54
219
  end
55
220
 
56
221
  def list_payrolls(year, month)
57
- params = { "format" => "json",
58
- "year" => year,
59
- "month" => month
60
- }
61
- uri = URI.parse(@base_url + "/payrolls/list/")
62
- api_request(uri, "GET", params)
222
+ params = {
223
+ 'format' => 'json'
224
+ }
225
+ uri = URI.parse(@base_url + "/payrolls/list/#{year.to_s}/#{month.to_s}")
226
+ api_request(uri, 'GET', params)
63
227
  end
64
228
 
65
229
  def list_staff
66
- params = { "format" => "json"}
67
- uri = URI.parse(@base_url + "/staffs/list/")
68
- api_request(uri, "GET", params)
230
+ params = { 'format' => 'json' }
231
+ uri = URI.parse(@base_url + '/staffs/list')
232
+ api_request(uri, 'GET', params)
69
233
  end
70
234
 
71
235
  def list_staff_data(staff_id)
72
- params = {"format" => "json",
73
- "staff_id" => staff_id}
74
- uri = URI.parse(@base_url + "/staff_data/list/")
75
- api_request(uri, "GET", params)
236
+ params = {
237
+ 'format' => 'json',
238
+ 'staff_id' => staff_id
239
+ }
240
+ uri = URI.parse(@base_url + '/staff_data/list')
241
+ api_request(uri, 'GET', params)
76
242
  end
77
243
 
78
244
  def list_staff_datum_masters
79
- params = { "format" => "json" }
80
- uri = URI.parse(@base_url + "/staff_datum_masters/list/")
81
- api_request(uri, "GET", params)
245
+ params = { 'format' => 'json' }
246
+ uri = URI.parse(@base_url + '/staff_datum_masters/list')
247
+ api_request(uri, 'GET', params)
82
248
  end
83
249
 
84
250
  def list_reimbursements(year, month)
85
- params = { "format" => "json",
86
- "year" => year,
87
- "month" => month
88
- }
89
- uri = URI.parse(@base_url + "/reimbursements/list/")
90
- api_request(uri, "GET", params)
251
+ params = {
252
+ 'format' => 'json',
253
+ 'year' => year,
254
+ 'month' => month
255
+ }
256
+ uri = URI.parse(@base_url + '/reimbursements/list')
257
+ api_request(uri, 'GET', params)
91
258
  end
92
259
 
93
260
  def list_reimbursement_transactions(reimbursement_id)
94
- params = { "format" => "json",
95
- "id" => reimbursement_id.to_i
96
- }
97
- uri = URI.parse(@base_url + "/reimbursement_transactions/list/")
98
- api_request(uri, "GET", params)
261
+ params = {
262
+ 'format' => 'json',
263
+ 'id' => reimbursement_id.to_i
264
+ }
265
+ uri = URI.parse(@base_url + '/reimbursement_transactions/list')
266
+ api_request(uri, 'GET', params)
99
267
  end
100
268
 
101
269
  def list_reimbursement_reason_masters
102
- params = { "format" => "json" }
103
- uri = URI.parse(@base_url + "/reimbursement_reason_masters/list/")
104
- api_request(uri, "GET", params)
270
+ params = { 'format' => 'json' }
271
+ uri = URI.parse(@base_url + '/reimbursement_reason_masters/list')
272
+ api_request(uri, 'GET', params)
105
273
  end
106
274
 
107
- def list_manual_journals(year = nil, month = nil)
108
- params = { "year" => year,
109
- "month" => month,
110
- "format" => "json"
111
- }
112
- uri = URI.parse(@base_url + "/manual_journals/list/")
113
- api_request(uri, "GET", params)
275
+ def list_manual_journals(year, month)
276
+ params = { 'format' => 'json' }
277
+ uri = URI.parse(@base_url + "/manual_journals/list/#{year.to_i}/#{month.to_i}")
278
+ api_request(uri, 'GET', params)
114
279
  end
115
280
 
116
281
  def list_journals(options)
117
- params = { "start_date" => options[:start_date],
118
- "finish_date" => options[:finish_date],
119
- "start_created_at" => options[:start_created_at],
120
- "finish_created_at" => options[:finish_created_at],
121
- "timestamp_order" => options[:timestamp_order],
122
- "account_code" => options[:account_code],
123
- "price" => options[:price],
124
- "memo" => options[:memo],
125
- "dept_code" => options[:dept_code],
126
- "tag_list" => options[:tag_list],
127
- "id" => options[:id],
128
- "format" => "json"
129
- }
130
- uri = URI.parse(@base_url + "/journals/list/")
131
- api_request(uri, "GET", params)
282
+ params = {}
283
+ candidate_keys = [
284
+ :start_date,
285
+ :finish_date,
286
+ :start_created_at,
287
+ :finish_created_at,
288
+ :account_codes,
289
+ :price_min,
290
+ :price_max,
291
+ :memo,
292
+ :dept_code,
293
+ :id,
294
+ :tag_list,
295
+ ]
296
+ params = create_parameters(candidate_keys,options)
297
+ params['format'] = 'json'
298
+ uri = URI.parse(@base_url + '/journals/list')
299
+ api_request(uri, 'GET', params)
132
300
  end
133
301
 
134
302
  def list_depts
135
- params = { "format" => "json" }
136
- uri = URI.parse(@base_url + "/depts/list/")
137
- api_request(uri, "GET", params)
303
+ params = { 'format' => 'json' }
304
+ uri = URI.parse(@base_url + '/depts/list')
305
+ api_request(uri, 'GET', params)
306
+ end
307
+
308
+ def list_tax_masters
309
+ params = { 'format' => 'json' }
310
+ uri = URI.parse(@base_url + '/tax_masters/list')
311
+ api_request(uri, 'GET', params)
138
312
  end
139
313
 
140
314
  def list_tags
141
- params = { "format" => "json" }
142
- uri = URI.parse(@base_url + "/tags/list/")
143
- api_request(uri, "GET", params)
315
+ params = { 'format' => 'json' }
316
+ uri = URI.parse(@base_url + '/tags/list')
317
+ api_request(uri, 'GET', params)
144
318
  end
145
319
 
146
320
  def list_bonuses(bonus_no, target_year)
147
- params = { "format" => "json",
148
- "bonus_no" => bonus_no,
149
- "target_year" => target_year
150
- }
151
- uri = URI.parse(@base_url + "/bonuses/list/")
152
- api_request(uri, "GET", params)
321
+ params = {
322
+ 'format' => 'json',
323
+ 'bonus_no' => bonus_no,
324
+ 'target_year' => target_year
325
+ }
326
+ uri = URI.parse(@base_url + '/bonuses/list')
327
+ api_request(uri, 'GET', params)
153
328
  end
154
329
 
155
330
  def list_ap_reason_masters
156
- params = { "format" => "json" }
157
- uri = URI.parse(@base_url + "/ap_reason_masters/list")
158
- api_request(uri, "GET", params)
331
+ params = { 'format' => 'json' }
332
+ uri = URI.parse(@base_url + '/ap_reason_masters/list')
333
+ api_request(uri, 'GET', params)
159
334
  end
160
335
 
161
336
  def list_ar_reason_masters
162
- params = { "format" => "json" }
163
- uri = URI.parse(@base_url + "/ar_reason_masters/list/")
164
- api_request(uri, "GET", params)
337
+ params = { 'format' => 'json' }
338
+ uri = URI.parse(@base_url + '/ar_reason_masters/list')
339
+ api_request(uri, 'GET', params)
340
+ end
341
+
342
+ def list_physical_inventory_masters
343
+ params = { 'format' => 'json' }
344
+ uri = URI.parse(@base_url + '/physical_inventory_masters/list')
345
+ api_request(uri, 'GET', params)
346
+ end
347
+
348
+ def list_bank_reason_masters
349
+ params = { 'format' => 'json' }
350
+ uri = URI.parse(@base_url + '/bank_reason_masters/list')
351
+ api_request(uri, 'GET', params)
352
+ end
353
+
354
+ # Alpha version now.
355
+ def list_fixed_assets
356
+ params = { 'format' => 'json' }
357
+ uri = URI.parse(@base_url + '/fixed_assets/list')
358
+ api_request(uri, 'GET', params)
359
+ end
360
+
361
+ def list_petty_cash_reason_masters
362
+ params = { 'format' => 'json' }
363
+ uri = URI.parse(@base_url + '/petty_cash_reason_masters/list')
364
+ api_request(uri, 'GET', params)
365
+ end
366
+
367
+ def list_api_history(options)
368
+ params = {
369
+ 'format' => 'json',
370
+ 'month' => options[:month],
371
+ 'year' => options[:year]
372
+ }
373
+ uri = URI.parse(@base_url + '/api_histories/list')
374
+ api_request(uri, 'GET', params)
165
375
  end
166
376
 
167
377
  def show_sale(voucher)
168
- sale_id = voucher.scan(/\d/).join("")
169
- params = { "format" => "json" }
378
+ sale_id = voucher.scan(/\d/).join('')
379
+ params = { 'format' => 'json' }
170
380
  uri = URI.parse(@base_url + "/ar/show/#{sale_id}")
171
- api_request(uri, "GET", params)
381
+ api_request(uri, 'GET', params)
382
+ end
383
+
384
+ def show_tax_master(tax_master_id)
385
+ params = { 'format' => 'json' }
386
+ uri = URI.parse(@base_url + "/tax_masters/show/#{tax_master_id}")
387
+ api_request(uri, 'GET', params)
172
388
  end
173
389
 
174
390
  def show_purchase(voucher)
175
- purchase_id = voucher.scan(/\d/).join("")
176
- params = { "format" => "json" }
391
+ purchase_id = voucher.scan(/\d/).join('')
392
+ params = { 'format' => 'json' }
177
393
  uri = URI.parse(@base_url + "/ap_payments/show/#{purchase_id}")
178
- api_request(uri, "GET", params)
394
+ api_request(uri, 'GET', params)
179
395
  end
180
396
 
181
397
  def show_customer(customer_id)
182
398
  customer_id = customer_id.to_i
183
- params = { "format" => "json" }
399
+ params = { 'format' => 'json' }
184
400
  uri = URI.parse(@base_url + "/customer_masters/show/#{customer_id}")
185
- api_request(uri, "GET", params)
401
+ api_request(uri, 'GET', params)
402
+ end
403
+
404
+ def show_customer_by_code(code)
405
+ params = {
406
+ 'code' => code,
407
+ 'format' => 'json'
408
+ }
409
+ uri = URI.parse(@base_url + '/customer_masters/show')
410
+ api_request(uri, 'GET', params)
186
411
  end
187
412
 
188
413
  def show_staff(staff_id)
189
414
  staff_id = staff_id.to_i
190
- params = { "format" => "json" }
415
+ params = { 'format' => 'json' }
191
416
  uri = URI.parse(@base_url + "/staffs/show/#{staff_id}")
192
- api_request(uri, "GET", params)
417
+ api_request(uri, 'GET', params)
193
418
  end
194
419
 
195
420
  def show_staff_data(options)
196
421
  if options.is_a?(Hash)
197
- params = { "staff_id" => options[:staff_id],
198
- "code" => options[:code],
199
- "time" => options[:time],
200
- "format" => "json"
201
- }
202
- id = options[:id]
422
+ params = {
423
+ 'staff_id' => options[:staff_id],
424
+ 'code' => options[:code],
425
+ 'time' => options[:time],
426
+ 'format' => 'json'
427
+ }
428
+ # id = options[:id]
203
429
  else
204
- params = { "format" => "json" }
205
- id = options
430
+ params = { 'format' => 'json' }
431
+ id = "/" + options.to_s
206
432
  end
207
- uri = URI.parse(@base_url + "/staff_data/show/#{id}")
208
- api_request(uri, "GET", params)
433
+ uri = URI.parse(@base_url + "/staff_data/show#{id}")
434
+ api_request(uri, 'GET', params)
209
435
  end
210
436
 
211
437
  def show_staff_datum_master(options)
212
438
  if options.is_a?(Hash)
213
- params = { "code" => options[:code],
214
- "format" => "json"
215
- }
216
- id = options[:id]
439
+ params = {
440
+ 'code' => options[:code],
441
+ 'format' => 'json'
442
+ }
217
443
  else
218
- params = { "format" => "json" }
219
- id = options
444
+ params = { 'format' => 'json' }
445
+ id = '/' + options.to_s
220
446
  end
221
- uri = URI.parse(@base_url + "/staff_datum_masters/show/#{id}")
222
- api_request(uri, "GET", params)
447
+ uri = URI.parse(@base_url + "/staff_datum_masters/show#{id}")
448
+ api_request(uri, 'GET', params)
223
449
  end
224
450
 
225
451
  def show_manual_journal(manual_journal_id)
226
- params = { "format" => "json" }
452
+ params = { 'format' => 'json' }
227
453
  uri = URI.parse(@base_url + "/manual_journals/show/#{manual_journal_id}")
228
- api_request(uri, "GET", params)
454
+ api_request(uri, 'GET', params)
229
455
  end
230
456
 
231
457
  def show_journal(journal_id)
232
- params = { "format" => "json" }
458
+ params = { 'format' => 'json' }
233
459
  uri = URI.parse(@base_url + "/journals/show/#{journal_id}")
234
- api_request(uri, "GET", params)
460
+ api_request(uri, 'GET', params)
235
461
  end
236
462
 
237
463
  def show_reimbursement(reimbursement_id)
238
- params = { "format" => "json" }
464
+ params = { 'format' => 'json' }
239
465
  uri = URI.parse(@base_url + "/reimbursements/show/#{reimbursement_id}")
240
- api_request(uri, "GET", params)
466
+ api_request(uri, 'GET', params)
241
467
  end
242
468
 
243
469
  def show_reimbursement_transaction(reimbursement_transaction_id)
244
- params = { "format" => "json" }
470
+ params = { 'format' => 'json' }
245
471
  uri = URI.parse(@base_url + "/reimbursement_transactions/show/#{reimbursement_transaction_id}")
246
- api_request(uri, "GET", params)
472
+ api_request(uri, 'GET', params)
247
473
  end
248
474
 
249
475
  def show_reimbursement_reason_master(reimbursement_reason_master_id)
250
- params = { "format" => "json" }
476
+ params = { 'format' => 'json' }
251
477
  uri = URI.parse(@base_url + "/reimbursement_reason_masters/show/#{reimbursement_reason_master_id}")
252
- api_request(uri, "GET", params)
478
+ api_request(uri, 'GET', params)
253
479
  end
254
480
 
255
481
  def show_dept(dept_id)
256
- params = { "format" => "json" }
482
+ params = { 'format' => 'json' }
257
483
  uri = URI.parse(@base_url + "/depts/show/#{dept_id}")
258
- api_request(uri, "GET", params)
484
+ api_request(uri, 'GET', params)
259
485
  end
260
486
 
261
487
  def show_tag(tag_id)
262
- params = { "format" => "json" }
488
+ params = { 'format' => 'json' }
263
489
  uri = URI.parse(@base_url + "/tags/show/#{tag_id}")
264
- api_request(uri, "GET", params)
490
+ api_request(uri, 'GET', params)
265
491
  end
266
492
 
267
493
  def show_bonus(bonus_id)
268
- params = { "format" => "json" }
494
+ params = { 'format' => 'json' }
269
495
  uri = URI.parse(@base_url + "/bonuses/show/#{bonus_id}")
270
- api_request(uri, "GET", params)
496
+ api_request(uri, 'GET', params)
271
497
  end
272
498
 
273
499
  def show_payroll(payroll_id)
274
- params = { "format" => "json" }
500
+ params = { 'format' => 'json' }
275
501
  uri = URI.parse(@base_url + "/payrolls/show/#{payroll_id}")
276
- api_request(uri, "GET", params)
502
+ api_request(uri, 'GET', params)
277
503
  end
278
504
 
279
505
  def show_ar_reason_master(ar_reason_master_id)
280
- params = { "format" => "json" }
506
+ params = { 'format' => 'json' }
281
507
  uri = URI.parse(@base_url + "/ar_reason_masters/show/#{ar_reason_master_id}")
282
- api_request(uri, "GET", params)
508
+ api_request(uri, 'GET', params)
283
509
  end
284
510
 
285
511
  def show_ap_reason_master(ap_reason_master_id)
286
- params = { "format" => "json" }
512
+ params = { 'format' => 'json' }
287
513
  uri = URI.parse(@base_url + "/ap_reason_masters/show/#{ap_reason_master_id}")
288
- api_request(uri, "GET", params)
514
+ api_request(uri, 'GET', params)
515
+ end
516
+
517
+ def show_physical_inventory_master(physical_inventory_master_id)
518
+ params = { 'format' => 'json' }
519
+ uri = URI.parse(@base_url + "/physical_inventory_masters/show/#{physical_inventory_master_id}")
520
+ api_request(uri, 'GET', params)
521
+ end
522
+
523
+ def show_bank_reason_master(bank_reason_master_id)
524
+ params = { 'format' => 'json' }
525
+ uri = URI.parse(@base_url + "/bank_reason_masters/show/#{bank_reason_master_id}")
526
+ api_request(uri, 'GET', params)
527
+ end
528
+
529
+ def show_petty_cash_reason_master(petty_cash_reason_master_id)
530
+ params = { 'format' => 'json' }
531
+ uri = URI.parse(@base_url + "/petty_cash_reason_masters/show/#{petty_cash_reason_master_id}")
532
+ api_request(uri, 'GET', params)
533
+ end
534
+
535
+ def show_corporate_master(corporate_master_id, options = {})
536
+ params = {
537
+ 'ccode' => options[:ccode],
538
+ 'format' => 'json'
539
+ }
540
+ corporate_master_id = '/' + corporate_master_id.to_s if corporate_master_id
541
+
542
+ uri = URI.parse(@base_url + "/corporate_masters/show#{corporate_master_id}")
543
+ api_request(uri, 'GET', params)
289
544
  end
290
545
 
291
546
  def create_customer(options)
292
- params = { "name" => options[:name],
293
- "name_kana" => options[:name_kana],
294
- "code" => options[:code],
295
- "tax_type_for_remittance_charge" => options[:tax_type_for_remittance_charge],
296
- "used_in_ar" => options[:used_in_ar],
297
- "used_in_ap" => options[:used_in_ap],
298
- "ar_account_code" => options[:ar_account_code],
299
- "ap_account_code" => options[:ap_account_code],
300
- "is_valid" => options[:is_valid],
301
- "format" => "json"
302
- }
547
+ available_keys = [
548
+ 'accountant_email',
549
+ 'address',
550
+ 'administrator_name',
551
+ 'ap_account_code',
552
+ 'ap_reason_selections',
553
+ 'ar_account_code',
554
+ 'ar_reason_selections',
555
+ 'bank_account_number',
556
+ 'bank_branch_code',
557
+ 'bank_branch_name',
558
+ 'bank_code',
559
+ 'bank_course',
560
+ 'bank_name',
561
+ 'bank_nominee',
562
+ 'bill_detail_round_rule',
563
+ 'code',
564
+ 'dept_code',
565
+ 'email',
566
+ 'fax',
567
+ 'finish_timestamp',
568
+ 'foreign_currency',
569
+ 'is_valid',
570
+ 'locale',
571
+ 'name',
572
+ 'name_kana',
573
+ 'need_tax_deductions',
574
+ 'pay_closing_schedule',
575
+ 'pay_interface_id',
576
+ 'pay_sight',
577
+ 'receive_closing_schedule',
578
+ 'receive_interface_id',
579
+ 'receive_sight',
580
+ 'sender_name',
581
+ 'sort_no',
582
+ 'start_timestamp',
583
+ 'tax_type_for_remittance_charge',
584
+ 'tel',
585
+ 'memo',
586
+ 'used_in_ap',
587
+ 'used_in_ar',
588
+ 'withholding_tax_base',
589
+ 'withholding_tax_segment',
590
+ 'zip',
591
+ 'pay_date_if_holiday',
592
+ 'receive_date_if_holiday',
593
+ 'data_partner'
594
+ ]
595
+ params = {}
596
+ params = create_parameters(available_keys.map{|x| x.to_sym},options)
597
+ params['format'] = 'json'
598
+
303
599
  uri = URI.parse(@base_url + '/customer_masters/create')
304
- api_request(uri, "POST", params)
600
+ api_request(uri, 'POST', params)
601
+ end
602
+
603
+ def create_bank_reason_masters(options)
604
+ params = {
605
+ 'sort_number' => options[:sort_number],
606
+ 'reason_code' => options[:reason_code],
607
+ 'reason_name' => options[:reason_name],
608
+ 'dc' => options[:dc],
609
+ 'is_valid' => options[:is_valid],
610
+ 'memo' => options[:memo],
611
+ 'account_code' => options[:account_code],
612
+ 'format' => 'json'
613
+ }
614
+ uri = URI.parse(@base_url + '/bank_reason_masters/create')
615
+ api_request(uri, 'POST', params)
305
616
  end
306
617
 
307
618
  def create_sale(options)
308
- params = { "price_including_tax" => options[:price_including_tax],
309
- "realization_timestamp" => options[:realization_timestamp],
310
- "customer_master_code" => options[:customer_master_code],
311
- "dept_code" => options[:dept_code],
312
- "reason_master_code" => options[:reason_master_code],
313
- "dc" => options[:dc],
314
- "memo" => options[:memo],
315
- "tax_code" => options[:tax_code],
316
- "sales_tax" => options[:sales_tax],
317
- "scheduled_memo" => options[:scheduled_memo],
318
- "scheduled_receive_timestamp" => options[:scheduled_receive_timestamp],
319
- "tag_list" => options[:tag_list],
320
- "data_partner" => options[:data_partner],
321
- "format" => "json"
322
- }
619
+ params = {
620
+ 'price_including_tax' => options[:price_including_tax],
621
+ 'realization_timestamp' => options[:realization_timestamp],
622
+ 'customer_master_code' => options[:customer_master_code],
623
+ 'dept_code' => options[:dept_code],
624
+ 'reason_master_code' => options[:reason_master_code],
625
+ 'dc' => options[:dc],
626
+ 'memo' => options[:memo],
627
+ 'tax_code' => options[:tax_code],
628
+ 'sales_tax' => options[:sales_tax],
629
+ 'scheduled_memo' => options[:scheduled_memo],
630
+ 'scheduled_receive_timestamp' => options[:scheduled_receive_timestamp],
631
+ 'tag_list' => options[:tag_list],
632
+ 'data_partner' => options[:data_partner],
633
+ 'format' => 'json'
634
+ }
323
635
  uri = URI.parse(@base_url + '/ar/create')
324
- api_request(uri, "POST", params)
636
+ api_request(uri, 'POST', params)
637
+ end
638
+
639
+ def find_or_create_sale(options)
640
+ params = {}
641
+ available_keys = [
642
+ 'price_including_tax',
643
+ 'realization_timestamp',
644
+ 'customer_master_code',
645
+ 'dept_code',
646
+ 'reason_master_code',
647
+ 'dc',
648
+ 'memo',
649
+ 'tax_code',
650
+ 'sales_tax',
651
+ 'scheduled_memo',
652
+ 'scheduled_receive_timestamp',
653
+ 'tag_list',
654
+ 'data_partner',
655
+ 'key'
656
+ ]
657
+ params = create_parameters(available_keys.map{|x| x.to_sym},options)
658
+ params['format'] = 'json'
659
+ uri = URI.parse(@base_url + '/ar/find_or_create')
660
+ api_request(uri, 'POST', params)
325
661
  end
326
662
 
327
663
  def create_purchase(options)
328
- params = { "price_including_tax" => options[:price_including_tax],
329
- "accrual_timestamp" => options[:accrual_timestamp],
330
- "customer_master_code" => options[:customer_master_code],
331
- "dept_code" => options[:dept_code],
332
- "reason_master_code" => options[:reason_master_code],
333
- "dc" => options[:dc],
334
- "memo" => options[:memo],
335
- "tax_code" => options[:tax_code],
336
- "port_type" => options[:port_type],
337
- "tag_list" => options[:tag_list],
338
- "data_partner" => options[:data_partner],
339
- "format" => "json"
340
- }
664
+ params = {
665
+ 'price_including_tax' => options[:price_including_tax],
666
+ 'accrual_timestamp' => options[:accrual_timestamp],
667
+ 'customer_master_code' => options[:customer_master_code],
668
+ 'dept_code' => options[:dept_code],
669
+ 'reason_master_code' => options[:reason_master_code],
670
+ 'dc' => options[:dc],
671
+ 'memo' => options[:memo],
672
+ 'tax_code' => options[:tax_code],
673
+ 'port_type' => options[:port_type],
674
+ 'tag_list' => options[:tag_list],
675
+ 'data_partner' => options[:data_partner],
676
+ 'format' => 'json'
677
+ }
341
678
  uri = URI.parse(@base_url + '/ap_payments/create')
342
- api_request(uri, "POST", params)
679
+ api_request(uri, 'POST', params)
680
+ end
681
+
682
+ def find_or_create_purchase(options)
683
+ params = {
684
+ 'price_including_tax' => options[:price_including_tax],
685
+ 'accrual_timestamp' => options[:accrual_timestamp],
686
+ 'customer_master_code' => options[:customer_master_code],
687
+ 'dept_code' => options[:dept_code],
688
+ 'reason_master_code' => options[:reason_master_code],
689
+ 'dc' => options[:dc],
690
+ 'memo' => options[:memo],
691
+ 'tax_code' => options[:tax_code],
692
+ 'port_type' => options[:port_type],
693
+ 'tag_list' => options[:tag_list],
694
+ 'data_partner' => options[:data_partner],
695
+ 'key' => options[:key],
696
+ 'format' => 'json'
697
+ }
698
+ uri = URI.parse(@base_url + '/ap_payments/find_or_create')
699
+ api_request(uri, 'POST', params)
343
700
  end
344
701
 
345
702
  def create_staff_data(options)
346
- params = { "staff_id" => options[:staff_id],
347
- "code" => options[:code],
348
- "memo" => options[:memo],
349
- "value" => options[:value],
350
- "start_timestamp" => options[:start_timestamp],
351
- "format" => "json"
352
- }
703
+ params = {
704
+ 'staff_id' => options[:staff_id],
705
+ 'code' => options[:code],
706
+ 'memo' => options[:memo],
707
+ 'value' => options[:value],
708
+ 'start_timestamp' => options[:start_timestamp],
709
+ 'format' => 'json'
710
+ }
353
711
 
354
712
  if options[:finish_timestamp]
355
713
  params[:finish_timestamp] = options[:finish_timestamp]
@@ -358,138 +716,242 @@ class TsubaisoSDK
358
716
  end
359
717
 
360
718
  uri = URI.parse(@base_url + '/staff_data/create')
361
- api_request(uri, "POST", params)
719
+ api_request(uri, 'POST', params)
362
720
  end
363
721
 
364
722
  def create_manual_journal(options)
365
- params = { "journal_timestamp" => options[:journal_timestamp],
366
- "journal_dcs" => make_journal_dcs(options[:journal_dcs]),
367
- "data_partner" => options[:data_partner],
368
- "format" => "json" }
723
+ params = {
724
+ 'journal_timestamp' => options[:journal_timestamp],
725
+ 'journal_dcs' => make_journal_dcs(options[:journal_dcs]),
726
+ 'data_partner' => options[:data_partner],
727
+ 'format' => 'json'
728
+ }
369
729
 
370
730
  uri = URI.parse(@base_url + '/manual_journals/create')
371
- api_request(uri, "POST", params)
731
+ api_request(uri, 'POST', params)
372
732
  end
373
733
 
374
734
  def create_reimbursement(options)
375
- params = { "format" => "json",
376
- "applicant" => options[:applicant],
377
- "application_term" => options[:application_term],
378
- "staff_code" => options[:staff_code],
379
- "dept_code" => options[:dept_code],
380
- "memo" => options[:memo]
381
- }
382
- uri = URI.parse(@base_url + "/reimbursements/create/")
383
- api_request(uri, "POST", params)
735
+ params = {
736
+ 'format' => 'json',
737
+ 'applicant' => options[:applicant],
738
+ 'application_term' => options[:application_term],
739
+ 'staff_code' => options[:staff_code],
740
+ 'dept_code' => options[:dept_code],
741
+ 'memo' => options[:memo]
742
+ }
743
+ uri = URI.parse(@base_url + '/reimbursements/create')
744
+ api_request(uri, 'POST', params)
384
745
  end
385
746
 
386
747
  def create_reimbursement_transaction(options)
387
- params = { "format" => "json",
388
- "reimbursement_id" => options[:reimbursement_id].to_i,
389
- "transaction_timestamp" => options[:transaction_timestamp],
390
- "price_value" => options[:price_value],
391
- "reason_code" => options[:reason_code],
392
- "port_type" => options[:port_type],
393
- "dc" => options[:dc],
394
- "brief" => options[:brief],
395
- "memo" => options[:memo],
396
- "tag_list" => options[:tag_list],
397
- "tax_type" => options[:tax_type],
398
- "data_partner" => options[:data_partner]
399
- }
400
- uri = URI.parse(@base_url + '/reimbursement_transactions/create/')
401
- api_request(uri, "POST", params)
748
+ params = {
749
+ 'format' => 'json',
750
+ 'reimbursement_id' => options[:reimbursement_id].to_i,
751
+ 'transaction_timestamp' => options[:transaction_timestamp],
752
+ 'price_value' => options[:price_value],
753
+ 'reason_code' => options[:reason_code],
754
+ 'port_type' => options[:port_type],
755
+ 'dc' => options[:dc],
756
+ 'brief' => options[:brief],
757
+ 'memo' => options[:memo],
758
+ 'tag_list' => options[:tag_list],
759
+ 'tax_type' => options[:tax_type],
760
+ 'data_partner' => options[:data_partner]
761
+ }
762
+ uri = URI.parse(@base_url + '/reimbursement_transactions/create')
763
+ api_request(uri, 'POST', params)
402
764
  end
403
765
 
404
766
  def create_dept(options)
405
- params = { "format" => "json",
406
- "sort_no" => options[:sort_no],
407
- "code" => options[:code],
408
- "name" => options[:name],
409
- "name_abbr" => options[:name_abbr],
410
- "color" => options[:color],
411
- "memo" => options[:memo],
412
- "start_date" => options[:start_date],
413
- "finish_date" => options[:finish_date]
414
- }
415
- uri = URI.parse(@base_url + '/depts/create/')
416
- api_request(uri, "POST", params)
767
+ params = {
768
+ 'format' => 'json',
769
+ 'sort_no' => options[:sort_no],
770
+ 'code' => options[:code],
771
+ 'name' => options[:name],
772
+ 'name_abbr' => options[:name_abbr],
773
+ 'color' => options[:color],
774
+ 'memo' => options[:memo],
775
+ 'start_date' => options[:start_date],
776
+ 'finish_date' => options[:finish_date]
777
+ }
778
+ uri = URI.parse(@base_url + '/depts/create')
779
+ api_request(uri, 'POST', params)
417
780
  end
418
781
 
419
782
  def create_tag(options)
420
- params = { "format" => "json",
421
- "code" => options[:code],
422
- "name" => options[:name],
423
- "sort_no" => options[:sort_no],
424
- "tag_group_code" => options[:tag_group_code],
425
- "start_ymd" => options[:start_ymd],
426
- "finish_ymd" => options[:finish_ymd]
427
- }
428
- uri = URI.parse(@base_url + '/tags/create/')
429
- api_request(uri, "POST", params)
783
+ params = {
784
+ 'format' => 'json',
785
+ 'code' => options[:code],
786
+ 'name' => options[:name],
787
+ 'sort_no' => options[:sort_no],
788
+ 'tag_group_code' => options[:tag_group_code],
789
+ 'start_ymd' => options[:start_ymd],
790
+ 'finish_ymd' => options[:finish_ymd]
791
+ }
792
+ uri = URI.parse(@base_url + '/tags/create')
793
+ api_request(uri, 'POST', params)
794
+ end
795
+
796
+ def create_journal_distribution(options)
797
+ params = {
798
+ 'format' => 'json',
799
+ 'search_conditions' => {
800
+ 'start_date' => options[:start_date],
801
+ 'finish_date' => options[:finish_date],
802
+ 'account_codes' => options[:account_codes],
803
+ 'dept_code' => options[:dept_code],
804
+ 'tag_list' => options[:tag_list]
805
+ },
806
+ 'title' => options[:title],
807
+ 'target_timestamp' => options[:target_timestamp],
808
+ 'memo' => options[:memo],
809
+ 'criteria' => options[:criteria],
810
+ 'distribution_conditions' => options[:distribution_conditions]
811
+ }
812
+ uri = URI.parse(@base_url + '/journal_distributions/create')
813
+ api_request(uri, 'POST', params)
814
+ end
815
+
816
+ def create_petty_cash_reason_master(options)
817
+ params = {
818
+ 'format' => 'json',
819
+ 'reason_code' => options[:reason_code],
820
+ 'reason_name' => options[:reason_name],
821
+ 'dc' => options[:dc],
822
+ 'account_code' => options[:account_code],
823
+ 'is_valid' => options[:is_valid],
824
+ 'memo' => options[:memo],
825
+ 'port_type' => options[:port_type],
826
+ 'sort_number' => options[:sort_number]
827
+ }
828
+ uri = URI.parse(@base_url + '/petty_cash_reason_masters/create')
829
+ api_request(uri, 'POST', params)
830
+ end
831
+
832
+ def create_physical_inventory_masters(options)
833
+ params = {}
834
+ candidate_keys = [:name, :start_ymd, :finish_ymd, :memo, :tag_list, :dept_code]
835
+ params = create_parameters(candidate_keys,options)
836
+ params['format'] = 'json'
837
+
838
+ uri = URI.parse(@base_url + '/physical_inventory_masters/create')
839
+ api_request(uri, 'POST', params)
430
840
  end
431
841
 
432
842
  def update_sale(options)
433
- params = { "price_including_tax" => options[:price_including_tax],
434
- "realization_timestamp" => options[:realization_timestamp],
435
- "customer_master_code" => options[:customer_master_code],
436
- "dept_code" => options[:dept_code],
437
- "reason_master_code" => options[:reason_master_code],
438
- "dc" => options[:dc],
439
- "memo" => options[:memo],
440
- "tax_code" => options[:tax_code],
441
- "sales_tax" => options[:sales_tax],
442
- "scheduled_memo" => options[:scheduled_memo],
443
- "scheduled_receive_timestamp" => options[:scheduled_receive_timestamp],
444
- "tag_list" => options[:tag_list],
445
- "data_partner" => options[:data_partner],
446
- "format" => "json"
447
- }
843
+ available_keys = [
844
+ 'id',
845
+ 'price_including_tax',
846
+ 'realization_timestamp',
847
+ 'customer_master_code',
848
+ 'dept_code',
849
+ 'reason_master_code',
850
+ 'dc',
851
+ 'memo',
852
+ 'tax_code',
853
+ 'sales_tax',
854
+ 'scheduled_memo',
855
+ 'scheduled_receive_timestamp',
856
+ 'tag_list',
857
+ 'data_partner'
858
+ ]
859
+ params = {}
860
+ params = create_parameters(available_keys.map{|x| x.to_sym},options)
861
+ params['format'] = 'json'
448
862
  uri = URI.parse(@base_url + "/ar/update/#{options[:id]}")
449
- api_request(uri, "POST", params)
863
+ api_request(uri, 'POST', params)
450
864
  end
451
865
 
452
866
  def update_purchase(options)
453
- params = { "price_including_tax" => options[:price_including_tax],
454
- "accrual_timestamp" => options[:accrual_timestamp],
455
- "customer_master_code" => options[:customer_master_code],
456
- "dept_code" => options[:dept_code],
457
- "reason_master_code" => options[:reason_master_code],
458
- "dc" => options[:dc],
459
- "memo" => options[:memo],
460
- "tax_code" => options[:tax_code],
461
- "port_type" => options[:port_type],
462
- "tag_list" => options[:tag_list],
463
- "data_partner" => options[:data_partner],
464
- "format" => "json"}
867
+ params = options.merge({ 'format' => 'json' })
465
868
 
466
869
  uri = URI.parse(@base_url + "/ap_payments/update/#{options[:id]}")
467
- api_request(uri, "POST", params)
870
+ api_request(uri, 'POST', params)
468
871
  end
469
872
 
470
873
  def update_customer(options)
471
- params = { "name" => options[:name],
472
- "name_kana" => options[:name_kana],
473
- "code" => options[:code],
474
- "tax_type_for_remittance_charge" => options[:tax_type_for_remittance_charge],
475
- "used_in_ar" => options[:used_in_ar],
476
- "used_in_ap" => options[:used_in_ap],
477
- "ar_account_code" => options[:ar_account_code],
478
- "ap_account_code" => options[:ap_account_code],
479
- "is_valid" => options[:is_valid],
480
- "format" => "json"
481
- }
874
+ available_keys = [
875
+ 'accountant_email',
876
+ 'address',
877
+ 'administrator_name',
878
+ 'ap_account_code',
879
+ 'ap_reason_selections',
880
+ 'ar_account_code',
881
+ 'ar_reason_selections',
882
+ 'bank_account_number',
883
+ 'bank_branch_code',
884
+ 'bank_branch_name',
885
+ 'bank_code',
886
+ 'bank_course',
887
+ 'bank_name',
888
+ 'bank_nominee',
889
+ 'bill_detail_round_rule',
890
+ 'code',
891
+ 'dept_code',
892
+ 'email',
893
+ 'fax',
894
+ 'finish_timestamp',
895
+ 'foreign_currency',
896
+ 'is_valid',
897
+ 'locale',
898
+ 'name',
899
+ 'name_kana',
900
+ 'need_tax_deductions',
901
+ 'pay_closing_schedule',
902
+ 'pay_interface_id',
903
+ 'pay_sight',
904
+ 'receive_closing_schedule',
905
+ 'receive_interface_id',
906
+ 'receive_sight',
907
+ 'sender_name',
908
+ 'sort_no',
909
+ 'start_timestamp',
910
+ 'tax_type_for_remittance_charge',
911
+ 'tel',
912
+ 'memo',
913
+ 'used_in_ap',
914
+ 'used_in_ar',
915
+ 'withholding_tax_base',
916
+ 'withholding_tax_segment',
917
+ 'zip',
918
+ 'pay_date_if_holiday',
919
+ 'receive_date_if_holiday',
920
+ 'data_partner'
921
+ ]
922
+ params = {}
923
+ params = create_parameters(available_keys.map{|x| x.to_sym},options)
924
+ params['format'] = 'json'
482
925
 
483
926
  uri = URI.parse(@base_url + "/customer_masters/update/#{options[:id]}")
484
- api_request(uri, "POST", params)
927
+ api_request(uri, 'POST', params)
928
+ end
929
+
930
+ def update_bank_reason_masters(options)
931
+ params = {}
932
+ candidate_keys = [
933
+ :sort_number,
934
+ :reason_code,
935
+ :reason_name,
936
+ :dc,
937
+ :is_valid,
938
+ :memo,
939
+ :account_code
940
+ ]
941
+
942
+ params = create_parameters(candidate_keys,options)
943
+ params['format'] = 'json'
944
+ uri = URI.parse(@base_url + '/bank_reason_masters/update/' + options[:id].to_s)
945
+ api_request(uri, "POST",params)
485
946
  end
486
947
 
487
948
  def update_staff_data(options)
488
- params = { "memo" => options[:memo],
489
- "value" => options[:value],
490
- "start_timestamp" => options[:start_timestamp],
491
- "format" => "json"
492
- }
949
+ params = {
950
+ 'memo' => options[:memo],
951
+ 'value' => options[:value],
952
+ 'start_timestamp' => options[:start_timestamp],
953
+ 'format' => 'json'
954
+ }
493
955
 
494
956
  if options[:finish_timestamp]
495
957
  params[:finish_timestamp] = options[:finish_timestamp]
@@ -497,150 +959,247 @@ class TsubaisoSDK
497
959
  params[:no_finish_timestamp] = options[:no_finish_timestamp]
498
960
  end
499
961
 
500
- uri = URI.parse(@base_url + "/staff_data/update/#{options[:id]}")
501
- api_request(uri, "POST", params)
962
+ uri = URI.parse(@base_url + "/staff_data/update/#{options[:staff_id]}")
963
+ api_request(uri, 'POST', params)
502
964
  end
503
965
 
504
966
  def update_manual_journal(options)
505
- params = { "journal_timestamp" => options[:journal_timestamp],
506
- "journal_dcs" => make_journal_dcs(options[:journal_dcs]),
507
- "data_partner" => options[:data_partner],
508
- "format" => "json" }
967
+ params = {
968
+ 'journal_timestamp' => options[:journal_timestamp],
969
+ 'journal_dcs' => make_journal_dcs(options[:journal_dcs]),
970
+ 'data_partner' => options[:data_partner],
971
+ 'format' => 'json'
972
+ }
509
973
 
510
974
  uri = URI.parse(@base_url + "/manual_journals/update/#{options[:id]}")
511
- api_request(uri, "POST", params)
975
+ api_request(uri, 'POST', params)
512
976
  end
513
977
 
514
978
  def update_reimbursement(reimbursement_id, options)
515
- params = { "format" => "json",
516
- "applicant" => options[:applicant],
517
- "application_term" => options[:application_term],
518
- "staff_code" => options[:staff_code],
519
- "dept_code" => options[:dept_code],
520
- "memo" => options[:memo]
521
- }
979
+ params = {}
980
+ candidate_keys = [
981
+ :applicant,
982
+ :application_term,
983
+ :staff_code,
984
+ :dept_code,
985
+ :memo,
986
+ ]
987
+ params = create_parameters(candidate_keys,options)
988
+ params['format'] = 'json'
522
989
  uri = URI.parse(@base_url + "/reimbursements/update/#{reimbursement_id}")
523
- api_request(uri, "POST", params)
990
+ api_request(uri, 'POST', params)
524
991
  end
525
992
 
526
993
  def update_reimbursement_transaction(options)
527
- params = { "format" => "json",
528
- "port_type" => options[:port_type],
529
- "transaction_timestamp" => options[:transaction_timestamp],
530
- "price_value" => options[:price_value],
531
- "dc" => options[:dc],
532
- "reason_code" => options[:reason_code],
533
- "brief" => options[:brief],
534
- "memo" => options[:memo],
535
- "tag_list" => options[:tag_list],
536
- "tax_type" => options[:tax_type],
537
- "data_partner" => options[:data_partner]
538
- }
994
+ params = {}
995
+ candidate_keys = [
996
+ :port_type,
997
+ :transaction_timestamp,
998
+ :price_value,
999
+ :bc,
1000
+ :reason_code,
1001
+ :brief,
1002
+ :memo,
1003
+ :tag_list,
1004
+ :tax_type,
1005
+ :data_partner
1006
+ ]
1007
+ params = create_parameters(candidate_keys,options)
1008
+ params['format'] = 'json'
1009
+
539
1010
  uri = URI.parse(@base_url + "/reimbursement_transactions/update/#{options[:id]}")
540
- api_request(uri, "POST", params)
1011
+ api_request(uri, 'POST', params)
541
1012
  end
542
1013
 
543
1014
  def update_dept(dept_id, options)
544
- params = { "format" => "json",
545
- "sort_no" => options[:sort_no],
546
- "code" => options[:code],
547
- "name" => options[:name],
548
- "name_abbr" => options[:name_abbr],
549
- "color" => options[:color],
550
- "memo" => options[:memo],
551
- "start_date" => options[:start_date],
552
- "finish_date" => options[:finish_date]
553
- }
1015
+ params = {}
1016
+ candidate_keys = [
1017
+ :sort_no,
1018
+ :code,
1019
+ :name,
1020
+ :memo,
1021
+ :name_abbr,
1022
+ :color,
1023
+ :start_date,
1024
+ :finish_date
1025
+ ]
1026
+ params = create_parameters(candidate_keys,options)
1027
+ params['format'] = 'json'
554
1028
  uri = URI.parse(@base_url + "/depts/update/#{dept_id}")
555
- api_request(uri, "POST", params)
1029
+ api_request(uri, 'POST', params)
556
1030
  end
557
1031
 
558
1032
  def update_tag(tag_id, options)
559
- params = { "format" => "json",
560
- "code" => options[:code],
561
- "name" => options[:name],
562
- "sort_no" => options[:sort_no],
563
- "tag_group_code" => options[:tag_group_code],
564
- "start_ymd" => options[:start_ymd],
565
- "finish_ymd" => options[:finish_ymd]
566
- }
1033
+ params = {}
1034
+ candidate_keys = [
1035
+ :code,
1036
+ :name,
1037
+ :sort_no,
1038
+ :tagg_group_code,
1039
+ :start_ymd,
1040
+ :finish_ymd
1041
+ ]
1042
+ params = create_parameters(candidate_keys,options)
1043
+ params['format'] = 'json'
567
1044
  uri = URI.parse(@base_url + "/tags/update/#{tag_id}")
568
- api_request(uri, "POST", params)
1045
+ api_request(uri, 'POST', params)
1046
+ end
1047
+
1048
+ def update_petty_cash_reason_master(petty_cash_reason_master_id, options)
1049
+ params = {}
1050
+ candidate_keys = [
1051
+ :reason_code,
1052
+ :reason_name,
1053
+ :dc,
1054
+ :account_code,
1055
+ :is_valid,
1056
+ :memo,
1057
+ :port_type,
1058
+ :sort_number
1059
+ ]
1060
+ params = create_parameters(candidate_keys,options)
1061
+ params['format'] = 'json'
1062
+ uri = URI.parse(@base_url + "/petty_cash_reason_masters/update/#{petty_cash_reason_master_id}")
1063
+ api_request(uri, 'POST', params)
1064
+ end
1065
+
1066
+ def update_physical_inventory_masters(options)
1067
+ params = {}
1068
+ candidate_keys = [:name, :start_ymd, :finish_ymd, :memo]
1069
+ params = create_parameters(candidate_keys,options)
1070
+ params['format'] = 'json'
1071
+
1072
+ uri = URI.parse(@base_url + "/physical_inventory_masters/update/#{options[:id]}")
1073
+ api_request(uri, 'POST', params)
569
1074
  end
570
1075
 
571
1076
  def destroy_sale(voucher)
572
- sale_id = voucher.scan(/\d/).join("")
573
- params = { "format" => "json" }
1077
+ sale_id = voucher.scan(/\d/).join('')
1078
+ params = { 'format' => 'json' }
574
1079
  uri = URI.parse(@base_url + "/ar/destroy/#{sale_id}")
575
- api_request(uri, "POST", params)
1080
+ api_request(uri, 'POST', params)
1081
+ end
1082
+
1083
+ def destroy_bank_reason_masters(destroy_id)
1084
+ params = {'format' => 'json'}
1085
+ uri = URI.parse(@base_url + '/bank_reason_masters/destroy/' + destroy_id.to_s)
1086
+ api_request(uri,"POST",params)
576
1087
  end
577
1088
 
578
1089
  def destroy_purchase(voucher)
579
- purchase_id = voucher.scan(/\d/).join("")
580
- params = { "format" => "json" }
1090
+ purchase_id = voucher.scan(/\d/).join('')
1091
+ params = { 'format' => 'json' }
581
1092
  uri = URI.parse(@base_url + "/ap/destroy/#{purchase_id}")
582
- api_request(uri, "POST", params)
1093
+ api_request(uri, 'POST', params)
583
1094
  end
584
1095
 
585
1096
  def destroy_customer(customer_id)
586
- params = { "format" => "json" }
1097
+ params = { 'format' => 'json' }
587
1098
  uri = URI.parse(@base_url + "/customer_masters/destroy/#{customer_id}")
588
- api_request(uri, "POST", params)
1099
+ api_request(uri, 'POST', params)
589
1100
  end
590
1101
 
591
1102
  def destroy_staff_data(staff_data_id)
592
- params = { "format" => "json" }
1103
+ params = { 'format' => 'json' }
593
1104
  uri = URI.parse(@base_url + "/staff_data/destroy/#{staff_data_id}")
594
- api_request(uri, "POST", params)
1105
+ api_request(uri, 'POST', params)
595
1106
  end
596
1107
 
597
1108
  def destroy_manual_journal(manual_journal_id)
598
- params = { "format" => "json" }
1109
+ params = { 'format' => 'json' }
599
1110
  uri = URI.parse(@base_url + "/manual_journals/destroy/#{manual_journal_id}")
600
- api_request(uri, "POST", params)
1111
+ api_request(uri, 'POST', params)
601
1112
  end
602
1113
 
603
1114
  def destroy_reimbursement(reimbursement_id)
604
- params = { "format" => "json" }
1115
+ params = { 'format' => 'json' }
605
1116
  uri = URI.parse(@base_url + "/reimbursements/destroy/#{reimbursement_id}")
606
- api_request(uri, "POST", params)
1117
+ api_request(uri, 'POST', params)
607
1118
  end
608
1119
 
609
1120
  def destroy_reimbursement_transaction(reimbursement_transaction_id)
610
- params = { "format" => "json" }
1121
+ params = { 'format' => 'json' }
611
1122
  uri = URI.parse(@base_url + "/reimbursement_transactions/destroy/#{reimbursement_transaction_id}")
612
- api_request(uri, "POST", params)
1123
+ api_request(uri, 'POST', params)
613
1124
  end
614
1125
 
615
1126
  def destroy_dept(dept_id)
616
- params = { "format" => "json" }
1127
+ params = { 'format' => 'json' }
617
1128
  uri = URI.parse(@base_url + "/depts/destroy/#{dept_id}")
618
- api_request(uri, "POST", params)
1129
+ api_request(uri, 'POST', params)
619
1130
  end
620
1131
 
621
1132
  def destroy_tag(tag_id)
622
- params = { "format" => "json" }
1133
+ params = { 'format' => 'json' }
623
1134
  uri = URI.parse(@base_url + "/tags/destroy/#{tag_id}")
624
- api_request(uri, "POST", params)
1135
+ api_request(uri, 'POST', params)
1136
+ end
1137
+
1138
+ def destroy_journal_distribution(journal_distribution_id)
1139
+ params = { 'format' => 'json' }
1140
+ uri = URI.parse(@base_url + "/journal_distributions/destroy/#{journal_distribution_id}")
1141
+ api_request(uri, 'POST', params)
1142
+ end
1143
+
1144
+ # Alpha version now.
1145
+ def destroy_fixed_asset(fixed_asset_id)
1146
+ params = { 'format' => 'json' }
1147
+ uri = URI.parse(@base_url + "/fixed_assets/destroy/#{fixed_asset_id}")
1148
+ api_request(uri, 'POST', params)
1149
+ end
1150
+
1151
+ def scheduled_date(target_date, sight, closing_day, shift = 'before')
1152
+ params = { 'format' => 'json', target_date: target_date, sight: sight, closing_day: closing_day, shift: shift }
1153
+ uri = URI.parse(@base_url + '/scheduled_dates/calc')
1154
+ api_request(uri, 'GET', params)
1155
+ end
1156
+
1157
+ def destroy_petty_cash_reason_master(petty_cash_reason_master_id)
1158
+ params = { 'format' => 'json' }
1159
+ uri = URI.parse(@base_url + "/petty_cash_reason_masters/destroy/#{petty_cash_reason_master_id}")
1160
+ api_request(uri, 'POST', params)
1161
+ end
1162
+
1163
+ def destroy_physical_inventory_masters(physical_inventory_masters_id)
1164
+ params = { 'format' => 'json' }
1165
+ uri = URI.parse(@base_url + "/physical_inventory_masters/destroy/#{physical_inventory_masters_id}")
1166
+ api_request(uri, 'POST', params)
1167
+ end
1168
+
1169
+ def next_customer_code
1170
+ params = {
1171
+ 'format' => 'json'
1172
+ }
1173
+ uri = URI.parse(@base_url + '/customer_masters/next_code')
1174
+ api_request(uri, 'GET', params)
625
1175
  end
626
1176
 
627
1177
  private
628
1178
 
1179
+
1180
+ def create_parameters(keys,options)
1181
+ # Add new keys and value if options has keys, even if value in options is nil.
1182
+ # This code avoid updateing attributes witch is not specified by the users.
1183
+ (keys & options.keys).inject({ 'format' => 'json' }) do |params, key|
1184
+ params.merge(key.to_s => options[key]) # Hash#slice can be replace this code if your ruby is =< 2.5.0
1185
+ end
1186
+ end
1187
+
629
1188
  def api_request(uri, http_verb, params)
630
1189
  http = Net::HTTP.new(uri.host, uri.port)
631
- initheader = {'Content-Type' => 'application/json'}
1190
+ initheader = { 'Content-Type' => 'application/json' }
632
1191
  http.use_ssl = true if @base_url =~ /^https/
633
- if http_verb == "GET"
1192
+ if http_verb == 'GET'
634
1193
  request = Net::HTTP::Get.new(uri.path, initheader)
635
1194
  else
636
1195
  request = Net::HTTP::Post.new(uri.path, initheader)
637
1196
  end
638
- request["Access-Token"] = @access_token
1197
+ request['Access-Token'] = @access_token
639
1198
  request.body = params.to_json
640
1199
  response = http.request(request)
641
1200
  if response.body
642
1201
  begin
643
- {:status => response.code, :json => recursive_symbolize_keys(JSON.load(response.body))}
1202
+ { :status => response.code, :json => recursive_symbolize_keys(JSON.parse(response.body)) }
644
1203
  rescue
645
1204
  response.body
646
1205
  end
@@ -654,7 +1213,7 @@ class TsubaisoSDK
654
1213
  when Hash
655
1214
  Hash[
656
1215
  data.map do |k, v|
657
- [ k.respond_to?(:to_sym) ? k.to_sym : k, recursive_symbolize_keys(v) ]
1216
+ [k.respond_to?(:to_sym) ? k.to_sym : k, recursive_symbolize_keys(v)]
658
1217
  end
659
1218
  ]
660
1219
  when Enumerable
@@ -666,22 +1225,28 @@ class TsubaisoSDK
666
1225
 
667
1226
  def make_journal_dcs(journal_dcs)
668
1227
  return nil if journal_dcs.nil?
669
- journal_dcs.map {|journal_dc| make_journal_dc(journal_dc)}
1228
+
1229
+ journal_dcs.map { |journal_dc| make_journal_dc(journal_dc) }
670
1230
  end
671
1231
 
672
1232
  def make_journal_dc(journal_dc)
673
- { "debit" => make_journal_dc_oneside(journal_dc[:debit]),
674
- "credit" => make_journal_dc_oneside(journal_dc[:credit]),
675
- "dept_code" => journal_dc[:dept_code],
676
- "memo" => journal_dc[:memo] }
1233
+ {
1234
+ 'debit' => make_journal_dc_oneside(journal_dc[:debit]),
1235
+ 'credit' => make_journal_dc_oneside(journal_dc[:credit]),
1236
+ 'dept_code' => journal_dc[:dept_code],
1237
+ 'memo' => journal_dc[:memo],
1238
+ 'tag_list' => journal_dc[:tag_list]
1239
+ }
677
1240
  end
678
1241
 
679
1242
  def make_journal_dc_oneside(side)
680
1243
  return nil if side.nil?
681
- { "account_code" => side[:account_code].to_s,
682
- "price_including_tax" => side[:price_including_tax],
683
- "tax_type" => side[:tax_type],
684
- "sales_tax" => side[:sales_tax]
1244
+
1245
+ {
1246
+ 'account_code' => side[:account_code].to_s,
1247
+ 'price_including_tax' => side[:price_including_tax],
1248
+ 'tax_type' => side[:tax_type],
1249
+ 'sales_tax' => side[:sales_tax]
685
1250
  }
686
1251
  end
687
1252
  end