ach 0.5.16 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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