tsubaiso-sdk 1.2.1 → 1.2.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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