norma43 0.2 → 0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,3 @@
1
1
  module Norma43
2
- VERSION = "0.2"
2
+ VERSION = "0.3"
3
3
  end
data/lib/norma43.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require "iconv"
2
+ require 'date'
2
3
 
3
4
  module Norma43
4
5
 
@@ -34,7 +35,7 @@ module Norma43
34
35
  :account => account,
35
36
  :begin_date => Date.strptime(line[20..25], DATE_FORMAT), #Date.from_nor43(line[20..25])
36
37
  :end_date => Date.strptime(line[26..31], DATE_FORMAT),
37
- :initial_balance => parse_amount(line[33..46], line[32]),
38
+ :initial_balance => parse_amount(line[33..46], line[32].chr),
38
39
  :account_owner => line[51..76].strip,
39
40
  :currency => line[47..49]
40
41
  }
@@ -47,7 +48,7 @@ module Norma43
47
48
  :operation => line[42..51],
48
49
  :reference_1 => line[52..63],
49
50
  :reference_2 => line[64..79].strip,
50
- :amount => parse_amount(line[28..41], line[27]),
51
+ :amount => parse_amount(line[28..41], line[27].chr),
51
52
  :office => line[6..9]
52
53
  }
53
54
  end
@@ -57,11 +58,11 @@ module Norma43
57
58
  end
58
59
 
59
60
  def self.parse_end(line)
60
- {:final_balance => parse_amount(line[59..72], line[28])}
61
+ {:final_balance => parse_amount(line[59..72], line[28].chr)}
61
62
  end
62
63
 
63
64
  def self.parse_amount(value, sign)
64
- value.to_f / 100 * (sign == 1 ? -1 : 1)
65
+ value.to_f / 100 * (sign.to_i == 1 ? -1 : 1)
65
66
  end
66
67
 
67
68
  end
@@ -0,0 +1,23 @@
1
+ 118888555511111111111103011103202000000010593169783THE EXPENDABLES REVAMP SL
2
+ 22 0901110301110301040161000000000927000000000000000000000000
3
+ 2301TRANSFERENC. A Silvester Stallone
4
+ 22 0901110301110301040161000000001274090000000000000000000000
5
+ 2301TRANSFERENC. A Mickey Rourke
6
+ 22 0901110302110302040162000000000424800000000000001111111111
7
+ 2301TRANSFERENC. Bruce Willis
8
+ 22 0901110303110303040161000000000236000000000000000000000000
9
+ 2301TRANSFERENC. A Charisma Carpenter
10
+ 22 0901110304110304990801000000005000000000000000000000000000
11
+ 2301APER IMPOSIC 123456789-00
12
+ 22 09011103041103041203110000000011778100000000000987654321221234123412341234
13
+ 2301TARJ.CREDITO Hank Amos
14
+ 22 09011103041103041203110000000001882000000000000987654321116789678967896789
15
+ 2301TRANSFERENC. Jet Li
16
+ 22 0901110309110309040162000000001539900000000000123451234566
17
+ 2301TRANSFERENC. Terry Crews
18
+ 22 090111030911030904016200000000071154000000000000BA12345678
19
+ 2301TRANSFERENC. David Zayas
20
+ 22 0901110321110319170892000000000003030000000000000000000000
21
+ 2301LIQ.INT.IMP. 123456789-00
22
+ 3388885555111111111100006000000008803100000400000000267927200000000446933978
23
+ 88999999999999999999000022
@@ -0,0 +1,93 @@
1
+ :info:
2
+ :currency: "978"
3
+ :final_balance: 4469.33
4
+ :begin_date: 2011-03-01
5
+ :account:
6
+ :bank: "8888"
7
+ :office: "5555"
8
+ :number: "1111111111"
9
+ :control: ??
10
+ :end_date: 2011-03-20
11
+ :account_owner: THE EXPENDABLES REVAMP SL
12
+ :initial_balance: 10593.16
13
+ :movements:
14
+ - :concept: TRANSFERENC. A Silvester Stallone
15
+ :operation_date: 2011-03-01
16
+ :amount: -927.0
17
+ :value_date: 2011-03-01
18
+ :office: 0901
19
+ :operation: "0000000000"
20
+ :reference_1: "000000000000"
21
+ :reference_2: ""
22
+ - :concept: TRANSFERENC. A Mickey Rourke
23
+ :operation_date: 2011-03-01
24
+ :amount: -1274.09
25
+ :value_date: 2011-03-01
26
+ :office: 0901
27
+ :operation: "0000000000"
28
+ :reference_1: "000000000000"
29
+ :reference_2: ""
30
+ - :concept: TRANSFERENC. Bruce Willis
31
+ :operation_date: 2011-03-02
32
+ :amount: 424.8
33
+ :value_date: 2011-03-02
34
+ :office: 0901
35
+ :operation: "0000000000"
36
+ :reference_1: "001111111111"
37
+ :reference_2: ""
38
+ - :concept: TRANSFERENC. A Charisma Carpenter
39
+ :operation_date: 2011-03-03
40
+ :amount: -236.0
41
+ :value_date: 2011-03-03
42
+ :office: 0901
43
+ :operation: "0000000000"
44
+ :reference_1: "000000000000"
45
+ :reference_2: ""
46
+ - :concept: APER IMPOSIC 123456789-00
47
+ :operation_date: 2011-03-04
48
+ :amount: -5000.0
49
+ :value_date: 2011-03-04
50
+ :office: 0901
51
+ :operation: "0000000000"
52
+ :reference_1: "000000000000"
53
+ :reference_2: ""
54
+ - :concept: TARJ.CREDITO Hank Amos
55
+ :operation_date: 2011-03-04
56
+ :amount: -1177.81
57
+ :value_date: 2011-03-04
58
+ :office: 0901
59
+ :operation: "0000000000"
60
+ :reference_1: 098765432122
61
+ :reference_2: "1234123412341234"
62
+ - :concept: TRANSFERENC. Jet Li
63
+ :operation_date: 2011-03-04
64
+ :amount: -188.2
65
+ :value_date: 2011-03-04
66
+ :office: 0901
67
+ :operation: "0000000000"
68
+ :reference_1: 098765432111
69
+ :reference_2: "6789678967896789"
70
+ - :concept: TRANSFERENC. Terry Crews
71
+ :operation_date: 2011-03-09
72
+ :amount: 1539.9
73
+ :value_date: 2011-03-09
74
+ :office: 0901
75
+ :operation: "0000000000"
76
+ :reference_1: "123451234566"
77
+ :reference_2: ""
78
+ - :concept: TRANSFERENC. David Zayas
79
+ :operation_date: 2011-03-09
80
+ :amount: 711.54
81
+ :value_date: 2011-03-09
82
+ :office: 0901
83
+ :operation: "0000000000"
84
+ :reference_1: 00BA12345678
85
+ :reference_2: ""
86
+ - :concept: LIQ.INT.IMP. 123456789-00
87
+ :operation_date: 2011-03-21
88
+ :amount: 3.03
89
+ :value_date: 2011-03-19
90
+ :office: 0901
91
+ :operation: "0000000000"
92
+ :reference_1: "000000000000"
93
+ :reference_2: ""
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+ require 'lib/norma43'
3
+
4
+ describe Norma43 do
5
+
6
+ describe "parse" do
7
+
8
+ before :each do
9
+ @data = Norma43.read(File.join(File.dirname(__FILE__), "..", "data", "test.n43"))
10
+ end
11
+
12
+ specify { @data[:movements].size.should == 10 }
13
+ specify { @data[:info][:initial_balance].should == 10593.16 }
14
+ specify { @data[:info][:final_balance].should == 4469.33 }
15
+
16
+ #initial_balance + movements should be final balance. Float comparison with be_within
17
+ specify { (@data[:info][:initial_balance] + @data[:movements].inject( 0 ) { |sum,x| sum+x[:amount] }).should be_within(0.1).of(@data[:info][:final_balance]) }
18
+
19
+
20
+ end
21
+
22
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,7 +1,6 @@
1
1
  # This file is copied to spec/ when you run 'rails generate rspec:install'
