ach 0.6.0 → 0.6.1
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 +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
|
[](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: []
|