tsubaiso-sdk 1.2.1 → 1.2.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) 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 +1511 -384
  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_corporate_master.rb +27 -0
  18. data/test/tsubaiso_sdk/test_customer.rb +71 -0
  19. data/test/tsubaiso_sdk/test_dept.rb +66 -0
  20. data/test/tsubaiso_sdk/test_fixed_assets.rb +18 -0
  21. data/test/tsubaiso_sdk/test_journal.rb +53 -0
  22. data/test/tsubaiso_sdk/test_journal_distribution.rb +29 -0
  23. data/test/tsubaiso_sdk/test_manual_journal.rb +84 -0
  24. data/test/tsubaiso_sdk/test_payrolles.rb +26 -0
  25. data/test/tsubaiso_sdk/test_petty_cash_reason_master.rb +72 -0
  26. data/test/tsubaiso_sdk/test_physical_inventory_master.rb +84 -0
  27. data/test/tsubaiso_sdk/test_purchase.rb +120 -0
  28. data/test/tsubaiso_sdk/test_reimbursement_reason_master.rb +27 -0
  29. data/test/tsubaiso_sdk/test_reimbursements.rb +90 -0
  30. data/test/tsubaiso_sdk/test_reimbursements_transactions.rb +75 -0
  31. data/test/tsubaiso_sdk/test_sale.rb +125 -0
  32. data/test/tsubaiso_sdk/test_scheduled_dates.rb +16 -0
  33. data/test/tsubaiso_sdk/test_staff.rb +26 -0
  34. data/test/tsubaiso_sdk/test_staff_data.rb +71 -0
  35. data/test/tsubaiso_sdk/test_staff_datum_master.rb +37 -0
  36. data/test/tsubaiso_sdk/test_tag.rb +53 -0
  37. data/test/tsubaiso_sdk/test_tax_master.rb +25 -0
  38. metadata +37 -6
  39. data/test/test_tsubaiso_sdk.rb +0 -807
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: c0bbf2f5710b7de3360f142a25fdcd8eb59e9a7f
4
- data.tar.gz: eab335d57909cb4e2d1e1f5aad428693198d263f
2
+ SHA256:
3
+ metadata.gz: 02ffb9f6d4a5da8eefd188c1d7ca232c73d5a42a2ea237201b74acac5cce2745
4
+ data.tar.gz: 20ff873540ceea55967a9c3c18545f9d161af350b8c64b3b75441e6f32fa70c0
5
5
  SHA512:
6
- metadata.gz: 6b318b0cc37320a8490194ee268c37dc7b389528b733f5bd0cbd77648bfd37b0d8e45c304afc1007be0a8351082241f04983d628fe1bab042aa3a06e130827ff
7
- data.tar.gz: 8171a64299a6050899bd91327f4b12b3f6dd10a3dc47734ec2e60a484cadc220e71bf14d27bec63e620b3696127a1444ef723d4718b046167ffac165b062dc6c
6
+ metadata.gz: a9f8e72a3412f54b8a6d9a08425ea79d13e0f2d87379235a05675db979f877215c9a002912d57c699541cdf4581d9a04735f38f275e538740f09e760adfb7891
7
+ data.tar.gz: '0958aacab1ee600c7ab06701c6dc89d1677b3a808668d34d8b3a4a078c096c36881a7b89c94301e7a9170e950569d8e3303a567aa41f308f16a51b79b69d3113'
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,362 +1,715 @@
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_id" => options[:customer_master_id],
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_codes" => options[:account_codes],
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)
165
352
  end
166
353
 
167
354
  # Alpha version now.
168
355
  def list_fixed_assets
169
- params = { "format" => "json" }
170
- uri = URI.parse(@base_url + "/fixed_assets/list/")
171
- api_request(uri, "GET", params)
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)
172
375
  end
173
376
 
174
377
  def show_sale(voucher)
175
- sale_id = voucher.scan(/\d/).join("")
176
- params = { "format" => "json" }
378
+ sale_id = voucher.scan(/\d/).join('')
379
+ params = { 'format' => 'json' }
177
380
  uri = URI.parse(@base_url + "/ar/show/#{sale_id}")
178
- 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)
179
388
  end
180
389
 
181
390
  def show_purchase(voucher)
182
- purchase_id = voucher.scan(/\d/).join("")
183
- params = { "format" => "json" }
391
+ purchase_id = voucher.scan(/\d/).join('')
392
+ params = { 'format' => 'json' }
184
393
  uri = URI.parse(@base_url + "/ap_payments/show/#{purchase_id}")
185
- api_request(uri, "GET", params)
394
+ api_request(uri, 'GET', params)
186
395
  end
187
396
 
188
397
  def show_customer(customer_id)
189
398
  customer_id = customer_id.to_i
190
- params = { "format" => "json" }
399
+ params = { 'format' => 'json' }
191
400
  uri = URI.parse(@base_url + "/customer_masters/show/#{customer_id}")
192
- 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)
193
411
  end
194
412
 
195
413
  def show_staff(staff_id)
196
414
  staff_id = staff_id.to_i
197
- params = { "format" => "json" }
415
+ params = { 'format' => 'json' }
198
416
  uri = URI.parse(@base_url + "/staffs/show/#{staff_id}")
199
- api_request(uri, "GET", params)
417
+ api_request(uri, 'GET', params)
200
418
  end
201
419
 
202
420
  def show_staff_data(options)
203
421
  if options.is_a?(Hash)
204
- params = { "staff_id" => options[:staff_id],
205
- "code" => options[:code],
206
- "time" => options[:time],
207
- "format" => "json"
208
- }
209
- 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]
210
429
  else
211
- params = { "format" => "json" }
212
- id = options
430
+ params = { 'format' => 'json' }
431
+ id = "/" + options.to_s
213
432
  end
214
- uri = URI.parse(@base_url + "/staff_data/show/#{id}")
215
- api_request(uri, "GET", params)
433
+ uri = URI.parse(@base_url + "/staff_data/show#{id}")
434
+ api_request(uri, 'GET', params)
216
435
  end
217
436
 
218
437
  def show_staff_datum_master(options)
219
438
  if options.is_a?(Hash)
220
- params = { "code" => options[:code],
221
- "format" => "json"
222
- }
223
- id = options[:id]
439
+ params = {
440
+ 'code' => options[:code],
441
+ 'format' => 'json'
442
+ }
224
443
  else
225
- params = { "format" => "json" }
226
- id = options
444
+ params = { 'format' => 'json' }
445
+ id = '/' + options.to_s
227
446
  end
228
- uri = URI.parse(@base_url + "/staff_datum_masters/show/#{id}")
229
- api_request(uri, "GET", params)
447
+ uri = URI.parse(@base_url + "/staff_datum_masters/show#{id}")
448
+ api_request(uri, 'GET', params)
230
449
  end
231
450
 
232
451
  def show_manual_journal(manual_journal_id)
233
- params = { "format" => "json" }
452
+ params = { 'format' => 'json' }
234
453
  uri = URI.parse(@base_url + "/manual_journals/show/#{manual_journal_id}")
235
- api_request(uri, "GET", params)
454
+ api_request(uri, 'GET', params)
236
455
  end
237
456
 
238
457
  def show_journal(journal_id)
239
- params = { "format" => "json" }
458
+ params = { 'format' => 'json' }
240
459
  uri = URI.parse(@base_url + "/journals/show/#{journal_id}")
241
- api_request(uri, "GET", params)
460
+ api_request(uri, 'GET', params)
242
461
  end
243
462
 
244
463
  def show_reimbursement(reimbursement_id)
245
- params = { "format" => "json" }
464
+ params = { 'format' => 'json' }
246
465
  uri = URI.parse(@base_url + "/reimbursements/show/#{reimbursement_id}")
247
- api_request(uri, "GET", params)
466
+ api_request(uri, 'GET', params)
248
467
  end
249
468
 
250
469
  def show_reimbursement_transaction(reimbursement_transaction_id)
251
- params = { "format" => "json" }
470
+ params = { 'format' => 'json' }
252
471
  uri = URI.parse(@base_url + "/reimbursement_transactions/show/#{reimbursement_transaction_id}")
253
- api_request(uri, "GET", params)
472
+ api_request(uri, 'GET', params)
254
473
  end
255
474
 
256
475
  def show_reimbursement_reason_master(reimbursement_reason_master_id)
257
- params = { "format" => "json" }
476
+ params = { 'format' => 'json' }
258
477
  uri = URI.parse(@base_url + "/reimbursement_reason_masters/show/#{reimbursement_reason_master_id}")
259
- api_request(uri, "GET", params)
478
+ api_request(uri, 'GET', params)
260
479
  end
261
480
 
262
481
  def show_dept(dept_id)
263
- params = { "format" => "json" }
482
+ params = { 'format' => 'json' }
264
483
  uri = URI.parse(@base_url + "/depts/show/#{dept_id}")
