tsubaiso-sdk 1.2.6 → 1.2.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +3 -2
  3. data/lib/tsubaiso_sdk.rb +1167 -128
  4. data/test/stubbings/stub_register.rb +196 -0
  5. data/test/tsubaiso_sdk/common_setup_and_teardown.rb +23 -0
  6. data/test/tsubaiso_sdk/test_ap_reason_masters.rb +26 -0
  7. data/test/tsubaiso_sdk/test_api_history.rb +27 -0
  8. data/test/tsubaiso_sdk/test_ar_reason_masters.rb +26 -0
  9. data/test/tsubaiso_sdk/test_bank_account.rb +34 -0
  10. data/test/tsubaiso_sdk/test_bank_account_master.rb +119 -0
  11. data/test/tsubaiso_sdk/test_bank_account_transaction.rb +61 -0
  12. data/test/tsubaiso_sdk/test_bank_reason_master.rb +90 -0
  13. data/test/tsubaiso_sdk/test_bonus.rb +26 -0
  14. data/test/tsubaiso_sdk/test_corporate_master.rb +27 -0
  15. data/test/tsubaiso_sdk/test_customer.rb +71 -0
  16. data/test/tsubaiso_sdk/test_dept.rb +66 -0
  17. data/test/tsubaiso_sdk/test_fixed_assets.rb +18 -0
  18. data/test/tsubaiso_sdk/test_journal.rb +53 -0
  19. data/test/tsubaiso_sdk/test_journal_distribution.rb +29 -0
  20. data/test/tsubaiso_sdk/test_manual_journal.rb +84 -0
  21. data/test/tsubaiso_sdk/test_payrolles.rb +26 -0
  22. data/test/tsubaiso_sdk/test_petty_cash_reason_master.rb +72 -0
  23. data/test/tsubaiso_sdk/test_physical_inventory_master.rb +84 -0
  24. data/test/tsubaiso_sdk/test_purchase.rb +120 -0
  25. data/test/tsubaiso_sdk/test_reimbursement_reason_master.rb +27 -0
  26. data/test/tsubaiso_sdk/test_reimbursements.rb +90 -0
  27. data/test/tsubaiso_sdk/test_reimbursements_transactions.rb +75 -0
  28. data/test/tsubaiso_sdk/test_sale.rb +125 -0
  29. data/test/tsubaiso_sdk/test_scheduled_dates.rb +16 -0
  30. data/test/tsubaiso_sdk/test_staff.rb +26 -0
  31. data/test/tsubaiso_sdk/test_staff_data.rb +71 -0
  32. data/test/tsubaiso_sdk/test_staff_datum_master.rb +37 -0
  33. data/test/tsubaiso_sdk/test_tag.rb +53 -0
  34. data/test/tsubaiso_sdk/test_tax_master.rb +25 -0
  35. metadata +34 -5
  36. data/test/test_tsubaiso_sdk.rb +0 -964
data/lib/tsubaiso_sdk.rb CHANGED
@@ -2,18 +2,181 @@ class TsubaisoSDK
2
2
  require 'net/http'
3
3
  require 'json'
4
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
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
176
  params = {
12
- 'year' => year,
13
- 'month' => month,
14
177
  'format' => 'json'
15
178
  }
16
- uri = URI.parse(@base_url + '/ar/list/')
179
+ uri = URI.parse(@base_url + "/ar/list/#{year.to_i}/#{month.to_i}")
17
180
  api_request(uri, 'GET', params)
18
181
  end
19
182
 
@@ -25,17 +188,15 @@ class TsubaisoSDK
25
188
  'ar_segment' => options[:ar_segment],
26
189
  'format' => 'json'
27
190
  }
28
- uri = URI.parse(@base_url + '/ar_receipts/balance/')
191
+ uri = URI.parse(@base_url + '/ar/balance')
29
192
  api_request(uri, 'GET', params)
30
193
  end
31
194
 
32
195
  def list_purchases(year, month)
33
196
  params = {
34
- 'year' => year,
35
- 'month' => month,
36
197
  'format' => 'json'
37
198
  }
38
- uri = URI.parse(@base_url + '/ap_payments/list/')
199
+ uri = URI.parse(@base_url + "/ap_payments/list/#{year.to_i}/#{month.to_i}")
39
200
  api_request(uri, 'GET', params)
40
201
  end
41
202
 
