guevara 0.0.1.pre.alpha.1 → 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d955d8ee48f0fb243ec4da33f5b1d23172dfc5ec
4
- data.tar.gz: c41db3655462d5813f69edbe1acb8b533f5e070f
3
+ metadata.gz: c0ba03d076780de6b75d3ad0fb3a95936a56596d
4
+ data.tar.gz: e7512da4cb5436b863fe87e41f73a35bb9b9581b
5
5
  SHA512:
6
- metadata.gz: 21b4c4d24c45248af6f3273636e988810cef2436f4df02d696a55ce70a6d7bddbba7a953ada60c6a457a88934155498771769c9ab0384f9d64aa3b8df182564d
7
- data.tar.gz: adecd783f189a47fb6fb8410a80c94812c71a5db00ac50919d6ff19528be0d21469b126c5effa80b7cb9c29a87b61b5c91cfcc6189af893d87bf299aad6ef0cc
6
+ metadata.gz: f80fbd6d4f56d080d024e8ecd7131f9e782d2c231ef388755006fbadd977f9db869a09c9034604e2fd56539df5553a6dee916c2f3279a003ec1430fdecac86fe
7
+ data.tar.gz: 8901eadeb421a1bbd6bde04f78ebc16580c4181a4631812885b52cb5abacde7e9334686197354eabb13773655651a203d9e73c431b9b6ed6d7b1a65c202cde8c
data/.gitignore CHANGED
@@ -20,3 +20,4 @@ tmp
20
20
  *.o
21
21
  *.a
22
22
  mkmf.log