265
- api_request(uri, "GET", params)
484
+ api_request(uri, 'GET', params)
266
485
  end
267
486
 
268
487
  def show_tag(tag_id)
269
- params = { "format" => "json" }
488
+ params = { 'format' => 'json' }
270
489
  uri = URI.parse(@base_url + "/tags/show/#{tag_id}")
271
- api_request(uri, "GET", params)
490
+ api_request(uri, 'GET', params)
272
491
  end
273
492
 
274
493
  def show_bonus(bonus_id)
275
- params = { "format" => "json" }
494
+ params = { 'format' => 'json' }
276
495
  uri = URI.parse(@base_url + "/bonuses/show/#{bonus_id}")
277
- api_request(uri, "GET", params)
496
+ api_request(uri, 'GET', params)
278
497
  end
279
498
 
280
499
  def show_payroll(payroll_id)
281
- params = { "format" => "json" }
500
+ params = { 'format' => 'json' }
282
501
  uri = URI.parse(@base_url + "/payrolls/show/#{payroll_id}")
283
- api_request(uri, "GET", params)
502
+ api_request(uri, 'GET', params)
284
503
  end
285
504
 
286
505
  def show_ar_reason_master(ar_reason_master_id)
287
- params = { "format" => "json" }
506
+ params = { 'format' => 'json' }
288
507
  uri = URI.parse(@base_url + "/ar_reason_masters/show/#{ar_reason_master_id}")
289
- api_request(uri, "GET", params)
508
+ api_request(uri, 'GET', params)
290
509
  end
291
510
 
292
511
  def show_ap_reason_master(ap_reason_master_id)
293
- params = { "format" => "json" }
512
+ params = { 'format' => 'json' }
294
513
  uri = URI.parse(@base_url + "/ap_reason_masters/show/#{ap_reason_master_id}")
295
- 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)
296
544
  end
297
545
 
298
546
  def create_customer(options)
299
- params = { "name" => options[:name],
300
- "name_kana" => options[:name_kana],
301
- "code" => options[:code],
302
- "tax_type_for_remittance_charge" => options[:tax_type_for_remittance_charge],
303
- "used_in_ar" => options[:used_in_ar],
304
- "used_in_ap" => options[:used_in_ap],
305
- "ar_account_code" => options[:ar_account_code],
306
- "ap_account_code" => options[:ap_account_code],
307
- "is_valid" => options[:is_valid],
308
- "format" => "json"
309
- }
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
+ 'corporate_mynumber',
595
+ 'pay_method',
596
+ ]
597
+ params = {}
598
+ params = create_parameters(available_keys.map{|x| x.to_sym},options)
599
+ params['format'] = 'json'
600
+
310
601
  uri = URI.parse(@base_url + '/customer_masters/create')
311
- api_request(uri, "POST", params)
602
+ api_request(uri, 'POST', params)
603
+ end
604
+
605
+ def create_bank_reason_masters(options)
606
+ params = {
607
+ 'sort_number' => options[:sort_number],
608
+ 'reason_code' => options[:reason_code],
609
+ 'reason_name' => options[:reason_name],
610
+ 'dc' => options[:dc],
611
+ 'is_valid' => options[:is_valid],
612
+ 'memo' => options[:memo],
613
+ 'account_code' => options[:account_code],
614
+ 'format' => 'json'
615
+ }
616
+ uri = URI.parse(@base_url + '/bank_reason_masters/create')
617
+ api_request(uri, 'POST', params)
312
618
  end
313
619
 
314
620
  def create_sale(options)
315
- params = { "price_including_tax" => options[:price_including_tax],
316
- "realization_timestamp" => options[:realization_timestamp],
317
- "customer_master_code" => options[:customer_master_code],
318
- "dept_code" => options[:dept_code],
319
- "reason_master_code" => options[:reason_master_code],
320
- "dc" => options[:dc],
321
- "memo" => options[:memo],
322
- "tax_code" => options[:tax_code],
323
- "sales_tax" => options[:sales_tax],
324
- "scheduled_memo" => options[:scheduled_memo],
325
- "scheduled_receive_timestamp" => options[:scheduled_receive_timestamp],
326
- "tag_list" => options[:tag_list],
327
- "data_partner" => options[:data_partner],
328
- "format" => "json"
329
- }
621
+ params = {
622
+ 'price_including_tax' => options[:price_including_tax],
623
+ 'realization_timestamp' => options[:realization_timestamp],
624
+ 'customer_master_code' => options[:customer_master_code],
625
+ 'dept_code' => options[:dept_code],
626
+ 'reason_master_code' => options[:reason_master_code],
627
+ 'dc' => options[:dc],
628
+ 'memo' => options[:memo],
629
+ 'tax_code' => options[:tax_code],
630
+ 'sales_tax' => options[:sales_tax],
631
+ 'scheduled_memo' => options[:scheduled_memo],
632
+ 'scheduled_receive_timestamp' => options[:scheduled_receive_timestamp],
633
+ 'tag_list' => options[:tag_list],
634
+ 'data_partner' => options[:data_partner],
635
+ 'format' => 'json'
636
+ }
330
637
  uri = URI.parse(@base_url + '/ar/create')
331
- api_request(uri, "POST", params)
638
+ api_request(uri, 'POST', params)
639
+ end
640
+
641
+ def find_or_create_sale(options)
642
+ params = {}
643
+ available_keys = [
644
+ 'price_including_tax',
645
+ 'realization_timestamp',
646
+ 'customer_master_code',
647
+ 'dept_code',
648
+ 'reason_master_code',
649
+ 'dc',
650
+ 'memo',
651
+ 'tax_code',
652
+ 'sales_tax',
653
+ 'scheduled_memo',
654
+ 'scheduled_receive_timestamp',
655
+ 'tag_list',
656
+ 'data_partner',
657
+ 'key'
658
+ ]
659
+ params = create_parameters(available_keys.map{|x| x.to_sym},options)
660
+ params['format'] = 'json'
661
+ uri = URI.parse(@base_url + '/ar/find_or_create')
662
+ api_request(uri, 'POST', params)
332
663
  end
333
664
 
334
665
  def create_purchase(options)
335
- params = { "price_including_tax" => options[:price_including_tax],
336
- "accrual_timestamp" => options[:accrual_timestamp],
337
- "customer_master_code" => options[:customer_master_code],
338
- "dept_code" => options[:dept_code],
339
- "reason_master_code" => options[:reason_master_code],
340
- "dc" => options[:dc],
341
- "memo" => options[:memo],
342
- "tax_code" => options[:tax_code],
343
- "port_type" => options[:port_type],
344
- "tag_list" => options[:tag_list],
345
- "data_partner" => options[:data_partner],
346
- "format" => "json"
347
- }
666
+ params = {
667
+ 'price_including_tax' => options[:price_including_tax],
668
+ 'accrual_timestamp' => options[:accrual_timestamp],
669
+ 'customer_master_code' => options[:customer_master_code],
670
+ 'dept_code' => options[:dept_code],
671
+ 'reason_master_code' => options[:reason_master_code],
672
+ 'dc' => options[:dc],
673
+ 'memo' => options[:memo],
674
+ 'tax_code' => options[:tax_code],
675
+ 'port_type' => options[:port_type],
676
+ 'tag_list' => options[:tag_list],
677
+ 'data_partner' => options[:data_partner],
678
+ 'format' => 'json'
679
+ }
348
680
  uri = URI.parse(@base_url + '/ap_payments/create')
349
- api_request(uri, "POST", params)
681
+ api_request(uri, 'POST', params)
682
+ end
683
+
684
+ def find_or_create_purchase(options)
685
+ params = {
686
+ 'price_including_tax' => options[:price_including_tax],
687
+ 'accrual_timestamp' => options[:accrual_timestamp],
688
+ 'customer_master_code' => options[:customer_master_code],
689
+ 'dept_code' => options[:dept_code],
690
+ 'reason_master_code' => options[:reason_master_code],
691
+ 'dc' => options[:dc],
692
+ 'memo' => options[:memo],
693
+ 'tax_code' => options[:tax_code],
694
+ 'port_type' => options[:port_type],
695
+ 'tag_list' => options[:tag_list],
696
+ 'data_partner' => options[:data_partner],
697
+ 'key' => options[:key],
698
+ 'format' => 'json'
699
+ }
700
+ uri = URI.parse(@base_url + '/ap_payments/find_or_create')
701
+ api_request(uri, 'POST', params)
350
702
  end
351
703
 
352
704
  def create_staff_data(options)