@@ -47,29 +208,27 @@ class TsubaisoSDK
47
208
  'ap_segment' => options[:ap_segment],
48
209
  'format' => 'json'
49
210
  }
50
- uri = URI.parse(@base_url + '/ap_payments/balance/')
211
+ uri = URI.parse(@base_url + '/ap_payments/balance')
51
212
  api_request(uri, 'GET', params)
52
213
  end
53
214
 
54
215
  def list_customers
55
216
  params = { 'format' => 'json' }
56
- uri = URI.parse(@base_url + '/customer_masters/list/')
217
+ uri = URI.parse(@base_url + '/customer_masters/list')
57
218
  api_request(uri, 'GET', params)
58
219
  end
59
220
 
60
221
  def list_payrolls(year, month)
61
222
  params = {
62
- 'format' => 'json',
63
- 'year' => year,
64
- 'month' => month
223
+ 'format' => 'json'
65
224
  }
66
- uri = URI.parse(@base_url + '/payrolls/list/')
225
+ uri = URI.parse(@base_url + "/payrolls/list/#{year.to_s}/#{month.to_s}")
67
226
  api_request(uri, 'GET', params)
68
227
  end
69
228
 
70
229
  def list_staff
71
230
  params = { 'format' => 'json' }
72
- uri = URI.parse(@base_url + '/staffs/list/')
231
+ uri = URI.parse(@base_url + '/staffs/list')
73
232
  api_request(uri, 'GET', params)
74
233
  end
75
234
 
@@ -78,13 +237,13 @@ class TsubaisoSDK
78
237
  'format' => 'json',
79
238
  'staff_id' => staff_id
80
239
  }
81
- uri = URI.parse(@base_url + '/staff_data/list/')
240
+ uri = URI.parse(@base_url + '/staff_data/list')
82
241
  api_request(uri, 'GET', params)
83
242
  end
84
243
 
85
244
  def list_staff_datum_masters
86
245
  params = { 'format' => 'json' }
87
- uri = URI.parse(@base_url + '/staff_datum_masters/list/')
246
+ uri = URI.parse(@base_url + '/staff_datum_masters/list')
88
247
  api_request(uri, 'GET', params)
89
248
  end
90
249
 
@@ -94,7 +253,7 @@ class TsubaisoSDK
94
253
  'year' => year,
95
254
  'month' => month
96
255
  }
97
- uri = URI.parse(@base_url + '/reimbursements/list/')
256
+ uri = URI.parse(@base_url + '/reimbursements/list')
98
257
  api_request(uri, 'GET', params)
99
258
  end
100
259
 
@@ -103,54 +262,64 @@ class TsubaisoSDK
103
262
  'format' => 'json',
104
263
  'id' => reimbursement_id.to_i
105
264
  }
106
- uri = URI.parse(@base_url + '/reimbursement_transactions/list/')
265
+ uri = URI.parse(@base_url + '/reimbursement_transactions/list')
107
266
  api_request(uri, 'GET', params)
108
267
  end
109
268
 
110
269
  def list_reimbursement_reason_masters
111
270
  params = { 'format' => 'json' }
112
- uri = URI.parse(@base_url + '/reimbursement_reason_masters/list/')
271
+ uri = URI.parse(@base_url + '/reimbursement_reason_masters/list')
113
272
  api_request(uri, 'GET', params)
114
273
  end
115
274
 
116
- def list_manual_journals(year = nil, month = nil)
117
- params = {
118
- 'year' => year,
119
- 'month' => month,
120
- 'format' => 'json'
121
- }
122
- uri = URI.parse(@base_url + '/manual_journals/list/')
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}")
123
278
  api_request(uri, 'GET', params)
124
279
  end
125
280
 
126
281
  def list_journals(options)
127
- params = {
128
- 'start_date' => options[:start_date],
129
- 'finish_date' => options[:finish_date],
130
- 'start_created_at' => options[:start_created_at],
131
- 'finish_created_at' => options[:finish_created_at],
132
- 'timestamp_order' => options[:timestamp_order],
133
- 'account_codes' => options[:account_codes],
134
- 'price' => options[:price],
135
- 'memo' => options[:memo],
136
- 'dept_code' => options[:dept_code],
137
- 'tag_list' => options[:tag_list],
138
- 'id' => options[:id],
139
- 'format' => 'json'
140
- }
141
- uri = URI.parse(@base_url + '/journals/list/')
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')
142
299
  api_request(uri, 'GET', params)