2
2
  ENV["RAILS_ENV"] ||= 'test'
3
3
  #require File.expand_path("../../config/environment", __FILE__)
4
- require File.expand_path("../../spec/factories", __FILE__)
5
4
 
6
5
  # Requires supporting ruby files with custom matchers and macros, etc,
7
6
  # in spec/support/ and its subdirectories.
metadata CHANGED
@@ -1,12 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: norma43
3
3
  version: !ruby/object:Gem::Version
4
- hash: 15
5
- prerelease: false
4
+ hash: 13
5
+ prerelease:
6
6
  segments:
7
7
  - 0
8
- - 2
9
- version: "0.2"
8
+ - 3
9
+ version: "0.3"
10
10
  platform: ruby
11
11
  authors:
12
12
  - Linking Paths
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-06-20 00:00:00 +02:00
17
+ date: 2012-01-13 00:00:00 +01:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -45,12 +45,14 @@ files:
45
45
  - Gemfile
46
46
  - README
47
47
  - Rakefile
48
- - autotest/discover.rb
49
48
  - doc/descripcion_ficheros_n43.txt
50
49
  - doc/norma_43.pdf
51
50
  - lib/norma43.rb
52
51
  - lib/norma43/version.rb
53
52
  - norma43.gemspec
53
+ - spec/data/test.n43
54
+ - spec/data/test.yml
55
+ - spec/lib/norma43_spec.rb
54
56
  - spec/spec_helper.rb
55
57
  has_rdoc: true
56
58
  homepage: https://github.com/linkingpaths/norma43
@@ -82,9 +84,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
82
84
  requirements: []
83
85
 
84
86
  rubyforge_project: norma43
85
- rubygems_version: 1.3.7
87
+ rubygems_version: 1.4.2
86
88
  signing_key:
87
89
  specification_version: 3
88
90
  summary: A parser for norma43 files, a standard from the spanish banking industry for account movements)
89
91
  test_files:
92
+ - spec/data/test.n43
93
+ - spec/data/test.yml
94
+ - spec/lib/norma43_spec.rb
90
95
  - spec/spec_helper.rb
data/autotest/discover.rb DELETED
@@ -1 +0,0 @@
1
- Autotest.add_discovery { "rspec2" }