353
- params = { "staff_id" => options[:staff_id],
354
- "code" => options[:code],
355
- "memo" => options[:memo],
356
- "value" => options[:value],
357
- "start_timestamp" => options[:start_timestamp],
358
- "format" => "json"
359
- }
705
+ params = {
706
+ 'staff_id' => options[:staff_id],
707
+ 'code' => options[:code],
708
+ 'memo' => options[:memo],
709
+ 'value' => options[:value],
710
+ 'start_timestamp' => options[:start_timestamp],
711
+ 'format' => 'json'
712
+ }
360
713
 
361
714
  if options[:finish_timestamp]
362
715
  params[:finish_timestamp] = options[:finish_timestamp]
@@ -365,132 +718,307 @@ class TsubaisoSDK
365
718
  end
366
719
 
367
720
  uri = URI.parse(@base_url + '/staff_data/create')
368
- api_request(uri, "POST", params)
721
+ api_request(uri, 'POST', params)
369
722
  end
370
723
 
371
724
  def create_manual_journal(options)
372
- params = { "journal_timestamp" => options[:journal_timestamp],
373
- "journal_dcs" => make_journal_dcs(options[:journal_dcs]),
374
- "data_partner" => options[:data_partner],
375
- "format" => "json" }
725
+ params = {
726
+ 'journal_timestamp' => options[:journal_timestamp],
727
+ 'journal_dcs' => make_journal_dcs(options[:journal_dcs]),
728
+ 'data_partner' => options[:data_partner],
729
+ 'format' => 'json'
730
+ }
376
731
 
377
732
  uri = URI.parse(@base_url + '/manual_journals/create')
378
- api_request(uri, "POST", params)
733
+ api_request(uri, 'POST', params)
734
+ end
735
+
736
+ def create_corp(options)
737
+ params = {
738
+ 'format' => 'json',
739
+ 'stage' => options[:stage],
740
+ 'corporate_master_type' => options[:corporate_master_type],
741
+ 'email_to' => options[:email_to],
742
+ 'name' => options[:name],
743
+ 'freeze_login' => options[:freeze_login]
744
+ }
745
+ uri = URI.parse(@base_url + '/corporate_masters/create')
746
+ api_request(uri, 'POST', params)
747
+ end
748
+
749
+ def create_user(options)
750
+ params = {
751
+ 'format' => 'json'
752
+ }
753
+ uri = URI.parse(@base_url + '/users/create')
754
+ api_request(uri, 'POST', params)
755
+ end
756
+
757
+ def update_user(options)
758
+ params = {
759
+ 'format' => 'json',
760
+ 'id' => options[:id],
761
+ 'email' => options[:email],
762
+ 'firstname' => options[:firstname],
763
+ 'lastname' => options[:lastname],
764
+ 'permitted_address' => options[:permitted_address],
765
+ 'dept_codes' => options[:dept_codes],
766
+ 'lang' => options[:lang],
767
+ 'inuse' => options[:inuse],
768
+ }
769
+ uri = URI.parse(@base_url + '/users/update')
770
+ api_request(uri, 'POST', params)
771
+ end
772
+
773
+ def add_domains(options)
774
+ params = {
775
+ 'format' => 'json',
776
+ 'id' => options[:id],
777
+ 'domains' => options[:domains]
778
+ }
779
+ uri = URI.parse(@base_url + '/users/add_domains')
780
+ api_request(uri, 'POST', params)
781
+ end
782
+
783
+ def create_fiscal_master(options)
784
+ params = {
785
+ 'format' => 'json',
786
+ 'term' => options[:term],
787
+ 'start_timestamp' => options[:start_timestamp],
788
+ 'finish_timestamp' => options[:finish_timestamp],
789
+ 'launch_timestamp' => options[:launch_timestamp],
790
+ 'status' => options[:status],
791
+ 'sales_tax_system' => options[:sales_tax_system]
792
+ }
793
+ uri = URI.parse(@base_url + '/fiscal_masters/create')
794
+ api_request(uri, 'POST', params)
379
795
  end
380
796
 
381
797
  def create_reimbursement(options)
382
- params = { "format" => "json",
383
- "applicant" => options[:applicant],
384
- "application_term" => options[:application_term],
385
- "staff_code" => options[:staff_code],
386
- "dept_code" => options[:dept_code],
387
- "memo" => options[:memo]
388
- }
389
- uri = URI.parse(@base_url + "/reimbursements/create/")
390
- api_request(uri, "POST", params)
798
+ params = {
799
+ 'format' => 'json',
800
+ 'applicant' => options[:applicant],
801
+ 'application_term' => options[:application_term],
802
+ 'staff_code' => options[:staff_code],
803
+ 'dept_code' => options[:dept_code],
804
+ 'memo' => options[:memo],
805
+ 'applicant_staff_code' => options[:applicant_staff_code],
806
+ 'transactions' => options[:transactions],
807
+ 'pay_date' => options[:pay_date]
808
+ }
809
+ uri = URI.parse(@base_url + '/reimbursements/create')
810
+ api_request(uri, 'POST', params)
391
811
  end
392
812
 
393
813
  def create_reimbursement_transaction(options)
394
- params = { "format" => "json",
395
- "reimbursement_id" => options[:reimbursement_id].to_i,
396
- "transaction_timestamp" => options[:transaction_timestamp],
397
- "price_value" => options[:price_value],
398
- "reason_code" => options[:reason_code],
399
- "port_type" => options[:port_type],
400
- "dc" => options[:dc],
401
- "brief" => options[:brief],
402
- "memo" => options[:memo],
403
- "tag_list" => options[:tag_list],
404
- "tax_type" => options[:tax_type],
405
- "data_partner" => options[:data_partner]
406
- }
407
- uri = URI.parse(@base_url + '/reimbursement_transactions/create/')
408
- api_request(uri, "POST", params)
814
+ params = {
815
+ 'format' => 'json',
816
+ 'reimbursement_id' => options[:reimbursement_id].to_i,
817
+ 'transaction_timestamp' => options[:transaction_timestamp],
818
+ 'price_value' => options[:price_value],
819
+ 'reason_code' => options[:reason_code],
820
+ 'port_type' => options[:port_type],
821
+ 'dc' => options[:dc],
822
+ 'brief' => options[:brief],
823
+ 'memo' => options[:memo],
824
+ 'tag_list' => options[:tag_list],
825
+ 'tax_type' => options[:tax_type],
826
+ 'data_partner' => options[:data_partner]
827
+ }
828
+ uri = URI.parse(@base_url + '/reimbursement_transactions/create')
829
+ api_request(uri, 'POST', params)
409
830
  end
410
831
 
411
832
  def create_dept(options)
412
- params = { "format" => "json",
413
- "sort_no" => options[:sort_no],
414
- "code" => options[:code],
415
- "name" => options[:name],
416
- "name_abbr" => options[:name_abbr],
417
- "color" => options[:color],
418
- "memo" => options[:memo],
419
- "start_date" => options[:start_date],
420
- "finish_date" => options[:finish_date]
421
- }
422
- uri = URI.parse(@base_url + '/depts/create/')
423
- api_request(uri, "POST", params)
833
+ params = {
834
+ 'format' => 'json',
835
+ 'sort_no' => options[:sort_no],
836
+ 'code' => options[:code],
837
+ 'name' => options[:name],
838
+ 'name_abbr' => options[:name_abbr],
839
+ 'color' => options[:color],
840
+ 'memo' => options[:memo],
841
+ 'start_date' => options[:start_date],
842
+ 'finish_date' => options[:finish_date]
843
+ }
844
+ uri = URI.parse(@base_url + '/depts/create')
845
+ api_request(uri, 'POST', params)
424
846
  end
425
847
 
426
848
  def create_tag(options)
427
- params = { "format" => "json",
428
- "code" => options[:code],
429
- "name" => options[:name],
430
- "sort_no" => options[:sort_no],
431
- "tag_group_code" => options[:tag_group_code],
432
- "start_ymd" => options[:start_ymd],
433
- "finish_ymd" => options[:finish_ymd]
434
- }
435
- uri = URI.parse(@base_url + '/tags/create/')
436
- api_request(uri, "POST", params)
849
+ params = {
850
+ 'format' => 'json',
851
+ 'code' => options[:code],
852
+ 'name' => options[:name],
853
+ 'sort_no' => options[:sort_no],
854
+ 'tag_group_code' => options[:tag_group_code],
855
+ 'start_ymd' => options[:start_ymd],
856
+ 'finish_ymd' => options[:finish_ymd]
857
+ }
858
+ uri = URI.parse(@base_url + '/tags/create')
859
+ api_request(uri, 'POST', params)
437
860
  end
438
861
 
439
862
  def create_journal_distribution(options)
