nacha 0.1.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.
Files changed (84) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +13 -0
  3. data/.gitlab-ci.yml +13 -0
  4. data/.rspec +2 -0
  5. data/.rubocop.yml +42 -0
  6. data/.ruby-gemset +1 -0
  7. data/.ruby-version +1 -0
  8. data/.travis.yml +5 -0
  9. data/Gemfile +9 -0
  10. data/Guardfile +20 -0
  11. data/LICENSE.txt +21 -0
  12. data/README.md +75 -0
  13. data/ROADMAP.md +56 -0
  14. data/Rakefile +6 -0
  15. data/bin/console +14 -0
  16. data/bin/setup +8 -0
  17. data/lib/nacha/aba_number.rb +44 -0
  18. data/lib/nacha/ach_date.rb +24 -0
  19. data/lib/nacha/field.rb +139 -0
  20. data/lib/nacha/numeric.rb +68 -0
  21. data/lib/nacha/parser.rb +67 -0
  22. data/lib/nacha/record/addenda_record_type.rb +29 -0
  23. data/lib/nacha/record/adv_batch_control.rb +21 -0
  24. data/lib/nacha/record/adv_entry_detail.rb +27 -0
  25. data/lib/nacha/record/adv_file_control.rb +24 -0
  26. data/lib/nacha/record/adv_file_header.rb +26 -0
  27. data/lib/nacha/record/arc_entry_detail.rb +24 -0
  28. data/lib/nacha/record/base.rb +170 -0
  29. data/lib/nacha/record/batch_control.rb +24 -0
  30. data/lib/nacha/record/batch_control_record_type.rb +21 -0
  31. data/lib/nacha/record/batch_header.rb +26 -0
  32. data/lib/nacha/record/batch_header_record_type.rb +25 -0
  33. data/lib/nacha/record/boc_entry_detail.rb +23 -0
  34. data/lib/nacha/record/ccd_addenda.rb +19 -0
  35. data/lib/nacha/record/ccd_entry_detail.rb +23 -0
  36. data/lib/nacha/record/cie_addenda.rb +19 -0
  37. data/lib/nacha/record/cie_entry_detail.rb +23 -0
  38. data/lib/nacha/record/ctx_addenda.rb +17 -0
  39. data/lib/nacha/record/ctx_corporate_entry_detail.rb +26 -0
  40. data/lib/nacha/record/detail_record_type.rb +29 -0
  41. data/lib/nacha/record/dne_addenda.rb +19 -0
  42. data/lib/nacha/record/dne_entry_detail.rb +24 -0
  43. data/lib/nacha/record/enr_addenda.rb +19 -0
  44. data/lib/nacha/record/enr_entry_detail.rb +26 -0
  45. data/lib/nacha/record/fifth_iat_addenda.rb +19 -0
  46. data/lib/nacha/record/file_control.rb +21 -0
  47. data/lib/nacha/record/file_control_record_type.rb +21 -0
  48. data/lib/nacha/record/file_header.rb +26 -0
  49. data/lib/nacha/record/file_header_record_type.rb +31 -0
  50. data/lib/nacha/record/filler.rb +13 -0
  51. data/lib/nacha/record/filler_record_type.rb +21 -0
  52. data/lib/nacha/record/first_iat_addenda.rb +22 -0
  53. data/lib/nacha/record/fourth_iat_addenda.rb +22 -0
  54. data/lib/nacha/record/iat_batch_header.rb +30 -0
  55. data/lib/nacha/record/iat_entry_detail.rb +26 -0
  56. data/lib/nacha/record/iat_foreign_coorespondent_bank_information_addenda.rb +23 -0
  57. data/lib/nacha/record/iat_remittance_information_addenda.rb +19 -0
  58. data/lib/nacha/record/mte_addenda.rb +26 -0
  59. data/lib/nacha/record/mte_entry_detail.rb +24 -0
  60. data/lib/nacha/record/pop_entry_detail.rb +26 -0
  61. data/lib/nacha/record/pos_addenda.rb +25 -0
  62. data/lib/nacha/record/pos_entry_detail.rb +24 -0
  63. data/lib/nacha/record/ppd_addenda.rb +19 -0
  64. data/lib/nacha/record/ppd_entry_detail.rb +24 -0
  65. data/lib/nacha/record/rck_entry_detail.rb +24 -0
  66. data/lib/nacha/record/second_iat_addenda.rb +20 -0
  67. data/lib/nacha/record/seventh_iat_addenda.rb +20 -0
  68. data/lib/nacha/record/shr_addenda.rb +26 -0
  69. data/lib/nacha/record/shr_entry_detail.rb +25 -0
  70. data/lib/nacha/record/sixth_iat_addenda.rb +20 -0
  71. data/lib/nacha/record/tel_entry_detail.rb +24 -0
  72. data/lib/nacha/record/third_iat_addenda.rb +20 -0
  73. data/lib/nacha/record/trc_entry_detail.rb +25 -0
  74. data/lib/nacha/record/trx_addenda.rb +19 -0
  75. data/lib/nacha/record/trx_entry_detail.rb +26 -0
  76. data/lib/nacha/record/validations/field_validations.rb +33 -0
  77. data/lib/nacha/record/validations/record_validations.rb +15 -0
  78. data/lib/nacha/record/web_addenda.rb +19 -0
  79. data/lib/nacha/record/web_entry_detail.rb +24 -0
  80. data/lib/nacha/record/xck_entry_detail.rb +25 -0
  81. data/lib/nacha/version.rb +5 -0
  82. data/lib/nacha.rb +45 -0
  83. data/nacha.gemspec +38 -0
  84. metadata +304 -0
