ach 0.6.0 → 0.6.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +12 -5
- data/lib/ach/ach_file.rb +15 -1
- data/lib/ach/string_formatting_helper.rb +5 -2
- data/lib/ach/version.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2675fc4115782f0d7fca900b070cebd739e9ceceee0c32d197b0ecd24e56f985
|
4
|
+
data.tar.gz: 3cb59f5617acdad57d7272124ca83999313c7675d48239a3cc0e510dcb095130
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8426fe5b8944fb11d7ca51bbc631a14f64e9e5dbd7ca668833905ac0f05b14c8f91248b4f43ff0c8245f705ec0b07e8588cb168ba82bb7160a880965414bbdfa
|
7
|
+
data.tar.gz: 5b403f8700e4ecc92f41f619f960455df6d88538f989ba3a545f28ff98632506dfeb76753622ff4d7ffbeecba71d91783110cb555cb4021097be9a71d2e9fdfd
|
data/README.md
CHANGED
@@ -1,18 +1,20 @@
|
|
1
|
-
#ACH
|
1
|
+
# ACH
|
2
|
+
|
3
|
+
Note: I'm no longer actively maintaining this gem, and would be happy to turn it over to someone else. Let me know if you'd like to take over.
|
2
4
|
|
3
5
|
[![Build Status](https://travis-ci.org/jm81/ach.svg?branch=master)](https://travis-ci.org/jm81/ach)
|
4
6
|
|
5
7
|
ach is a Ruby helper for builder ACH files. In particular, it helps with field
|
6
8
|
order and alignment, and adds padding lines to end of file.
|
7
9
|
|
8
|
-
**This library has only been used in
|
10
|
+
**This library has only been used in two production applications and for very
|
9
11
|
limited purposes. Please test thoroughly before using in a production
|
10
12
|
environment.**
|
11
13
|
|
12
14
|
See [ACH::Builder](http://search.cpan.org/~tkeefer/ACH-Builder-0.03/lib/ACH/Builder.pm)
|
13
15
|
for a similar Perl library
|
14
16
|
|
15
|
-
##Example
|
17
|
+
## Example
|
16
18
|
|
17
19
|
You should consult a copy of the [ACH Rules](http://www.nacha.org) for details
|
18
20
|
on individual fields. You can probably obtain a copy from your bank.
|
@@ -30,6 +32,11 @@ fh.immediate_destination = '000000000'
|
|
30
32
|
fh.immediate_destination_name = 'BANK NAME'
|
31
33
|
fh.immediate_origin = '000000000'
|
32
34
|
fh.immediate_origin_name = 'BANK NAME'
|
35
|
+
# Optional - This value is used in the File Creation Date/Time attributes - if excluded will default to Time.now
|
36
|
+
# Note that you may wish to modify the time zone here if your environment has a different time zone than the banks
|
37
|
+
# For example if your server is in UTC and the bank's is in US/Eastern, any files sent after 8pm Eastern/Midnight UTC
|
38
|
+
# would have a File Creation Date of the next day from the bank's perspective
|
39
|
+
fh.transmission_datetime = Time.now
|
33
40
|
|
34
41
|
# Batch
|
35
42
|
batch = ACH::Batch.new
|
@@ -38,7 +45,7 @@ bh.company_name = 'Company Name'
|
|
38
45
|
bh.company_identification = '123456789' # Use 10 characters if you're not using an EIN
|
39
46
|
bh.standard_entry_class_code = 'PPD'
|
40
47
|
bh.company_entry_description = 'DESCRIPTION'
|
41
|
-
bh.company_descriptive_date = Date.today
|
48
|
+
bh.company_descriptive_date = Date.today # Or string with 'SDHHMM' for same day ACH
|
42
49
|
bh.effective_entry_date = ACH::NextFederalReserveEffectiveDate.new(Date.today).result
|
43
50
|
bh.originating_dfi_identification = '00000000'
|
44
51
|
ach.batches << batch
|
@@ -73,6 +80,6 @@ ach.batches.first.entries.first.addenda.first.payment_data
|
|
73
80
|
|
74
81
|
**Note:** When adding an amount to your ach file, it needs to be in cents. So you'll want to multiply any dollar amounts by 100
|
75
82
|
|
76
|
-
##Copyright
|
83
|
+
## Copyright
|
77
84
|
|
78
85
|
Copyright (c) 2008-2009 Jared E Morgan, released under the MIT license
|
data/lib/ach/ach_file.rb
CHANGED
@@ -114,7 +114,7 @@ module ACH
|
|
114
114
|
bh.full_company_identification = line[40..49]
|
115
115
|
bh.standard_entry_class_code = line[50..52].strip
|
116
116
|
bh.company_entry_description = line[53..62].strip
|
117
|
-
bh.company_descriptive_date =
|
117
|
+
bh.company_descriptive_date = parse_descriptive_date(line[63..68].strip)
|
118
118
|
bh.effective_entry_date = Date.parse(line[69..74])
|
119
119
|
bh.originating_dfi_identification = line[79..86].strip
|
120
120
|
when '6'
|
@@ -156,5 +156,19 @@ module ACH
|
|
156
156
|
self.batches << batch unless batch.nil?
|
157
157
|
to_s
|
158
158
|
end
|
159
|
+
|
160
|
+
def parse_descriptive_date(date_string)
|
161
|
+
return if date_string.empty?
|
162
|
+
|
163
|
+
date_time = date_string.match(/^SD(\d{2})(\d{2})$/) do
|
164
|
+
same_day_hour, same_day_minute = _1.captures.map(&:to_f)
|
165
|
+
|
166
|
+
Date.today.to_datetime + (same_day_hour + same_day_minute/60) / 24
|
167
|
+
end
|
168
|
+
|
169
|
+
date_time || Data.parse(date_string)
|
170
|
+
rescue
|
171
|
+
date_string
|
172
|
+
end
|
159
173
|
end
|
160
174
|
end
|
@@ -3,7 +3,10 @@ module ACH
|
|
3
3
|
# Passing in SD to the date signifies same-day to banks. This is used for the company_descriptive_date
|
4
4
|
def self.stringify_with_same_day(f)
|
5
5
|
return f.upcase if f.to_s.upcase.match(/^SD\d+$/)
|
6
|
-
|
6
|
+
|
7
|
+
Date.strptime(f, '%y%m%d')
|
8
|
+
rescue
|
9
|
+
f
|
7
10
|
end
|
8
11
|
end
|
9
|
-
end
|
12
|
+
end
|
data/lib/ach/version.rb
CHANGED
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ach
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jared Morgan
|
8
8
|
- Josh Puetz
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2023-03-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: appraisal
|
@@ -110,7 +110,7 @@ files:
|
|
110
110
|
homepage: https://github.com/jm81/ach
|
111
111
|
licenses: []
|
112
112
|
metadata: {}
|
113
|
-
post_install_message:
|
113
|
+
post_install_message:
|
114
114
|
rdoc_options: []
|
115
115
|
require_paths:
|
116
116
|
- lib
|
@@ -125,8 +125,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
125
125
|
- !ruby/object:Gem::Version
|
126
126
|
version: '0'
|
127
127
|
requirements: []
|
128
|
-
rubygems_version: 3.0.
|
129
|
-
signing_key:
|
128
|
+
rubygems_version: 3.0.9
|
129
|
+
signing_key:
|
130
130
|
specification_version: 4
|
131
131
|
summary: Helper for building ACH files
|
132
132
|
test_files: []
|