ach 0.5.11 → 0.5.16

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
- SHA1:
3
- metadata.gz: 9e7ca9ea4816c360f88497c889f35c4edc6157cb
4
- data.tar.gz: 1a7c8e819411bf1d75e8e2ea0c596de88d9c8741
2
+ SHA256:
3
+ metadata.gz: a6f2cdcb923998c4fc08e11bd9efeb320e349187e657ab7b29ff79c325447510
4
+ data.tar.gz: 951a8528fb40feebb2ed689649b86cce1b25623a51fab780c0c6f994bfa8ffee
5
5
  SHA512:
6
- metadata.gz: 8c4c4d8eb7597ef6a4b54400f3aeb73c4301484ce9f0ed30e6e46adb822b69363bc7b7e59e12d2854b14d8fc30b3b3c911191a28cae389880d423ebbd5049fd4
7
- data.tar.gz: 1b274bf95a738e664f38c78b893d948e8eed798a314202df0a319cbc799f41643f0ceb1b03d139acbf91984ba4d03390c0885b06bd8f1bc126c52adec39096d7
6
+ metadata.gz: 1bbc5ff04f7a5ee0196495e00c8a31077dc0a2ad1439953ff6c5c7971d2bb256ad03321261c187a8364c96ddfe6db0983104b07f10266ada86ad24699c09dab2
7
+ data.tar.gz: 6d8158a6e81466d7d6017e4d017a948a898dfed6ed96880ff5b6be19cc4496890bd585da757d800dd921287e4334889d942d67390f7d020ebbefda9e2c69cbc8
@@ -14,7 +14,7 @@ module ACH
14
14
  @control = Records::FileControl.new
15
15
 
16
16
  if data
17
- if (data.encode(Encoding.find('ASCII'),ENCODING_OPTIONS) =~ /\n|\r\n/).nil?
17
+ if (data.encode(Encoding.find('ASCII'), **ENCODING_OPTIONS) =~ /\n|\r\n/).nil?
18
18
  parse_fixed(data)
19
19
  else
20
20
  parse(data)
@@ -22,6 +22,7 @@ module ACH
22
22
  end
23
23
  end
24
24
 
25
+
25
26
  # @param eol [String] Line ending, default to CRLF
26
27
  def to_s eol = "\r\n"
27
28
  records = []
@@ -33,16 +34,14 @@ module ACH
33
34
  end
34
35
  records << @control
35
36
 
36
- records_count = records.inject(0) do |sum, record|
37
- sum + record.records_count
38
- end
39
-
37
+ records_count = records.map(&:records_count).reduce(:+)
40
38
  nines_needed = (10 - records_count) % 10
41
39
  nines_needed = nines_needed % 10
42
40
  nines_needed.times { records << Records::Nines.new() }
43
41
 
42
+ records_count = records.map(&:records_count).reduce(:+)
44
43
  @control.batch_count = @batches.length
45
- @control.block_count = (records.length / 10).ceil
44
+ @control.block_count = (records_count / 10).ceil
46
45
 
47
46
  @control.entry_count = 0
48
47
  @control.debit_total = 0
@@ -14,7 +14,7 @@ module ACH
14
14
  end
15
15
 
16
16
  def to_ach
17
- @control.entry_count = @entries.inject(0) { |total, entry| total + entry.records_count }
17
+ @control.entry_count = @entries.map(&:records_count).reduce(:+).to_i
18
18
  @control.debit_total = 0
19
19
  @control.credit_total = 0
20
20
  @control.entry_hash = 0
@@ -51,8 +51,18 @@ module ACH
51
51
  @control.company_identification = @header.company_identification
52
52
  @control.originating_dfi_identification = @header.originating_dfi_identification
53
53
  @control.batch_number = @header.batch_number
54
+ if last_entry.is_a? ACH::BalancingEntryDetail
55
+ @control.credit_total = last_entry.amount
56
+ @control.debit_total = last_entry.amount
57
+ end
54
58
 
55
59
  [@header] + @entries + @addendas + [@control]
56
60
  end
61
+
62
+ private
63
+
64
+ def last_entry
65
+ @last_entry ||= @entries.last
66
+ end
57
67
  end
58
68
  end
@@ -53,7 +53,7 @@ module ACH
53
53
  if RUBY_VERSION < '1.9'
54
54
  val = Iconv.conv('ASCII//IGNORE', 'UTF8', val)
55
55
  else
56
- val = val.encode Encoding.find('ASCII'), ENCODING_OPTIONS
56
+ val = val.encode(Encoding.find('ASCII'), **ENCODING_OPTIONS)
57
57
  end
58
58
  end
