eancom 0.1.0 → 1.2.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 (97) hide show
  1. checksums.yaml +4 -4
  2. data/.DS_Store +0 -0
  3. data/.gitignore +187 -6
  4. data/.gitlab-ci.yml +27 -0
  5. data/.rspec_status +225 -0
  6. data/.rubocop.yml +2 -0
  7. data/.ruby-version +1 -0
  8. data/Gemfile +4 -2
  9. data/Gemfile.lock +87 -3
  10. data/bin/console +3 -2
  11. data/definitions/desadv/d01b.rb +205 -0
  12. data/definitions/desadv/d96a.rb +108 -73
  13. data/definitions/segments/alc.rb +236 -0
  14. data/definitions/segments/ali.rb +93 -0
  15. data/definitions/segments/bgm.rb +267 -0
  16. data/definitions/segments/cav.rb +122 -0
  17. data/definitions/segments/cci.rb +136 -0
  18. data/definitions/segments/cnt.rb +78 -0
  19. data/definitions/segments/cps.rb +76 -0
  20. data/definitions/segments/cux.rb +167 -0
  21. data/definitions/segments/dtm.rb +159 -0
  22. data/definitions/segments/ftx.rb +143 -0
  23. data/definitions/segments/imd.rb +356 -0
  24. data/definitions/segments/lin.rb +113 -0
  25. data/definitions/segments/loc.rb +89 -0
  26. data/definitions/segments/mea.rb +189 -0
  27. data/definitions/segments/moa.rb +144 -0
  28. data/definitions/segments/nad.rb +254 -0
  29. data/definitions/segments/pac.rb +250 -0
  30. data/definitions/segments/pgi.rb +148 -0
  31. data/definitions/segments/pia.rb +501 -0
  32. data/definitions/segments/pri.rb +188 -0
  33. data/definitions/segments/qty.rb +79 -0
  34. data/definitions/segments/rff.rb +166 -0
  35. data/definitions/segments/tax.rb +259 -0
  36. data/definitions/segments/tdt.rb +254 -0
  37. data/definitions/segments/una.rb +85 -0
  38. data/definitions/segments/unb.rb +284 -0
  39. data/definitions/segments/unh.rb +118 -0
  40. data/definitions/segments/uns.rb +40 -0
  41. data/definitions/segments/unt.rb +48 -0
  42. data/definitions/segments/unz.rb +48 -0
  43. data/definitions/slsrpt/d01b.rb +201 -0
  44. data/definitions/slsrpt/d96a.rb +194 -0
  45. data/eancom.gemspec +9 -5
  46. data/lib/eancom/definition.rb +1 -1
  47. data/lib/eancom/edifact/body.rb +63 -0
  48. data/lib/eancom/edifact/composite.rb +38 -0
  49. data/lib/eancom/edifact/data.rb +108 -0
  50. data/lib/eancom/edifact/document.rb +43 -11
  51. data/lib/eancom/edifact/document_element.rb +26 -0
  52. data/lib/eancom/edifact/footer.rb +6 -0
  53. data/lib/eancom/edifact/header.rb +15 -0
  54. data/lib/eancom/edifact/item.rb +40 -0
  55. data/lib/eancom/edifact/message.rb +24 -16
  56. data/lib/eancom/edifact/segment.rb +131 -12
  57. data/lib/eancom/edifact/segments/alc.rb +61 -0
  58. data/lib/eancom/edifact/segments/ali.rb +52 -0
  59. data/lib/eancom/edifact/segments/bgm.rb +45 -0
  60. data/lib/eancom/edifact/segments/cav.rb +47 -0
  61. data/lib/eancom/edifact/segments/cci.rb +53 -0
  62. data/lib/eancom/edifact/segments/cnt.rb +33 -0
  63. data/lib/eancom/edifact/segments/cps.rb +30 -0
  64. data/lib/eancom/edifact/segments/cux.rb +60 -0
  65. data/lib/eancom/edifact/segments/dtm.rb +43 -0
  66. data/lib/eancom/edifact/segments/ftx.rb +63 -0
  67. data/lib/eancom/edifact/segments/imd.rb +69 -0
  68. data/lib/eancom/edifact/segments/lin.rb +43 -0
  69. data/lib/eancom/edifact/segments/loc.rb +43 -0
  70. data/lib/eancom/edifact/segments/mea.rb +53 -0
  71. data/lib/eancom/edifact/segments/moa.rb +45 -0
  72. data/lib/eancom/edifact/segments/nad.rb +107 -0
  73. data/lib/eancom/edifact/segments/pac.rb +54 -0
  74. data/lib/eancom/edifact/segments/pgi.rb +45 -0
  75. data/lib/eancom/edifact/segments/pia.rb +107 -0
  76. data/lib/eancom/edifact/segments/pri.rb +54 -0
  77. data/lib/eancom/edifact/segments/qty.rb +40 -0
  78. data/lib/eancom/edifact/segments/rff.rb +41 -0
  79. data/lib/eancom/edifact/segments/tax.rb +72 -0
  80. data/lib/eancom/edifact/segments/tdt.rb +54 -0
  81. data/lib/eancom/edifact/segments/una.rb +51 -0
  82. data/lib/eancom/edifact/segments/unb.rb +69 -0
  83. data/lib/eancom/edifact/segments/unh.rb +46 -0
  84. data/lib/eancom/edifact/segments/uns.rb +29 -0
  85. data/lib/eancom/edifact/segments/unt.rb +28 -0
  86. data/lib/eancom/edifact/segments/unz.rb +28 -0
  87. data/lib/eancom/edifact/structure.rb +91 -0
  88. data/lib/eancom/edifact.rb +45 -12
  89. data/lib/eancom/factory.rb +8 -7
  90. data/lib/eancom/parser/document.rb +68 -0
  91. data/lib/eancom/parser/segment.rb +71 -0
  92. data/lib/eancom/parser.rb +7 -0
  93. data/lib/eancom/version.rb +1 -1
  94. data/lib/eancom.rb +59 -16
  95. metadata +138 -5
  96. data/lib/eancom/edifact/element.rb +0 -16
  97. data/lib/eancom/edifact/envelope.rb +0 -24