143
300
  end
144
301
 
145
302
  def list_depts
146
303
  params = { 'format' => 'json' }
147
- uri = URI.parse(@base_url + '/depts/list/')
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')
148
311
  api_request(uri, 'GET', params)
149
312
  end
150
313
 
151
314
  def list_tags
152
315
  params = { 'format' => 'json' }
153
- uri = URI.parse(@base_url + '/tags/list/')
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')
154
323
  api_request(uri, 'GET', params)
155
324
  end
156
325
 
@@ -160,7 +329,7 @@ class TsubaisoSDK
160
329
  'bonus_no' => bonus_no,
161
330
  'target_year' => target_year
162
331
  }
163
- uri = URI.parse(@base_url + '/bonuses/list/')
332
+ uri = URI.parse(@base_url + '/bonuses/list')
164
333
  api_request(uri, 'GET', params)
165
334
  end
166
335
 
@@ -172,14 +341,42 @@ class TsubaisoSDK
172
341
 
173
342
  def list_ar_reason_masters
174
343
  params = { 'format' => 'json' }
175
- uri = URI.parse(@base_url + '/ar_reason_masters/list/')
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')
176
357
  api_request(uri, 'GET', params)
177
358
  end
178
359
 
179
360
  # Alpha version now.
180
361
  def list_fixed_assets
181
362
  params = { 'format' => 'json' }
182
- uri = URI.parse(@base_url + '/fixed_assets/list/')
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')
183
380
  api_request(uri, 'GET', params)
184
381
  end
185
382
 
@@ -190,6 +387,12 @@ class TsubaisoSDK
190
387
  api_request(uri, 'GET', params)
191
388
  end
192
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)
394
+ end
395
+
193
396
  def show_purchase(voucher)
194
397
  purchase_id = voucher.scan(/\d/).join('')
195
398
  params = { 'format' => 'json' }
@@ -204,6 +407,15 @@ class TsubaisoSDK
204
407
  api_request(uri, 'GET', params)
205
408
  end
206
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)
417
+ end
418
+
207
419
  def show_staff(staff_id)
208
420
  staff_id = staff_id.to_i
209
421
  params = { 'format' => 'json' }
@@ -219,12 +431,12 @@ class TsubaisoSDK
219
431
  'time' => options[:time],
220
432
  'format' => 'json'
221
433
  }
222
- id = options[:id]
434
+ # id = options[:id]
223
435
  else
224
436
  params = { 'format' => 'json' }
225
- id = options
437
+ id = "/" + options.to_s
226
438
  end
227
- uri = URI.parse(@base_url + "/staff_data/show/#{id}")
439
+ uri = URI.parse(@base_url + "/staff_data/show#{id}")
228
440
  api_request(uri, 'GET', params)
229
441
  end
230
442
 
@@ -234,12 +446,11 @@ class TsubaisoSDK
234
446
  'code' => options[:code],
235
447
  'format' => 'json'
236
448
  }
237
- id = options[:id]
238
449
  else
239
450
  params = { 'format' => 'json' }
240
- id = options
451
+ id = '/' + options.to_s
241
452
  end
242
- uri = URI.parse(@base_url + "/staff_datum_masters/show/#{id}")
453
+ uri = URI.parse(@base_url + "/staff_datum_masters/show#{id}")
243
454
  api_request(uri, 'GET', params)
244
455
  end
245
456
 
@@ -309,6 +520,35 @@ class TsubaisoSDK
309
520
  api_request(uri, 'GET', params)
310
521
  end
311
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)
550
+ end
551
+
312
552
  def create_customer(options)
313
553
  available_keys = [
314
554
  'accountant_email',
@@ -354,18 +594,35 @@ class TsubaisoSDK
354
594
  'withholding_tax_base',
355
595
  'withholding_tax_segment',
356
596
  'zip',
357
- 'data_partner'
597
+ 'pay_date_if_holiday',
598
+ 'receive_date_if_holiday',
599
+ 'data_partner',
600
+ 'corporate_mynumber',
601
+ 'pay_method',
358
602
  ]
359
603
  params = {}
360
- available_keys.each do |key|
361
- params[key.to_s] = options[key.to_sym]
362
- end
604
+ params = create_parameters(available_keys.map{|x| x.to_sym},options)
363
605
  params['format'] = 'json'