@@ -0,0 +1,26 @@
1
+ # coding: utf-8
2
+ # frozen_string_literal: true
3
+
4
+ require 'nacha/record/base.rb'
5
+ require 'nacha/record/detail_record_type.rb'
6
+
7
+ module Nacha
8
+ module Record
9
+ class EnrEntryDetail < Nacha::Record::Base
10
+ include DetailRecordType
11
+
12
+ nacha_field :record_type_code, inclusion: 'M', contents: 'C6', position: 1..1
13
+ nacha_field :transaction_code, inclusion: 'M', contents: 'Numeric', position: 2..3
14
+ nacha_field :receiving_dfi_identification, inclusion: 'M', contents: 'TTTTAAAAC', position: 4..12
15
+ nacha_field :receiving_dfi_identification, inclusion: 'M', contents: 'Alphameric', position: 13..29
16
+ nacha_field :amount, inclusion: 'M', contents: '$$$$$$$$¢¢', position: 30..39
17
+ nacha_field :identification_number, inclusion: 'O', contents: 'Alphameric', position: 40..54
18
+ nacha_field :number_of_addenda_records, inclusion: 'M', contents: 'Alphameric', position: 55..58
19
+ nacha_field :receiving_company_name, inclusion: 'R', contents: 'Alphameric', position: 59..74
20
+ nacha_field :reserved, inclusion: 'M', contents: 'Alphameric', position: 75..76
21
+ nacha_field :discretionary_data, inclusion: 'O', contents: 'Alphameric', position: 77..78
22
+ nacha_field :addenda_record_indicator, inclusion: 'M', contents: 'Numeric', position: 79..79
23
+ nacha_field :trace_number, inclusion: 'M', contents: 'Numeric', position: 80..94
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'nacha/record/base.rb'
4
+ require 'nacha/record/addenda_record_type.rb'
5
+ module Nacha
6
+ module Record
7
+ class FifthIatAddenda < Nacha::Record::Base
8
+ include AddendaRecordType
9
+ nacha_field :record_type_code, inclusion: 'M', contents: 'C7', position: 1..1
10
+ nacha_field :addenda_type_code, inclusion: 'M', contents: 'C14', position: 2..3
11
+ nacha_field :receiving_dfi_name, inclusion: 'M', contents: 'Alphameric', position: 4..38
12
+ nacha_field :receiving_dfi_identification_number_qualifier, inclusion: 'M', contents: 'Alphameric', position: 39..40
13
+ nacha_field :receiving_dfi_identification, inclusion: 'M', contents: 'Alphameric', position: 41..74
14
+ nacha_field :receiving_dfi_branch_country_code, inclusion: 'M', contents: 'Alphameric', position: 75..77
15
+ nacha_field :reserved, inclusion: 'M', contents: 'C ', position: 78..87
16
+ nacha_field :entry_detail_sequence_number, inclusion: 'M', contents: 'Numeric', position: 88..94
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,21 @@
1
+ # coding: utf-8
2
+ # frozen_string_literal: true
3
+
4
+ require 'nacha/record/base.rb'
5
+ require 'nacha/record/file_control_record_type.rb'
6
+
7
+ module Nacha
8
+ module Record
9
+ class FileControl < Nacha::Record::Base
10
+ include FileControlRecordType
11
+ nacha_field :record_type_code, inclusion: 'M', contents: 'C9', position: 1..1
12
+ nacha_field :batch_count, inclusion: 'M', contents: 'Numeric', position: 2..7
13
+ nacha_field :block_count, inclusion: 'M', contents: 'Numeric', position: 8..13
14
+ nacha_field :entry_addenda_count, inclusion: 'M', contents: 'Numeric', position: 14..21
15
+ nacha_field :entry_hash, inclusion: 'M', contents: 'Numeric', position: 22..31
16
+ nacha_field :total_debit_entry_dollar_amount_in_file, inclusion: 'M', contents: '$$$$$$$$$$¢¢', position: 32..43
17
+ nacha_field :total_credit_entry_dollar_amount_in_file, inclusion: 'M', contents: '$$$$$$$$$$¢¢', position: 44..55
18
+ nacha_field :reserved, inclusion: 'M', contents: 'C ', position: 56..94
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Nacha
4
+ module Record
5
+ module FileControlRecordType
6
+ def self.included(base)
7
+ base.extend ClassMethods
8
+ end
9
+
10
+ module ClassMethods
11
+ def child_record_types
12
+ []
13
+ end
14
+ end
15
+
16
+ def child_record_types
17
+ self.class.child_record_types
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'nacha/record/base.rb'
4
+ require 'nacha/record/file_header_record_type.rb'
5
+
6
+ module Nacha
7
+ module Record
8
+ class FileHeader < Nacha::Record::Base
9
+ include FileHeaderRecordType
10
+
11
+ nacha_field :record_type_code, inclusion: 'M', contents: 'C1', position: 1..1
12
+ nacha_field :priority_code, inclusion: 'R', contents: 'Numeric', position: 2..3
13
+ nacha_field :immediate_destination, inclusion: 'M', contents: 'bTTTTAAAAC', position: 4..13
14
+ nacha_field :immediate_origin, inclusion: 'M', contents: 'bTTTTAAAAC', position: 14..23
15
+ nacha_field :file_creation_date, inclusion: 'M', contents: 'YYMMDD', position: 24..29
16
+ nacha_field :file_creation_time, inclusion: 'M', contents: 'HHMM', position: 30..33
17
+ nacha_field :file_id_modifier, inclusion: 'M', contents: 'A-Z0-9', position: 34..34
18
+ nacha_field :record_size, inclusion: 'M', contents: 'C094', position: 35..37
19
+ nacha_field :blocking_factor, inclusion: 'M', contents: 'C10', position: 38..39
20
+ nacha_field :format_code, inclusion: 'M', contents: 'C1', position: 40..40
21
+ nacha_field :immediate_destination_name, inclusion: 'M', contents: 'Alphameric', position: 41..63
22
+ nacha_field :immediate_origin_name, inclusion: 'M', contents: 'Alphameric', position: 64..86
23
+ nacha_field :reference_code, inclusion: 'M', contents: 'Alphameric', position: 87..94
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Nacha
4
+ module Record
5
+ module FileHeaderRecordType
6
+ def self.included(base)
7
+ base.extend ClassMethods
8
+ end
9
+
10
+ module ClassMethods
11
+ def child_record_types
12
+ [
13
+ 'Nacha::Record::BatchHeader',
14
+ 'Nacha::Record::FileControl',
15
+ 'Nacha::Record::Filler'
16
+ ]
17
+ end
18
+ end
19
+
20
+ def child_record_types
21
+ ## returns the class method
22
+ self.class.child_record_types
23
+ end
24
+
25
+ def next_record_types
26
+ ## returns the class method
27
+ self.class.next_record_types
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,13 @@
1
+ # coding: utf-8
2
+ # frozen_string_literal: true
3
+
4
+ require 'nacha/record/base.rb'
5
+ require 'nacha/record/filler_record_type.rb'
6
+
7
+ module Nacha
8
+ module Record
9
+ class Filler < Nacha::Record::Base
10
+ include FillerRecordType
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Nacha
4
+ module Record
5
+ module FillerRecordType
6
+ def self.included(base)
7
+ base.extend ClassMethods
8
+ end
9
+
10
+ module ClassMethods
11
+ def self.child_record_types
12
+ []
13
+ end
14
+ end
15
+
16
+ def child_record_types
17
+ self.class.child_record_types
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,22 @@
1
+ # coding: utf-8
2
+ # frozen_string_literal: true
3
+
4
+ require 'nacha/record/base.rb'
5
+ require 'nacha/record/addenda_record_type.rb'
6
+
7
+ module Nacha
8
+ module Record
9
+ class FirstIatAddenda < Nacha::Record::Base
10
+ include AddendaRecordType
11
+
12
+ nacha_field :record_type_code, inclusion: 'M', contents: 'C7', position: 1..1
13
+ nacha_field :addenda_type_code, inclusion: 'M', contents: 'C10', position: 2..3
14
+ nacha_field :transaction_type_code, inclusion: 'R', contents: 'Alphameric', position: 4..6
15
+ nacha_field :foreign_payment_amount, inclusion: 'R', contents: 'Alphameric', position: 7..24
16
+ nacha_field :foreign_trace_number, inclusion: 'O', contents: 'Alphameric', position: 25..46
17
+ nacha_field :receiving_company_name, inclusion: 'M', contents: 'Alphameric', position: 47..81
18
+ nacha_field :reserved, inclusion: 'M', contents: 'C ', position: 84..87
19
+ nacha_field :entry_detail_sequence_number, inclusion: 'M', contents: 'Numeric', position: 88..94
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ # coding: utf-8
2
+ # frozen_string_literal: true
3
+
4
+ require 'nacha/record/base.rb'
5
+ require 'nacha/record/addenda_record_type.rb'
6
+
7
+ module Nacha
8
+ module Record
9
+ class FourthIatAddenda < Nacha::Record::Base
10
+ include AddendaRecordType
11
+
12
+ nacha_field :record_type_code, inclusion: 'M', contents: 'C7', position: 1..1
13
+ nacha_field :addenda_type_code, inclusion: 'M', contents: 'C13', position: 2..3
14
+ nacha_field :originating_dfi_name, inclusion: 'M', contents: 'Alphameric', position: 4..38
15
+ nacha_field :originating_dfi_identification_number_qualifier, inclusion: 'M', contents: 'Alphameric', position: 39..40
16
+ nacha_field :originating_dfi_identification, inclusion: 'M', contents: 'Alphameric', position: 41..74
17
+ nacha_field :originating_dfi_branch_country_code, inclusion: 'M', contents: 'Alphameric', position: 75..77
18
+ nacha_field :reserved, inclusion: 'M', contents: 'C ', position: 78..87
19
+ nacha_field :entry_detail_sequence_number, inclusion: 'M', contents: 'Numeric', position: 88..94
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'nacha/record/base.rb'
4
+ require 'nacha/record/batch_header_record_type.rb'
5
+
6
+ module Nacha
7
+ module Record
8
+ class IatBatchHeader < Nacha::Record::Base
9
+ include BatchHeaderRecordType
10
+
11
+ nacha_field :record_type_code, inclusion: 'M', contents: 'C5', position: 1..1
12
+ nacha_field :service_class_code, inclusion: 'M', contents: 'Numeric', position: 2..4
13
+ nacha_field :iat_indicator, inclusion: 'O', contents: 'Alphameric', position: 5..20
14
+ nacha_field :foreign_exchange_indicator, inclusion: 'M', contents: 'Alphameric', position: 21..22
15
+ nacha_field :foreign_exchange_reference_indicator, inclusion: 'R', contents: 'Numeric', position: 23..23
16
+ nacha_field :foreign_exchange_reference, inclusion: 'R', contents: 'Alphameric', position: 24..38
17
+ nacha_field :iso_destination_country_code, inclusion: 'M', contents: 'Alphameric', position: 39..40
18
+ nacha_field :originator_identification, inclusion: 'M', contents: 'Alphameric', position: 41..50
19
+ nacha_field :standard_entry_class_code, inclusion: 'M', contents: 'Alphameric', position: 51..53
20
+ nacha_field :company_entry_description, inclusion: 'M', contents: 'Alphameric', position: 54..63
21
+ nacha_field :iso_originating_currency_code, inclusion: 'M', contents: 'Alphameric', position: 64..66
22
+ nacha_field :iso_destination_currency_code, inclusion: 'M', contents: 'Alphameric', position: 67..69
23
+ nacha_field :effective_entry_date, inclusion: 'R', contents: 'YYMMDD', position: 70..75
24
+ nacha_field :settlement_date_julian, inclusion: 'M', contents: 'Numeric', position: 76..78
25
+ nacha_field :originator_status_code, inclusion: 'M', contents: 'Alphameric', position: 79..79
26
+ nacha_field :originating_dfi_identification, inclusion: 'M', contents: 'TTTTAAAA', position: 80..87
27
+ nacha_field :batch_number, inclusion: 'M', contents: 'Numeric', position: 88..94
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,26 @@
1
+ # coding: utf-8
2
+ # frozen_string_literal: true
3
+
4
+ require 'nacha/record/base.rb'
5
+ require 'nacha/record/detail_record_type.rb'
6
+
7
+ module Nacha
8
+ module Record
9
+ class IatEntryDetail < Nacha::Record::Base
10
+ include DetailRecordType
11
+
12
+ nacha_field :record_type_code, inclusion: 'M', contents: 'C6', position: 1..1
13
+ nacha_field :transaction_code, inclusion: 'M', contents: 'Numeric', position: 2..3
14
+ nacha_field :receiving_dfi_identification, inclusion: 'M', contents: 'TTTTAAAAC', position: 4..12
15
+ nacha_field :number_of_addenda_records, inclusion: 'M', contents: 'Alphameric', position: 13..16
16
+ nacha_field :reserved, inclusion: 'O', contents: 'C ', position: 17..29
17
+ nacha_field :amount, inclusion: 'M', contents: '$$$$$$$$¢¢', position: 30..39
18
+ nacha_field :dfi_account_number, inclusion: 'M', contents: 'Numeric', position: 40..74
19
+ nacha_field :reserved, inclusion: 'O', contents: 'C ', position: 75..76
20
+ nacha_field :gateway_operator_ofac_screening_indicator, inclusion: 'O', contents: 'Alphameric', position: 77..77
21
+ nacha_field :secondary_ofac_screening_indicator, inclusion: 'O', contents: 'Alphameric', position: 78..78
22
+ nacha_field :addenda_record_indicator, inclusion: 'M', contents: 'Numeric', position: 79..79
23
+ nacha_field :trace_number, inclusion: 'M', contents: 'Numeric', position: 80..94
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,23 @@
1
+ # coding: utf-8
2
+ # frozen_string_literal: true
3
+
4
+ require 'nacha/record/base.rb'
5
+ require 'nacha/record/addenda_record_type.rb'
6
+
7
+ module Nacha
8
+ module Record
9
+ class IatForeignCoorespondentBankInformationAddenda < Nacha::Record::Base
10
+ include AddendaRecordType
11
+
12
+ nacha_field :record_type_code, inclusion: 'M', contents: 'C7', position: 1..1
13
+ nacha_field :addenda_type_code, inclusion: 'M', contents: 'C18', position: 2..3
14
+ nacha_field :foreign_coorespondent_bank_name, inclusion: 'M', contents: 'Alphameric', position: 4..38
15
+ nacha_field :foreign_coorespondent_bank_identification_number_qualifier, inclusion: 'M', contents: 'Alphameric', position: 39..40
16
+ nacha_field :foreign_coorespondent_bank_identification_number, inclusion: 'M', contents: 'Alphameric', position: 41..74
17
+ nacha_field :foreign_coorestpondent_bank_branch_country_code, inclusion: 'M', contents: 'Alphameric', position: 75..77
18
+ nacha_field :reserved, inclusion: 'M', contents: 'C ', position: 78..83
19
+ nacha_field :addenda_sequence_number, inclusion: 'M', contents: 'Numeric', position: 84..87
20
+ nacha_field :entry_detail_sequence_number, inclusion: 'M', contents: 'Numeric', position: 88..94
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,19 @@
1
+ # coding: utf-8
2
+ # frozen_string_literal: true
3
+
4
+ require 'nacha/record/base.rb'
5
+ require 'nacha/record/addenda_record_type.rb'
6
+
7
+ module Nacha
8
+ module Record
9
+ class IatRemittanceInformationAddenda < Nacha::Record::Base
10
+ include AddendaRecordType
11
+
12
+ nacha_field :record_type_code, inclusion: 'M', contents: 'C7', position: 1..1
13
+ nacha_field :addenda_type_code, inclusion: 'M', contents: 'C17', position: 2..3
14
+ nacha_field :payment_related_information, inclusion: 'O', contents: 'Alphameric', position: 4..83
15
+ nacha_field :addenda_sequence_number, inclusion: 'M', contents: 'Numeric', position: 84..87
16
+ nacha_field :entry_detail_sequence_number, inclusion: 'M', contents: 'Numeric', position: 88..94
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,26 @@
1
+ # coding: utf-8
2
+ # frozen_string_literal: true
3
+
4
+ require 'nacha/record/base.rb'
5
+ require 'nacha/record/addenda_record_type.rb'
6
+
7
+ module Nacha
8
+ module Record
9
+ class MteAddenda < Nacha::Record::Base
10
+ include AddendaRecordType
11
+
12
+ nacha_field :record_type_code, inclusion: 'M', contents: 'C6', position: 1..1
13
+ nacha_field :addenda_type_code, inclusion: 'M', contents: 'C02', position: 2..3
14
+ nacha_field :transaction_description, inclusion: 'R', contents: 'Alphameric', position: 4..10
15
+ nacha_field :network_identification_code, inclusion: 'O', contents: 'Alphameric', position: 11..13
16
+ nacha_field :terminal_identification_code, inclusion: 'R', contents: 'Alphameric', position: 14..19
17
+ nacha_field :transaction_serial_number, inclusion: 'R', contents: 'Alphameric', position: 20..25
18
+ nacha_field :transaction_date, inclusion: 'R', contents: 'MMDD', position: 26..29
19
+ nacha_field :transaction_time, inclusion: 'R', contents: 'HHMMSS', position: 30..35
20
+ nacha_field :terminal_location, inclusion: 'R', contents: 'Alphameric', position: 36..62
21
+ nacha_field :terminal_city, inclusion: 'R', contents: 'Alphameric', position: 63..77
22
+ nacha_field :terminal_state, inclusion: 'R', contents: 'Alphameric', position: 78..79
23
+ nacha_field :trace_number, inclusion: 'M', contents: 'Numeric', position: 80..94
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,24 @@
1
+ # coding: utf-8
2
+ # frozen_string_literal: true
3
+
4
+ require 'nacha/record/base.rb'
5
+ require 'nacha/record/detail_record_type.rb'
6
+
7
+ module Nacha
8
+ module Record
9
+ class MteEntryDetail < Nacha::Record::Base
10
+ include DetailRecordType
11
+
12
+ nacha_field :record_type_code, inclusion: 'M', contents: 'C6', position: 1..1
13
+ nacha_field :transaction_code, inclusion: 'M', contents: 'Numeric', position: 2..3
14
+ nacha_field :receiving_dfi_identification, inclusion: 'M', contents: 'TTTTAAAAC', position: 4..12
15
+ nacha_field :dfi_account_number, inclusion: 'R', contents: 'Alphameric', position: 13..29
16
+ nacha_field :amount, inclusion: 'M', contents: '$$$$$$$$¢¢', position: 30..39
17
+ nacha_field :individual_name, inclusion: 'M', contents: 'Alphameric', position: 40..54
18
+ nacha_field :individual_identification_number, inclusion: 'M', contents: 'Alphameric', position: 55..76
19
+ nacha_field :discretionary_data, inclusion: 'O', contents: 'Alphameric', position: 77..78
20
+ nacha_field :addenda_record_indicator, inclusion: 'M', contents: 'Numeric', position: 79..79
21
+ nacha_field :trace_number, inclusion: 'M', contents: 'Numeric', position: 80..94
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,26 @@
1
+ # coding: utf-8
2
+ # frozen_string_literal: true
3
+
4
+ require 'nacha/record/base.rb'
5
+ require 'nacha/record/detail_record_type.rb'
6
+
7
+ module Nacha
8
+ module Record
9
+ class PopEntryDetail < Nacha::Record::Base
10
+ include DetailRecordType
11
+
12
+ nacha_field :record_type_code, inclusion: 'M', contents: 'C6', position: 1..1
13
+ nacha_field :transaction_code, inclusion: 'M', contents: 'Numeric', position: 2..3
14
+ nacha_field :receiving_dfi_identification, inclusion: 'M', contents: 'TTTTAAAAC', position: 4..12
15
+ nacha_field :dfi_account_number, inclusion: 'R', contents: 'Alphameric', position: 13..29
16
+ nacha_field :amount, inclusion: 'M', contents: '$$$$$$$$¢¢', position: 30..39
17
+ nacha_field :check_serial_number, inclusion: 'M', contents: 'Alphameric', position: 40..48
18
+ nacha_field :terminal_city, inclusion: 'M', contents: 'Alphameric', position: 49..52
19
+ nacha_field :terminal_state, inclusion: 'R', contents: 'Alphameric', position: 53..54
20
+ nacha_field :individual_name, inclusion: 'O', contents: 'Alphameric', position: 55..76
21
+ nacha_field :discretionary_data, inclusion: 'O', contents: 'Alphameric', position: 77..78
22
+ nacha_field :addenda_record_indicator, inclusion: 'M', contents: 'Numeric', position: 79..79
23
+ nacha_field :trace_number, inclusion: 'M', contents: 'Numeric', position: 80..94
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,25 @@
1
+ # coding: utf-8
2
+ # frozen_string_literal: true
3
+
4
+ require 'nacha/record/base.rb'
5
+ require 'nacha/record/addenda_record_type.rb'
6
+
7
+ module Nacha
8
+ module Record
9
+ class PosAddenda < Nacha::Record::Base
10
+ include AddendaRecordType
11
+ nacha_field :record_type_code, inclusion: 'M', contents: 'C7', position: 1..1
12
+ nacha_field :addenda_type_code, inclusion: 'M', contents: 'C02', position: 2..3
13
+ nacha_field :reference_information_1, inclusion: 'O', contents: 'Alphameric', position: 4..10
14
+ nacha_field :reference_information_2, inclusion: 'O', contents: 'Alphameric', position: 11..13
15
+ nacha_field :terminal_identification_code, inclusion: 'R', contents: 'Alphameric', position: 14..19
16
+ nacha_field :transaction_serial_number, inclusion: 'R', contents: 'Alphameric', position: 20..25
17
+ nacha_field :transaction_date, inclusion: 'O', contents: 'Alphameric', position: 26..29
18
+ nacha_field :authorization_code_or_card_expiration_date, inclusion: 'O', contents: 'Alphameric', position: 30..35
19
+ nacha_field :terminal_location, inclusion: 'R', contents: 'Alphameric', position: 36..62
20
+ nacha_field :terminal_city, inclusion: 'R', contents: 'Alphameric', position: 63..77
21
+ nacha_field :terminal_state, inclusion: 'M', contents: 'Numeric', position: 78..79
22
+ nacha_field :trace_number, inclusion: 'M', contents: 'Numeric', position: 80..94
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,24 @@
1
+ # coding: utf-8
2
+ # frozen_string_literal: true
3
+
4
+ require 'nacha/record/base.rb'
5
+ require 'nacha/record/detail_record_type.rb'
6
+
7
+ module Nacha
8
+ module Record
9
+ class PosEntryDetail < Nacha::Record::Base
10
+ include DetailRecordType
11
+
12
+ nacha_field :record_type_code, inclusion: 'M', contents: 'C6', position: 1..1
13
+ nacha_field :transaction_code, inclusion: 'M', contents: 'Numeric', position: 2..3
14
+ nacha_field :receiving_dfi_identification, inclusion: 'M', contents: 'TTTTAAAAC', position: 4..12
15
+ nacha_field :dfi_account_number, inclusion: 'R', contents: 'Alphameric', position: 13..29
16
+ nacha_field :amount, inclusion: 'M', contents: '$$$$$$$$¢¢', position: 30..39
17
+ nacha_field :individual_identification_number, inclusion: 'O', contents: 'Alphameric', position: 40..54
18
+ nacha_field :individual_name, inclusion: 'R', contents: 'Alphameric', position: 55..76
19
+ nacha_field :card_transaction_type_code, inclusion: 'M', contents: 'Alphameric', position: 77..78
20
+ nacha_field :addenda_record_indicator, inclusion: 'M', contents: 'Numeric', position: 79..79
21
+ nacha_field :trace_number, inclusion: 'M', contents: 'Numeric', position: 80..94
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,19 @@
1
+ # coding: utf-8
2
+ # frozen_string_literal: true
3
+
4
+ require 'nacha/record/base.rb'
5
+ require 'nacha/record/addenda_record_type.rb'
6
+
7
+ module Nacha
8
+ module Record
9
+ class PpdAddenda < Nacha::Record::Base
10
+ include AddendaRecordType
11
+
12
+ nacha_field :record_type_code, inclusion: 'M', contents: 'C7', position: 1..1
13
+ nacha_field :addenda_type_code, inclusion: 'M', contents: 'C05', position: 2..3
14
+ nacha_field :payment_related_information, inclusion: 'O', contents: 'Alphameric', position: 4..83
15
+ nacha_field :addenda_sequence_number, inclusion: 'M', contents: 'Numeric', position: 84..87
16
+ nacha_field :entry_detail_sequence_number, inclusion: 'M', contents: 'Numeric', position: 88..94
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,24 @@
1
+ # coding: utf-8
2
+ # frozen_string_literal: true
3
+
4
+ require 'nacha/record/base.rb'
5
+ require 'nacha/record/detail_record_type.rb'
6
+
7
+ module Nacha
8
+ module Record
9
+ class PpdEntryDetail < Nacha::Record::Base
10
+ include DetailRecordType
11
+
12
+ nacha_field :record_type_code, inclusion: 'M', contents: 'C6', position: 1..1
13
+ nacha_field :transaction_code, inclusion: 'M', contents: 'Numeric', position: 2..3
14
+ nacha_field :receiving_dfi_identification, inclusion: 'M', contents: 'TTTTAAAAC', position: 4..12
15
+ nacha_field :dfi_account_number, inclusion: 'R', contents: 'Alphameric', position: 13..29
16
+ nacha_field :amount, inclusion: 'M', contents: '$$$$$$$$¢¢', position: 30..39
17
+ nacha_field :individual_identification_number, inclusion: 'O', contents: 'Alphameric', position: 40..54
18
+ nacha_field :individual_name, inclusion: 'R', contents: 'Alphameric', position: 55..76
19
+ nacha_field :discretionary_data, inclusion: 'O', contents: 'Alphameric', position: 77..78
20
+ nacha_field :addenda_record_indicator, inclusion: 'M', contents: 'Numeric', position: 79..79
21
+ nacha_field :trace_number, inclusion: 'M', contents: 'Numeric', position: 80..94
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,24 @@
1
+ # coding: utf-8
2
+ # frozen_string_literal: true
3
+
4
+ require 'nacha/record/base.rb'
5
+ require 'nacha/record/detail_record_type.rb'
6
+
7
+ module Nacha
8
+ module Record
9
+ class RckEntryDetail < Nacha::Record::Base
10
+ include DetailRecordType
11
+
12
+ nacha_field :record_type_code, inclusion: 'M', contents: 'C6', position: 1..1
13
+ nacha_field :transaction_code, inclusion: 'M', contents: 'Numeric', position: 2..3
14
+ nacha_field :receiving_dfi_identification, inclusion: 'M', contents: 'TTTTAAAAC', position: 4..12
15
+ nacha_field :dfi_account_number, inclusion: 'R', contents: 'Alphameric', position: 13..29
16
+ nacha_field :amount, inclusion: 'M', contents: '$$$$$$$$¢¢', position: 30..39
17
+ nacha_field :check_serial_number, inclusion: 'M', contents: 'Alphameric', position: 40..54
18
+ nacha_field :individual_name, inclusion: 'R', contents: 'Alphameric', position: 55..76
19
+ nacha_field :discretionary_data, inclusion: 'O', contents: 'Alphameric', position: 77..78
20
+ nacha_field :addenda_record_indicator, inclusion: 'M', contents: 'Numeric', position: 79..79
21
+ nacha_field :trace_number, inclusion: 'M', contents: 'Numeric', position: 80..94
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,20 @@
1
+ # coding: utf-8
2
+ # frozen_string_literal: true
3
+
4
+ require 'nacha/record/base.rb'
5
+ require 'nacha/record/addenda_record_type.rb'
6
+
7
+ module Nacha
8
+ module Record
9
+ class SecondIatAddenda < Nacha::Record::Base
10
+ include AddendaRecordType
11
+
12
+ nacha_field :record_type_code, inclusion: 'M', contents: 'C7', position: 1..1
13
+ nacha_field :addenda_type_code, inclusion: 'M', contents: 'C11', position: 2..3
14
+ nacha_field :originator_name, inclusion: 'M', contents: 'Alphameric', position: 4..38
15
+ nacha_field :originator_street_address, inclusion: 'M', contents: 'Alphameric', position: 39..73
16
+ nacha_field :reserved, inclusion: 'M', contents: 'C ', position: 74..87
17
+ nacha_field :entry_detail_sequence_number, inclusion: 'M', contents: 'Numeric', position: 88..94
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ # coding: utf-8
2
+ # frozen_string_literal: true
3
+
4
+ require 'nacha/record/base.rb'
5
+ require 'nacha/record/addenda_record_type.rb'
6
+
7
+ module Nacha
8
+ module Record
9
+ class SeventhIatAddenda < Nacha::Record::Base
10
+ include AddendaRecordType
11
+
12
+ nacha_field :record_type_code, inclusion: 'M', contents: 'C7', position: 1..1
13
+ nacha_field :addenda_type_code, inclusion: 'M', contents: 'C16', position: 2..3
14
+ nacha_field :receiver_city_state, inclusion: 'M', contents: 'Alphameric', position: 4..38
15
+ nacha_field :receiver_country_postal, inclusion: 'M', contents: 'Alphameric', position: 39..73
16
+ nacha_field :reserved, inclusion: 'M', contents: 'C ', position: 74..87
17
+ nacha_field :entry_detail_sequence_number, inclusion: 'M', contents: 'Numeric', position: 88..94
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,26 @@
1
+ # coding: utf-8
2
+ # frozen_string_literal: true
3
+
4
+ require 'nacha/record/base.rb'
5
+ require 'nacha/record/addenda_record_type.rb'
6
+
7
+ module Nacha
8
+ module Record
9
+ class ShrAddenda < Nacha::Record::Base
10
+ include AddendaRecordType
11
+
12
+ nacha_field :record_type_code, inclusion: 'M', contents: 'C7', position: 1..1
13
+ nacha_field :addenda_type_code, inclusion: 'M', contents: 'C02', position: 2..3
14
+ nacha_field :reference_information_1, inclusion: 'O', contents: 'Alphameric', position: 4..10
15
+ nacha_field :reference_information_2, inclusion: 'O', contents: 'Alphameric', position: 11..13
16
+ nacha_field :terminal_identification_code, inclusion: 'R', contents: 'Alphameric', position: 14..19
17
+ nacha_field :transaction_serial_number, inclusion: 'R', contents: 'Alphameric', position: 20..25
18
+ nacha_field :transaction_date, inclusion: 'O', contents: 'Alphameric', position: 26..29
19
+ nacha_field :authorization_code_or_card_expiration_date, inclusion: 'O', contents: 'Alphameric', position: 30..35
20
+ nacha_field :terminal_location, inclusion: 'R', contents: 'Alphameric', position: 36..62
21
+ nacha_field :terminal_city, inclusion: 'R', contents: 'Alphameric', position: 63..77
22
+ nacha_field :terminal_state, inclusion: 'M', contents: 'Numeric', position: 78..79
23
+ nacha_field :trace_number, inclusion: 'M', contents: 'Numeric', position: 80..94
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,25 @@
1
+ # coding: utf-8
2
+ # frozen_string_literal: true
3
+
4
+ require 'nacha/record/base.rb'
5
+ require 'nacha/record/detail_record_type.rb'
6
+
7
+ module Nacha
8
+ module Record
9
+ class ShrEntryDetail < Nacha::Record::Base
10
+ include DetailRecordType
11
+
12
+ nacha_field :record_type_code, inclusion: 'M', contents: 'C6', position: 1..1
13
+ nacha_field :transaction_code, inclusion: 'M', contents: 'Numeric', position: 2..3
14
+ nacha_field :receiving_dfi_identification, inclusion: 'M', contents: 'TTTTAAAAC', position: 4..12
15
+ nacha_field :dfi_account_number, inclusion: 'R', contents: 'Alphameric', position: 13..29
16
+ nacha_field :amount, inclusion: 'M', contents: '$$$$$$$$¢¢', position: 30..39
17
+ nacha_field :card_expiration_date, inclusion: 'O', contents: 'Alphameric', position: 40..43
18
+ nacha_field :document_reference_number, inclusion: 'R', contents: 'Alphameric', position: 44..54
19
+ nacha_field :individual_card_account_number, inclusion: 'R', contents: 'Alphameric', position: 55..76
20
+ nacha_field :card_transaction_type, inclusion: 'M', contents: 'Alphameric', position: 77..78
21
+ nacha_field :addenda_record_indicator, inclusion: 'M', contents: 'Numeric', position: 79..79
22
+ nacha_field :trace_number, inclusion: 'M', contents: 'Numeric', position: 80..94
23
+ end
24
+ end
25
+ end