class JapanNetBank::Transfer
Constants
- FEE_FOR_AMOUNT_AND_OVER_30_000
- FEE_FOR_AMOUNT_UNDER_30_000
- FEE_TO_JAPAN_NET_BANK
row_hash, row_array, row の違い¶ ↑
row_hash = {
bank_code: '0123', branch_code: '012', account_type: 'ordinary', number: '0123456', name: 'サトウキテコ', amount: 1600,
}
row_array: ['1', '0123', '012', '1', '0123456', 'サトウキテコ', '1600']
row:
JapanNetBank::Transfer::DataRow オブジェクト or JapanNetBank::Transfer::TrailerRow オブジェクト
Attributes
rows[R]
rows_count[R]
total_amount[R]
Public Class Methods
fee_for(bank_code: nil, amount: nil)
click to toggle source
# File lib/japan_net_bank/transfer.rb, line 57 def fee_for(bank_code: nil, amount: nil) raise ArgumentError if bank_code.nil? || amount.nil? if bank_code == JapanNetBank::BANK_CODE FEE_TO_JAPAN_NET_BANK elsif amount < 30_000 FEE_FOR_AMOUNT_UNDER_30_000 elsif amount >= 30_000 FEE_FOR_AMOUNT_AND_OVER_30_000 end end
from_hash_array(row_hashes)
click to toggle source
# File lib/japan_net_bank/transfer.rb, line 33 def from_hash_array(row_hashes) transfer = self.new transfer.append_row_hashes(row_hashes) transfer end
generate() { |transfer| ... }
click to toggle source
# File lib/japan_net_bank/transfer.rb, line 40 def generate transfer = self.new yield(transfer) transfer end
new()
click to toggle source
# File lib/japan_net_bank/transfer.rb, line 85 def initialize @rows = [] @rows_count = 0 @total_amount = 0 end
parse_csv(csv_string)
click to toggle source
# File lib/japan_net_bank/transfer.rb, line 47 def parse_csv(csv_string) transfer = self.new row_arrays = JapanNetBank::Transfer::CSV.parse(encode_to_utf8(csv_string)) data_row_arrays = select_data_row_arrays(row_arrays) transfer.append_row_arrays(data_row_arrays) transfer end
Private Class Methods
encode_to_utf8(string)
click to toggle source
# File lib/japan_net_bank/transfer.rb, line 75 def encode_to_utf8(string) # 単純に下記だと、"カ)" の部分が落ちてしまうため # NKF.nkf('-w -X', string) NKF.nkf('-w -X', string.encode('UTF-8', NKF.guess(string).to_s)) end
select_data_row_arrays(row_arrays)
click to toggle source
# File lib/japan_net_bank/transfer.rb, line 71 def select_data_row_arrays(row_arrays) row_arrays.select { |row_array| row_array[0] == JapanNetBank::Transfer::Row::RECORD_TYPE_DATA } end
Public Instance Methods
<<(row)
click to toggle source
# File lib/japan_net_bank/transfer.rb, line 103 def <<(row) append_row(row) end
append_row_arrays(row_arrays)
click to toggle source
# File lib/japan_net_bank/transfer.rb, line 97 def append_row_arrays(row_arrays) row_arrays.each do |row_array| append_row(JapanNetBank::Transfer::Row.new(row_array_to_hash(row_array))) end end
append_row_hashes(row_hashes)
click to toggle source
# File lib/japan_net_bank/transfer.rb, line 91 def append_row_hashes(row_hashes) row_hashes.each do |row_hash| append_row(JapanNetBank::Transfer::Row.new(row_hash)) end end
each() { |row| ... }
click to toggle source
# File lib/japan_net_bank/transfer.rb, line 117 def each @rows.each do |row| yield row end end
to_csv(opts = {})
click to toggle source
# File lib/japan_net_bank/transfer.rb, line 107 def to_csv(opts = {}) JapanNetBank::Transfer::CSV.generate do |csv| @rows.each do |row| csv << row.to_a(**opts) end csv << trailer_row if @rows_count > 0 end end
Private Instance Methods
append_row(row)
click to toggle source
# File lib/japan_net_bank/transfer.rb, line 125 def append_row(row) @rows << row @rows_count += 1 @total_amount += row.amount end
row_array_to_hash(row_array)
click to toggle source
# File lib/japan_net_bank/transfer.rb, line 131 def row_array_to_hash(row_array) { record_type: row_array[0], bank_code: sprintf('%04d', row_array[1].to_i), branch_code: sprintf('%03d', row_array[2].to_i), account_type: JapanNetBank::Transfer::Row::ACCOUNT_TYPES[row_array[3]], number: sprintf('%07d', row_array[4].to_i), name: row_array[5], amount: row_array[6], } end
trailer_row()
click to toggle source
# File lib/japan_net_bank/transfer.rb, line 143 def trailer_row [JapanNetBank::Transfer::Row::RECORD_TYPE_TRAILER, nil, nil, nil, nil, @rows_count, @total_amount] end