364
606
 
365
607
  uri = URI.parse(@base_url + '/customer_masters/create')
366
608
  api_request(uri, 'POST', params)
367
609
  end
368
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)
624
+ end
625
+
369
626
  def create_sale(options)
370
627
  params = {
371
628
  'price_including_tax' => options[:price_including_tax],
@@ -387,6 +644,30 @@ class TsubaisoSDK
387
644
  api_request(uri, 'POST', params)
388
645
  end
389
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)
669
+ end
670
+
390
671
  def create_purchase(options)
391
672
  params = {
392
673
  'price_including_tax' => options[:price_including_tax],
@@ -406,6 +687,26 @@ class TsubaisoSDK
406
687
  api_request(uri, 'POST', params)
407
688
  end
408
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)
708
+ end
709
+
409
710
  def create_staff_data(options)
410
711
  params = {
411
712
  'staff_id' => options[:staff_id],
@@ -438,6 +739,67 @@ class TsubaisoSDK
438
739
  api_request(uri, 'POST', params)
439
740
  end
440
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)
801
+ end
802
+
441
803
  def create_reimbursement(options)
442
804
  params = {
443
805
  'format' => 'json',
@@ -445,9 +807,12 @@ class TsubaisoSDK
445
807
  'application_term' => options[:application_term],
446
808
  'staff_code' => options[:staff_code],
447
809
  'dept_code' => options[:dept_code],
448
- 'memo' => options[:memo]
810
+ 'memo' => options[:memo],
811
+ 'applicant_staff_code' => options[:applicant_staff_code],
812
+ 'transactions' => options[:transactions],
813
+ 'pay_date' => options[:pay_date]
449
814
  }
450
- uri = URI.parse(@base_url + '/reimbursements/create/')
815
+ uri = URI.parse(@base_url + '/reimbursements/create')
451
816
  api_request(uri, 'POST', params)
452
817
  end
453
818
 
@@ -466,7 +831,7 @@ class TsubaisoSDK
466
831
  'tax_type' => options[:tax_type],
467
832
  'data_partner' => options[:data_partner]
468
833
  }
469
- uri = URI.parse(@base_url + '/reimbursement_transactions/create/')
834
+ uri = URI.parse(@base_url + '/reimbursement_transactions/create')
470
835
  api_request(uri, 'POST', params)
471
836
  end
472
837
 
@@ -482,7 +847,7 @@ class TsubaisoSDK
482
847
  'start_date' => options[:start_date],
483
848
  'finish_date' => options[:finish_date]
484
849
  }
485
- uri = URI.parse(@base_url + '/depts/create/')
850
+ uri = URI.parse(@base_url + '/depts/create')
486
851
  api_request(uri, 'POST', params)
487
852
  end
488
853
 
@@ -496,7 +861,7 @@ class TsubaisoSDK
496
861
  'start_ymd' => options[:start_ymd],
497
862
  'finish_ymd' => options[:finish_ymd]
498
863
  }
499
- uri = URI.parse(@base_url + '/tags/create/')
864
+ uri = URI.parse(@base_url + '/tags/create')
500
865
  api_request(uri, 'POST', params)
501
866
  end
502
867
 
@@ -516,19 +881,63 @@ class TsubaisoSDK
516
881
  'criteria' => options[:criteria],
517
882
  'distribution_conditions' => options[:distribution_conditions]
518
883
  }
519
- uri = URI.parse(@base_url + '/journal_distributions/create/')
884
+ uri = URI.parse(@base_url + '/journal_distributions/create')
520
885
  api_request(uri, 'POST', params)
521
886
  end
522
887
 
523
- def update_sale(options)
524
- params = options.merge({ 'format' => 'json' })
525
- uri = URI.parse(@base_url + "/ar/update/#{options[:id]}")
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')
526
901
  api_request(uri, 'POST', params)
527
902
  end
528
903
 
529
- def update_purchase(options)
530
- params = options.merge({ 'format' => 'json' })
531
-
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)
912
+ end
913
+
914
+ def update_sale(options)
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'
934
+ uri = URI.parse(@base_url + "/ar/update/#{options[:id]}")
935
+ api_request(uri, 'POST', params)
936
+ end
937
+
938
+ def update_purchase(options)
939
+ params = options.merge({ 'format' => 'json' })
940
+
532
941
  uri = URI.parse(@base_url + "/ap_payments/update/#{options[:id]}")
