ach 0.5.16 → 0.6.0

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
  SHA256:
3
- metadata.gz: a6f2cdcb923998c4fc08e11bd9efeb320e349187e657ab7b29ff79c325447510
4
- data.tar.gz: 951a8528fb40feebb2ed689649b86cce1b25623a51fab780c0c6f994bfa8ffee
3
+ metadata.gz: c8950b0833382bb80f3ebf7b9e0e2702aece4ee0de2f385c4c9e5dbd4a7d1157
4
+ data.tar.gz: ce02f3a9a926be32cc72f8a986c308e4ceee7ceb617c487bc915ca20d6efa901
5
5
  SHA512:
6
- metadata.gz: 1bbc5ff04f7a5ee0196495e00c8a31077dc0a2ad1439953ff6c5c7971d2bb256ad03321261c187a8364c96ddfe6db0983104b07f10266ada86ad24699c09dab2
7
- data.tar.gz: 6d8158a6e81466d7d6017e4d017a948a898dfed6ed96880ff5b6be19cc4496890bd585da757d800dd921287e4334889d942d67390f7d020ebbefda9e2c69cbc8
6
+ metadata.gz: 84465c6a64caeead398a541d7110ee473ce1cdd11a1c200a3b9f975813a2898e7d904ceaebc68e7d16cc5c880d9b27d5497f7930d5a28e8b7563038a9a3e1ede
7
+ data.tar.gz: dfc53a158083ef3559583b1f2e613f8fdd0f76ea38434345773d95af8875bc0d195b9ec560e1202cfcc8eeb742e1a923458fa0d052612132bcc57ec881f63c5b
data/lib/ach/ach_file.rb CHANGED
@@ -24,7 +24,7 @@ module ACH
24
24
 
25
25
 
26
26
  # @param eol [String] Line ending, default to CRLF
27
- def to_s eol = "\r\n"
27
+ def to_s eol = ACH.eol
28
28
  records = []
29
29
  records << @header
30
30
 
@@ -55,10 +55,10 @@ module ACH
55
55
  @control.entry_hash += batch.control.entry_hash
56
56
  end
57
57
 
58
- records.collect { |r| r.to_ach }.join(eol) + eol
58
+ records.collect { |r| r.to_ach(eol: eol) }.join(eol) + eol
59
59
  end
60
60
 
61
- def report
61
+ def report eol: ACH.eol
62
62
  to_s # To ensure correct records
63
63
  lines = []
64
64
 
@@ -74,7 +74,7 @@ module ACH
74
74
  lines << left_justify("Credit Total: ", 25) +
75
75
  sprintf("% 7d.%02d", @control.credit_total / 100, @control.credit_total % 100)
76
76
 
77
- lines.join("\r\n")
77
+ lines.join(eol)
78
78
  end
79
79
 
80
80
  def parse_fixed data
@@ -105,6 +105,7 @@ module ACH
105
105
  batch = ACH::Batch.new
106
106
  bh = batch.header
107
107
  bh.company_name = line[4..19].strip
108
+ bh.company_discretionary_data = line[20..39].strip
108
109
  bh.company_identification = line[40..49].gsub(/\A1/, '')
109
110
 
110
111
  # Does not try to guess if company identification is an EIN
@@ -145,7 +146,8 @@ module ACH
145
146
  when '8'
146
147
  # skip
147
148
  when '9'
148
- # skip
149
+ @control = Records::FileControl.new
150
+ @control.filler = line[55..93]
149
151
  else
150
152
  raise UnrecognizedTypeCode, "Didn't recognize type code #{type} for this line:\n#{line}"
151
153
  end
data/lib/ach/batch.rb CHANGED
@@ -58,9 +58,9 @@ module ACH
58
58
 
59
59
  [@header] + @entries + @addendas + [@control]
60
60
  end
61
-
61
+
62
62
  private
63
-
63
+
64
64
  def last_entry
65
65
  @last_entry ||= @entries.last
66
66
  end
@@ -54,7 +54,7 @@ module ACH::Records
54
54
  return !self.addenda.empty?
55
55
  end
56
56
 
57
- def to_ach
57
+ def to_ach eol: ACH.eol
58
58
  self.addenda_record_indicator = (self.addenda.empty? ? 0 : 1) if self.respond_to?(:addenda_record_indicator)
59
59
  self.number_of_addenda_records = self.addenda.length if self.respond_to?(:number_of_addenda_records)
60
60
 
@@ -62,7 +62,7 @@ module ACH::Records
62
62
 
63
63
  self.addenda.each {|a|
64
64
  a.entry_detail_sequence_number = self.trace_number
65
- ach_string << "\r\n" + a.to_ach
65
+ ach_string << eol + a.to_ach
66
66
  }
67
67
  return ach_string
68
68
  end
@@ -1,17 +1,18 @@
1
1
  module ACH::Records
2
2
  class FileControl < Record
3
3
  @fields = []
4
-
4
+
5
5
  const_field :record_type, '9'
6
6
  # Many of the fields are calculated in ACHFile.to_ach
7
7
  field :batch_count, Integer, lambda { |f| sprintf('%06d', f)}
8
8
  field :block_count, Integer, lambda { |f| sprintf('%06d', f)}
9
9
  field :entry_count, Integer, lambda { |f| sprintf('%08d', f)}
10
10
  field :entry_hash, Integer, lambda { |f| sprintf('%010d', f % (10 ** 10))}
11
-
11
+
12
12
  field :debit_total, Integer, lambda { |f| sprintf('%012d', f)}
13
13
  field :credit_total, Integer, lambda { |f| sprintf('%012d', f)}
14
- const_field :reserved, (' ' * 39)
14
+
15
+ field :filler, String, lambda { |f| left_justify(f, 39)}, ' '
15
16
  end
16
17
  end
17
18
 
@@ -13,7 +13,7 @@ module ACH
13
13
 
14
14
  attr_accessor :case_sensitive
15
15
 
16
- def to_ach
16
+ def to_ach eol: nil
17
17
  to_ach = self.class.fields.collect { |f| send("#{f}_to_ach") }.join('')
18
18
  case_sensitive ? to_ach : to_ach.upcase
19
19
  end
data/lib/ach/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module ACH
2
- VERSION = '0.5.16'.freeze
2
+ VERSION = '0.6.0'.freeze
3
3
  end
data/lib/ach.rb CHANGED
@@ -20,6 +20,12 @@ module ACH
20
20
  225, # ACH Debits Only
21
21
  280 # ACH Automated Accounting Advices
22
22
  ]
23
+
24
+ DEFAULT_EOL = "\r\n"
25
+
26
+ def self.eol
27
+ DEFAULT_EOL
28
+ end
23
29
  end
24
30
 
25
31
  require 'time'
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.16
4
+ version: 0.6.0
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: 2020-11-10 00:00:00.000000000 Z
12
+ date: 2021-09-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: appraisal