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,501 @@
1
+ tag = 'PIA'
2
+ Eancom.register_segment(tag: tag, klass: Eancom::Edifact::PIA)
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
+ description: "Message Header",
13
+ required: true
14
+ )
15
+ tag.add(:tag, data)
16
+
17
+ structure << tag
18
+ #==============================================================================
19
+ # Product Identifier Code Qualifier #
20
+ #==============================================================================
21
+ product_identifier_code_qualifier = Eancom::Edifact::Composite.new()
22
+
23
+ data = Eancom::Edifact::Data.new(
24
+ type: String,
25
+ length: 1..3,
26
+ dictionary: {
27
+ '1' => {
28
+ description: 'Additional information',
29
+ identifier: 'additional_information'
30
+ },
31
+ '3' => {
32
+ description: 'Substituted by',
33
+ identifier: 'substituted_by'
34
+ },
35
+ '4' => {
36
+ description: 'Substituted for',
37
+ identifier: 'substituted_for'
38
+ },
39
+ '5' => {
40
+ description: 'Product identification',
41
+ identifier: 'product_identification'
42
+ }
43
+ },
44
+ description: 'product identifier code qualifier',
45
+ required: true
46
+ )
47
+ product_identifier_code_qualifier.add(:product_identifier_code_qualifier, data)
48
+
49
+ structure << product_identifier_code_qualifier
50
+ #==============================================================================
51
+ # Item Number Identification 1 #
52
+ #==============================================================================
53
+ item_number_identification_1 = Eancom::Edifact::Composite.new()
54
+
55
+ data = Eancom::Edifact::Data.new(
56
+ type: String,
57
+ length: 1..35,
58
+ description: "Despatch Advice number assigned by the document sender.\nFor global unique identification of documents Global Document Identifier (GDTI) is available.",
59
+ required: true
60
+ )
61
+ item_number_identification_1.add(:item_identifier_1, data)
62
+
63
+ data = Eancom::Edifact::Data.new(
64
+ type: String,
65
+ length: 1..3,
66
+ dictionary: {
67
+ 'AC' => {
68
+ description: 'HIBC (Health Industry Bar Code)',
69
+ identifier: 'hibc'
70
+ },
71
+ 'CG' => {
72
+ description: 'Commodity grouping',
73
+ identifier: 'commoditiy grouping'
74
+ },
75
+ 'IB' => {
76
+ description: 'ISBN (International Standard Book Number)',
77
+ identifier: 'isbn'
78
+ },
79
+ 'IN' => {
80
+ description: "Buyer's item number",
81
+ identifier: 'buyers_item_number'
82
+ },
83
+ 'HS' => {
84
+ description: "Harmonised system",
85
+ identifier: 'harmonised_system'
86
+ },
87
+ 'GD' => {
88
+ description: "Industry sector article group number/product classification code (GS1 Code)",
89
+ identifier: 'industry_sector_article_group_number_product_classification_code'
90
+ },
91
+ 'GU' => {
92
+ description: "Supplier's internal article group number/product classification code (GS1 Code)",
93
+ identifier: 'suppliers_internal_article_group_number_product_classification_code'
94
+ },
95
+ 'PV' => {
96
+ description: 'Promotional variant number',
97
+ identifier: 'promotional_variant_number'
98
+ },
99
+ 'SA' => {
100
+ description: "Supplier's article number",
101
+ identifier: 'suppliers_article_number'
102
+ },
103
+ 'SRV' => {
104
+ description: 'GS1 Global Trade Item Number',
105
+ identifier: 'gs1_global_trade_item_number'
106
+ },
107
+ 'SRX' => {
108
+ description: 'Slaughter number',
109
+ identifier: 'slaughter_number'
110
+ },
111
+ 'X2' => {
112
+ description: 'Ear-tag number (GS1 Temporary Code)',
113
+ identifier: 'ear_tag_number'
114
+ }
115
+ },
116
+ description: 'Item type identification code',
117
+ required: true
118
+ )
119
+ item_number_identification_1.add(:item_type_identification_code_1, data)
120
+
121
+ data = Eancom::Edifact::Data.new(
122
+ type: String,
123
+ length: 0..17,
124
+ description: "Code list identification code",
125
+ required: false
126
+ )
127
+ item_number_identification_1.add(:code_list_identification_code_1, data)
128
+
129
+ data = Eancom::Edifact::Data.new(
130
+ type: String,
131
+ length: 0..3,
132
+ dictionary: {
133
+ '9' => {
134
+ description: 'GS1',
135
+ identifier: 'gs1'
136
+ },
137
+ '91' => {
138
+ description: "Assigned by supplier or supplier's agent",
139
+ identifier: 'assigned_by_supplier_or_suppliers_agent'
140
+ },
141
+ '92' => {
142
+ description: "Assigned by buyer or buyer's agent",
143
+ identifier: 'assigned_by_buyer_or_buyers_agent'
144
+ }
145
+ },
146
+ description: "Code list responsible agency code",
147
+ required: false
148
+ )
149
+ item_number_identification_1.add(:code_list_responsible_agency_code_1, data)
150
+
151
+ structure << item_number_identification_1
152
+ #==============================================================================
153
+ # Item Number Identification 2 #
154
+ #==============================================================================
155
+ item_number_identification_2 = Eancom::Edifact::Composite.new()
156
+
157
+ data = Eancom::Edifact::Data.new(
158
+ type: String,
159
+ length: 1..35,
160
+ description: "Despatch Advice number assigned by the document sender.\nFor global unique identification of documents Global Document Identifier (GDTI) is available.",
161
+ required: true
162
+ )
163
+ item_number_identification_2.add(:item_identifier_2, data)
164
+
165
+ data = Eancom::Edifact::Data.new(
166
+ type: String,
167
+ length: 1..3,
168
+ dictionary: {
169
+ 'AC' => {
170
+ description: 'HIBC (Health Industry Bar Code)',
171
+ identifier: 'hibc'
172
+ },
173
+ 'IB' => {
174
+ description: 'ISBN (International Standard Book Number)',
175
+ identifier: 'isbn'
176
+ },
177
+ 'IN' => {
178
+ description: "Buyer's item number",
179
+ identifier: 'buyers_item_number'
180
+ },
181
+ 'PV' => {
182
+ description: 'Promotional variant number',
183
+ identifier: 'promotional_variant_number'
184
+ },
185
+ 'SA' => {
186
+ description: "Supplier's article number",
187
+ identifier: 'suppliers_article_number'
188
+ },
189
+ 'SRV' => {
190
+ description: 'GS1 Global Trade Item Number',
191
+ identifier: 'gs1_global_trade_item_number'
192
+ },
193
+ 'SRX' => {
194
+ description: 'Slaughter number',
195
+ identifier: 'slaughter_number'
196
+ },
197
+ 'GU' => {
198
+ description: "Supplier's internal article group number/product classification code (GS1 Code)",
199
+ identifier: 'suppliers_internal_article_group_number_product_classification_code'
200
+ },
201
+ 'X2' => {
202
+ description: 'Ear-tag number (GS1 Temporary Code)',
203
+ identifier: 'ear_tag_number'
204
+ }
205
+ },
206
+ description: 'Item type identification code',
207
+ required: true
208
+ )
209
+ item_number_identification_2.add(:item_type_identification_code_2, data)
210
+
211
+ data = Eancom::Edifact::Data.new(
212
+ type: String,
213
+ length: 0..17,
214
+ description: "Code list identification code",
215
+ required: false
216
+ )
217
+ item_number_identification_2.add(:code_list_identification_code_2, data)
218
+
219
+ data = Eancom::Edifact::Data.new(
220
+ type: String,
221
+ length: 0..3,
222
+ dictionary: {
223
+ '9' => {
224
+ description: 'GS1',
225
+ identification: 'gs1'
226
+ },
227
+ '91' => {
228
+ description: "Assigned by supplier or supplier's agent",
229
+ identification: 'assigned_by_supplier_or_suppliers_agent'
230
+ },
231
+ '92' => {
232
+ description: "Assigned by buyer or buyer's agent",
233
+ identification: 'assigned_by_buyer_or_buyers_agent'
234
+ }
235
+ },
236
+ description: "Code list responsible agency code",
237
+ required: false
238
+ )
239
+ item_number_identification_2.add(:code_list_responsible_agency_code_2, data)
240
+
241
+ structure << item_number_identification_2
242
+ #==============================================================================
243
+ # Item Number Identification 3 #
244
+ #==============================================================================
245
+ item_number_identification_3 = Eancom::Edifact::Composite.new()
246
+
247
+ data = Eancom::Edifact::Data.new(
248
+ type: String,
249
+ length: 1..35,
250
+ description: "Despatch Advice number assigned by the document sender.\nFor global unique identification of documents Global Document Identifier (GDTI) is available.",
251
+ required: true
252
+ )
253
+ item_number_identification_3.add(:item_identifier_3, data)
254
+
255
+ data = Eancom::Edifact::Data.new(
256
+ type: String,
257
+ length: 1..3,
258
+ dictionary: {
259
+ 'AC' => {
260
+ description: 'HIBC (Health Industry Bar Code)',
261
+ identifier: 'hibc'
262
+ },
263
+ 'IB' => {
264
+ description: 'ISBN (International Standard Book Number)',
265
+ identifier: 'isbn'
266
+ },
267
+ 'IN' => {
268
+ description: "Buyer's item number",
269
+ identifier: 'buyers_item_number'
270
+ },
271
+ 'PV' => {
272
+ description: 'Promotional variant number',
273
+ identifier: 'promotional_variant_number'
274
+ },
275
+ 'SA' => {
276
+ description: "Supplier's article number",
277
+ identifier: 'suppliers_article_number'
278
+ },
279
+ 'SRV' => {
280
+ description: 'GS1 Global Trade Item Number',
281
+ identifier: 'gs1_global_trade_item_number'
282
+ },
283
+ 'SRX' => {
284
+ description: 'Slaughter number',
285
+ identifier: 'slaughter_number'
286
+ },
287
+ 'X2' => {
288
+ description: 'Ear-tag number (GS1 Temporary Code)',
289
+ identifier: 'ear_tag_number'
290
+ }
291
+ },
292
+ description: 'Item type identification code',
293
+ required: true
294
+ )
295
+ item_number_identification_3.add(:item_type_identification_code_3, data)
296
+
297
+ data = Eancom::Edifact::Data.new(
298
+ type: String,
299
+ length: 0..17,
300
+ description: "Code list identification code",
301
+ required: false
302
+ )
303
+ item_number_identification_3.add(:code_list_identification_code_3, data)
304
+
305
+ data = Eancom::Edifact::Data.new(
306
+ type: String,
307
+ length: 0..3,
308
+ dictionary: {
309
+ '9' => {
310
+ description: 'GS1',
311
+ identification: 'gs1'
312
+ },
313
+ '91' => {
314
+ description: "Assigned by supplier or supplier's agent",
315
+ identification: 'assigned_by_supplier_or_suppliers_agent'
316
+ },
317
+ '92' => {
318
+ description: "Assigned by buyer or buyer's agent",
319
+ identification: 'assigned_by_buyer_or_buyers_agent'
320
+ }
321
+ },
322
+ description: "Code list responsible agency code",
323
+ required: false
324
+ )
325
+ item_number_identification_3.add(:code_list_responsible_agency_code_3, data)
326
+
327
+ structure << item_number_identification_3
328
+ #==============================================================================
329
+ # Item Number Identification 4 #
330
+ #==============================================================================
331
+ item_number_identification_4 = Eancom::Edifact::Composite.new()
332
+
333
+ data = Eancom::Edifact::Data.new(
334
+ type: String,
335
+ length: 1..35,
336
+ description: "Despatch Advice number assigned by the document sender.\nFor global unique identification of documents Global Document Identifier (GDTI) is available.",
337
+ required: true
338
+ )
339
+ item_number_identification_4.add(:item_identifier_4, data)
340
+
341
+ data = Eancom::Edifact::Data.new(
342
+ type: String,
343
+ length: 1..3,
344
+ dictionary: {
345
+ 'AC' => {
346
+ description: 'HIBC (Health Industry Bar Code)',
347
+ identifier: 'hibc'
348
+ },
349
+ 'IB' => {
350
+ description: 'ISBN (International Standard Book Number)',
351
+ identifier: 'isbn'
352
+ },
353
+ 'IN' => {
354
+ description: "Buyer's item number",
355
+ identifier: 'buyers_item_number'
356
+ },
357
+ 'PV' => {
358
+ description: 'Promotional variant number',
359
+ identifier: 'promotional_variant_number'
360
+ },
361
+ 'SA' => {
362
+ description: "Supplier's article number",
363
+ identifier: 'suppliers_article_number'
364
+ },
365
+ 'SRV' => {
366
+ description: 'GS1 Global Trade Item Number',
367
+ identifier: 'gs1_global_trade_item_number'
368
+ },
369
+ 'SRX' => {
370
+ description: 'Slaughter number',
371
+ identifier: 'slaughter_number'
372
+ },
373
+ 'X2' => {
374
+ description: 'Ear-tag number (GS1 Temporary Code)',
375
+ identifier: 'ear_tag_number'
376
+ }
377
+ },
378
+ description: 'Item type identification code',
379
+ required: true
380
+ )
381
+ item_number_identification_4.add(:item_type_identification_code_4, data)
382
+
383
+ data = Eancom::Edifact::Data.new(
384
+ type: String,
385
+ length: 0..17,
386
+ description: "Code list identification code",
387
+ required: false
388
+ )
389
+ item_number_identification_4.add(:code_list_identification_code_4, data)
390
+
391
+ data = Eancom::Edifact::Data.new(
392
+ type: String,
393
+ length: 0..3,
394
+ dictionary: {
395
+ '9' => {
396
+ description: 'GS1',
397
+ identifier: 'gs1'
398
+ },
399
+ '91' => {
400
+ description: "Assigned by supplier or supplier's agent",
401
+ identifier: 'assigned_by_supplier_or_suppliers_agent'
402
+ },
403
+ '92' => {
404
+ description: "Assigned by buyer or buyer's agent",
405
+ identifier: 'assigned_by_buyer_or_buyers_agent'
406
+ }
407
+ },
408
+ description: "Code list responsible agency code",
409
+ required: false
410
+ )
411
+ item_number_identification_4.add(:code_list_responsible_agency_code_4, data)
412
+
413
+ structure << item_number_identification_4
414
+ #==============================================================================
415
+ # Item Number Identification 5 #
416
+ #==============================================================================
417
+ item_number_identification_5 = Eancom::Edifact::Composite.new()
418
+
419
+ data = Eancom::Edifact::Data.new(
420
+ type: String,
421
+ length: 1..35,
422
+ description: "Despatch Advice number assigned by the document sender.\nFor global unique identification of documents Global Document Identifier (GDTI) is available.",
423
+ required: true
424
+ )
425
+ item_number_identification_5.add(:item_identifier_5, data)
426
+
427
+ data = Eancom::Edifact::Data.new(
428
+ type: String,
429
+ length: 1..3,
430
+ dictionary: {
431
+ 'AC' => {
432
+ description: 'HIBC (Health Industry Bar Code)',
433
+ identifier: 'hibc'
434
+ },
435
+ 'IB' => {
436
+ description: 'ISBN (International Standard Book Number)',
437
+ identifier: 'isbn'
438
+ },
439
+ 'IN' => {
440
+ description: "Buyer's item number",
441
+ identifier: 'buyers_item_number'
442
+ },
443
+ 'PV' => {
444
+ description: 'Promotional variant number',
445
+ identifier: 'promotional_variant_number'
446
+ },
447
+ 'SA' => {
448
+ description: "Supplier's article number",
449
+ identifier: 'suppliers_article_number'
450
+ },
451
+ 'SRV' => {
452
+ description: 'GS1 Global Trade Item Number',
453
+ identifier: 'gs1_global_trade_item_number'
454
+ },
455
+ 'SRX' => {
456
+ description: 'Slaughter number',
457
+ identifier: 'slaughter_number'
458
+ },
459
+ 'X2' => {
460
+ description: 'Ear-tag number (GS1 Temporary Code)',
461
+ identifier: 'ear_tag_number'
462
+ }
463
+ },
464
+ description: 'Item type identification code',
465
+ required: true
466
+ )
467
+ item_number_identification_5.add(:item_type_identification_code_5, data)
468
+
469
+ data = Eancom::Edifact::Data.new(
470
+ type: String,
471
+ length: 0..17,
472
+ description: "Code list identification code",
473
+ required: false
474
+ )
475
+ item_number_identification_5.add(:code_list_identification_code_5, data)
476
+
477
+ data = Eancom::Edifact::Data.new(
478
+ type: String,
479
+ length: 0..3,
480
+ dictionary: {
481
+ '9' => {
482
+ description: 'GS1',
483
+ identification: 'gs1'
484
+ },
485
+ '91' => {
486
+ description: "Assigned by supplier or supplier's agent",
487
+ identification: 'assigned_by_supplier_or_suppliers_agent'
488
+ },
489
+ '92' => {
490
+ description: "Assigned by buyer or buyer's agent",
491
+ identification: 'assigned_by_buyer_or_buyers_agent'
492
+ }
493
+ },
494
+ description: "Code list responsible agency code",
495
+ required: false
496
+ )
497
+ item_number_identification_5.add(:code_list_responsible_agency_code_5, data)
498
+
499
+ structure << item_number_identification_5
500
+ #==============================================================================
501
+ Eancom.register_structure(tag: 'PIA', structure: structure)
@@ -0,0 +1,188 @@
1
+ tag = 'PRI'
2
+ Eancom.register_segment(tag: tag, klass: Eancom::Edifact::PRI)
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
+ # Price Information
21
+ #==============================================================================
22
+ price_information = Eancom::Edifact::Composite.new()
23
+
24
+ data = Eancom::Edifact::Data.new(
25
+ type: String,
26
+ length: 1..3,
27
+ dictionary: {
28
+ 'AAA' => {
29
+ description: 'Calculation net',
30
+ identifier: 'calculation_net',
31
+ },
32
+ 'AAB' => {
33
+ description: 'Calculation gross',
34
+ identifier: 'calculation_gross',
35
+ },
36
+ 'AAE' => {
37
+ description: 'Information Price, excluding allowances or charges, including taxes',
38
+ identifier: 'information_price_excluding_allowance_or_charches_includeing_taxes',
39
+ },
40
+ 'AAF' => {
41
+ description: 'Information Price, excluding allowances or charges or taxes',
42
+ identifier: 'information_price_excluding_allowance_or_charches_or_taxes',
43
+ },
44
+ 'INF' => {
45
+ description: 'Information',
46
+ identifier: 'information',
47
+ },
48
+ 'NTP' => {
49
+ description: 'Net unit price',
50
+ identifier: 'net_unit_price',
51
+ },
52
+ 'AAH' => {
53
+ description: 'Subject to escalation and price adjustment',
54
+ identifier: 'subject_to_escaltion_and_price_adjustment',
55
+ },
56
+ 'AAQ' => {
57
+ description: 'Firm price',
58
+ identifier: 'firm_price',
59
+ },
60
+ 'ABL' => {
61
+ description: 'Base price',
62
+ identifier: 'base_price',
63
+ },
64
+ 'ABM' => {
65
+ description: 'Base price difference',
66
+ identifier: 'base_price_difference',
67
+ },
68
+ },
69
+ description: 'Price code qualifier',
70
+ required: true
71
+ )
72
+ price_information.add(:price_code_qualifier, data)
73
+
74
+ data = Eancom::Edifact::Data.new(
75
+ type: String,
76
+ length: 0..15,
77
+ dictionary: nil,
78
+ description: 'Price amount',
79
+ required: true
80
+ )
81
+ price_information.add(:price_amount, data)
82
+
83
+
84
+ data = Eancom::Edifact::Data.new(
85
+ type: String,
86
+ length: 0..3,
87
+ dictionary: {
88
+ 'CA' => {
89
+ description: 'Catalogue',
90
+ identifier: 'cataloque',
91
+ },
92
+ 'CT' => {
93
+ description: 'Contract',
94
+ identifier: 'contract',
95
+ },
96
+ },
97
+ description: 'Price type code',
98
+ required: false
99
+ )
100
+ price_information.add(:price_type_code, data)
101
+
102
+ data = Eancom::Edifact::Data.new(
103
+ type: String,
104
+ length: 0..3,
105
+ dictionary: {
106
+ 'AAE' => {
107
+ description: 'Not subject to fluctuation',
108
+ identifier: 'not_subject_to_fluctuation',
109
+ },
110
+ 'ALT' => {
111
+ description: 'Alternate price',
112
+ identifier: 'alternate_price',
113
+ },
114
+ 'DPR' => {
115
+ description: 'Discount price',
116
+ identifier: 'discount_price',
117
+ },
118
+ 'MRP' => {
119
+ description: 'Market retail price',
120
+ identifier: 'market_retail_price',
121
+ },
122
+ 'LIU' => {
123
+ description: 'List price',
124
+ identifier: 'list_price',
125
+ },
126
+ 'SRP' => {
127
+ description: 'Suggested retail price',
128
+ identifier: 'suggested_retail_price',
129
+ },
130
+ 'RTP' => {
131
+ description: 'Retail price',
132
+ identifier: 'retail_price',
133
+ },
134
+ 'NTP' => {
135
+ description: 'Net unit price',
136
+ identifier: 'net_unit_price',
137
+ }
138
+ },
139
+ description: 'Price specification code',
140
+ required: false
141
+ )
142
+ price_information.add(:price_specification_code, data)
143
+
144
+ data = Eancom::Edifact::Data.new(
145
+ type: String,
146
+ length: 0..9,
147
+ dictionary: nil,
148
+ description: 'Unit price basis value',
149
+ required: false
150
+ )
151
+ price_information.add(:unit_price_basis_value, data)
152
+
153
+ data = Eancom::Edifact::Data.new(
154
+ type: String,
155
+ length: 0..3,
156
+ dictionary: {
157
+ 'KGM' => {
158
+ description: 'Kilogram',
159
+ identifier: 'kilogram',
160
+ },
161
+ 'PCE' => {
162
+ description: 'Pice',
163
+ identifier: 'pice',
164
+ },
165
+ },
166
+ description: 'Measurement unit code',
167
+ required: false
168
+ )
169
+ price_information.add(:measurment_unit_code, data)
170
+
171
+ structure << price_information
172
+ #==============================================================================
173
+ # Sub-line item price change operation code
174
+ #==============================================================================
175
+ subline_item_price_change_operation_code = Eancom::Edifact::Composite.new()
176
+
177
+ data = Eancom::Edifact::Data.new(
178
+ type: String,
179
+ length: 0..3,
180
+ dictionary: nil,
181
+ description: 'Sub-line item price change operation code',
182
+ required: false
183
+ )
184
+ subline_item_price_change_operation_code.add(:subline_item_price_change_operation_code, data)
185
+
186
+ structure << subline_item_price_change_operation_code
187
+ #==============================================================================
188
+ Eancom.register_structure(tag: 'PRI', structure: structure)