@@ -0,0 +1,254 @@
1
+ tag = 'TDT'
2
+ Eancom.register_segment(tag: tag, klass: Eancom::Edifact::TDT)
3
+
4
+ structure = Eancom::Edifact::Structure.new(tag: tag)
5
+ #==============================================================================
6
+ # Tag #
7
+ #==============================================================================
8
+ tag = Eancom::Edifact::Composite.new()
9
+ data = Eancom::Edifact::Data.new(
10
+ type: String,
11
+ length: 3,
12
+ dictionary: nil,
13
+ description: "Message Header",
14
+ required: true
15
+ )
16
+ tag.add(:tag, data)
17
+
18
+ structure << tag
19
+ #==============================================================================
20
+ # Transport stage code qualifier #
21
+ #==============================================================================
22
+ transport_stage_code_qualifier = Eancom::Edifact::Composite.new()
23
+
24
+ data = Eancom::Edifact::Data.new(
25
+ type: String,
26
+ length: 1..3,
27
+ dictionary: {
28
+ '20' => {
29
+ description: 'Main-carriage transport',
30
+ identifier: 'main_carriage_transport'
31
+ }
32
+ },
33
+ description: "Transport stage code qualifier",
34
+ required: true
35
+ )
36
+ transport_stage_code_qualifier.add(:transport_stage_code_qualifier, data)
37
+
38
+ structure << transport_stage_code_qualifier
39
+ #==============================================================================
40
+ # Means of transport journey identifier #
41
+ #==============================================================================
42
+ means_of_transport_journey_identifier = Eancom::Edifact::Composite.new()
43
+
44
+ data = Eancom::Edifact::Data.new(
45
+ type: String,
46
+ length: 1..17,
47
+ dictionary: nil,
48
+ description: 'Means of transport journey identifier',
49
+ required: false
50
+ )
51
+ means_of_transport_journey_identifier.add(:means_of_transport_journey_identifier, data)
52
+
53
+ structure << means_of_transport_journey_identifier
54
+ #==============================================================================
55
+ # Mode of transport #
56
+ #==============================================================================
57
+ mode_of_transport = Eancom::Edifact::Composite.new()
58
+
59
+ data = Eancom::Edifact::Data.new(
60
+ type: String,
61
+ length: 1..3,
62
+ dictionary: {
63
+ '10' => {
64
+ description: '10',
65
+ identifier: '10'
66
+ },
67
+ '20' => {
68
+ description: '20',
69
+ identifier: '20'
70
+ },
71
+ '30' => {
72
+ description: '30',
73
+ identifier: '30'
74
+ },
75
+ '40' => {
76
+ description: '40',
77
+ identifier: '40'
78
+ },
79
+ '50' => {
80
+ description: '50',
81
+ identifier: '50'
82
+ },
83
+ '60' => {
84
+ description: '60',
85
+ identifier: '60'
86
+ }
87
+ },
88
+ description: 'Transport mode name code',
89
+ required: true
90
+ )
91
+ mode_of_transport.add(:transport_mode_name_code, data)
92
+
93
+ structure << mode_of_transport
94
+ #==============================================================================
95
+ # Transport Means #
96
+ #==============================================================================
97
+ transport_means = Eancom::Edifact::Composite.new()
98
+
99
+ data = Eancom::Edifact::Data.new(
100
+ type: String,
101
+ length: 1..8,
102
+ dictionary: {
103
+ '23' => {
104
+ description: 'Rail bulk order',
105
+ identifier: 'rail_bulk_order'
106
+ },
107
+ '25' => {
108
+ description: '25',
109
+ identifier: '25'
110
+ },
111
+ '31' => {
112
+ description: 'Truck',
113
+ identifier: 'truck'
114
+ },
115
+ },
116
+ description: 'Transport means description code',
117
+ required: false
118
+ )
119
+ transport_means.add(:transport_means_description_code, data)
120
+
121
+ data = Eancom::Edifact::Data.new(
122
+ type: String,
123
+ length: 1..17,
124
+ dictionary: nil,
125
+ description: 'Transport means description',
126
+ required: false
127
+ )
128
+ transport_means.add(:transport_means_description, data)
129
+
130
+ structure << transport_means
131
+ #==============================================================================
132
+ # Carrier #
133
+ #==============================================================================
134
+ carrier = Eancom::Edifact::Composite.new()
135
+
136
+ data = Eancom::Edifact::Data.new(
137
+ type: String,
138
+ length: 1..17,
139
+ dictionary: nil,
140
+ description: 'Carrier identifier GLN - Format n13',
141
+ required: false
142
+ )
143
+ carrier.add(:carrier_identifier, data)
144
+
145
+ data = Eancom::Edifact::Data.new(
146
+ type: String,
147
+ length: 1..17,
148
+ dictionary: nil,
149
+ description: 'Code list identification code',
150
+ required: false
151
+ )
152
+ carrier.add(:code_list_identification_code_1, data)
153
+
154
+ data = Eancom::Edifact::Data.new(
155
+ type: String,
156
+ length: 1..3,
157
+ dictionary: {
158
+ '9' => {
159
+ description: 'GS1',
160
+ identifier: 'gs1'
161
+ }
162
+ },
163
+ description: 'Code list responsible agency',
164
+ required: false
165
+ )
166
+ carrier.add(:code_list_responsible_agency_1, data)
167
+
168
+ data = Eancom::Edifact::Data.new(
169
+ type: String,
170
+ length: 1..35,
171
+ dictionary: nil,
172
+ description: 'Carrier name',
173
+ required: false
174
+ )
175
+ carrier.add(:carrier_name, data)
176
+
177
+ structure << carrier
178
+ #==============================================================================
179
+ # Transit direction identicator code
180
+ #==============================================================================
181
+ transit_direction_identicator_code = Eancom::Edifact::Composite.new
182
+
183
+ data = Eancom::Edifact::Data.new(
184
+ type: String,
185
+ length: 1..3,
186
+ dictionary: {
187
+ 'BS' => {
188
+ description: 'Buyer to supplier',
189
+ identifier: 'buyer_to_supplier'
190
+ },
191
+ 'SB' => {
192
+ description: 'Supplier to buyer',
193
+ identifier: 'supplier_to_buyer'
194
+ }
195
+ },
196
+ description: 'Transit direction identicator code',
197
+ required: false
198
+ )
199
+ transit_direction_identicator_code.add(:transit_direction_identicator_code, data)
200
+
201
+ structure << transit_direction_identicator_code
202
+ #==============================================================================
203
+ # Transport Identification #
204
+ #==============================================================================
205
+ transport_identification = Eancom::Edifact::Composite.new
206
+
207
+ data = Eancom::Edifact::Data.new(
208
+ type: String,
209
+ length: 1..9,
210
+ dictionary: nil,
211
+ description: 'Transport means identification name identifier',
212
+ required: false
213
+ )
214
+ transport_identification.add(:transport_means_identification_name_identifier, data)
215
+
216
+ data = Eancom::Edifact::Data.new(
217
+ type: String,
218
+ length: 1..3,
219
+ dictionary: nil,
220
+ description: 'Code list identification code',
221
+ required: false
222
+ )
223
+ transport_identification.add(:code_list_identification_code_2, data)
224
+
225
+ data = Eancom::Edifact::Data.new(
226
+ type: String,
227
+ length: 1..3,
228
+ dictionary: nil,
229
+ description: 'Code list responsible agency code',
230
+ required: false
231
+ )
232
+ transport_identification.add(:code_list_responsible_agency_2, data)
233
+
234
+ data = Eancom::Edifact::Data.new(
235
+ type: String,
236
+ length: 1..35,
237
+ dictionary: nil,
238
+ description: 'Transport means identification name',
239
+ required: false
240
+ )
241
+ transport_identification.add(:transport_means_identification_name, data)
242
+
243
+ data = Eancom::Edifact::Data.new(
244
+ type: String,
245
+ length: 1..3,
246
+ dictionary: nil,
247
+ description: 'Transport means nationality code',
248
+ required: false
249
+ )
250
+ transport_identification.add(:transport_means_nationality_code, data)
251
+
252
+ structure << transport_identification
253
+ #==============================================================================
254
+ Eancom.register_structure(tag: 'TDT', structure: structure)
@@ -0,0 +1,85 @@
1
+ tag = 'UNA'
2
+ Eancom.register_segment(tag: tag, klass: Eancom::Edifact::UNA)
3
+
4
+ structure = Eancom::Edifact::Structure.new(tag: tag)
5
+
6
+ composite = Eancom::Edifact::Composite.new()
7
+ data = Eancom::Edifact::Data.new(
8
+ type: String,
9
+ length: 3,
10
+ dictionary: nil,
11
+ description: "Service String Advice",
12
+ required: true
13
+ )
14
+ composite.add(:tag, data)
15
+ structure << composite
16
+
17
+ composite = Eancom::Edifact::Composite.new()
18
+ data = Eancom::Edifact::Data.new(
19
+ type: String,
20
+ length: 1,
21
+ dictionary: nil,
22
+ description: "Component data element separator",
23
+ required: true
24
+ )
25
+ composite.add(:una1, data)
26
+ structure << composite
27
+
28
+ composite = Eancom::Edifact::Composite.new()
29
+ data = Eancom::Edifact::Data.new(
30
+ type: String,
31
+ length: 1,
32
+ dictionary: nil,
33
+ description: "Data element separator",
34
+ required: true
35
+ )
36
+ composite.add(:una2, data)
37
+ structure << composite
38
+
39
+ composite = Eancom::Edifact::Composite.new()
40
+ data = Eancom::Edifact::Data.new(
41
+ type: String,
42
+ length: 1,
43
+ dictionary: nil,
44
+ description: "Decimal notation",
45
+ required: true
46
+ )
47
+ composite.add(:una3, data)
48
+ structure << composite
49
+
50
+ composite = Eancom::Edifact::Composite.new()
51
+ data = Eancom::Edifact::Data.new(
52
+ type: String,
53
+ length: 1,
54
+ dictionary: nil,
55
+ description: "Release character",
56
+ required: true
57
+ )
58
+ composite.add(:una4, data)
59
+ structure << composite
60
+
61
+ composite = Eancom::Edifact::Composite.new()
62
+ data = Eancom::Edifact::Data.new(
63
+ type: String,
64
+ length: 1,
65
+ dictionary: nil,
66
+ description: "Reserved for future use",
67
+ required: true
68
+ )
69
+ composite.add(:una5, data)
70
+ structure << composite
71
+
72
+ composite = Eancom::Edifact::Composite.new()
73
+ data = Eancom::Edifact::Data.new(
74
+ type: String,
75
+ length: 1,
76
+ dictionary: nil,
77
+ description: "Segment terminator",
78
+ required: true
79
+ )
80
+ composite.add(:una6, data)
81
+ structure << composite
82
+
83
+ Eancom.register_structure(tag: tag, structure: structure)
84
+
85
+
@@ -0,0 +1,284 @@
1
+ tag = 'UNB'
2
+ Eancom.register_segment(tag: tag, klass: Eancom::Edifact::UNB)
3
+
4
+ structure = Eancom::Edifact::Structure.new(tag: tag)
5
+ #==============================================================================
6
+ # Tag #
7
+ #==============================================================================
8
+ tag = Eancom::Edifact::Composite.new()
9
+ data = Eancom::Edifact::Data.new(
10
+ type: String,
11
+ length: 3,
12
+ dictionary: nil,
13
+ description: "Interchange Header",
14
+ required: true
15
+ )
16
+ tag.add(:tag, data)
17
+
18
+ structure << tag
19
+
20
+ #==============================================================================
21
+ # Syntax identifier #
22
+ #==============================================================================
23
+ syntax_identifier = Eancom::Edifact::Composite.new()
24
+
25
+ syntax_dictionary = {
26
+ 'UNOA' => {
27
+ description: 'UN/ECE level A'
28
+ },
29
+ 'UNOB' => {
30
+ description: 'UN/ECE level B'
31
+ },
32
+ 'UNOC' => {
33
+ description: 'UN/ECE level C'
34
+ },
35
+ 'UNOD' => {
36
+ description: 'UN/ECE level D'
37
+ },
38
+ 'UNOE' => {
39
+ description: 'UN/ECE level E'
40
+ },
41
+ 'UNOF' => {
42
+ description: 'UN/ECE level F'
43
+ },
44
+ }
45
+ data = Eancom::Edifact::Data.new(
46
+ type: String,
47
+ length: 4,
48
+ dictionary: syntax_dictionary,
49
+ description: "Syntax identifier.",
50
+ required: true
51
+ )
52
+ syntax_identifier.add(:syntax_identifier, data)
53
+
54
+ syntax_version_dict = {
55
+ '2' => {
56
+ description: 'Version 2'
57
+ },
58
+ '3' => {
59
+ description: 'Version 3'
60
+ }
61
+ }
62
+ data = Eancom::Edifact::Data.new(
63
+ type: String,
64
+ length: 1,
65
+ dictionary: syntax_version_dict,
66
+ description: "Syntax version number.",
67
+ required: true
68
+ )
69
+ syntax_identifier.add(:syntax_version_number, data)
70
+
71
+ structure << syntax_identifier
72
+
73
+ #==============================================================================
74
+ # Interchange Sender #
75
+ #==============================================================================
76
+ interchange_sender = Eancom::Edifact::Composite.new()
77
+
78
+ data = Eancom::Edifact::Data.new(
79
+ type: String,
80
+ length: 1..35,
81
+ dictionary: nil,
82
+ description: "Interchange sender identification (GLN).",
83
+ required: true
84
+ )
85
+ interchange_sender.add(:interchange_sender_identification, data)
86
+
87
+ data = Eancom::Edifact::Data.new(
88
+ type: String,
89
+ length: 1..4,
90
+ dictionary: nil,
91
+ description: "Identification code qualifier (14 = GS1).",
92
+ required: true
93
+ )
94
+ interchange_sender.add(:sender_identifiction_code_qualifier, data)
95
+
96
+ data = Eancom::Edifact::Data.new(
97
+ type: String,
98
+ length: 1..35,
99
+ dictionary: nil,
100
+ description: "Interchange sender internal identification.",
101
+ required: false
102
+ )
103
+ interchange_sender.add(:interchange_sender_internal_identification, data)
104
+
105
+ structure << interchange_sender
106
+
107
+ #==============================================================================
108
+ # Interchange Recipient #
109
+ #==============================================================================
110
+ interchange_recipient = Eancom::Edifact::Composite.new
111
+
112
+ data = Eancom::Edifact::Data.new(
113
+ type: String,
114
+ length: 1..35,
115
+ dictionary: nil,
116
+ description: "Interchange recipient identification (GLN).",
117
+ required: true
118
+ )
119
+ interchange_recipient.add(:interchange_recipient_identification, data)
120
+
121
+ data = Eancom::Edifact::Data.new(
122
+ type: String,
123
+ length: 1..4,
124
+ dictionary: nil,
125
+ description: "Identification code qualifier (14 = GS1).",
126
+ required: true
127
+ )
128
+ interchange_recipient.add(:recipient_identifiction_code_qualifier, data)
129
+
130
+ data = Eancom::Edifact::Data.new(
131
+ type: String,
132
+ length: 1..35,
133
+ dictionary: nil,
134
+ description: "Interchange sender internal identification",
135
+ required: false
136
+ )
137
+ interchange_recipient.add(:interchange_recipient_internal_identification, data)
138
+
139
+ structure << interchange_recipient
140
+
141
+ #==============================================================================
142
+ # Date and Time of Preparation #
143
+ #==============================================================================
144
+ date_and_time_of_preparation = Eancom::Edifact::Composite.new
145
+
146
+ data = Eancom::Edifact::Data.new(
147
+ type: String,
148
+ length: 6..8,
149
+ dictionary: nil,
150
+ description: "Date (YYMMDD)",
151
+ required: true
152
+ )
153
+ date_and_time_of_preparation.add(:date, data)
154
+
155
+ data = Eancom::Edifact::Data.new(
156
+ type: String,
157
+ length: 4,
158
+ dictionary: nil,
159
+ description: "Time (HHMM)",
160
+ required: true
161
+ )
162
+ date_and_time_of_preparation.add(:time, data)
163
+
164
+ structure << date_and_time_of_preparation
165
+ #==============================================================================
166
+ # Interchange control reference #
167
+ #==============================================================================
168
+ interchange_control_reference = Eancom::Edifact::Composite.new
169
+
170
+ data = Eancom::Edifact::Data.new(
171
+ type: String,
172
+ length: 1..14,
173
+ dictionary: nil,
174
+ description: "Interchange control reference.",
175
+ required: true
176
+ )
177
+ interchange_control_reference.add(:interchange_control_reference, data)
178
+
179
+ structure << interchange_control_reference
180
+ #==============================================================================
181
+ # Recipient Reference / Password Details #
182
+ #==============================================================================
183
+ recipient_reference = Eancom::Edifact::Composite.new
184
+
185
+ data = Eancom::Edifact::Data.new(
186
+ type: String,
187
+ length: 1..14,
188
+ dictionary: nil,
189
+ description: "Recipient reference/password.",
190
+ required: true
191
+ )
192
+ recipient_reference.add(:recipient_reference, data)
193
+
194
+ data = Eancom::Edifact::Data.new(
195
+ type: String,
196
+ length: 2,
197
+ dictionary: nil,
198
+ description: "Recipient reference/password qualifier.",
199
+ required: false
200
+ )
201
+ recipient_reference.add(:recipient_reference_qualifier, data)
202
+
203
+ structure << recipient_reference
204
+ #==============================================================================
205
+ # Application Reference #
206
+ #==============================================================================
207
+ application_reference = Eancom::Edifact::Composite.new
208
+
209
+ data = Eancom::Edifact::Data.new(
210
+ type: String,
211
+ length: 1..14,
212
+ dictionary: nil,
213
+ description: "Application reference.",
214
+ required: false
215
+ )
216
+ application_reference.add(:application_reference, data)
217
+
218
+ structure << application_reference
219
+ #==============================================================================
220
+ # Processing priority code #
221
+ #==============================================================================
222
+ processing_priority_code = Eancom::Edifact::Composite.new
223
+
224
+ data = Eancom::Edifact::Data.new(
225
+ type: String,
226
+ length: 1,
227
+ dictionary: { 'A' => { description: 'A = Highest priority' }},
228
+ description: "Processing priority code.",
229
+ required: false
230
+ )
231
+ processing_priority_code.add(:processing_priority_code, data)
232
+
233
+ structure << processing_priority_code
234
+ #==============================================================================
235
+ # Acknowledgement request #
236
+ #==============================================================================
237
+ acknowledgement_request = Eancom::Edifact::Composite.new
238
+
239
+ data = Eancom::Edifact::Data.new(
240
+ type: String,
241
+ length: 1,
242
+ dictionary: { '1' => { description: '1 = Requested' }},
243
+ description: "Acknowledgement request.",
244
+ required: false
245
+ )
246
+ acknowledgement_request.add(:acknowledgement_request, data)
247
+
248
+ structure << acknowledgement_request
249
+ #==============================================================================
250
+ # Interchange Agreement Identifier #
251
+ #==============================================================================
252
+ interchange_agreement_identifier = Eancom::Edifact::Composite.new
253
+
254
+ data = Eancom::Edifact::Data.new(
255
+ type: String,
256
+ length: 1..35,
257
+ dictionary: nil ,
258
+ description: "Interchange agreement identifier.",
259
+ required: false
260
+ )
261
+ interchange_agreement_identifier.add(:interchange_agreement_identifier, data)
262
+
263
+ structure << interchange_agreement_identifier
264
+ #==============================================================================
265
+ # Test Indicator #
266
+ #==============================================================================
267
+ test_indicator = Eancom::Edifact::Composite.new
268
+
269
+ data = Eancom::Edifact::Data.new(
270
+ type: String,
271
+ length: 1..35,
272
+ dictionary: {
273
+ '0' => { description: '0 = interchange is not a test'},
274
+ '1' => { description: '1 = interchange is a test'}
275
+ },
276
+ description: "Test indicator.",
277
+ required: false
278
+ )
279
+ test_indicator.add(:test_indicator, data)
280
+
281
+ structure << test_indicator
282
+ #==============================================================================
283
+ Eancom.register_structure(tag: 'UNB', structure: structure)
284
+