440
- params = { "format" => "json",
441
- "search_conditions" => {
442
- "start_date" => options[:start_date],
443
- "finish_date" => options[:finish_date],
444
- "account_codes" => options[:account_codes],
445
- "dept_code" => options[:dept_code],
446
- "tag_list" => options[:tag_list]
447
- },
448
- "title" => options[:title],
449
- "target_timestamp" => options[:target_timestamp],
450
- "memo" => options[:memo],
451
- "criteria" => options[:criteria],
452
- "distribution_conditions" => options[:distribution_conditions]
453
- }
454
- uri = URI.parse(@base_url + '/journal_distributions/create/')
455
- api_request(uri, "POST", params)
863
+ params = {
864
+ 'format' => 'json',
865
+ 'search_conditions' => {
866
+ 'start_date' => options[:start_date],
867
+ 'finish_date' => options[:finish_date],
868
+ 'account_codes' => options[:account_codes],
869
+ 'dept_code' => options[:dept_code],
870
+ 'tag_list' => options[:tag_list]
871
+ },
872
+ 'title' => options[:title],
873
+ 'target_timestamp' => options[:target_timestamp],
874
+ 'memo' => options[:memo],
875
+ 'criteria' => options[:criteria],
876
+ 'distribution_conditions' => options[:distribution_conditions]
877
+ }
878
+ uri = URI.parse(@base_url + '/journal_distributions/create')
879
+ api_request(uri, 'POST', params)
880
+ end
881
+
882
+ def create_petty_cash_reason_master(options)
883
+ params = {
884
+ 'format' => 'json',
885
+ 'reason_code' => options[:reason_code],
886
+ 'reason_name' => options[:reason_name],
887
+ 'dc' => options[:dc],
888
+ 'account_code' => options[:account_code],
889
+ 'is_valid' => options[:is_valid],
890
+ 'memo' => options[:memo],
891
+ 'port_type' => options[:port_type],
892
+ 'sort_number' => options[:sort_number]
893
+ }
894
+ uri = URI.parse(@base_url + '/petty_cash_reason_masters/create')
895
+ api_request(uri, 'POST', params)
896
+ end
897
+
898
+ def create_physical_inventory_masters(options)
899
+ params = {}
900
+ candidate_keys = [:name, :start_ymd, :finish_ymd, :memo, :tag_list, :dept_code]
901
+ params = create_parameters(candidate_keys,options)
902
+ params['format'] = 'json'
903
+
904
+ uri = URI.parse(@base_url + '/physical_inventory_masters/create')
905
+ api_request(uri, 'POST', params)
456
906
  end
457
907
 
458
908
  def update_sale(options)
459
- params = options.merge({"format" => "json"})
909
+ available_keys = [
910
+ 'id',
911
+ 'price_including_tax',
912
+ 'realization_timestamp',
913
+ 'customer_master_code',
914
+ 'dept_code',
915
+ 'reason_master_code',
916
+ 'dc',
917
+ 'memo',
918
+ 'tax_code',
919
+ 'sales_tax',
920
+ 'scheduled_memo',
921
+ 'scheduled_receive_timestamp',
922
+ 'tag_list',
923
+ 'data_partner'
924
+ ]
925
+ params = {}
926
+ params = create_parameters(available_keys.map{|x| x.to_sym},options)
927
+ params['format'] = 'json'
460
928
  uri = URI.parse(@base_url + "/ar/update/#{options[:id]}")
461
- api_request(uri, "POST", params)
929
+ api_request(uri, 'POST', params)
462
930
  end
463
931
 
464
932
  def update_purchase(options)
465
- params = options.merge({"format" => "json"})
933
+ params = options.merge({ 'format' => 'json' })
466
934
 
467
935
  uri = URI.parse(@base_url + "/ap_payments/update/#{options[:id]}")
468
- api_request(uri, "POST", params)
936
+ api_request(uri, 'POST', params)
469
937
  end
470
938
 
471
939
  def update_customer(options)
472
- params = { "name" => options[:name],
473
- "name_kana" => options[:name_kana],
474
- "code" => options[:code],
475
- "tax_type_for_remittance_charge" => options[:tax_type_for_remittance_charge],
476
- "used_in_ar" => options[:used_in_ar],
477
- "used_in_ap" => options[:used_in_ap],
478
- "ar_account_code" => options[:ar_account_code],
479
- "ap_account_code" => options[:ap_account_code],
480
- "is_valid" => options[:is_valid],
481
- "format" => "json"
482
- }
940
+ available_keys = [
941
+ 'accountant_email',
942
+ 'address',
943
+ 'administrator_name',
944
+ 'ap_account_code',
945
+ 'ap_reason_selections',
946
+ 'ar_account_code',
947
+ 'ar_reason_selections',
948
+ 'bank_account_number',
949
+ 'bank_branch_code',
950
+ 'bank_branch_name',
951
+ 'bank_code',
952
+ 'bank_course',
953
+ 'bank_name',
954
+ 'bank_nominee',
955
+ 'bill_detail_round_rule',
956
+ 'code',
957
+ 'dept_code',
958
+ 'email',
959
+ 'fax',
960
+ 'finish_timestamp',
961
+ 'foreign_currency',
962
+ 'is_valid',
963
+ 'locale',
964
+ 'name',
965
+ 'name_kana',
966
+ 'need_tax_deductions',
967
+ 'pay_closing_schedule',
968
+ 'pay_interface_id',
969
+ 'pay_sight',
970
+ 'receive_closing_schedule',
971
+ 'receive_interface_id',
972
+ 'receive_sight',
973
+ 'sender_name',
974
+ 'sort_no',
975
+ 'start_timestamp',
976
+ 'tax_type_for_remittance_charge',
977
+ 'tel',
978
+ 'memo',
979
+ 'used_in_ap',
980
+ 'used_in_ar',
981
+ 'withholding_tax_base',
982
+ 'withholding_tax_segment',
983
+ 'zip',
984
+ 'pay_date_if_holiday',
985
+ 'receive_date_if_holiday',
986
+ 'data_partner'
987
+ ]
988
+ params = {}
989
+ params = create_parameters(available_keys.map{|x| x.to_sym},options)
990
+ params['format'] = 'json'
483
991
 
484
992
  uri = URI.parse(@base_url + "/customer_masters/update/#{options[:id]}")
485
- api_request(uri, "POST", params)
486
- end
487
-
488
- def update_staff_data(options)
489
- params = { "memo" => options[:memo],
490
- "value" => options[:value],
491
- "start_timestamp" => options[:start_timestamp],
492
- "format" => "json"
493
- }
993
+ api_request(uri, 'POST', params)
994
+ end
995
+
996
+ def update_bank_reason_masters(options)
997
+ params = {}
998
+ candidate_keys = [
999
+ :sort_number,
1000
+ :reason_code,
1001
+ :reason_name,
1002
+ :dc,
1003
+ :is_valid,
1004
+ :memo,
1005
+ :account_code
1006
+ ]
1007
+
1008
+ params = create_parameters(candidate_keys,options)
1009
+ params['format'] = 'json'
1010
+ uri = URI.parse(@base_url + '/bank_reason_masters/update/' + options[:id].to_s)
1011
+ api_request(uri, "POST",params)
1012
+ end
1013
+
1014
+ def update_staff_data(staff_data_id, options)
1015
+ params = {
1016
+ 'code' => options[:code],
1017
+ 'memo' => options[:memo],
1018
+ 'value' => options[:value],
1019
+ 'start_timestamp' => options[:start_timestamp],
1020
+ 'format' => 'json'
1021
+ }
494
1022
 
495
1023
  if options[:finish_timestamp]
496
1024
  params[:finish_timestamp] = options[:finish_timestamp]
@@ -498,168 +1026,761 @@ class TsubaisoSDK
498
1026
  params[:no_finish_timestamp] = options[:no_finish_timestamp]
499
1027
  end
500
1028
 
501
- uri = URI.parse(@base_url + "/staff_data/update/#{options[:id]}")
502
- api_request(uri, "POST", params)
1029
+ uri = URI.parse(@base_url + "/staff_data/update/#{staff_data_id}")
1030
+ api_request(uri, 'POST', params)
503
1031
  end
504
1032
 
505
1033
  def update_manual_journal(options)
506
- params = { "journal_timestamp" => options[:journal_timestamp],
507
- "journal_dcs" => make_journal_dcs(options[:journal_dcs]),
508
- "data_partner" => options[:data_partner],
509
- "format" => "json" }
1034
+ params = {
1035
+ 'journal_timestamp' => options[:journal_timestamp],
1036
+ 'journal_dcs' => make_journal_dcs(options[:journal_dcs]),
1037
+ 'data_partner' => options[:data_partner],
1038
+ 'format' => 'json'
1039
+ }
510
1040
 
511
1041
  uri = URI.parse(@base_url + "/manual_journals/update/#{options[:id]}")
512
- api_request(uri, "POST", params)
1042
+ api_request(uri, 'POST', params)
513
1043
  end
514
1044
 
515
1045
  def update_reimbursement(reimbursement_id, options)