23
+ .ruby-version
data/.travis.yml ADDED
@@ -0,0 +1,5 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
4
+ - 2.0.0
5
+ - 2.1.1
data/README.md CHANGED
@@ -1,7 +1,12 @@
1
+ [![Gem Version](http://img.shields.io/gem/v/guevara.svg)](http://badge.fury.io/rb/guevara)
2
+ [![Build Status](http://img.shields.io/travis/rubylit/guevara.svg)](https://travis-ci.org/rubylit/guevara)
3
+ [![Code Climate](http://img.shields.io/codeclimate/github/rubylit/guevara.svg)](https://codeclimate.com/github/rubylit/guevara)
4
+ [![Inline docs](http://inch-ci.org/github/rubylit/guevara.png?branch=master)](http://inch-ci.org/github/rubylit/guevara)
5
+
1
6
  # Guevara
2
7
 
3
8
  Nacha file format is a pain, but with this gem the life will be easier
4
- and the sun will shine for you :).
9
+ and the sun will shine for you :). [![Nacha Guevara](http://upload.wikimedia.org/wikipedia/commons/thumb/a/aa/Nacha_Guevara.jpg/289px-Nacha_Guevara.jpg)](http://es.wikipedia.org/wiki/Nacha_Guevara)
5
10
 
6
11
  ## Installation
7
12
 
@@ -9,7 +14,49 @@ and the sun will shine for you :).
9
14
 
10
15
  ## Usage
11
16
 
12
- TODO: Write usage instructions here.
17
+ You need to build a big hash structure with all the required info,
18
+ create a `Guevara::Nacha` and call `to_s` to build the file.
19
+
20
+ ~~~ruby
21
+ nacha = Guevara::Nacha.new(
22
+ priority_code: 01,
23
+ destination_id: '12345678',
24
+ origin_id: '12345678',
25
+ created_at: '2014-11-28T13:30',
26
+ id: 'A',
27
+ destination_name: 'Rubylit',
28
+ origin_name: 'Zest',
29
+ batches: [
30
+ {
31
+ service_class: '200',
32
+ company_name: 'rubylit',
33
+ company_id: 'Ruby123',
34
+ company_date: '2014-09-18',
35
+ origin_id: '12345678',
36
+ effective_date: '2014-09-21',
37
+ transactions: [{
38
+ id: 'FD00AFA8A0F7',
39
+ type: 'debit',
40
+ amount: 1600,
41
+ name: 'marge baker',
42
+ additional_info: 'wellsville|KS|66092|101 2nd st|',
43
+ telephone: '5858232966',
44
+ account_type: 'checking',
45
+ routing_number: 103100195,
46
+ account_number: '3ACCOUNT234'
47
+ }]
48
+ }
49
+ ]
50
+ )
51
+
52
+ nacha.to_s #=>
53
+ # 101001234567800123456781411281330A094101 Rubylit Zest 0
54
+ # 5200rubylit Ruby123PPD 140918140921 1123456780000001
55
+ # 6271031001953ACCOUNT234 0000001600FD00AFA8A0F7 marge baker 1123456780000001
56
+ # 705wellsville|KS|66092|101 2nd st| 00010000001
57
+ # 82000000020010310019000000001600000000000000 Ruby123 123456780000001
58
+ # 9000001000006000000020010310019000000001600000000000000
59
+ ~~~
13
60
 
14
61
  ## Contributing
15
62
 
data/Rakefile CHANGED
@@ -1,7 +1,7 @@
1
1
  require "bundler/gem_tasks"
2
2
 
3
3
  task :test do
4
- exec "cutest ./test/*_test.rb"
4
+ exec "cutest -r ./test/helper.rb ./test/test_*.rb"
5
5
  end
6
6
 
7
7
  task :default => :test
data/lib/guevara.rb CHANGED
@@ -1,5 +1,5 @@
1
- require "guevara/version"
1
+ require 'guevara/version'
2
2
 
3
3
  module Guevara
4
- # Your code goes here...
4
+ autoload :Nacha, 'guevara/nacha'
5
5
  end
@@ -0,0 +1,21 @@
1
+ require_relative 'row'
2
+
3
+ module Guevara
4
+ class Addenda < Row
5
+
6
+ def default_attributes
7
+ {
8
+ number: 1 # we should not have more than 1 addenda
9
+ }
10
+ end
11
+
12
+ def fields
13
+ ["7", # row type
14
+ "05", # addenda type
15
+ "%<additional_info>-80.80s",
16
+ "%<number>04d",
17
+ "%<entry_number>07d"]
18
+ end
19
+
20
+ end
21
+ end
data/lib/guevara/batch.rb CHANGED
@@ -1,30 +1,74 @@
1
+ require_relative 'batch_header'
2
+ require_relative 'batch_control'
3
+ require_relative 'addenda'
4
+ require_relative 'entry'
1
5
  require 'date'
2
6
 
3
7
  module Guevara
4
8
  class Batch
5
9
 
6
- attr_reader :service_class, :options, :transactions
7
-
8
- def initialize(transactions, options)
9
- @service_class = 200
10
- @options = options
11
- @transactions = transactions
10
+ attr_reader :transactions, :attributes
11
+
12
+ def initialize(transactions, attributes)
13
+ @transactions = transactions
14
+ @attributes = attributes
12
15
  end
13
-
16
+
14
17
  def to_s
15
- format "5%3d%-16.16s%-20.20s%10.10sPPD %s%s 1%8d%07d\n",
16
- service_class,
17
- options[:company_name],
18
- '', # company discretionary data
19
- options[:company_id],
20
- Date.parse(options[:date]).strftime("%y%m%d"),
21
- effective_date.strftime("%y%m%d"),
22
- options[:routing_number],
23
- options[:index]
24
- end
25
-
18
+ batch = []
19
+
20
+ batch << batch_header.to_s
21
+ transactions.each_with_index do |transaction, index|
22
+ batch << entry(transaction, index).to_s
23
+ batch << addenda(transaction, index).to_s
24
+ end
25
+ batch << batch_control
26
+ batch.join
27
+ end
28
+
29
+ def batch_header
30
+ header_attributes = { effective_date: effective_date }.merge(attributes)
31
+ BatchHeader.new header_attributes
32
+ end
33
+
34
+ def batch_control
35
+ control_attributes = {
36
+ entry_count: transactions.size * 2,
37
+ entry_hash: entry_hash,
38
+ total_debit: total('debit'),
39
+ total_credit: total('credit')
40
+ }.merge(attributes)
41
+ BatchControl.new control_attributes
42
+ end
43
+
44
+ def entry_hash
45
+ transactions.
46
+ map{ |t| t[:routing_number].to_i / 10 }. # ignore the check digit
47
+ reduce(:+). # sum
48
+ modulo(10_000_000_000) # cap to 10 digits
49
+ end
50
+
51
+ def total type
52
+ transactions.
53
+ select{ |t| t[:type] == type }.
54
+ map{ |t| t[:amount] }.
55
+ reduce(0, :+).
56
+ modulo(1_000_000_000_000)
57
+ end
58
+
26
59
  def effective_date
27
- Date.parse transactions.first[:effective_date]
28
- end
29
- end
60
+ transactions.first[:effective_date]
61
+ end
62
+
63
+ def entry transaction, index
64
+ entry_attributes = transaction.merge(number: index + 1,
65
+ origin_id: attributes[:origin_id])
66
+ Entry.new entry_attributes
67
+ end
68
+
69
+ def addenda transaction, index
70
+ Addenda.new transaction.merge(entry_number: index + 1)
71
+ end
72
+
73
+ end
30
74
  end
@@ -0,0 +1,24 @@
1
+ require_relative 'row'
2
+
3
+ module Guevara
4
+ class BatchControl < Row
5
+
6
+ def default_attributes
7
+ { discretionary_data: '' }
8
+ end
9
+
10
+ def fields
11
+ ["8",
12
+ "%<service_class>3d",
13
+ "%<entry_count>06d",
14
+ "%<entry_hash>010d",
15
+ "%<total_debit>012d",
16
+ "%<total_credit>012d",
17
+ "%<company_id>10.10s",
18
+ " " * 25, # Authentication and reserved fields.
19
+ "%<origin_id>8d",
20
+ "%<number>07d"]
21
+ end
22
+
23
+ end
24
+ end
@@ -0,0 +1,33 @@
1
+ require 'date'
2
+ require_relative 'row'
3
+
4
+ module Guevara
5
+ class BatchHeader < Row
6
+
7
+ def default_attributes
8
+ { discretionary_data: '' }
9
+ end
10
+
11
+ def format_attributes
12
+ attributes[:company_date] = Date.parse(attributes[:company_date]).
13
+ strftime('%y%m%d')
14
+ attributes[:effective_date] = Date.parse(attributes[:effective_date]).
15
+ strftime('%y%m%d')
16
+ end
17
+
18
+ def fields
19
+ ["5",
20
+ "%<service_class>3d",
21
+ "%<company_name>-16.16s",
22
+ "%<discretionary_data>-20.20s",
23
+ "%<company_id>10.10s",
24
+ "PPD ",
25
+ "%<company_date>s",
26
+ "%<effective_date>s",
27
+ " 1",
28
+ "%<origin_id>8d",
29
+ "%<number>07d"]
30
+ end
31
+
32
+ end
33
+ end
@@ -0,0 +1,31 @@
1
+ require_relative 'row'
2
+
3
+ module Guevara
4
+ class Entry < Row
5
+
6
+ ACCOUNT_TYPE_CODE = { 'checking' => '2', 'saving' => '3' }
7
+ TRANSACTION_TYPE_CODE = { 'credit' => '2', 'debit' => '7' }
8
+
9
+ def format_attributes
10
+ attributes[:transaction_code] ||= transaction_code
11
+ end
12
+
13
+ def fields
14
+ ["6%<transaction_code>2d",
15
+ "%<routing_number>9d",
16
+ "%<account_number>-17.17s",
17
+ "%<amount>010d",
18
+ "%<id>-15.15s",
19
+ "%<name>-22.22s",
20
+ " 1", # Addenda record indicator
21
+ "%<origin_id>8d",
22
+ "%<number>07d"]
23
+ end
24
+
25
+ def transaction_code
26
+ ACCOUNT_TYPE_CODE[attributes[:account_type]] +
27
+ TRANSACTION_TYPE_CODE[attributes[:type]]
28
+ end
29
+
30
+ end
31
+ end
@@ -0,0 +1,19 @@
1
+ require 'date'
2
+ require_relative 'row'
3
+
4
+ module Guevara
5
+ class FileControl < Row
6
+
7
+ def fields
8
+ ["9",
9
+ "%<batch_count>06d",
10
+ "%<block_count>06d",
11
+ "%<entry_count>08d",
12
+ "%<entry_hash>010d",
13
+ "%<total_debit>012d",
14
+ "%<total_credit>012d",
15
+ " " * 39] # reserved
16
+ end
17
+
18
+ end
19
+ end
@@ -0,0 +1,32 @@
1
+ require 'date'
2
+ require_relative 'row'
3
+
4
+ module Guevara
5
+ class FileHeader < Row
6
+
7
+ def default_attributes
8
+ { reference: 0 }
9
+ end
10
+
11
+ def format_attributes
12
+ attributes[:created_at] = DateTime.parse(attributes[:created_at]).
13
+ strftime('%y%m%d%H%M')
14
+ end
15
+
16
+ def fields
17
+ ["1",
18
+ "%<priority_code>02d",
19
+ "%<destination_id>010d",
20
+ "%<origin_id>010d",
21
+ "%<created_at>10.10s",
22
+ "%<id>1.1s",
23
+ "094", # record size is fixed
24
+ "10", # blocking factor
25
+ "1", # format code
26
+ "%<destination_name>23.23s",
27
+ "%<origin_name>23.23s",
28
+ "%<reference>8d"]
29
+ end
30
+
31
+ end
32
+ end
@@ -0,0 +1,55 @@
1
+ require_relative 'file_header'
2
+ require_relative 'file_control'
3
+ require_relative 'batch'
4
+
5
+ module Guevara
6
+ class Nacha
7
+
8
+ attr_reader :attributes, :batches
9
+
10
+ def initialize attributes
11
+ self.batches = attributes.delete(:batches)
12
+ @attributes = attributes
13
+ end
14
+
15
+ def batches= batches
16
+ @batches = batches.each_with_index.map do |batch_attributes, index|
17
+ transactions = batch_attributes.delete(:transactions)
18
+ batch_attributes[:number] = index + 1
19
+ Batch.new(transactions, batch_attributes)
20
+ end
21
+ end
22
+
23
+ def to_s
24
+ file = []
25
+ file << file_header.to_s
26
+ batches.each { |batch| file << batch.to_s }
27
+ file << file_control.to_s
28
+ file.join('')
29
+ end
30
+
31
+ def file_header
32
+ FileHeader.new attributes
33
+ end
34
+
35
+ def total
36
+ batches.
37
+ map { |b| yield b }.
38
+ reduce(:+)
39
+ end
40
+
41
+ def file_control
42
+ entry_count = total { |b| b.batch_control.attributes[:entry_count] }
43
+ block_count = entry_count + batches.size * 2 + 2
44
+ FileControl.new(
45
+ batch_count: batches.size,
46
+ block_count: block_count,
47
+ entry_count: entry_count,
48
+ entry_hash: total { |b| b.batch_control.attributes[:entry_hash] },
49
+ total_debit: total { |b| b.total('debit') },
50
+ total_credit: total { |b| b.total('credit') }
51
+ )
52
+ end
53
+ end
54
+
55
+ end
@@ -0,0 +1,27 @@
1
+ module Guevara
2
+ class Row
3
+
4
+ attr_reader :attributes
5
+
6
+ def initialize attributes
7
+ self.attributes = attributes
8
+ format_attributes
9
+ end
10
+
11
+ def attributes= attr
12
+ @attributes = default_attributes.merge(attr)
13
+ end
14
+
15
+ def format_attributes
16
+ end
17
+
18
+ def default_attributes
19
+ {}
20
+ end
21
+
22
+ def to_s
23
+ format(fields.join, attributes) << "\n"
24
+ end
25
+
26
+ end
27
+ end
@@ -1,3 +1,3 @@
1
1
  module Guevara
2
- VERSION = "0.0.1-alpha.1"
2
+ VERSION = "0.0.1"
3
3
  end
data/test/helper.rb ADDED
@@ -0,0 +1,31 @@
1
+ lib_path = File.absolute_path(File.join(__FILE__, '..', '..', 'lib'))
2
+ $LOAD_PATH.unshift(lib_path) unless $LOAD_PATH.include? lib_path
3
+
4
+ def sample_transaction
5
+ {
6
+ id: 'FD00AFA8A0F7',
7
+ type: 'debit',
8
+ amount: 1600,
9
+ effective_date: '2014-09-21',
10
+ name: 'marge baker',
11
+ first_name: 'marge',
12
+ last_name: 'baker',
13
+ additional_info: 'wellsville|KS|66092|101 2nd st|',
14
+ telephone: '5858232966',
15
+ account_type: 'checking',
16
+ routing_number: 103100195,
17
+ account_number: '3ACCOUNT234'
18
+ }
19
+ end
20
+
21
+ def debugger_equal value, other
22
+ flunk <<DEBUG unless value == other
23
+ Output is not as Expected
24
+ # #{ %w[ 0 1 2 3 4 5 6 7 8 9 ].map { |i| i.to_s * 10 }.join('')[1..-1] }
25
+ # #{ '1234567890' * 10 }
26
+ O#{ value.inspect }
27
+ E#{ other.inspect }
28
+
29
+ DEBUG
30
+ success
31
+ end
@@ -0,0 +1,12 @@
1
+ require_relative 'helper.rb'
2
+ require_relative '../lib/guevara/addenda'
3
+
4
+ test 'generates an addenda record' do
5
+ addenda = Guevara::Addenda.new({
6
+ additional_info: "wellsville|KS|66092|101 2nd st|",
7
+ entry_number: 1
8
+ }).to_s
9
+ debugger_equal addenda, <<NACHA
10
+ 705wellsville|KS|66092|101 2nd st| 00010000001
11
+ NACHA
12
+ end
@@ -0,0 +1,21 @@
1
+ require_relative 'helper.rb'
2
+ require_relative '../lib/guevara/batch_control'
3
+
4
+ setup do
5
+ Guevara::BatchControl.new(
6
+ service_class: '200',
7
+ entry_count: 2,
8
+ entry_hash: 10310019,
9
+ total_debit: 1200,
10
+ total_credit: 3500,
11
+ company_id: 'Ruby123',
12
+ origin_id: '12345678',
13
+ number: 1
14
+ )
15
+ end
16
+
17
+ test 'generates the batch contol row' do |batch_control|
18
+ debugger_equal batch_control.to_s, <<NACHA
19
+ 82000000020010310019000000001200000000003500 Ruby123 123456780000001
20
+ NACHA
21
+ end
@@ -0,0 +1,24 @@
1
+ require_relative 'helper.rb'
2
+ require_relative '../lib/guevara/batch'
3
+
4
+ setup do
5
+ Guevara::Batch.new [ sample_transaction ],
6
+ service_class: '200',
7
+ company_name: 'rubylit',
8
+ company_id: 'Ruby123',
9
+ company_date: '2014-09-18',
10
+ origin_id: '12345678',
11
+ number: 1
12
+ end
13
+
14
+ test 'generates the batch' do |batch|
15
+ expected = <<NACHA
16
+ 5200rubylit Ruby123PPD 140918140921 1123456780000001
17
+ 6271031001953ACCOUNT234 0000001600FD00AFA8A0F7 marge baker 1123456780000001
18
+ 705wellsville|KS|66092|101 2nd st| 00010000001
19
+ 82000000020010310019000000001600000000000000 Ruby123 123456780000001
20
+ NACHA
21
+ batch.to_s.lines.to_a.each_with_index do |line, index|
22
+ debugger_equal line, expected.lines.to_a[index]
23
+ end
24
+ end
@@ -0,0 +1,20 @@
1
+ require_relative 'helper.rb'
2
+ require_relative '../lib/guevara/batch_header'
3
+
4
+ setup do
5
+ Guevara::BatchHeader.new(
6
+ service_class: '200',
7
+ company_name: 'rubylit',
8
+ company_id: '7654321',
9
+ company_date: '2014-09-18',
10
+ effective_date: '2014-09-21',
11
+ origin_id: '12345678',
12
+ number: 1
13
+ )
14
+ end
15
+
16
+ test 'generates the batch header' do |batch_header|
17
+ debugger_equal batch_header.to_s, <<NACHA
18
+ 5200rubylit 7654321PPD 140918140921 1123456780000001
19
+ NACHA
20
+ end
@@ -0,0 +1,22 @@
1
+ require_relative 'helper.rb'
2
+ require_relative '../lib/guevara/entry'
3
+
4
+ setup do
5
+ Guevara::Entry.new(
6
+ type: 'debit',
7
+ account_type: 'checking',
8
+ routing_number: 103100195,
9
+ account_number: '3ACCOUNT234',
10
+ amount: 1600,
11
+ id: 'FD00AFA8A0F7',
12
+ name: 'marge baker',
13
+ origin_id: '12345678',
14
+ number: 1
15
+ )
16
+ end
17
+
18
+ test 'generates the entry detail record' do |entry_record|
19
+ debugger_equal entry_record.to_s, <<NACHA
20
+ 6271031001953ACCOUNT234 0000001600FD00AFA8A0F7 marge baker 1123456780000001
21
+ NACHA
22
+ end
@@ -0,0 +1,18 @@
1
+ require_relative 'helper.rb'
2
+ require_relative '../lib/guevara/file_control'
3
+
4
+ test 'generates an file control' do
5
+ file_control = Guevara::FileControl.new(
6
+ batch_count: 2,
7
+ block_count: 8,
8
+ entry_count: 4,
9
+ entry_hash: 12249928,
10
+ total_debit: 12557,
11
+ total_credit: 0,
12
+ ).to_s
13
+ debugger_equal file_control, <<NACHA
14
+ 9000002000008000000040012249928000000012557000000000000
15
+ NACHA
16
+ end
17
+
18
+
@@ -0,0 +1,52 @@
1
+ require_relative 'helper.rb'
2
+ require 'guevara'
3
+
4
+ test 'generates the batch' do |batch|
5
+
6
+ transaction = {
7
+ id: 'FD00AFA8A0F7',
8
+ type: 'debit',
9
+ amount: 1600,
10
+ name: 'marge baker',
11
+ additional_info: 'wellsville|KS|66092|101 2nd st|',
12
+ telephone: '5858232966',
13
+ account_type: 'checking',
14
+ routing_number: 103100195,
15
+ account_number: '3ACCOUNT234'
16
+ }
17
+
18
+ batch = {
19
+ service_class: '200',
20
+ company_name: 'rubylit',
21
+ company_id: 'Ruby123',
22
+ company_date: '2014-09-18',
23
+ origin_id: '12345678',
24
+ effective_date: '2014-09-21',
25
+ transactions: [ transaction ]
26
+ }
27
+
28
+ nacha = Guevara::Nacha.new(
29
+ priority_code: 01,
30
+ destination_id: '12345678',
31
+ origin_id: '12345678',
32
+ created_at: '2014-11-28T13:30',
33
+ id: 'A',
34
+ destination_name: 'Rubylit',
35
+ origin_name: 'Zest',
36
+ batches: [ batch ]
37
+ )
38
+
39
+ expected = <<NACHA
40
+ 101001234567800123456781411281330A094101 Rubylit Zest 0
41
+ 5200rubylit Ruby123PPD 140918140921 1123456780000001
42
+ 6271031001953ACCOUNT234 0000001600FD00AFA8A0F7 marge baker 1123456780000001
43
+ 705wellsville|KS|66092|101 2nd st| 00010000001
44
+ 82000000020010310019000000001600000000000000 Ruby123 123456780000001
45
+ 9000001000006000000020010310019000000001600000000000000
46
+ NACHA
47
+
48
+ nacha.to_s.lines.to_a.each_with_index do |line, index|
49
+ debugger_equal line, expected.lines.to_a[index]
50
+ end
51
+
52
+ end
@@ -0,0 +1,21 @@
1
+ require_relative 'helper.rb'
2
+ require_relative '../lib/guevara/file_header'
3
+
4
+ setup do
5
+ Guevara::FileHeader.new(
6
+ priority_code: 01,
7
+ destination_id: '12345678',
8
+ origin_id: '12345678',
9
+ created_at: '2014-11-28T13:30',
10
+ id: 'A',
11
+ destination_name: 'Rubylit',
12
+ origin_name: 'Zest'
13
+ )
14
+ end
15
+
16
+ test 'generates a full file' do |header|
17
+ debugger_equal header.to_s, <<NACHA
18
+ 101001234567800123456781411281330A094101 Rubylit Zest 0
19
+ NACHA
20
+ end
21
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: guevara
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1.pre.alpha.1
4
+ version: 0.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gaston Ramos
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-09-18 00:00:00.000000000 Z
12
+ date: 2014-09-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -62,16 +62,32 @@ extensions: []
62
62
  extra_rdoc_files: []
63
63
  files:
64
64
  - ".gitignore"
65
- - ".ruby-version"
65
+ - ".travis.yml"
66
66
  - Gemfile
67
67
  - LICENSE.txt
68
68
  - README.md
69
69
  - Rakefile
70
70
  - guevara.gemspec
71
71
  - lib/guevara.rb
72
+ - lib/guevara/addenda.rb
72
73
  - lib/guevara/batch.rb
74
+ - lib/guevara/batch_control.rb
75
+ - lib/guevara/batch_header.rb
76
+ - lib/guevara/entry.rb
77
+ - lib/guevara/file_control.rb
78
+ - lib/guevara/file_header.rb
79
+ - lib/guevara/nacha.rb
80
+ - lib/guevara/row.rb
73
81
  - lib/guevara/version.rb
74
- - test/batch_generation_test.rb
82
+ - test/helper.rb
83
+ - test/test_addenda.rb
84
+ - test/test_batch_control.rb
85
+ - test/test_batch_generation.rb
86
+ - test/test_batch_header.rb
87
+ - test/test_entry.rb
88
+ - test/test_file_control.rb
89
+ - test/test_file_generation.rb
90
+ - test/test_file_header.rb
75
91
  homepage: http://github.com/rubylit/guevara
76
92
  licenses:
77
93
  - GPL
@@ -87,9 +103,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
87
103
  version: '0'
88
104
  required_rubygems_version: !ruby/object:Gem::Requirement
89
105
  requirements:
90
- - - ">"
106
+ - - ">="
91
107
  - !ruby/object:Gem::Version
92
- version: 1.3.1
108
+ version: '0'
93
109
  requirements: []
94
110
  rubyforge_project:
95
111
  rubygems_version: 2.2.2
@@ -97,4 +113,13 @@ signing_key:
97
113
  specification_version: 4
98
114
  summary: Build nacha files.
99
115
  test_files:
100
- - test/batch_generation_test.rb
116
+ - test/helper.rb
117
+ - test/test_addenda.rb
118
+ - test/test_batch_control.rb
119
+ - test/test_batch_generation.rb
120
+ - test/test_batch_header.rb
121
+ - test/test_entry.rb
122
+ - test/test_file_control.rb
123
+ - test/test_file_generation.rb
124
+ - test/test_file_header.rb
125
+ has_rdoc:
data/.ruby-version DELETED
@@ -1 +0,0 @@
1
- 2.2.0-dev
@@ -1,36 +0,0 @@
1
- require_relative '../lib/guevara/batch'
2
- def sample_transaction
3
- {
4
- id: 'FD00AFA8A0F7',
5
- type: 'debit',
6
- amount: '1600',
7
- effective_date: '2014-09-21',
8
- first_name: 'marge',
9
- last_name: 'baker',
10
- address: '101 2nd st',
11
- city: 'wellsville',
12
- state: 'KS',
13
- postal_code: '66092',
14
- telephone: '5858232966',
15
- account_type: 'checking',
16
- routing_number: '103100195',
17
- account_number: '3423423253234'
18
- }
19
- end
20
-
21
- def sample_options
22
- {
23
- :routing_number => '12345678',
24
- :company_name => 'rubylit',
25
- :company_id => 'Ruby123',
26
- :date => '2014-09-18',
27
- :index => 1
28
- }
29
- end
30
-
31
- test 'generates the batch header' do
32
- batch = Guevara::Batch.new [ sample_transaction ], sample_options
33
- assert_equal batch.to_s.lines.to_a.first, <<NACHA
34
- 5200rubylit Ruby123PPD 140918140921 1123456780000001
35
- NACHA
36
- end