533
942
  api_request(uri, 'POST', params)
534
943
  end
@@ -578,20 +987,39 @@ class TsubaisoSDK
578
987
  'withholding_tax_base',
579
988
  'withholding_tax_segment',
580
989
  'zip',
990
+ 'pay_date_if_holiday',
991
+ 'receive_date_if_holiday',
581
992
  'data_partner'
582
993
  ]
583
994
  params = {}
584
- available_keys.each do |key|
585
- params[key.to_s] = options[key.to_sym]
586
- end
995
+ params = create_parameters(available_keys.map{|x| x.to_sym},options)
587
996
  params['format'] = 'json'
588
997
 
589
998
  uri = URI.parse(@base_url + "/customer_masters/update/#{options[:id]}")
590
999
  api_request(uri, 'POST', params)
591
1000
  end
592
1001
 
593
- def update_staff_data(options)
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)
594
1021
  params = {
1022
+ 'code' => options[:code],
595
1023
  'memo' => options[:memo],
596
1024
  'value' => options[:value],
597
1025
  'start_timestamp' => options[:start_timestamp],
@@ -604,7 +1032,7 @@ class TsubaisoSDK
604
1032
  params[:no_finish_timestamp] = options[:no_finish_timestamp]
605
1033
  end
606
1034
 
607
- uri = URI.parse(@base_url + "/staff_data/update/#{options[:id]}")
1035
+ uri = URI.parse(@base_url + "/staff_data/update/#{staff_data_id}")
608
1036
  api_request(uri, 'POST', params)
609
1037
  end
610
1038
 
@@ -621,66 +1049,115 @@ class TsubaisoSDK
621
1049
  end
622
1050
 
623
1051
  def update_reimbursement(reimbursement_id, options)
624
- params = {
625
- 'format' => 'json',
626
- 'applicant' => options[:applicant],
627
- 'application_term' => options[:application_term],
628
- 'staff_code' => options[:staff_code],
629
- 'dept_code' => options[:dept_code],
630
- 'memo' => options[:memo]
631
- }
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'
632
1062
  uri = URI.parse(@base_url + "/reimbursements/update/#{reimbursement_id}")
633
1063
  api_request(uri, 'POST', params)
634
1064
  end
635
1065
 
636
1066
  def update_reimbursement_transaction(options)
637
- params = {
638
- 'format' => 'json',
639
- 'port_type' => options[:port_type],
640
- 'transaction_timestamp' => options[:transaction_timestamp],
641
- 'price_value' => options[:price_value],
642
- 'dc' => options[:dc],
643
- 'reason_code' => options[:reason_code],
644
- 'brief' => options[:brief],
645
- 'memo' => options[:memo],
646
- 'tag_list' => options[:tag_list],
647
- 'tax_type' => options[:tax_type],
648
- 'data_partner' => options[:data_partner]
649
- }
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
+
650
1083
  uri = URI.parse(@base_url + "/reimbursement_transactions/update/#{options[:id]}")
651
1084
  api_request(uri, 'POST', params)
652
1085
  end
653
1086
 
654
1087
  def update_dept(dept_id, options)
655
- params = {
656
- 'format' => 'json',
657
- 'sort_no' => options[:sort_no],
658
- 'code' => options[:code],
659
- 'name' => options[:name],
660
- 'name_abbr' => options[:name_abbr],
661
- 'color' => options[:color],
662
- 'memo' => options[:memo],
663
- 'start_date' => options[:start_date],
664
- 'finish_date' => options[:finish_date]
665
- }
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'
666
1101
  uri = URI.parse(@base_url + "/depts/update/#{dept_id}")
667
1102
  api_request(uri, 'POST', params)
668
1103
  end
669
1104
 
670
1105
  def update_tag(tag_id, options)
671
- params = {
672
- 'format' => 'json',
673
- 'code' => options[:code],
674
- 'name' => options[:name],
675
- 'sort_no' => options[:sort_no],
676
- 'tag_group_code' => options[:tag_group_code],
677
- 'start_ymd' => options[:start_ymd],
678
- 'finish_ymd' => options[:finish_ymd]
679
- }
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'
680
1117
  uri = URI.parse(@base_url + "/tags/update/#{tag_id}")
681
1118
  api_request(uri, 'POST', params)
682
1119
  end
683
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)
1159
+ end
1160
+
684
1161
  def destroy_sale(voucher)