516
- params = { "format" => "json",
517
- "applicant" => options[:applicant],
518
- "application_term" => options[:application_term],
519
- "staff_code" => options[:staff_code],
520
- "dept_code" => options[:dept_code],
521
- "memo" => options[:memo]
522
- }
1046
+ params = {}
1047
+ candidate_keys = [
1048
+ :applicant,
1049
+ :application_term,
1050
+ :staff_code,
1051
+ :dept_code,
1052
+ :memo,
1053
+ ]
1054
+ params = create_parameters(candidate_keys,options)
1055
+ params['format'] = 'json'
523
1056
  uri = URI.parse(@base_url + "/reimbursements/update/#{reimbursement_id}")
524
- api_request(uri, "POST", params)
1057
+ api_request(uri, 'POST', params)
525
1058
  end
526
1059
 
527
1060
  def update_reimbursement_transaction(options)
528
- params = { "format" => "json",
529
- "port_type" => options[:port_type],
530
- "transaction_timestamp" => options[:transaction_timestamp],
531
- "price_value" => options[:price_value],
532
- "dc" => options[:dc],
533
- "reason_code" => options[:reason_code],
534
- "brief" => options[:brief],
535
- "memo" => options[:memo],
536
- "tag_list" => options[:tag_list],
537
- "tax_type" => options[:tax_type],
538
- "data_partner" => options[:data_partner]
539
- }
1061
+ params = {}
1062
+ candidate_keys = [
1063
+ :port_type,
1064
+ :transaction_timestamp,
1065
+ :price_value,
1066
+ :bc,
1067
+ :reason_code,
1068
+ :brief,
1069
+ :memo,
1070
+ :tag_list,
1071
+ :tax_type,
1072
+ :data_partner
1073
+ ]
1074
+ params = create_parameters(candidate_keys,options)
1075
+ params['format'] = 'json'
1076
+
540
1077
  uri = URI.parse(@base_url + "/reimbursement_transactions/update/#{options[:id]}")
541
- api_request(uri, "POST", params)
1078
+ api_request(uri, 'POST', params)
542
1079
  end
543
1080
 
544
1081
  def update_dept(dept_id, options)
545
- params = { "format" => "json",
546
- "sort_no" => options[:sort_no],
547
- "code" => options[:code],
548
- "name" => options[:name],
549
- "name_abbr" => options[:name_abbr],
550
- "color" => options[:color],
551
- "memo" => options[:memo],
552
- "start_date" => options[:start_date],
553
- "finish_date" => options[:finish_date]
554
- }
1082
+ params = {}
1083
+ candidate_keys = [
1084
+ :sort_no,
1085
+ :code,
1086
+ :name,
1087
+ :memo,
1088
+ :name_abbr,
1089
+ :color,
1090
+ :start_date,
1091
+ :finish_date
1092
+ ]
1093
+ params = create_parameters(candidate_keys,options)
1094
+ params['format'] = 'json'
555
1095
  uri = URI.parse(@base_url + "/depts/update/#{dept_id}")
556
- api_request(uri, "POST", params)
1096
+ api_request(uri, 'POST', params)
557
1097
  end
558
1098
 
559
1099
  def update_tag(tag_id, options)
560
- params = { "format" => "json",
561
- "code" => options[:code],
562
- "name" => options[:name],
563
- "sort_no" => options[:sort_no],
564
- "tag_group_code" => options[:tag_group_code],
565
- "start_ymd" => options[:start_ymd],
566
- "finish_ymd" => options[:finish_ymd]
567
- }
1100
+ params = {}
1101
+ candidate_keys = [
1102
+ :code,
1103
+ :name,
1104
+ :sort_no,
1105
+ :tagg_group_code,
1106
+ :start_ymd,
1107
+ :finish_ymd
1108
+ ]
1109
+ params = create_parameters(candidate_keys,options)
1110
+ params['format'] = 'json'
568
1111
  uri = URI.parse(@base_url + "/tags/update/#{tag_id}")
569
- api_request(uri, "POST", params)
1112
+ api_request(uri, 'POST', params)
1113
+ end
1114
+
1115
+ def update_petty_cash_reason_master(petty_cash_reason_master_id, options)
1116
+ params = {}
1117
+ candidate_keys = [
1118
+ :reason_code,
1119
+ :reason_name,
1120
+ :dc,
1121
+ :account_code,
1122
+ :is_valid,
1123
+ :memo,
1124
+ :port_type,
1125
+ :sort_number
1126
+ ]
1127
+ params = create_parameters(candidate_keys,options)
1128
+ params['format'] = 'json'
1129
+ uri = URI.parse(@base_url + "/petty_cash_reason_masters/update/#{petty_cash_reason_master_id}")
1130
+ api_request(uri, 'POST', params)
1131
+ end
1132
+
1133
+ def update_physical_inventory_masters(options)
1134
+ params = {}
1135
+ candidate_keys = [:name, :start_ymd, :finish_ymd, :memo]
1136
+ params = create_parameters(candidate_keys,options)
1137
+ params['format'] = 'json'
1138
+
1139
+ uri = URI.parse(@base_url + "/physical_inventory_masters/update/#{options[:id]}")
1140
+ api_request(uri, 'POST', params)
570
1141
  end
571
1142
 
572
1143
  def destroy_sale(voucher)
573
- sale_id = voucher.scan(/\d/).join("")
574
- params = { "format" => "json" }
1144
+ sale_id = voucher.scan(/\d/).join('')
1145
+ params = { 'format' => 'json' }
575
1146
  uri = URI.parse(@base_url + "/ar/destroy/#{sale_id}")
576
- api_request(uri, "POST", params)
1147
+ api_request(uri, 'POST', params)
1148
+ end
1149
+
1150
+ def destroy_bank_reason_masters(destroy_id)
1151
+ params = {'format' => 'json'}
1152
+ uri = URI.parse(@base_url + '/bank_reason_masters/destroy/' + destroy_id.to_s)
1153
+ api_request(uri,"POST",params)
577
1154
  end
578
1155
 
579
1156
  def destroy_purchase(voucher)
580
- purchase_id = voucher.scan(/\d/).join("")
581
- params = { "format" => "json" }
1157
+ purchase_id = voucher.scan(/\d/).join('')
1158
+ params = { 'format' => 'json' }
582
1159
  uri = URI.parse(@base_url + "/ap/destroy/#{purchase_id}")
583
- api_request(uri, "POST", params)
1160
+ api_request(uri, 'POST', params)
584
1161
  end
585
1162
 
586
1163
  def destroy_customer(customer_id)
587
- params = { "format" => "json" }
1164
+ params = { 'format' => 'json' }
588
1165
  uri = URI.parse(@base_url + "/customer_masters/destroy/#{customer_id}")
589
- api_request(uri, "POST", params)
1166
+ api_request(uri, 'POST', params)
590
1167
  end
591
1168
 
592
1169
  def destroy_staff_data(staff_data_id)
593
- params = { "format" => "json" }
1170
+ params = { 'format' => 'json' }
594
1171
  uri = URI.parse(@base_url + "/staff_data/destroy/#{staff_data_id}")
595
- api_request(uri, "POST", params)
1172
+ api_request(uri, 'POST', params)
596
1173
  end
597
1174
 
598
1175
  def destroy_manual_journal(manual_journal_id)
599
- params = { "format" => "json" }
1176
+ params = { 'format' => 'json' }
600
1177
  uri = URI.parse(@base_url + "/manual_journals/destroy/#{manual_journal_id}")
601
- api_request(uri, "POST", params)
1178
+ api_request(uri, 'POST', params)
602
1179
  end
603
1180
 
604
1181
  def destroy_reimbursement(reimbursement_id)
605
- params = { "format" => "json" }
1182
+ params = { 'format' => 'json' }
606
1183
  uri = URI.parse(@base_url + "/reimbursements/destroy/#{reimbursement_id}")
607
- api_request(uri, "POST", params)
1184
+ api_request(uri, 'POST', params)
608
1185
  end
609
1186
 
610
1187
  def destroy_reimbursement_transaction(reimbursement_transaction_id)
611
- params = { "format" => "json" }
1188
+ params = { 'format' => 'json' }
612
1189
  uri = URI.parse(@base_url + "/reimbursement_transactions/destroy/#{reimbursement_transaction_id}")
613
- api_request(uri, "POST", params)
1190
+ api_request(uri, 'POST', params)
614
1191
  end
615
1192
 
616
1193
  def destroy_dept(dept_id)
617
- params = { "format" => "json" }
1194
+ params = { 'format' => 'json' }
618
1195
  uri = URI.parse(@base_url + "/depts/destroy/#{dept_id}")
619
- api_request(uri, "POST", params)
1196
+ api_request(uri, 'POST', params)
620
1197
  end
621
1198
 
622
1199
  def destroy_tag(tag_id)
623
- params = { "format" => "json" }
1200
+ params = { 'format' => 'json' }
624
1201
  uri = URI.parse(@base_url + "/tags/destroy/#{tag_id}")
