tsubaiso-sdk 1.2.5 → 1.2.9

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