685
1162
  sale_id = voucher.scan(/\d/).join('')
686
1163
  params = { 'format' => 'json' }
@@ -688,6 +1165,12 @@ class TsubaisoSDK
688
1165
  api_request(uri, 'POST', params)
689
1166
  end
690
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)
1172
+ end
1173
+
691
1174
  def destroy_purchase(voucher)
692
1175
  purchase_id = voucher.scan(/\d/).join('')
693
1176
  params = { 'format' => 'json' }
@@ -750,8 +1233,562 @@ class TsubaisoSDK
750
1233
  api_request(uri, 'POST', params)
751
1234
  end
752
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
+ # find_or_create Adjusts
1654
+ def index_adjusts(options)
1655
+ candidate_keys = [
1656
+ :term,
1657
+ :dept_code,
1658
+ :year,
1659
+ :month
1660
+ ]
1661
+ params = create_parameters(candidate_keys, options)
1662
+ uri = URI.parse(@base_url + "/adjusts")
1663
+ api_request(uri, 'GET', params)
1664
+ end
1665
+
1666
+ def update_boy_adjusts(options)
1667
+ candidate_keys = [
1668
+ :term,
1669
+ :dept_code,
1670
+ :fixed_balances
1671
+ ]
1672
+ params = create_parameters(candidate_keys, options)
1673
+ uri = URI.parse(@base_url + "/adjusts/update_boy")
1674
+ api_request(uri, 'POST', params)
1675
+ end
1676
+
1677
+ def brought_forward_adjusts(options)
1678
+ candidate_keys = [
1679
+ :term,
1680
+ :dept_code,
1681
+ :calc_common
1682
+ ]
1683
+ params = create_parameters(candidate_keys, options)
1684
+ uri = URI.parse(@base_url + "/adjusts/brought_forward")
1685
+ api_request(uri, 'POST', params)
1686
+ end
1687
+
1688
+ def update_bank_adjusts(options)
1689
+ candidate_keys = [
1690
+ :bank_term_balances
1691
+ ]
1692
+ params = create_parameters(candidate_keys, options)
1693
+ uri = URI.parse(@base_url + "/adjusts/update_bank")
1694
+ api_request(uri, 'POST', params)
1695
+ end
1696
+
1697
+ def create_fixed_assets(options)
1698
+ candidate_keys = [
1699
+ :acquire_method,
1700
+ :acquire_source_journal_dc_id,
1701
+ :acquire_ymd,
1702
+ :asset_type_master_id,
1703
+ :brief,
1704
+ :code,
1705
+ :depreciation_entry_method,
1706
+ :depreciation_method,
1707
+ :dept_code,
1708
+ :durable_years,
1709
+ :ignore_immediate_depreciation_limit,
1710
+ :initial_depreciated_amount,
1711
+ :installed_place,
1712
+ :is_product_cost,
1713
+ :name,
1714
+ :quantity,
1715
+ :start_ymd,
1716
+ :tag_list,
1717
+ :target_ym,
1718
+ :amount_inclusive,
1719
+ :tax_code
1720
+ ]
1721
+ params = create_parameters(candidate_keys, options)
1722
+ uri = URI.parse(@base_url + "/fixed_assets/create")
1723
+ api_request(uri, 'POST', params)
1724
+ end
1725
+
1726
+ def list_personalized_asset_type_masters
1727
+ params = { 'format' => 'json' }
1728
+ uri = URI.parse(@base_url + '/personalized_asset_type_masters/list')
1729
+ api_request(uri, 'GET', params)
1730
+ end
1731
+
1732
+ def update_journals_payrolls(options)
1733
+ candidate_keys = [
1734
+ :year,
1735
+ :month
1736
+ ]
1737
+ params = create_parameters(candidate_keys, options)
1738
+ uri = URI.parse(@base_url + "/payrolls/update_journals")
1739
+ api_request(uri, 'POST', params)
1740
+ end
1741
+
1742
+ def calc_balances_queues(options)
1743
+ candidate_keys = [
1744
+ :dept_code,
1745
+ :account_code,
1746
+ :ym_from,
1747
+ :ym_until
1748
+ ]
1749
+ params = create_parameters(candidate_keys, options)
1750
+ uri = URI.parse(@base_url + "/balances/calc_queues")
1751
+ api_request(uri, 'POST', params)
1752
+ end
1753
+
1754
+ def default_fixed_assets_revaluations(id)
1755
+ params = { 'format' => 'json' }
1756
+ uri = URI.parse(@base_url + "/fixed_assets/default_revaluations/#{id}")
1757
+ api_request(uri, 'GET', params)
1758
+ end
1759
+
1760
+ def create_fixed_assets_revaluations(options)
1761
+ candidate_keys = [
1762
+ :id,
1763
+ :asset_revaluations
1764
+ ]
1765
+ params = create_parameters(candidate_keys, options)
1766
+ uri = URI.parse(@base_url + "/fixed_assets/create_revaluations")
1767
+ api_request(uri, 'POST', params)
1768
+ end
1769
+
1770
+ def create_fixed_assets_journal(options)
1771
+ candidate_keys = [
1772
+ :id,
1773
+ :year,
1774
+ :month
1775
+ ]
1776
+ params = create_parameters(candidate_keys, options)
1777
+ uri = URI.parse(@base_url + "/fixed_assets/create_journal")
1778
+ api_request(uri, 'POST', params)
1779
+ end
1780
+
753
1781
  private