625
- api_request(uri, "POST", params)
1202
+ api_request(uri, 'POST', params)
626
1203
  end
627
1204
 
628
1205
  def destroy_journal_distribution(journal_distribution_id)
629
- params = { "format" => "json" }
1206
+ params = { 'format' => 'json' }
630
1207
  uri = URI.parse(@base_url + "/journal_distributions/destroy/#{journal_distribution_id}")
631
- api_request(uri, "POST", params)
1208
+ api_request(uri, 'POST', params)
632
1209
  end
633
1210
 
634
1211
  # Alpha version now.
635
1212
  def destroy_fixed_asset(fixed_asset_id)
636
- params = { "format" => "json" }
1213
+ params = { 'format' => 'json' }
637
1214
  uri = URI.parse(@base_url + "/fixed_assets/destroy/#{fixed_asset_id}")
638
- api_request(uri, "POST", params)
1215
+ api_request(uri, 'POST', params)
1216
+ end
1217
+
1218
+ def scheduled_date(target_date, sight, closing_day, shift = 'before')
1219
+ params = { 'format' => 'json', target_date: target_date, sight: sight, closing_day: closing_day, shift: shift }
1220
+ uri = URI.parse(@base_url + '/scheduled_dates/calc')
1221
+ api_request(uri, 'GET', params)
1222
+ end
1223
+
1224
+ def destroy_petty_cash_reason_master(petty_cash_reason_master_id)
1225
+ params = { 'format' => 'json' }
1226
+ uri = URI.parse(@base_url + "/petty_cash_reason_masters/destroy/#{petty_cash_reason_master_id}")
1227
+ api_request(uri, 'POST', params)
1228
+ end
1229
+
1230
+ def destroy_physical_inventory_masters(physical_inventory_masters_id)
1231
+ params = { 'format' => 'json' }
1232
+ uri = URI.parse(@base_url + "/physical_inventory_masters/destroy/#{physical_inventory_masters_id}")
1233
+ api_request(uri, 'POST', params)
1234
+ end
1235
+
1236
+ def next_customer_code
1237
+ params = {
1238
+ 'format' => 'json'
1239
+ }
1240
+ uri = URI.parse(@base_url + '/customer_masters/next_code')
1241
+ api_request(uri, 'GET', params)
1242
+ end
1243
+
1244
+ def create_account_masters(options)
1245
+ candidate_keys = [
1246
+ :account_code,
1247
+ :account_name,
1248
+ :descid,
1249
+ :account_kana,
1250
+ :dc,
1251
+ :bspl,
1252
+ :sum_no,
1253
+ :brief,
1254
+ :inputtable,
1255
+ :use_in_balance,
1256
+ :status,
1257
+ ]
1258
+ params = create_parameters(candidate_keys,options)
1259
+ uri = URI.parse(@base_url + '/account_masters/create')
1260
+ api_request(uri, 'POST', params)
1261
+ end
1262
+
1263
+ def update_account_masters(options)
1264
+ candidate_keys = [
1265
+ :id,
1266
+ :account_code,
1267
+ :account_name,
1268
+ :account_kana,
1269
+ :descid,
1270
+ :brief,
1271
+ :sum_no,
1272
+ :dc,
1273
+ :bspl,
1274
+ :inputtable,
1275
+ :use_in_balance,
1276
+ :status,
1277
+ ]
1278
+ params = create_parameters(candidate_keys,options)
1279
+ uri = URI.parse(@base_url + '/account_masters/update')
1280
+ api_request(uri, 'POST', params)
1281
+ end
1282
+
1283
+ def list_account_masters
1284
+ params = {
1285
+ 'format' => 'json',
1286
+ }
1287
+ uri = URI.parse(@base_url + "/account_masters/list")
1288
+ api_request(uri, 'GET', params)
1289
+ end
1290
+
1291
+ def create_corporate_data(options)
1292
+ params = {
1293
+ 'format' => 'json',
1294
+ 'code' => options[:code],
1295
+ 'start_timestamp' => options[:start_timestamp],
1296
+ 'finish_timestamp' => options[:finish_timestamp],
1297
+ 'value' => options[:value],
1298
+ 'memo' => options[:memo]
1299
+ }
1300
+ uri = URI.parse(@base_url + '/corporate_data/create')
1301
+ api_request(uri, 'POST', params)
1302
+ end
1303
+
1304
+ def create_petty_cash_masters(options)
1305
+ params = {
1306
+ 'format' => 'json',
1307
+ 'name' => options[:name],
1308
+ 'start_ymd' => options[:start_ymd],
1309
+ 'finish_ymd' => options[:finish_ymd],
1310
+ 'memo' => options[:memo],
1311
+ }
1312
+ uri = URI.parse(@base_url + '/petty_cash_masters/create')
1313
+ api_request(uri, 'POST', params)
1314
+ end
1315
+
1316
+ def create_ar_reason_masters(options)
1317
+ params = {
1318
+ 'format' => 'json',
1319
+ 'reason_code' => options[:reason_code],
1320
+ 'reason_name' => options[:reason_name],
1321
+ 'dc' => options[:dc],
1322
+ 'account_code' => options[:account_code],
1323
+ 'sort_number' => options[:sort_number],
1324
+ 'is_valid' => options[:is_valid],
1325
+ 'memo' => options[:memo],
1326
+ 'ar_reason_taxes' => options[:ar_reason_taxes],
1327
+ }
1328
+ uri = URI.parse(@base_url + '/ar_reason_masters/create')
1329
+ api_request(uri, 'POST', params)
1330
+ end
1331
+
1332
+ def update_ar_reason_masters(id, options)
1333
+ params = {
1334
+ 'format' => 'json',
1335
+ 'reason_code' => options[:reason_code],
1336
+ 'reason_name' => options[:reason_name],
1337
+ 'dc' => options[:dc],
1338
+ 'sort_number' => options[:sort_number],
1339
+ 'is_valid' => options[:is_valid],
1340
+ 'memo' => options[:memo],
1341
+ 'ar_reason_taxes' => options[:ar_reason_taxes],
1342
+ }
1343
+ uri = URI.parse(@base_url + "/ar_reason_masters/update/#{id}")
1344
+ api_request(uri, 'POST', params)
1345
+ end
1346
+
1347
+ def create_ap_reason_masters(options)
1348
+ params = {
1349
+ 'format' => 'json',
1350
+ 'reason_code' => options[:reason_code],
1351
+ 'reason_name' => options[:reason_name],
1352
+ 'dc' => options[:dc],
1353
+ 'account_code' => options[:account_code],
1354
+ 'sort_number' => options[:sort_number],
1355
+ 'is_valid' => options[:is_valid],
1356
+ 'memo' => options[:memo],
1357
+ 'port_type' => options[:port_type],
1358
+ 'ap_reason_taxes' => options[:ap_reason_taxes],
1359
+ }
1360
+ uri = URI.parse(@base_url + '/ap_reason_masters/create')
1361
+ api_request(uri, 'POST', params)
1362
+ end
1363
+
1364
+ def update_ap_reason_masters(id, options)
1365
+ params = {
1366
+ 'format' => 'json',
1367
+ 'reason_code' => options[:reason_code],
1368
+ 'reason_name' => options[:reason_name],
1369
+ 'dc' => options[:dc],
1370
+ 'port_type' => options[:port_type],
1371
+ 'sort_number' => options[:sort_number],
1372
+ 'is_valid' => options[:is_valid],
1373
+ 'memo' => options[:memo],
1374
+ }
1375
+ uri = URI.parse(@base_url + "/ap_reason_masters/update/#{id}")
1376
+ api_request(uri, 'POST', params)
1377
+ end
1378
+
1379
+ def list_users
1380
+ params = { 'format' => 'json' }
1381
+ uri = URI.parse(@base_url + '/users/list')
1382
+ api_request(uri, 'GET', params)
1383
+ end
1384
+
1385
+ def list_depts
1386
+ params = { 'format' => 'json' }
1387
+ uri = URI.parse(@base_url + '/depts/list/')
1388
+ api_request(uri, 'GET', params)
1389
+ end
1390
+
1391
+ def update_system_managements(options)
1392
+ params = {
1393
+ 'format' => 'json',
1394
+ 'code' => options[:code],
1395
+ 'enable' => options[:enable],
1396
+ }
1397
+ uri = URI.parse(@base_url + '/system_managements/update')
1398
+ api_request(uri, 'POST', params)
1399
+ end
1400
+
1401
+ def create_tags(options)
1402
+ params = {
1403
+ 'format' => 'json',
1404
+ 'code' => options[:code],
1405
+ 'name' => options[:name],
1406
+ 'sort_no' => options[:sort_no],
1407
+ 'tag_group_code' => options[:tag_group_code],
1408
+ 'start_ymd' => options[:start_ymd],
1409
+ 'finish_ymd' => options[:finish_ymd],
1410
+ }
1411
+ uri = URI.parse(@base_url + '/tags/create')
1412
+ api_request(uri, 'POST', params)
1413
+ end
1414
+
1415
+ def create_ar_segment_masters(options)
1416
+ params = {
1417
+ 'format' => 'json',
1418
+ 'account_descid' => options[:account_descid],
1419
+ 'priority_order' => options[:priority_order],
1420
+ 'enable' => options[:enable],
1421
+ 'name' => options[:name],
1422
+ 'description' => options[:description],
1423
+ }
1424
+ uri = URI.parse(@base_url + '/ar_segment_masters/create')
1425
+ api_request(uri, 'POST', params)
1426
+ end
1427
+
1428
+ def create_ap_segment_masters(options)
1429
+ params = {
1430
+ 'format' => 'json',
1431
+ 'account_descid' => options[:account_descid],
1432
+ 'priority_order' => options[:priority_order],
1433
+ 'enable' => options[:enable],
1434
+ 'name' => options[:name],
1435
+ 'description' => options[:description],
1436
+ }
1437
+ uri = URI.parse(@base_url + '/ap_segment_masters/create')
1438
+ api_request(uri, 'POST', params)
1439
+ end
1440
+
1441
+ def list_fiscal_masters
1442
+ params = {
1443
+ 'format' => 'json',
1444
+ }
1445
+ uri = URI.parse(@base_url + "/fiscal_masters/list")
1446
+ api_request(uri, 'GET', params)
1447
+ end
1448
+
1449
+ def list_balance_plan_masters
1450
+ params = {
1451
+ 'format' => 'json',
1452
+ }
1453
+ uri = URI.parse(@base_url + "/balance_plan_masters/list")
1454
+ api_request(uri, 'GET', params)
1455
+ end
1456
+
1457
+ def create_balance_plan_masters(options)
1458
+ params = {
1459
+ 'format' => 'json',
1460
+ 'code' => options[:code],
1461
+ 'name' => options[:name],
1462
+ 'memo' => options[:memo],
1463
+ 'start_ymd' => options[:start_ymd],
1464
+ 'finish_ymd' => options[:finish_ymd],
1465
+ 'in_use' => options[:in_use],
1466
+ 'is_default' => options[:is_default],
1467
+ }
1468
+ uri = URI.parse(@base_url + '/balance_plan_masters/create')
1469
+ api_request(uri, 'POST', params)
1470
+ end
1471
+
1472
+ def update_staffs(id, options)
1473
+ candidate_keys = [
1474
+ :code,
1475
+ :status,
1476
+ :dept_codes,
1477
+ ]
1478
+ params = create_parameters(candidate_keys,options)
1479
+ uri = URI.parse(@base_url + "/staffs/update/#{id}")
1480
+ api_request(uri, 'POST', params)
1481
+ end
1482
+
1483
+ def create_personalized_asset_type_masters(options)
1484
+ candidate_keys = [
1485
+ :code,
1486
+ :name,
1487
+ :asset_account_code,
1488
+ :contra_account_code,
1489
+ :contra_mc_account_code,
1490
+ :impairment_account_code,
1491
+ :impairment_mc_account_code,
1492
+ :accumulated_depreciation_account_code,
1493
+ :local_tax_segment_code,
1494
+ :corporate_tax_segment_name,
1495
+ :sort_no
1496
+ ]
1497
+ params = create_parameters(candidate_keys, options)
1498
+ uri = URI.parse(@base_url + '/personalized_asset_type_masters/create')
1499
+ api_request(uri, 'POST', params)
1500
+ end
1501
+
1502
+ def bulk_create_or_update_balance_plans(options)
1503
+ candidate_keys = [
1504
+ :balance_plans
1505
+ ]
1506
+ params = create_parameters(candidate_keys, options)
1507
+ uri = URI.parse(@base_url + '/balance_plans/bulk_create_or_update')
1508
+ api_request(uri, 'POST', params)
1509
+ end
1510
+
1511
+ def list_petty_cash_masters
1512
+ params = { 'format' => 'json' }
1513
+ uri = URI.parse(@base_url + '/petty_cash_masters/list')
1514
+ api_request(uri, 'GET', params)
1515
+ end
1516
+
1517
+ def create_petty_cashes(options)
1518
+ candidate_keys = [
1519
+ :petty_cash_master_id,
1520
+ :start_ymd,
1521
+ :finish_ymd,
1522
+ :start_balance_fixed,
1523
+ ]
1524
+ params = create_parameters(candidate_keys, options)
1525
+ uri = URI.parse(@base_url + '/petty_cashes/create')
1526
+ api_request(uri, 'POST', params)
1527
+ end
1528
+
1529
+ def create_petty_cash_transactions(options)
1530
+ candidate_keys = [
1531
+ :petty_cash_id,
1532
+ :journal_timestamp,
1533
+ :price_value,
1534
+ :reason_code,
1535
+ :dc,
1536
+ :tax_type,
1537
+ :brief,
1538
+ :memo,
1539
+ :tag_list,
1540
+ :dept_code,
1541
+ ]
1542
+ params = create_parameters(candidate_keys, options)
1543
+ uri = URI.parse(@base_url + '/petty_cash_transactions/create')
1544
+ api_request(uri, 'POST', params)
1545
+ end
1546
+
1547
+ def list_ar_reconciliations(year, month)
1548
+ params = { 'format' => 'json' }
1549
+ uri = URI.parse(@base_url + "/ar_reconciliations/list/#{year}/#{month}")
1550
+ api_request(uri, 'GET', params)
1551
+ end
1552
+
1553
+ def reconcile_ar_reconciliations(options)
1554
+ candidate_keys = [
1555
+ :reconciliation_id, # (BankAccount Transaction / PettyCash Transaction / Reimbursement Transaction) JournalDc ID.
1556
+ :reconcile_transactions
1557
+ ]
1558
+ params = create_parameters(candidate_keys, options)
1559
+ uri = URI.parse(@base_url + "/ar_reconciliations/reconcile")
1560
+ api_request(uri, 'POST', params)
1561
+ end
1562
+
1563
+ def reconcile_ap_reconciliations(options)
1564
+ candidate_keys = [
1565
+ :reconciliation_id, # (BankAccount Transaction / PettyCash Transaction / Reimbursement Transaction) JournalDc ID.
1566
+ :reconcile_transactions
1567
+ ]
1568
+ params = create_parameters(candidate_keys, options)
1569
+ uri = URI.parse(@base_url + "/ap_reconciliations/reconcile")
1570
+ api_request(uri, 'POST', params)
1571
+ end
1572
+
1573
+ # @param [String] arap 'ar' または 'ap'
1574
+ def search_customer_masters_by_reconcile_keyword(keyword, arap)
1575
+ params = {
1576
+ 'format' => 'json',
1577
+ 'keyword' => keyword,
1578
+ 'arap' => arap,
1579
+ }
1580
+ uri = URI.parse(@base_url + "/customer_masters/search_by_reconcile_keyword")
1581
+ api_request(uri, 'GET', params)
1582
+ end
1583
+
1584
+ def list_ar_cashflow_schedule(year, month)
1585
+ params = { 'format' => 'json' }
1586
+ uri = URI.parse(@base_url + "/ar_reports/list_cashflow_schedule/#{year}/#{month}")
1587
+ api_request(uri, 'GET', params)
1588
+ end
1589
+
1590
+ def list_ap_cashflow_schedule(year, month)
1591
+ params = { 'format' => 'json' }
1592
+ uri = URI.parse(@base_url + "/ap_reports/list_cashflow_schedule/#{year}/#{month}")
1593
+ api_request(uri, 'GET', params)
1594
+ end
1595
+
1596
+ def standardize_payroll_column_masters(year, month)
1597
+ params = {
1598
+ 'format' => 'json',
1599
+ 'year' => year,
1600
+ 'month' => month,
1601
+ }
1602
+ uri = URI.parse(@base_url + "/payroll_column_masters/standardize")
1603
+ api_request(uri, 'POST', params)
1604
+ end
1605
+
1606
+ def show_payroll_column_masters(year, month)
1607
+ params = {
1608
+ 'format' => 'json',
1609
+ 'year' => year,
1610
+ 'month' => month,
1611
+ }
1612
+ uri = URI.parse(@base_url + "/payroll_column_masters/show")
1613
+ api_request(uri, 'GET', params)
1614
+ end
1615
+
1616
+ def update_payrolls(options)
1617
+ candidate_keys = [
1618
+ :year,
1619
+ :month,
1620
+ :only_save,
1621
+ :update_journal,
1622
+ :staffs
1623
+ ]
1624
+ params = create_parameters(candidate_keys, options)
1625
+ uri = URI.parse(@base_url + "/payrolls/update")
1626
+ api_request(uri, 'POST', params)
1627
+ end
1628
+
1629
+ def list_ap_reconciliations(year, month)
1630
+ params = { 'format' => 'json' }
1631
+ uri = URI.parse(@base_url + "/ap_reconciliations/list/#{year}/#{month}")
1632
+ api_request(uri, 'GET', params)
1633
+ end
1634
+
1635
+ def update_boy_adjusts(options)
1636
+ candidate_keys = [
1637
+ :term,
1638
+ :dept_code,
1639
+ :fixed_balances
1640
+ ]
1641
+ params = create_parameters(candidate_keys, options)
1642
+ uri = URI.parse(@base_url + "/adjusts/update_boy")
1643
+ api_request(uri, 'POST', params)
1644
+ end
1645
+
1646
+ def brought_forward_adjusts(options)
1647
+ candidate_keys = [
1648
+ :term,
1649
+ :dept_code,
1650
+ :calc_common
1651
+ ]
1652
+ params = create_parameters(candidate_keys, options)
1653
+ uri = URI.parse(@base_url + "/adjusts/brought_forward")
1654
+ api_request(uri, 'POST', params)
1655
+ end
1656
+
1657
+ def update_bank_adjusts(options)
1658
+ candidate_keys = [
1659
+ :bank_term_balances
1660
+ ]
1661
+ params = create_parameters(candidate_keys, options)
1662
+ uri = URI.parse(@base_url + "/adjusts/update_bank")
1663
+ api_request(uri, 'POST', params)
1664
+ end
1665
+
1666
+ def create_fixed_assets(options)
1667
+ candidate_keys = [
1668
+ :acquire_method,
1669
+ :acquire_source_journal_dc_id,
1670
+ :acquire_ymd,
1671
+ :asset_type_master_id,
1672
+ :brief,
1673
+ :code,
1674
+ :depreciation_entry_method,
1675
+ :depreciation_method,
1676
+ :dept_code,
1677
+ :durable_years,
1678
+ :ignore_immediate_depreciation_limit,
1679
+ :initial_depreciated_amount,
1680
+ :installed_place,
1681
+ :is_product_cost,
1682
+ :name,
1683
+ :quantity,
1684
+ :start_ymd,
1685
+ :tag_list,
1686
+ :target_ym,
1687
+ :amount_inclusive,
1688
+ :tax_code
1689
+ ]
1690
+ params = create_parameters(candidate_keys, options)
1691
+ uri = URI.parse(@base_url + "/fixed_assets/create")
1692
+ api_request(uri, 'POST', params)
1693
+ end
1694
+
1695
+ def list_personalized_asset_type_masters
1696
+ params = { 'format' => 'json' }
1697
+ uri = URI.parse(@base_url + '/personalized_asset_type_masters/list')
1698
+ api_request(uri, 'GET', params)
1699
+ end
1700
+
1701
+ def update_journals_payrolls(options)
1702
+ candidate_keys = [
1703
+ :year,
1704
+ :month
1705
+ ]
1706
+ params = create_parameters(candidate_keys, options)
1707
+ uri = URI.parse(@base_url + "/payrolls/update_journals")
1708
+ api_request(uri, 'POST', params)
1709
+ end
1710
+
1711
+ def calc_balances_queues(options)
1712
+ candidate_keys = [
1713
+ :dept_code,
1714
+ :account_code,
1715
+ :ym_from,
1716
+ :ym_until
1717
+ ]
1718
+ params = create_parameters(candidate_keys, options)
1719
+ uri = URI.parse(@base_url + "/balances/calc_queues")
1720
+ api_request(uri, 'POST', params)
1721
+ end
1722
+
1723
+ def default_fixed_assets_revaluations(id)
1724
+ params = { 'format' => 'json' }
1725
+ uri = URI.parse(@base_url + "/fixed_assets/default_revaluations/#{id}")
1726
+ api_request(uri, 'GET', params)
1727
+ end
1728
+
1729
+ def create_fixed_assets_revaluations(options)
1730
+ candidate_keys = [
1731
+ :id,
1732
+ :asset_revaluations
1733
+ ]
1734
+ params = create_parameters(candidate_keys, options)
1735
+ uri = URI.parse(@base_url + "/fixed_assets/create_revaluations")
1736
+ api_request(uri, 'POST', params)
1737
+ end
1738
+
1739
+ def create_fixed_assets_journal(options)
1740
+ candidate_keys = [
1741
+ :id,
1742
+ :year,
1743
+ :month
1744
+ ]
1745
+ params = create_parameters(candidate_keys, options)
1746
+ uri = URI.parse(@base_url + "/fixed_assets/create_journal")
1747
+ api_request(uri, 'POST', params)
639
1748
  end
