Class: CFONB::Statement

Inherits:
Object
  • Object
show all
Defined in:
lib/cfonb/statement.rb

Instance Method Summary collapse

Constructor Details

#initialize(line) ⇒ Statement

Returns a new instance of Statement.



15
16
17
18
19
20
21
22
23
24
# File 'lib/cfonb/statement.rb', line 15

def initialize(line)
  self.begin_raw = line.body
  self.bank = line.bank
  self.branch = line.branch
  self.currency = line.currency
  self. = line.
  self.from = line.date
  self.from_balance = line.amount
  self.operations = []
end

Instance Method Details

#ibanObject



51
52
53
54
55
56
57
# File 'lib/cfonb/statement.rb', line 51

def iban
  # https://fr.wikipedia.org/wiki/International_Bank_Account_Number
  normalized_rib = "#{rib}FR00".upcase.gsub(/[A-Z]/) { _1.ord - 55 }
  key = 98 - (normalized_rib.to_i % 97)

  "FR#{key.to_s.rjust(2, '0')}#{rib}"
end

#merge_new_balance(line) ⇒ Object



26
27
28
29
30
# File 'lib/cfonb/statement.rb', line 26

def merge_new_balance(line)
  self.end_raw = line.body
  self.to = line.date
  self.to_balance = line.amount
end

#rawObject



32
33
34
35
36
37
38
# File 'lib/cfonb/statement.rb', line 32

def raw
  [
    begin_raw,
    operations.map(&:raw),
    end_raw,
  ].join("\n")
end

#ribObject



40
41
42
43
44
45
46
47
48
49
# File 'lib/cfonb/statement.rb', line 40

def rib
  # https://fr.wikipedia.org/wiki/Clé_RIB
  key = 97 - ((
    (bank.to_i * 89) +
    (branch.to_i * 15) +
    (.upcase.tr('A-IJ-RS-Z', '1-91-92-9').to_i * 3)
  ) % 97)

  "#{bank}#{branch}#{}#{key.to_s.rjust(2, '0')}"
end