59
59
 
@@ -2,6 +2,12 @@ require 'holidays'
2
2
 
3
3
  module ACH
4
4
  class NextFederalReserveEffectiveDate
5
+ FEDERAL_RESERVE_SYMBOL =
6
+ if Gem.loaded_specs['holidays'].version < Gem::Version.new('7.0.0')
7
+ :federal_reserve
8
+ else
9
+ :federalreserve
10
+ end
5
11
  def initialize(submission_date)
6
12
  @submission_date = submission_date
7
13
  end
@@ -30,7 +36,7 @@ module ACH
30
36
  end
31
37
 
32
38
  def holiday?(date)
33
- Holidays.on(date, :federal_reserve, :observed).any?
39
+ Holidays.on(date, FEDERAL_RESERVE_SYMBOL, :observed).any?
34
40
  end
35
41
 
36
42
  def holiday_or_weekend?(date)
@@ -16,7 +16,7 @@ module ACH::Records
16
16
  field :account_number, String, lambda { |f| left_justify(f, 17)}
17
17
  field :amount, Integer, lambda { |f| sprintf('%010d', f)}
18
18
  field :individual_id_number, String, lambda { |f| left_justify(f, 15)}
19
- field :individual_name, String, lambda { |f| left_justify(f, 22)}
19
+ field :individual_name, String, lambda { |f| left_justify(f.gsub(/[\n\r]/, ''), 22)}
20
20
  field :discretionary_data, String, lambda { |f| left_justify(f, 2)}, ' '
21
21
  field :addenda_record_indicator, Integer,
22
22
  lambda { |f| sprintf('%01d', f)}, 0
@@ -85,4 +85,14 @@ module ACH::Records
85
85
  nil, nil, /\A\d{8}\z/
86
86
  field :trace_number, Integer, lambda { |f| sprintf('%07d', f)}
87
87
  end
88
+
89
+ class BalancingEntryDetail < EntryDetail
90
+ @fields = EntryDetail.fields.slice(0, 5)
91
+ const_field :individual_id_number, (' ' * 15)
92
+ field :account_description, String, lambda { |f| left_justify(f, 22)}
93
+ field :discretionary_data, String, lambda { |f| left_justify(f, 2)}, ' '
94
+ field :addenda_record_indicator, Integer, lambda { |f| sprintf('%01d', f)}, 0
95
+ field :origin_routing_number, String, lambda { |f| sprintf('%08d', f.to_i) }
96
+ field :trace_number, Integer, lambda { |f| sprintf('%07d', f)}
97
+ end
88
98
  end
@@ -1,3 +1,3 @@
1
1
  module ACH
2
- VERSION = '0.5.11'.freeze
2
+ VERSION = '0.5.16'.freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ach
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.11
4
+ version: 0.5.16
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jared Morgan
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2019-03-07 00:00:00.000000000 Z
12
+ date: 2020-11-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: appraisal
@@ -45,14 +45,14 @@ dependencies:
45
45
  requirements:
46
46
  - - ">="
47
47
  - !ruby/object:Gem::Version
48
- version: '0'
48
+ version: 12.3.3
49
49
  type: :development
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
53
  - - ">="
54
54
  - !ruby/object:Gem::Version
55
- version: '0'
55
+ version: 12.3.3
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: rspec
58
58
  requirement: !ruby/object:Gem::Requirement
@@ -73,20 +73,14 @@ dependencies:
73
73
  requirements:
74
74
  - - ">="
75
75
  - !ruby/object:Gem::Version
76
- version: 1.2.0
77
- - - "<"
78
- - !ruby/object:Gem::Version
79
- version: 5.4.0
76
+ version: '3.1'
80
77
  type: :runtime
81
78
  prerelease: false
82
79
  version_requirements: !ruby/object:Gem::Requirement
83
80
  requirements:
84
81
  - - ">="
85
82
  - !ruby/object:Gem::Version
86
- version: 1.2.0
87
- - - "<"
88
- - !ruby/object:Gem::Version
89
- version: 5.4.0
83
+ version: '3.1'
90
84
  description: ach is a Ruby helper for building and parsing ACH files. In particular,
91
85
  it helps with field order and alignment, and adds padding lines to end of file.
92
86
  email: jmorgan@morgancreative.net
@@ -131,8 +125,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
131
125
  - !ruby/object:Gem::Version
132
126
  version: '0'
133
127
  requirements: []
134
- rubyforge_project:
135
- rubygems_version: 2.5.2.3
128
+ rubygems_version: 3.0.3
136
129
  signing_key:
137
130
  specification_version: 4
138
131
  summary: Helper for building ACH files