640
1749
 
641
1750
  private
642
1751
 
1752
+
1753
+ def create_parameters(keys,options)
1754
+ # Add new keys and value if options has keys, even if value in options is nil.
1755
+ # This code avoid updateing attributes witch is not specified by the users.
1756
+ (keys & options.keys).inject({ 'format' => 'json' }) do |params, key|
1757
+ params.merge(key.to_s => options[key]) # Hash#slice can be replace this code if your ruby is =< 2.5.0
1758
+ end
1759
+ end
1760
+
643
1761
  def api_request(uri, http_verb, params)
644
1762
  http = Net::HTTP.new(uri.host, uri.port)
645
- initheader = {'Content-Type' => 'application/json'}
1763
+ initheader = { 'Content-Type' => 'application/json' }
646
1764
  http.use_ssl = true if @base_url =~ /^https/
647
- if http_verb == "GET"
1765
+ if http_verb == 'GET'
648
1766
  request = Net::HTTP::Get.new(uri.path, initheader)
649
1767
  else
650
1768
  request = Net::HTTP::Post.new(uri.path, initheader)
651
1769
  end
652
- request["Access-Token"] = @access_token
1770
+ request['Access-Token'] = @access_token
653
1771
  request.body = params.to_json
654
1772
  response = http.request(request)