754
1782
 
1783
+
1784
+ def create_parameters(keys,options)
1785
+ # Add new keys and value if options has keys, even if value in options is nil.
1786
+ # This code avoid updateing attributes witch is not specified by the users.
1787
+ (keys & options.keys).inject({ 'format' => 'json' }) do |params, key|
1788
+ params.merge(key.to_s => options[key]) # Hash#slice can be replace this code if your ruby is =< 2.5.0
1789
+ end
1790
+ end
1791
+
755
1792
  def api_request(uri, http_verb, params)
756
1793
  http = Net::HTTP.new(uri.host, uri.port)
757
1794
  initheader = { 'Content-Type' => 'application/json' }
@@ -764,14 +1801,17 @@ class TsubaisoSDK
764
1801
  request['Access-Token'] = @access_token
765
1802
  request.body = params.to_json
766
1803
  response = http.request(request)
767
- if response.body
1804
+ if response.body && !response.body.empty?
768
1805
  begin
769
1806
  { :status => response.code, :json => recursive_symbolize_keys(JSON.parse(response.body)) }
770
1807
  rescue
1808
+ puts "rescue"
1809
+ puts "response.code:#{response.code}"
1810
+ puts "response.body:#{response.body}"
771
1811
  response.body
772
1812
  end
773
1813
  else
774
- response.code
1814
+ { :status => response.code }
775
1815
  end
776
1816
  end
777
1817
 
@@ -792,29 +1832,28 @@ class TsubaisoSDK
792
1832
 
793
1833
  def make_journal_dcs(journal_dcs)
794
1834
  return nil if journal_dcs.nil?
1835
+
795
1836
  journal_dcs.map { |journal_dc| make_journal_dc(journal_dc) }
796
1837
  end
797
1838
 
798
1839
  def make_journal_dc(journal_dc)
799
- { 'debit' => make_journal_dc_oneside(journal_dc[:debit]),
1840
+ {
1841
+ 'debit' => make_journal_dc_oneside(journal_dc[:debit]),
800
1842
  'credit' => make_journal_dc_oneside(journal_dc[:credit]),
801
1843
  'dept_code' => journal_dc[:dept_code],
802
- 'memo' => journal_dc[:memo] }
1844
+ 'memo' => journal_dc[:memo],
1845
+ 'tag_list' => journal_dc[:tag_list]
1846
+ }
803
1847
  end
804
1848
 
805
1849
  def make_journal_dc_oneside(side)
806
1850
  return nil if side.nil?
807
- { 'account_code' => side[:account_code].to_s,
1851
+
1852
+ {
1853
+ 'account_code' => side[:account_code].to_s,
808
1854
  'price_including_tax' => side[:price_including_tax],
809
1855
  'tax_type' => side[:tax_type],
810
- 'sales_tax' => side[:sales_tax] }
811
- end
812
-
813
- def next_customer_code
814
- params = {
815
- 'format' => 'json'
1856
+ 'sales_tax' => side[:sales_tax]
816
1857
  }
817
- uri = URI.parse(@base_url + '/customer_masters/next_code')
818
- api_request(uri, 'GET', params)
819
1858
  end
820
1859
  end