bai2 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +14 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +102 -0
- data/Rakefile +7 -0
- data/bai2.gemspec +25 -0
- data/lib/bai2.rb +198 -0
- data/lib/bai2/attr-reader-from-ivar-hash.rb +31 -0
- data/lib/bai2/integrity.rb +128 -0
- data/lib/bai2/parser.rb +142 -0
- data/lib/bai2/record.rb +260 -0
- data/lib/bai2/type-code-data.rb +473 -0
- data/lib/bai2/version.rb +3 -0
- data/test/autorun.rb +3 -0
- data/test/data/daily.bai2 +8 -0
- data/test/data/eod.bai2 +17 -0
- data/test/tests/bai2.rb +59 -0
- data/test/tests/parsing.rb +9 -0
- metadata +124 -0
data/lib/bai2/parser.rb
ADDED
@@ -0,0 +1,142 @@
|
|
1
|
+
require 'bai2/record'
|
2
|
+
|
3
|
+
module Bai2
|
4
|
+
|
5
|
+
class ParseError < Exception; end
|
6
|
+
|
7
|
+
module Parser
|
8
|
+
|
9
|
+
# Wrapper object to represent a tree node.
|
10
|
+
#
|
11
|
+
class ParseNode
|
12
|
+
|
13
|
+
def initialize(record)
|
14
|
+
@code, @records = record.code, [record]
|
15
|
+
@children = []
|
16
|
+
end
|
17
|
+
attr_reader :code
|
18
|
+
attr_accessor :records, :children
|
19
|
+
end
|
20
|
+
|
21
|
+
|
22
|
+
class << self
|
23
|
+
|
24
|
+
# Parsing is a two-step process:
|
25
|
+
#
|
26
|
+
# 1. Build a tree
|
27
|
+
# 2. Parse the tree
|
28
|
+
#
|
29
|
+
def parse(data)
|
30
|
+
|
31
|
+
# split records, handle stupid DOS-format files, instantiate records
|
32
|
+
records = data.split("\n").map(&:strip).map {|l| Record.new(l) }
|
33
|
+
|
34
|
+
# merge continuations
|
35
|
+
records = merge_continuations(records)
|
36
|
+
|
37
|
+
# build the tree
|
38
|
+
root = parse_tree(records)
|
39
|
+
|
40
|
+
root
|
41
|
+
end
|
42
|
+
|
43
|
+
|
44
|
+
# =========================================================================
|
45
|
+
# Parsing implementation
|
46
|
+
#
|
47
|
+
|
48
|
+
private
|
49
|
+
|
50
|
+
# Merges continuations
|
51
|
+
#
|
52
|
+
def merge_continuations(records)
|
53
|
+
merged = []
|
54
|
+
records.each do |record|
|
55
|
+
if record.code == :continuation
|
56
|
+
last = merged.pop
|
57
|
+
new_record = Record.new(last.raw + ",\n" + record.fields[:continuation],
|
58
|
+
last.physical_record_count + 1)
|
59
|
+
merged << new_record
|
60
|
+
else
|
61
|
+
merged << record
|
62
|
+
end
|
63
|
+
end
|
64
|
+
merged
|
65
|
+
end
|
66
|
+
|
67
|
+
|
68
|
+
# Builds the tree of nodes
|
69
|
+
#
|
70
|
+
def parse_tree(records)
|
71
|
+
|
72
|
+
# build tree, should return a file_header node
|
73
|
+
first, *records = *records
|
74
|
+
unless first.code == :file_header
|
75
|
+
raise ParseError.new('Expecting file header record (01).')
|
76
|
+
end
|
77
|
+
root = ParseNode.new(first)
|
78
|
+
stack = [root]
|
79
|
+
|
80
|
+
records.each do |record|
|
81
|
+
raise ParseError.new('Unexpected record.') if stack.empty?
|
82
|
+
|
83
|
+
case record.code
|
84
|
+
|
85
|
+
# handling headers
|
86
|
+
when :group_header, :account_identifier
|
87
|
+
|
88
|
+
parent = {group_header: :file_header,
|
89
|
+
account_identifier: :group_header}[record.code]
|
90
|
+
unless stack.last.code == parent
|
91
|
+
raise ParseError.new("Parsing #{record.code}, expecting #{parent} parent.")
|
92
|
+
end
|
93
|
+
|
94
|
+
n = ParseNode.new(record)
|
95
|
+
stack.last.children << n
|
96
|
+
stack << n
|
97
|
+
|
98
|
+
# handling trailers
|
99
|
+
when :account_trailer, :group_trailer, :file_trailer
|
100
|
+
|
101
|
+
parent = {account_trailer: :account_identifier,
|
102
|
+
group_trailer: :group_header,
|
103
|
+
file_trailer: :file_header}[record.code]
|
104
|
+
unless stack.last.code == parent
|
105
|
+
raise ParseError.new("Parsing #{record.code}, expecting #{parent} parent.")
|
106
|
+
end
|
107
|
+
|
108
|
+
stack.last.records << record
|
109
|
+
stack.pop
|
110
|
+
|
111
|
+
# handling continuations
|
112
|
+
when :continuation
|
113
|
+
|
114
|
+
n = (stack.last.children.last || stack.last)
|
115
|
+
n.records << record
|
116
|
+
|
117
|
+
# handling transactions
|
118
|
+
when :transaction_detail
|
119
|
+
|
120
|
+
unless stack.last.code == :account_identifier
|
121
|
+
raise ParseError.new("Parsing #{record.code}, expecting account_identifier parent.")
|
122
|
+
end
|
123
|
+
|
124
|
+
stack.last.children << ParseNode.new(record)
|
125
|
+
|
126
|
+
# handling special known errors
|
127
|
+
else # nil
|
128
|
+
raise ParseError.new('Unknown or unexpected record code.')
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
unless stack == []
|
133
|
+
raise ParseError.new('Reached unexpected end of input (EOF).')
|
134
|
+
end
|
135
|
+
|
136
|
+
# root now contains our parsed tree
|
137
|
+
root
|
138
|
+
end
|
139
|
+
|
140
|
+
end
|
141
|
+
end
|
142
|
+
end
|
data/lib/bai2/record.rb
ADDED
@@ -0,0 +1,260 @@
|
|
1
|
+
require 'bai2/parser'
|
2
|
+
require 'bai2/type-code-data.rb'
|
3
|
+
|
4
|
+
require 'time'
|
5
|
+
|
6
|
+
module Bai2
|
7
|
+
|
8
|
+
# This class represents a record. It knows how to parse the single record
|
9
|
+
# information, but has no knowledge of the structure of the file.
|
10
|
+
#
|
11
|
+
class Record
|
12
|
+
|
13
|
+
RECORD_CODES = {'01' => :file_header,
|
14
|
+
'02' => :group_header,
|
15
|
+
'03' => :account_identifier,
|
16
|
+
'16' => :transaction_detail,
|
17
|
+
'49' => :account_trailer,
|
18
|
+
'88' => :continuation,
|
19
|
+
'98' => :group_trailer,
|
20
|
+
'99' => :file_trailer }
|
21
|
+
|
22
|
+
|
23
|
+
# These parsing blocks are used below for the special date format BAI2 uses.
|
24
|
+
# Assumes UTC, because we do not have timezone information.
|
25
|
+
|
26
|
+
# Returns a date object
|
27
|
+
ParseDate = ->(v) do
|
28
|
+
Time.strptime("#{v} utc", '%y%m%d %Z')
|
29
|
+
end
|
30
|
+
|
31
|
+
# Returns a time interval in seconds, to be added to the date
|
32
|
+
ParseMilitaryTime = -> (v) do
|
33
|
+
v = '2400' if v == '9999'
|
34
|
+
Time.strptime("#{v} utc", '%H%M %Z').to_i % 86400
|
35
|
+
end
|
36
|
+
|
37
|
+
# Parses a type code, returns a structured informative hash
|
38
|
+
ParseTypeCode = -> (code) do
|
39
|
+
meaning = TypeCodeData[code.to_i] || [nil, nil, nil]
|
40
|
+
{
|
41
|
+
code: code.to_i,
|
42
|
+
transaction: meaning[0],
|
43
|
+
scope: meaning[1],
|
44
|
+
description: meaning[2],
|
45
|
+
}
|
46
|
+
end
|
47
|
+
|
48
|
+
# Cleans up text in continuations, removing leading commas
|
49
|
+
CleanContinuedText = -> (text) do
|
50
|
+
text.gsub(/,?,\n/, "\n").gsub(/^\n/, '')
|
51
|
+
end
|
52
|
+
|
53
|
+
# This block ensures that only version 2 of the BAI standard is accepted
|
54
|
+
AssertVersion2 = ->(v) do
|
55
|
+
unless v == "2"
|
56
|
+
raise ParseError.new("Unsupported BAI version (#{v} != 2)")
|
57
|
+
end
|
58
|
+
v.to_i
|
59
|
+
end
|
60
|
+
|
61
|
+
# For each record code, this defines a simple way to automatically parse the
|
62
|
+
# fields. Each field has a list of the keys. Some keys are not simply string
|
63
|
+
# types, in which case they will be formatted as a tuple (key, fn), where fn
|
64
|
+
# is a block (or anything that responds to `to_proc`) that will be called to
|
65
|
+
# cast the value (e.g. `:to_i`).
|
66
|
+
#
|
67
|
+
SIMPLE_FIELD_MAP = {
|
68
|
+
file_header: [
|
69
|
+
:record_code,
|
70
|
+
:sender,
|
71
|
+
:receiver,
|
72
|
+
[:file_creation_date, ParseDate],
|
73
|
+
[:file_creation_time, ParseMilitaryTime],
|
74
|
+
:file_identification_number,
|
75
|
+
[:physical_record_length, :to_i],
|
76
|
+
[:block_size, :to_i],
|
77
|
+
[:version_number, AssertVersion2],
|
78
|
+
],
|
79
|
+
group_header: [
|
80
|
+
:record_code,
|
81
|
+
:destination,
|
82
|
+
:originator,
|
83
|
+
:group_status,
|
84
|
+
[:as_of_date, ParseDate],
|
85
|
+
[:as_of_time, ParseMilitaryTime],
|
86
|
+
:currency_code,
|
87
|
+
:as_of_date_modifier,
|
88
|
+
],
|
89
|
+
group_trailer: [
|
90
|
+
:record_code,
|
91
|
+
[:group_control_total, :to_i],
|
92
|
+
[:number_of_accounts, :to_i],
|
93
|
+
[:number_of_records, :to_i],
|
94
|
+
],
|
95
|
+
account_trailer: [
|
96
|
+
:record_code,
|
97
|
+
[:account_control_total, :to_i],
|
98
|
+
[:number_of_records, :to_i],
|
99
|
+
],
|
100
|
+
file_trailer: [
|
101
|
+
:record_code,
|
102
|
+
[:file_control_total, :to_i],
|
103
|
+
[:number_of_groups, :to_i],
|
104
|
+
[:number_of_records, :to_i],
|
105
|
+
],
|
106
|
+
continuation: [ # TODO: could continue any record at any point...
|
107
|
+
:record_code,
|
108
|
+
:continuation,
|
109
|
+
],
|
110
|
+
# NOTE: transaction_detail is not present here, because it is too complex
|
111
|
+
# for a simple mapping like this.
|
112
|
+
}
|
113
|
+
|
114
|
+
|
115
|
+
def initialize(line, physical_record_count = 1)
|
116
|
+
@code = RECORD_CODES[line[0..1]]
|
117
|
+
@physical_record_count = physical_record_count
|
118
|
+
# clean / delimiter
|
119
|
+
@raw = line.sub(/,\/.+$/, '').sub(/\/$/, '')
|
120
|
+
end
|
121
|
+
|
122
|
+
attr_reader :code, :raw, :physical_record_count
|
123
|
+
|
124
|
+
# NOTE: fields is called upon first use, so as not to parse records right
|
125
|
+
# away in case they might be merged with a continuation.
|
126
|
+
#
|
127
|
+
def fields
|
128
|
+
@fields ||= parse_raw(@code, @raw)
|
129
|
+
end
|
130
|
+
|
131
|
+
# A record can be accessed like a hash.
|
132
|
+
#
|
133
|
+
def [](key)
|
134
|
+
fields[key]
|
135
|
+
end
|
136
|
+
|
137
|
+
private
|
138
|
+
|
139
|
+
def parse_raw(code, line)
|
140
|
+
|
141
|
+
fields = (SIMPLE_FIELD_MAP[code] || [])
|
142
|
+
if !fields.empty?
|
143
|
+
split = line.split(',', fields.count).map(&:strip)
|
144
|
+
Hash[fields.zip(split).map do |k,v|
|
145
|
+
next [k,v] if k.is_a?(Symbol)
|
146
|
+
key, block = k
|
147
|
+
[key, block.to_proc.call(v)]
|
148
|
+
end]
|
149
|
+
elsif respond_to?("parse_#{code}_fields".to_sym, true)
|
150
|
+
send("parse_#{code}_fields".to_sym, line)
|
151
|
+
else
|
152
|
+
raise ParseError.new('Unknown record code.')
|
153
|
+
end
|
154
|
+
end
|
155
|
+
|
156
|
+
# Special cases need special implementations.
|
157
|
+
#
|
158
|
+
# The rules here are pulled from the specification at this URL:
|
159
|
+
# http://www.bai.org/Libraries/Site-General-Downloads/Cash_Management_2005.sflb.ashx
|
160
|
+
#
|
161
|
+
def parse_transaction_detail_fields(record)
|
162
|
+
|
163
|
+
# split out the constant bits
|
164
|
+
record_code, type_code, amount, funds_type, rest = record.split(',', 5).map(&:strip)
|
165
|
+
|
166
|
+
common = {
|
167
|
+
record_code: record_code,
|
168
|
+
type: ParseTypeCode[type_code],
|
169
|
+
amount: amount.to_i,
|
170
|
+
funds_type: funds_type,
|
171
|
+
}
|
172
|
+
|
173
|
+
# handle funds_type logic
|
174
|
+
funds_info, rest = *parse_funds_type(funds_type, rest)
|
175
|
+
with_funds_availability = common.merge(funds_info)
|
176
|
+
|
177
|
+
# split the rest of the constant fields
|
178
|
+
bank_ref, customer_ref, text = rest.split(',', 3).map(&:strip)
|
179
|
+
|
180
|
+
with_funds_availability.merge(
|
181
|
+
bank_reference: bank_ref,
|
182
|
+
customer_reference: customer_ref,
|
183
|
+
text: CleanContinuedText[text],
|
184
|
+
)
|
185
|
+
end
|
186
|
+
|
187
|
+
def parse_account_identifier_fields(record)
|
188
|
+
|
189
|
+
# split out the constant bits
|
190
|
+
record_code, customer, currency_code, rest = record.split(',', 4).map(&:strip)
|
191
|
+
|
192
|
+
common = {
|
193
|
+
record_code: record_code,
|
194
|
+
customer: customer,
|
195
|
+
currency_code: currency_code,
|
196
|
+
summaries: [],
|
197
|
+
}
|
198
|
+
|
199
|
+
# sadly, imperative style seems cleaner. would prefer it functional.
|
200
|
+
until rest.nil? || rest.empty?
|
201
|
+
|
202
|
+
type_code, amount, items_count, funds_type, rest \
|
203
|
+
= rest.split(',', 5).map(&:strip)
|
204
|
+
|
205
|
+
amount_details = {
|
206
|
+
type: ParseTypeCode[type_code],
|
207
|
+
amount: amount.to_i,
|
208
|
+
items_count: items_count,
|
209
|
+
funds_type: funds_type,
|
210
|
+
}
|
211
|
+
|
212
|
+
# handle funds_type logic
|
213
|
+
funds_info, rest = *parse_funds_type(funds_type, rest)
|
214
|
+
with_funds_availability = amount_details.merge(funds_info)
|
215
|
+
|
216
|
+
common[:summaries] << with_funds_availability
|
217
|
+
end
|
218
|
+
|
219
|
+
common
|
220
|
+
end
|
221
|
+
|
222
|
+
# Takes a `fund_type` field, and the rest, and return a hashed of
|
223
|
+
# interpreted values, and the new rest.
|
224
|
+
#
|
225
|
+
# funds_type, rest = ...
|
226
|
+
# funds_info, rest = *parse_funds_type(funds_type, rest)
|
227
|
+
#
|
228
|
+
def parse_funds_type(funds_type, rest)
|
229
|
+
info = \
|
230
|
+
case funds_type
|
231
|
+
when 'S'
|
232
|
+
now, next_day, later, rest = rest.split(',', 4).map(&:strip)
|
233
|
+
{
|
234
|
+
availability: [
|
235
|
+
{day: 0, amount: now},
|
236
|
+
{day: 1, amount: now},
|
237
|
+
{day: '>1', amount: now},
|
238
|
+
]
|
239
|
+
}
|
240
|
+
when 'V'
|
241
|
+
value_date, value_hour, rest = rest.split(',', 3).map(&:strip)
|
242
|
+
value_hour = '2400' if value_hour == '9999'
|
243
|
+
{
|
244
|
+
value_dated: {date: value_date, hour: value_hour}
|
245
|
+
}
|
246
|
+
when 'D'
|
247
|
+
field_count, rest = rest.split(',', 2).map(&:strip)
|
248
|
+
availability = field_count.to_i.times.map do
|
249
|
+
days, amount, rest = rest.split(',', 3).map(&:strip)
|
250
|
+
{days: days.to_i, amount: amount}
|
251
|
+
end
|
252
|
+
{availability: availability}
|
253
|
+
else
|
254
|
+
{}
|
255
|
+
end
|
256
|
+
[info, rest]
|
257
|
+
end
|
258
|
+
|
259
|
+
end
|
260
|
+
end
|
@@ -0,0 +1,473 @@
|
|
1
|
+
module Bai2
|
2
|
+
TypeCodeData = {
|
3
|
+
10 => [:NA, :status, %q{Opening Ledger}],
|
4
|
+
11 => [:NA, :status, %q{Average Opening Ledger MTD}],
|
5
|
+
12 => [:NA, :status, %q{Average Opening Ledger YTD}],
|
6
|
+
15 => [:NA, :status, %q{Closing Ledger}],
|
7
|
+
20 => [:NA, :status, %q{Average Closing Ledger MTD}],
|
8
|
+
21 => [:NA, :status, %q{Average Closing Ledger – Previous Month}],
|
9
|
+
22 => [:NA, :status, %q{Aggregate Balance Adjustments}],
|
10
|
+
24 => [:NA, :status, %q{Average Closing Ledger YTD – Previous Month}],
|
11
|
+
25 => [:NA, :status, %q{Average Closing Ledger YTD}],
|
12
|
+
30 => [:NA, :status, %q{Current Ledger}],
|
13
|
+
37 => [:NA, :status, %q{ACH Net Position}],
|
14
|
+
39 => [:NA, :status, %q{Opening Available + Total Same-Day ACH DTC Deposit}],
|
15
|
+
40 => [:NA, :status, %q{Opening Available}],
|
16
|
+
41 => [:NA, :status, %q{Average Opening Available MTD}],
|
17
|
+
42 => [:NA, :status, %q{Average Opening Available YTD}],
|
18
|
+
43 => [:NA, :status, %q{Average Available – Previous Month}],
|
19
|
+
44 => [:NA, :status, %q{Disbursing Opening Available Balance}],
|
20
|
+
45 => [:NA, :status, %q{Closing Available}],
|
21
|
+
50 => [:NA, :status, %q{Average Closing Available MTD}],
|
22
|
+
51 => [:NA, :status, %q{Average Closing Available – Last Month}],
|
23
|
+
54 => [:NA, :status, %q{Average Closing Available YTD – Last Month}],
|
24
|
+
55 => [:NA, :status, %q{Average Closing Available YTD}],
|
25
|
+
56 => [:NA, :status, %q{Loan Balance}],
|
26
|
+
57 => [:NA, :status, %q{Total Investment Position}],
|
27
|
+
59 => [:NA, :status, %q{Current Available (CRS Supressed)}],
|
28
|
+
60 => [:NA, :status, %q{Current Available}],
|
29
|
+
61 => [:NA, :status, %q{Average Current Available MTD}],
|
30
|
+
62 => [:NA, :status, %q{Average Current Available YTD}],
|
31
|
+
63 => [:NA, :status, %q{Total Float}],
|
32
|
+
65 => [:NA, :status, %q{Target Balance}],
|
33
|
+
66 => [:NA, :status, %q{Adjusted Balance}],
|
34
|
+
67 => [:NA, :status, %q{Adjusted Balance MTD}],
|
35
|
+
68 => [:NA, :status, %q{Adjusted Balance YTD}],
|
36
|
+
70 => [:NA, :status, %q{0-Day Float}],
|
37
|
+
72 => [:NA, :status, %q{1-Day Float}],
|
38
|
+
73 => [:NA, :status, %q{Float Adjustment}],
|
39
|
+
74 => [:NA, :status, %q{2 or More Days Float}],
|
40
|
+
75 => [:NA, :status, %q{3 or More Days Float}],
|
41
|
+
76 => [:NA, :status, %q{Adjustment to Balances}],
|
42
|
+
77 => [:NA, :status, %q{Average Adjustment to Balances MTD}],
|
43
|
+
78 => [:NA, :status, %q{Average Adjustment to Balances YTD}],
|
44
|
+
79 => [:NA, :status, %q{4-Day Float}],
|
45
|
+
80 => [:NA, :status, %q{5-Day Float}],
|
46
|
+
81 => [:NA, :status, %q{6-Day Float}],
|
47
|
+
82 => [:NA, :status, %q{Average 1-Day Float MTD}],
|
48
|
+
83 => [:NA, :status, %q{Average 1-Day Float YTD}],
|
49
|
+
84 => [:NA, :status, %q{Average 2-Day Float MTD}],
|
50
|
+
85 => [:NA, :status, %q{Average 2-Day Float YTD}],
|
51
|
+
86 => [:NA, :status, %q{Transfer Calculation}],
|
52
|
+
100 => [:credit, :summary, %q{Total Credits}],
|
53
|
+
101 => [:credit, :summary, %q{Total Credit Amount MTD}],
|
54
|
+
105 => [:credit, :summary, %q{Credits Not Detailed}],
|
55
|
+
106 => [:credit, :summary, %q{Deposits Subject to Float}],
|
56
|
+
107 => [:credit, :summary, %q{Total Adjustment Credits YTD}],
|
57
|
+
108 => [:credit, :detail, %q{Credit (Any Type)}],
|
58
|
+
109 => [:credit, :summary, %q{Current Day Total Lockbox Deposits}],
|
59
|
+
110 => [:credit, :summary, %q{Total Lockbox Deposits}],
|
60
|
+
115 => [:credit, :detail, %q{Lockbox Deposit}],
|
61
|
+
116 => [:credit, :detail, %q{Item in Lockbox Deposit}],
|
62
|
+
118 => [:credit, :detail, %q{Lockbox Adjustment Credit}],
|
63
|
+
120 => [:credit, :summary, %q{EDI* Transaction Credit}],
|
64
|
+
121 => [:credit, :detail, %q{EDI Transaction Credit}],
|
65
|
+
122 => [:credit, :detail, %q{EDIBANX Credit Received}],
|
66
|
+
123 => [:credit, :detail, %q{EDIBANX Credit Return}],
|
67
|
+
130 => [:credit, :summary, %q{Total Concentration Credits}],
|
68
|
+
131 => [:credit, :summary, %q{Total DTC Credits}],
|
69
|
+
135 => [:credit, :detail, %q{DTC Concentration Credit}],
|
70
|
+
136 => [:credit, :detail, %q{Item in DTC Deposit}],
|
71
|
+
140 => [:credit, :summary, %q{Total ACH Credits}],
|
72
|
+
142 => [:credit, :detail, %q{ACH Credit Received}],
|
73
|
+
143 => [:credit, :detail, %q{Item in ACH Deposit}],
|
74
|
+
145 => [:credit, :detail, %q{ACH Concentration Credit}],
|
75
|
+
146 => [:credit, :summary, %q{Total Bank Card Deposits}],
|
76
|
+
147 => [:credit, :detail, %q{Individual Bank Card Deposit}],
|
77
|
+
150 => [:credit, :summary, %q{Total Preauthorized Payment Credits}],
|
78
|
+
155 => [:credit, :detail, %q{Preauthorized Draft Credit}],
|
79
|
+
156 => [:credit, :detail, %q{Item in PAC Deposit}],
|
80
|
+
160 => [:credit, :summary, %q{Total ACH Disbursing Funding Credits}],
|
81
|
+
162 => [:credit, :summary, %q{Corporate Trade Payment Settlement}],
|
82
|
+
163 => [:credit, :summary, %q{Corporate Trade Payment Credits}],
|
83
|
+
164 => [:credit, :detail, %q{Corporate Trade Payment Credit}],
|
84
|
+
165 => [:credit, :detail, %q{Preauthorized ACH Credit}],
|
85
|
+
166 => [:credit, :detail, %q{ACH Settlement}],
|
86
|
+
167 => [:credit, :summary, %q{ACH Settlement Credits}],
|
87
|
+
168 => [:credit, :detail, %q{ACH Return Item or Adjustment Settlement}],
|
88
|
+
169 => [:credit, :detail, %q{Miscellaneous ACH Credit}],
|
89
|
+
170 => [:credit, :summary, %q{Total Other Check Deposits}],
|
90
|
+
171 => [:credit, :detail, %q{Individual Loan Deposit}],
|
91
|
+
172 => [:credit, :detail, %q{Deposit Correction}],
|
92
|
+
173 => [:credit, :detail, %q{Bank-Prepared Deposit}],
|
93
|
+
174 => [:credit, :detail, %q{Other Deposit}],
|
94
|
+
175 => [:credit, :detail, %q{Check Deposit Package}],
|
95
|
+
176 => [:credit, :detail, %q{Re-presented Check Deposit}],
|
96
|
+
178 => [:credit, :summary, %q{List Post Credits}],
|
97
|
+
180 => [:credit, :summary, %q{Total Loan Proceeds}],
|
98
|
+
182 => [:credit, :summary, %q{Total Bank-Prepared Deposits}],
|
99
|
+
184 => [:credit, :detail, %q{Draft Deposit}],
|
100
|
+
185 => [:credit, :summary, %q{Total Miscellaneous Deposits}],
|
101
|
+
186 => [:credit, :summary, %q{Total Cash Letter Credits}],
|
102
|
+
187 => [:credit, :detail, %q{Cash Letter Credit}],
|
103
|
+
188 => [:credit, :summary, %q{Total Cash Letter Adjustments}],
|
104
|
+
189 => [:credit, :detail, %q{Cash Letter Adjustment}],
|
105
|
+
190 => [:credit, :summary, %q{Total Incoming Money Transfers}],
|
106
|
+
191 => [:credit, :detail, %q{Individual Incoming Internal Money Transfer}],
|
107
|
+
195 => [:credit, :detail, %q{Incoming Money Transfer}],
|
108
|
+
196 => [:credit, :detail, %q{Money Transfer Adjustment}],
|
109
|
+
198 => [:credit, :detail, %q{Compensation}],
|
110
|
+
200 => [:credit, :summary, %q{Total Automatic Transfer Credits}],
|
111
|
+
201 => [:credit, :detail, %q{Individual Automatic Transfer Credit}],
|
112
|
+
202 => [:credit, :detail, %q{Bond Operations Credit}],
|
113
|
+
205 => [:credit, :summary, %q{Total Book Transfer Credits}],
|
114
|
+
206 => [:credit, :detail, %q{Book Transfer Credit}],
|
115
|
+
207 => [:credit, :summary, %q{Total International Money Transfer Credits}],
|
116
|
+
208 => [:credit, :detail, %q{Individual International Money Transfer Credit}],
|
117
|
+
210 => [:credit, :summary, %q{Total International Credits}],
|
118
|
+
212 => [:credit, :detail, %q{Foreign Letter of Credit}],
|
119
|
+
213 => [:credit, :detail, %q{Letter of Credit}],
|
120
|
+
214 => [:credit, :detail, %q{Foreign Exchange of Credit}],
|
121
|
+
215 => [:credit, :summary, %q{Total Letters of Credit}],
|
122
|
+
216 => [:credit, :detail, %q{Foreign Remittance Credit}],
|
123
|
+
218 => [:credit, :detail, %q{Foreign Collection Credit}],
|
124
|
+
221 => [:credit, :detail, %q{Foreign Check Purchase}],
|
125
|
+
222 => [:credit, :detail, %q{Foreign Checks Deposited}],
|
126
|
+
224 => [:credit, :detail, %q{Commission}],
|
127
|
+
226 => [:credit, :detail, %q{International Money Market Trading}],
|
128
|
+
227 => [:credit, :detail, %q{Standing Order}],
|
129
|
+
229 => [:credit, :detail, %q{Miscellaneous International Credit}],
|
130
|
+
230 => [:credit, :summary, %q{Total Security Credits}],
|
131
|
+
231 => [:credit, :summary, %q{Total Collection Credits}],
|
132
|
+
232 => [:credit, :detail, %q{Sale of Debt Security}],
|
133
|
+
233 => [:credit, :detail, %q{Securities Sold}],
|
134
|
+
234 => [:credit, :detail, %q{Sale of Equity Security}],
|
135
|
+
235 => [:credit, :detail, %q{Matured Reverse Repurchase Order}],
|
136
|
+
236 => [:credit, :detail, %q{Maturity of Debt Security}],
|
137
|
+
237 => [:credit, :detail, %q{Individual Collection Credit}],
|
138
|
+
238 => [:credit, :detail, %q{Collection of Dividends}],
|
139
|
+
239 => [:credit, :summary, %q{Total Bankers’ Acceptance Credits}],
|
140
|
+
240 => [:credit, :detail, %q{Coupon Collections – Banks}],
|
141
|
+
241 => [:credit, :detail, %q{Bankers’ Acceptances}],
|
142
|
+
242 => [:credit, :detail, %q{Collection of Interest Income}],
|
143
|
+
243 => [:credit, :detail, %q{Matured Fed Funds Purchased}],
|
144
|
+
244 => [:credit, :detail, %q{Interest/Matured Principal Payment}],
|
145
|
+
245 => [:credit, :summary, %q{Monthly Dividends}],
|
146
|
+
246 => [:credit, :detail, %q{Commercial Paper}],
|
147
|
+
247 => [:credit, :detail, %q{Capital Change}],
|
148
|
+
248 => [:credit, :detail, %q{Savings Bonds Sales Adjustment}],
|
149
|
+
249 => [:credit, :detail, %q{Miscellaneous Security Credit}],
|
150
|
+
250 => [:credit, :summary, %q{Total Checks Posted and Returned}],
|
151
|
+
251 => [:credit, :summary, %q{Total Debit Reversals}],
|
152
|
+
252 => [:credit, :detail, %q{Debit Reversal}],
|
153
|
+
254 => [:credit, :detail, %q{Posting Error Correction Credit}],
|
154
|
+
255 => [:credit, :detail, %q{Check Posted and Returned}],
|
155
|
+
256 => [:credit, :summary, %q{Total ACH Return Items}],
|
156
|
+
257 => [:credit, :detail, %q{Individual ACH Return Item}],
|
157
|
+
258 => [:credit, :detail, %q{ACH Reversal Credit}],
|
158
|
+
260 => [:credit, :summary, %q{Total Rejected Credits}],
|
159
|
+
261 => [:credit, :detail, %q{Individual Rejected Credit}],
|
160
|
+
263 => [:credit, :detail, %q{Overdraft}],
|
161
|
+
266 => [:credit, :detail, %q{Return Item}],
|
162
|
+
268 => [:credit, :detail, %q{Return Item Adjustment}],
|
163
|
+
270 => [:credit, :summary, %q{Total ZBA Credits}],
|
164
|
+
271 => [:credit, :summary, %q{Net Zero-Balance Amount}],
|
165
|
+
274 => [:credit, :detail, %q{Cumulative** ZBA or Disbursement Credits}],
|
166
|
+
275 => [:credit, :detail, %q{ZBA Credit}],
|
167
|
+
276 => [:credit, :detail, %q{ZBA Float Adjustment}],
|
168
|
+
277 => [:credit, :detail, %q{ZBA Credit Transfer}],
|
169
|
+
278 => [:credit, :detail, %q{ZBA Credit Adjustment}],
|
170
|
+
280 => [:credit, :summary, %q{Total Controlled Disbursing Credits}],
|
171
|
+
281 => [:credit, :detail, %q{Individual Controlled Disbursing Credit}],
|
172
|
+
285 => [:credit, :summary, %q{Total DTC Disbursing Credits}],
|
173
|
+
286 => [:credit, :detail, %q{Individual DTC Disbursing Credit}],
|
174
|
+
294 => [:credit, :summary, %q{Total ATM Credits}],
|
175
|
+
295 => [:credit, :detail, %q{ATM Credit}],
|
176
|
+
301 => [:credit, :detail, %q{Commercial Deposit}],
|
177
|
+
302 => [:credit, :summary, %q{Correspondent Bank Deposit}],
|
178
|
+
303 => [:credit, :summary, %q{Total Wire Transfers In – FF}],
|
179
|
+
304 => [:credit, :summary, %q{Total Wire Transfers In – CHF}],
|
180
|
+
305 => [:credit, :summary, %q{Total Fed Funds Sold}],
|
181
|
+
306 => [:credit, :detail, %q{Fed Funds Sold}],
|
182
|
+
307 => [:credit, :summary, %q{Total Trust Credits}],
|
183
|
+
308 => [:credit, :detail, %q{Trust Credit}],
|
184
|
+
309 => [:credit, :summary, %q{Total Value - Dated Funds}],
|
185
|
+
310 => [:credit, :summary, %q{Total Commercial Deposits}],
|
186
|
+
315 => [:credit, :summary, %q{Total International Credits – FF}],
|
187
|
+
316 => [:credit, :summary, %q{Total International Credits – CHF}],
|
188
|
+
318 => [:credit, :summary, %q{Total Foreign Check Purchased}],
|
189
|
+
319 => [:credit, :summary, %q{Late Deposit}],
|
190
|
+
320 => [:credit, :summary, %q{Total Securities Sold – FF}],
|
191
|
+
321 => [:credit, :summary, %q{Total Securities Sold – CHF}],
|
192
|
+
324 => [:credit, :summary, %q{Total Securities Matured – FF}],
|
193
|
+
325 => [:credit, :summary, %q{Total Securities Matured – CHF}],
|
194
|
+
326 => [:credit, :summary, %q{Total Securities Interest}],
|
195
|
+
327 => [:credit, :summary, %q{Total Securities Matured}],
|
196
|
+
328 => [:credit, :summary, %q{Total Securities Interest – FF}],
|
197
|
+
329 => [:credit, :summary, %q{Total Securities Interest – CHF}],
|
198
|
+
330 => [:credit, :summary, %q{Total Escrow Credits}],
|
199
|
+
331 => [:credit, :detail, %q{Individual Escrow Credit}],
|
200
|
+
332 => [:credit, :summary, %q{Total Miscellaneous Securities Credits – FF}],
|
201
|
+
336 => [:credit, :summary, %q{Total Miscellaneous Securities Credits – CHF}],
|
202
|
+
338 => [:credit, :summary, %q{Total Securities Sold}],
|
203
|
+
340 => [:credit, :summary, %q{Total Broker Deposits}],
|
204
|
+
341 => [:credit, :summary, %q{Total Broker Deposits – FF}],
|
205
|
+
342 => [:credit, :detail, %q{Broker Deposit}],
|
206
|
+
343 => [:credit, :summary, %q{Total Broker Deposits – CHF}],
|
207
|
+
344 => [:credit, :detail, %q{Individual Back Value Credit}],
|
208
|
+
345 => [:credit, :detail, %q{Item in Brokers Deposit}],
|
209
|
+
346 => [:credit, :detail, %q{Sweep Interest Income}],
|
210
|
+
347 => [:credit, :detail, %q{Sweep Principal Sell}],
|
211
|
+
348 => [:credit, :detail, %q{Futures Credit}],
|
212
|
+
349 => [:credit, :detail, %q{Principal Payments Credit}],
|
213
|
+
350 => [:credit, :summary, %q{Investment Sold}],
|
214
|
+
351 => [:credit, :detail, %q{Individual Investment Sold}],
|
215
|
+
352 => [:credit, :summary, %q{Total Cash Center Credits}],
|
216
|
+
353 => [:credit, :detail, %q{Cash Center Credit}],
|
217
|
+
354 => [:credit, :detail, %q{Interest Credit}],
|
218
|
+
355 => [:credit, :summary, %q{Investment Interest}],
|
219
|
+
356 => [:credit, :summary, %q{Total Credit Adjustment}],
|
220
|
+
357 => [:credit, :detail, %q{Credit Adjustment}],
|
221
|
+
358 => [:credit, :detail, %q{YTD Adjustment Credit}],
|
222
|
+
359 => [:credit, :detail, %q{Interest Adjustment Credit}],
|
223
|
+
360 => [:credit, :summary, %q{Total Credits Less Wire Transfer and Returned Checks}],
|
224
|
+
361 => [:credit, :summary, %q{Grand Total Credits Less Grand Total Debits}],
|
225
|
+
362 => [:credit, :detail, %q{Correspondent Collection}],
|
226
|
+
363 => [:credit, :detail, %q{Correspondent Collection Adjustment}],
|
227
|
+
364 => [:credit, :detail, %q{Loan Participation}],
|
228
|
+
366 => [:credit, :detail, %q{Currency and Coin Deposited}],
|
229
|
+
367 => [:credit, :detail, %q{Food Stamp Letter}],
|
230
|
+
368 => [:credit, :detail, %q{Food Stamp Adjustment}],
|
231
|
+
369 => [:credit, :detail, %q{Clearing Settlement Credit}],
|
232
|
+
370 => [:credit, :summary, %q{Total Back Value Credits}],
|
233
|
+
372 => [:credit, :detail, %q{Back Value Adjustment}],
|
234
|
+
373 => [:credit, :detail, %q{Customer Payroll}],
|
235
|
+
374 => [:credit, :detail, %q{FRB Statement Recap}],
|
236
|
+
376 => [:credit, :detail, %q{Savings Bond Letter or Adjustment}],
|
237
|
+
377 => [:credit, :detail, %q{Treasury Tax and Loan Credit}],
|
238
|
+
378 => [:credit, :detail, %q{Transfer of Treasury Credit}],
|
239
|
+
379 => [:credit, :detail, %q{FRB Government Checks Cash Letter Credit}],
|
240
|
+
381 => [:credit, :detail, %q{FRB Government Check Adjustment}],
|
241
|
+
382 => [:credit, :detail, %q{FRB Postal Money Order Credit}],
|
242
|
+
383 => [:credit, :detail, %q{FRB Postal Money Order Adjustment}],
|
243
|
+
384 => [:credit, :detail, %q{FRB Cash Letter Auto Charge Credit}],
|
244
|
+
385 => [:credit, :summary, %q{Total Universal Credits}],
|
245
|
+
386 => [:credit, :detail, %q{FRB Cash Letter Auto Charge Adjustment}],
|
246
|
+
387 => [:credit, :detail, %q{FRB Fine-Sort Cash Letter Credit}],
|
247
|
+
388 => [:credit, :detail, %q{FRB Fine-Sort Adjustment}],
|
248
|
+
389 => [:credit, :summary, %q{Total Freight Payment Credits}],
|
249
|
+
390 => [:credit, :summary, %q{Total Miscellaneous Credits}],
|
250
|
+
391 => [:credit, :detail, %q{Universal Credit}],
|
251
|
+
392 => [:credit, :detail, %q{Freight Payment Credit}],
|
252
|
+
393 => [:credit, :detail, %q{Itemized Credit Over $10,000}],
|
253
|
+
394 => [:credit, :detail, %q{Cumulative** Credits}],
|
254
|
+
395 => [:credit, :detail, %q{Check Reversal}],
|
255
|
+
397 => [:credit, :detail, %q{Float Adjustment}],
|
256
|
+
398 => [:credit, :detail, %q{Miscellaneous Fee Refund}],
|
257
|
+
399 => [:credit, :detail, %q{Miscellaneous Credit}],
|
258
|
+
400 => [:debit, :summary, %q{Total Debits}],
|
259
|
+
401 => [:debit, :summary, %q{Total Debit Amount MTD}],
|
260
|
+
403 => [:debit, :summary, %q{Today’s Total Debits}],
|
261
|
+
405 => [:debit, :summary, %q{Total Debit Less Wire Transfers and ChargeBacks}],
|
262
|
+
406 => [:debit, :summary, %q{Debits not Detailed}],
|
263
|
+
408 => [:debit, :detail, %q{Float Adjustment}],
|
264
|
+
409 => [:debit, :detail, %q{Debit (Any Type)}],
|
265
|
+
410 => [:debit, :summary, %q{Total YTD Adjustment}],
|
266
|
+
412 => [:debit, :summary, %q{Total Debits (Excluding Returned Items)}],
|
267
|
+
415 => [:debit, :detail, %q{Lockbox Debit}],
|
268
|
+
416 => [:debit, :summary, %q{Total Lockbox Debits}],
|
269
|
+
420 => [:debit, :summary, %q{EDI Transaction Debits}],
|
270
|
+
421 => [:debit, :detail, %q{EDI Transaction Debit}],
|
271
|
+
422 => [:debit, :detail, %q{EDIBANX Settlement Debit}],
|
272
|
+
423 => [:debit, :detail, %q{EDIBANX Return Item Debit}],
|
273
|
+
430 => [:debit, :summary, %q{Total Payable–Through Drafts}],
|
274
|
+
435 => [:debit, :detail, %q{Payable–Through Draft}],
|
275
|
+
445 => [:debit, :detail, %q{ACH Concentration Debit}],
|
276
|
+
446 => [:debit, :summary, %q{Total ACH Disbursement Funding Debits}],
|
277
|
+
447 => [:debit, :detail, %q{ACH Disbursement Funding Debit}],
|
278
|
+
450 => [:debit, :summary, %q{Total ACH Debits}],
|
279
|
+
451 => [:debit, :detail, %q{ACH Debit Received}],
|
280
|
+
452 => [:debit, :detail, %q{Item in ACH Disbursement or Debit}],
|
281
|
+
455 => [:debit, :detail, %q{Preauthorized ACH Debit}],
|
282
|
+
462 => [:debit, :detail, %q{Account Holder Initiated ACH Debit}],
|
283
|
+
463 => [:debit, :summary, %q{Corporate Trade Payment Debits}],
|
284
|
+
464 => [:debit, :detail, %q{Corporate Trade Payment Debit}],
|
285
|
+
465 => [:debit, :summary, %q{Corporate Trade Payment Settlement}],
|
286
|
+
466 => [:debit, :detail, %q{ACH Settlement}],
|
287
|
+
467 => [:debit, :summary, %q{ACH Settlement Debits}],
|
288
|
+
468 => [:debit, :detail, %q{ACH Return Item or Adjustment Settlement}],
|
289
|
+
469 => [:debit, :detail, %q{Miscellaneous ACH Debit}],
|
290
|
+
470 => [:debit, :summary, %q{Total Check Paid}],
|
291
|
+
471 => [:debit, :summary, %q{Total Check Paid – Cumulative MTD}],
|
292
|
+
472 => [:debit, :detail, %q{Cumulative** Checks Paid}],
|
293
|
+
474 => [:debit, :detail, %q{Certified Check Debit}],
|
294
|
+
475 => [:debit, :detail, %q{Check Paid}],
|
295
|
+
476 => [:debit, :detail, %q{Federal Reserve Bank Letter Debit}],
|
296
|
+
477 => [:debit, :detail, %q{Bank Originated Debit}],
|
297
|
+
478 => [:debit, :summary, %q{List Post Debits}],
|
298
|
+
479 => [:debit, :detail, %q{List Post Debit}],
|
299
|
+
480 => [:debit, :summary, %q{Total Loan Payments}],
|
300
|
+
481 => [:debit, :detail, %q{Individual Loan Payment}],
|
301
|
+
482 => [:debit, :summary, %q{Total Bank-Originated Debits}],
|
302
|
+
484 => [:debit, :detail, %q{Draft}],
|
303
|
+
485 => [:debit, :detail, %q{DTC Debit}],
|
304
|
+
486 => [:debit, :summary, %q{Total Cash Letter Debits}],
|
305
|
+
487 => [:debit, :detail, %q{Cash Letter Debit}],
|
306
|
+
489 => [:debit, :detail, %q{Cash Letter Adjustment}],
|
307
|
+
490 => [:debit, :summary, %q{Total Outgoing Money Transfers}],
|
308
|
+
491 => [:debit, :detail, %q{Individual Outgoing Internal Money Transfer}],
|
309
|
+
493 => [:debit, :detail, %q{Customer Terminal Initiated Money Transfer}],
|
310
|
+
495 => [:debit, :detail, %q{Outgoing Money Transfer}],
|
311
|
+
496 => [:debit, :detail, %q{Money Transfer Adjustment}],
|
312
|
+
498 => [:debit, :detail, %q{Compensation}],
|
313
|
+
500 => [:debit, :summary, %q{Total Automatic Transfer Debits}],
|
314
|
+
501 => [:debit, :detail, %q{Individual Automatic Transfer Debit}],
|
315
|
+
502 => [:debit, :detail, %q{Bond Operations Debit}],
|
316
|
+
505 => [:debit, :summary, %q{Total Book Transfer Debits}],
|
317
|
+
506 => [:debit, :detail, %q{Book Transfer Debit}],
|
318
|
+
507 => [:debit, :summary, %q{Total International Money Transfer Debits}],
|
319
|
+
508 => [:debit, :detail, %q{Individual International Money Transfer Debits}],
|
320
|
+
510 => [:debit, :summary, %q{Total International Debits}],
|
321
|
+
512 => [:debit, :detail, %q{Letter of Credit Debit}],
|
322
|
+
513 => [:debit, :detail, %q{Letter of Credit}],
|
323
|
+
514 => [:debit, :detail, %q{Foreign Exchange Debit}],
|
324
|
+
515 => [:debit, :summary, %q{Total Letters of Credit}],
|
325
|
+
516 => [:debit, :detail, %q{Foreign Remittance Debit}],
|
326
|
+
518 => [:debit, :detail, %q{Foreign Collection Debit}],
|
327
|
+
522 => [:debit, :detail, %q{Foreign Checks Paid}],
|
328
|
+
524 => [:debit, :detail, %q{Commission}],
|
329
|
+
526 => [:debit, :detail, %q{International Money Market Trading}],
|
330
|
+
527 => [:debit, :detail, %q{Standing Order}],
|
331
|
+
529 => [:debit, :detail, %q{Miscellaneous International Debit}],
|
332
|
+
530 => [:debit, :summary, %q{Total Security Debits}],
|
333
|
+
531 => [:debit, :detail, %q{Securities Purchased}],
|
334
|
+
532 => [:debit, :summary, %q{Total Amount of Securities Purchased}],
|
335
|
+
533 => [:debit, :detail, %q{Security Collection Debit}],
|
336
|
+
534 => [:debit, :summary, %q{Total Miscellaneous Securities DB – FF}],
|
337
|
+
535 => [:debit, :detail, %q{Purchase of Equity Securities}],
|
338
|
+
536 => [:debit, :summary, %q{Total Miscellaneous Securities Debit – CHF}],
|
339
|
+
537 => [:debit, :summary, %q{Total Collection Debit}],
|
340
|
+
538 => [:debit, :detail, %q{Matured Repurchase Order}],
|
341
|
+
539 => [:debit, :summary, %q{Total Bankers’ Acceptances Debit}],
|
342
|
+
540 => [:debit, :detail, %q{Coupon Collection Debit}],
|
343
|
+
541 => [:debit, :detail, %q{Bankers’ Acceptances}],
|
344
|
+
542 => [:debit, :detail, %q{Purchase of Debt Securities}],
|
345
|
+
543 => [:debit, :detail, %q{Domestic Collection}],
|
346
|
+
544 => [:debit, :detail, %q{Interest/Matured Principal Payment}],
|
347
|
+
546 => [:debit, :detail, %q{Commercial paper}],
|
348
|
+
547 => [:debit, :detail, %q{Capital Change}],
|
349
|
+
548 => [:debit, :detail, %q{Savings Bonds Sales Adjustment}],
|
350
|
+
549 => [:debit, :detail, %q{Miscellaneous Security Debit}],
|
351
|
+
550 => [:debit, :summary, %q{Total Deposited Items Returned}],
|
352
|
+
551 => [:debit, :summary, %q{Total Credit Reversals}],
|
353
|
+
552 => [:debit, :detail, %q{Credit Reversal}],
|
354
|
+
554 => [:debit, :detail, %q{Posting Error Correction Debit}],
|
355
|
+
555 => [:debit, :detail, %q{Deposited Item Returned}],
|
356
|
+
556 => [:debit, :summary, %q{Total ACH Return Items}],
|
357
|
+
557 => [:debit, :detail, %q{Individual ACH Return Item}],
|
358
|
+
558 => [:debit, :detail, %q{ACH Reversal Debit}],
|
359
|
+
560 => [:debit, :summary, %q{Total Rejected Debits}],
|
360
|
+
561 => [:debit, :detail, %q{Individual Rejected Debit}],
|
361
|
+
563 => [:debit, :detail, %q{Overdraft}],
|
362
|
+
564 => [:debit, :detail, %q{Overdraft Fee}],
|
363
|
+
566 => [:debit, :detail, %q{Return Item}],
|
364
|
+
567 => [:debit, :detail, %q{Return Item Fee}],
|
365
|
+
568 => [:debit, :detail, %q{Return Item Adjustment}],
|
366
|
+
570 => [:debit, :summary, %q{Total ZBA Debits}],
|
367
|
+
574 => [:debit, :detail, %q{Cumulative ZBA Debits}],
|
368
|
+
575 => [:debit, :detail, %q{ZBA Debit}],
|
369
|
+
577 => [:debit, :detail, %q{ZBA Debit Transfer}],
|
370
|
+
578 => [:debit, :detail, %q{ZBA Debit Adjustment}],
|
371
|
+
580 => [:debit, :summary, %q{Total Controlled Disbursing Debits}],
|
372
|
+
581 => [:debit, :detail, %q{Individual Controlled Disbursing Debit}],
|
373
|
+
583 => [:debit, :summary, %q{Total Disbursing Checks Paid – Early Amount}],
|
374
|
+
584 => [:debit, :summary, %q{Total Disbursing Checks Paid – Later Amount}],
|
375
|
+
585 => [:debit, :summary, %q{Disbursing Funding Requirement}],
|
376
|
+
586 => [:debit, :summary, %q{FRB Presentment Estimate (Fed Estimate)}],
|
377
|
+
587 => [:debit, :summary, %q{Late Debits (After Notification)}],
|
378
|
+
588 => [:debit, :summary, %q{Total Disbursing Checks Paid-Last Amount}],
|
379
|
+
590 => [:debit, :summary, %q{Total DTC Debits}],
|
380
|
+
594 => [:debit, :summary, %q{Total ATM Debits}],
|
381
|
+
595 => [:debit, :detail, %q{ATM Debit}],
|
382
|
+
596 => [:debit, :summary, %q{Total APR Debits}],
|
383
|
+
597 => [:debit, :detail, %q{ARP Debit}],
|
384
|
+
601 => [:debit, :summary, %q{Estimated Total Disbursement}],
|
385
|
+
602 => [:debit, :summary, %q{Adjusted Total Disbursement}],
|
386
|
+
610 => [:debit, :summary, %q{Total Funds Required}],
|
387
|
+
611 => [:debit, :summary, %q{Total Wire Transfers Out- CHF}],
|
388
|
+
612 => [:debit, :summary, %q{Total Wire Transfers Out – FF}],
|
389
|
+
613 => [:debit, :summary, %q{Total International Debit – CHF}],
|
390
|
+
614 => [:debit, :summary, %q{Total International Debit – FF}],
|
391
|
+
615 => [:debit, :summary, %q{Total Federal Reserve Bank – Commercial Bank Debit}],
|
392
|
+
616 => [:debit, :detail, %q{Federal Reserve Bank – Commercial Bank Debit}],
|
393
|
+
617 => [:debit, :summary, %q{Total Securities Purchased – CHF}],
|
394
|
+
618 => [:debit, :summary, %q{Total Securities Purchased – FF}],
|
395
|
+
621 => [:debit, :summary, %q{Total Broker Debits – CHF}],
|
396
|
+
622 => [:debit, :detail, %q{Broker Debit}],
|
397
|
+
623 => [:debit, :summary, %q{Total Broker Debits – FF}],
|
398
|
+
625 => [:debit, :summary, %q{Total Broker Debits}],
|
399
|
+
626 => [:debit, :summary, %q{Total Fed Funds Purchased}],
|
400
|
+
627 => [:debit, :detail, %q{Fed Funds Purchased}],
|
401
|
+
628 => [:debit, :summary, %q{Total Cash Center Debits}],
|
402
|
+
629 => [:debit, :detail, %q{Cash Center Debit}],
|
403
|
+
630 => [:debit, :summary, %q{Total Debit Adjustments}],
|
404
|
+
631 => [:debit, :detail, %q{Debit Adjustment}],
|
405
|
+
632 => [:debit, :summary, %q{Total Trust Debits}],
|
406
|
+
633 => [:debit, :detail, %q{Trust Debit}],
|
407
|
+
634 => [:debit, :detail, %q{YTD Adjustment Debit}],
|
408
|
+
640 => [:debit, :summary, %q{Total Escrow Debits}],
|
409
|
+
641 => [:debit, :detail, %q{Individual Escrow Debit}],
|
410
|
+
644 => [:debit, :detail, %q{Individual Back Value Debit}],
|
411
|
+
646 => [:debit, :summary, %q{Transfer Calculation Debit}],
|
412
|
+
650 => [:debit, :summary, %q{Investments Purchased}],
|
413
|
+
651 => [:debit, :detail, %q{Individual Investment purchased}],
|
414
|
+
654 => [:debit, :detail, %q{Interest Debit}],
|
415
|
+
655 => [:debit, :summary, %q{Total Investment Interest Debits}],
|
416
|
+
656 => [:debit, :detail, %q{Sweep Principal Buy}],
|
417
|
+
657 => [:debit, :detail, %q{Futures Debit}],
|
418
|
+
658 => [:debit, :detail, %q{Principal Payments Debit}],
|
419
|
+
659 => [:debit, :detail, %q{Interest Adjustment Debit}],
|
420
|
+
661 => [:debit, :detail, %q{Account Analysis Fee}],
|
421
|
+
662 => [:debit, :detail, %q{Correspondent Collection Debit}],
|
422
|
+
663 => [:debit, :detail, %q{Correspondent Collection Adjustment}],
|
423
|
+
664 => [:debit, :detail, %q{Loan Participation}],
|
424
|
+
665 => [:debit, :summary, %q{Intercept Debits}],
|
425
|
+
666 => [:debit, :detail, %q{Currency and Coin Shipped}],
|
426
|
+
667 => [:debit, :detail, %q{Food Stamp Letter}],
|
427
|
+
668 => [:debit, :detail, %q{Food Stamp Adjustment}],
|
428
|
+
669 => [:debit, :detail, %q{Clearing Settlement Debit}],
|
429
|
+
670 => [:debit, :summary, %q{Total Back Value Debits}],
|
430
|
+
672 => [:debit, :detail, %q{Back Value Adjustment}],
|
431
|
+
673 => [:debit, :detail, %q{Customer Payroll}],
|
432
|
+
674 => [:debit, :detail, %q{FRB Statement Recap}],
|
433
|
+
676 => [:debit, :detail, %q{Savings Bond Letter or Adjustment}],
|
434
|
+
677 => [:debit, :detail, %q{Treasury Tax and Loan Debit}],
|
435
|
+
678 => [:debit, :detail, %q{Transfer of Treasury Debit}],
|
436
|
+
679 => [:debit, :detail, %q{FRB Government Checks Cash Letter Debit}],
|
437
|
+
681 => [:debit, :detail, %q{FRB Government Check Adjustment}],
|
438
|
+
682 => [:debit, :detail, %q{FRB Postal Money Order Debit}],
|
439
|
+
683 => [:debit, :detail, %q{FRB Postal Money Order Adjustment}],
|
440
|
+
684 => [:debit, :detail, %q{FRB Cash Letter Auto Charge Debit}],
|
441
|
+
685 => [:debit, :summary, %q{Total Universal Debits}],
|
442
|
+
686 => [:debit, :detail, %q{FRB Cash Letter Auto Charge Adjustment}],
|
443
|
+
687 => [:debit, :detail, %q{FRB Fine-Sort Cash Letter Debit}],
|
444
|
+
688 => [:debit, :detail, %q{FRB Fine-Sort Adjustment}],
|
445
|
+
689 => [:debit, :summary, %q{FRB Freight Payment Debits}],
|
446
|
+
690 => [:debit, :summary, %q{Total Miscellaneous Debits}],
|
447
|
+
691 => [:debit, :detail, %q{Universal Debit}],
|
448
|
+
692 => [:debit, :detail, %q{Freight Payment Debit}],
|
449
|
+
693 => [:debit, :detail, %q{Itemized Debit Over $10,000}],
|
450
|
+
694 => [:debit, :detail, %q{Deposit Reversal}],
|
451
|
+
695 => [:debit, :detail, %q{Deposit Correction Debit}],
|
452
|
+
696 => [:debit, :detail, %q{Regular Collection Debit}],
|
453
|
+
697 => [:debit, :detail, %q{Cumulative** Debits}],
|
454
|
+
698 => [:debit, :detail, %q{Miscellaneous Fees}],
|
455
|
+
699 => [:debit, :detail, %q{Miscellaneous Debit}],
|
456
|
+
701 => [:NA, :status, %q{Principal Loan Balance}],
|
457
|
+
703 => [:NA, :status, %q{Available Commitment Amount}],
|
458
|
+
705 => [:NA, :status, %q{Payment Amount Due}],
|
459
|
+
707 => [:NA, :status, %q{Principal Amount Past Due}],
|
460
|
+
709 => [:NA, :status, %q{Interest Amount Past Due}],
|
461
|
+
720 => [:credit, :summary, %q{Total Loan Payment}],
|
462
|
+
721 => [:credit, :detail, %q{Amount Applied to Interest}],
|
463
|
+
722 => [:credit, :detail, %q{Amount Applied to Principal}],
|
464
|
+
723 => [:credit, :detail, %q{Amount Applied to Escrow}],
|
465
|
+
724 => [:credit, :detail, %q{Amount Applied to Late Charges}],
|
466
|
+
725 => [:credit, :detail, %q{Amount Applied to Buydown}],
|
467
|
+
726 => [:credit, :detail, %q{Amount Applied to Misc. Fees}],
|
468
|
+
727 => [:credit, :detail, %q{Amount Applied to Deferred Interest Detail}],
|
469
|
+
728 => [:credit, :detail, %q{Amount Applied to Service Charge}],
|
470
|
+
760 => [:debit, :summary, %q{Loan Disbursement}],
|
471
|
+
890 => [:misc, :detail, %q{Contains Non-monetary Information}],
|
472
|
+
}
|
473
|
+
end
|