655
- if response.body
1773
+ if response.body && !response.body.empty?
656
1774
  begin
657
- {:status => response.code, :json => recursive_symbolize_keys(JSON.load(response.body))}
1775
+ { :status => response.code, :json => recursive_symbolize_keys(JSON.parse(response.body)) }
658
1776
  rescue
1777
+ puts "rescue"
1778
+ puts "response.code:#{response.code}"
1779
+ puts "response.body:#{response.body}"
659
1780
  response.body
660
1781
  end
661
1782
  else
662
- response.code
1783
+ { :status => response.code }
663
1784
  end
664
1785
  end
665
1786
 
@@ -668,7 +1789,7 @@ class TsubaisoSDK
668
1789
  when Hash
669
1790
  Hash[
670
1791
  data.map do |k, v|
671
- [ k.respond_to?(:to_sym) ? k.to_sym : k, recursive_symbolize_keys(v) ]
1792
+ [k.respond_to?(:to_sym) ? k.to_sym : k, recursive_symbolize_keys(v)]
672
1793
  end
673
1794
  ]
674
1795
  when Enumerable
@@ -680,22 +1801,28 @@ class TsubaisoSDK
680
1801
 
681
1802
  def make_journal_dcs(journal_dcs)
682
1803
  return nil if journal_dcs.nil?
683
- journal_dcs.map {|journal_dc| make_journal_dc(journal_dc)}
1804
+
1805
+ journal_dcs.map { |journal_dc| make_journal_dc(journal_dc) }
684
1806
  end
685
1807
 
686
1808
  def make_journal_dc(journal_dc)
687
- { "debit" => make_journal_dc_oneside(journal_dc[:debit]),
688
- "credit" => make_journal_dc_oneside(journal_dc[:credit]),
689
- "dept_code" => journal_dc[:dept_code],
690
- "memo" => journal_dc[:memo] }
1809
+ {
1810
+ 'debit' => make_journal_dc_oneside(journal_dc[:debit]),
1811
+ 'credit' => make_journal_dc_oneside(journal_dc[:credit]),
1812
+ 'dept_code' => journal_dc[:dept_code],
1813
+ 'memo' => journal_dc[:memo],
1814
+ 'tag_list' => journal_dc[:tag_list]
1815
+ }
691
1816
  end
692
1817
 
693
1818
  def make_journal_dc_oneside(side)
694
1819
  return nil if side.nil?
695
- { "account_code" => side[:account_code].to_s,
696
- "price_including_tax" => side[:price_including_tax],
697
- "tax_type" => side[:tax_type],
698
- "sales_tax" => side[:sales_tax]
1820
+
1821
+ {
1822
+ 'account_code' => side[:account_code].to_s,
1823
+ 'price_including_tax' => side[:price_including_tax],
1824
+ 'tax_type' => side[:tax_type],
1825
+ 'sales_tax' => side[:sales_tax]
699
1826
  }
700
1827
  end
701
1828
  end