Class: JapanNetBank::Transfer

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/japan_net_bank/transfer.rb,
lib/japan_net_bank/transfer/csv.rb,
lib/japan_net_bank/transfer/row.rb

Defined Under Namespace

Classes: CSV, Row

Constant Summary collapse

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 オブジェクト
54
FEE_FOR_AMOUNT_UNDER_30_000 =
172
FEE_FOR_AMOUNT_AND_OVER_30_000 =
270

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeTransfer

Returns a new instance of Transfer.



85
86
87
88
89
# File 'lib/japan_net_bank/transfer.rb', line 85

def initialize
  @rows         = []
  @rows_count   = 0
  @total_amount = 0
end

Instance Attribute Details

#rowsObject (readonly)

Returns the value of attribute rows.



83
84
85
# File 'lib/japan_net_bank/transfer.rb', line 83

def rows
  @rows
end

#rows_countObject (readonly)

Returns the value of attribute rows_count.



83
84
85
# File 'lib/japan_net_bank/transfer.rb', line 83

def rows_count
  @rows_count
end

#total_amountObject (readonly)

Returns the value of attribute total_amount.



83
84
85
# File 'lib/japan_net_bank/transfer.rb', line 83

def total_amount
  @total_amount
end

Class Method Details

.fee_for(bank_code: nil, amount: nil) ⇒ Object

Raises:

  • (ArgumentError)


57
58
59
60
61
62
63
64
65
66
67
# 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) ⇒ Object



33
34
35
36
37
38
# 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| ... } ⇒ Object

Yields:

  • (transfer)


40
41
42
43
44
45
# File 'lib/japan_net_bank/transfer.rb', line 40

def generate
  transfer = self.new
  yield(transfer)

  transfer
end

.parse_csv(csv_string) ⇒ Object



47
48
49
50
51
52
53
54
55
# 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

Instance Method Details

#<<(row) ⇒ Object



103
104
105
# File 'lib/japan_net_bank/transfer.rb', line 103

def <<(row)
  append_row(row)
end

#append_row_arrays(row_arrays) ⇒ Object



97
98
99
100
101
# 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) ⇒ Object



91
92
93
94
95
# 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

#eachObject



117
118
119
120
121
# File 'lib/japan_net_bank/transfer.rb', line 117

def each
  @rows.each do |row|
    yield row
  end
end

#to_csvObject



107
108
109
110
111
112
113
114
115
# File 'lib/japan_net_bank/transfer.rb', line 107

def to_csv
  JapanNetBank::Transfer::CSV.generate do |csv|
    @rows.each do |row|
      csv << row.to_a
    end

    csv << trailer_row if @rows_count > 0
  end
end