eancom 1.6.2 → 2.0.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 (122) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +7 -4
  3. data/.gitlab-ci.yml +11 -13
  4. data/.ruby-version +1 -1
  5. data/Gemfile +2 -4
  6. data/Gemfile.lock +21 -103
  7. data/README.md +46 -0
  8. data/definitions/desadv/d01b.rb +134 -87
  9. data/definitions/desadv/d96a.rb +145 -82
  10. data/definitions/invoic/d01b.rb +559 -0
  11. data/definitions/invoic/d96a.rb +389 -0
  12. data/definitions/invrpt/d01b.rb +134 -0
  13. data/definitions/invrpt/d96a.rb +125 -0
  14. data/definitions/orders/d01b.rb +182 -0
  15. data/definitions/orders/d96b.rb +198 -0
  16. data/definitions/ordrsp/d01b.rb +251 -0
  17. data/definitions/ordrsp/d96b.rb +226 -0
  18. data/definitions/pricat/d01b.rb +225 -0
  19. data/definitions/pricat/d96b.rb +207 -0
  20. data/definitions/retann/d01b.rb +172 -0
  21. data/definitions/retann/d96b.rb +221 -0
  22. data/definitions/segments/ajt.rb +47 -0
  23. data/definitions/segments/alc.rb +128 -36
  24. data/definitions/segments/bgm.rb +122 -2
  25. data/definitions/segments/cdi.rb +39 -0
  26. data/definitions/segments/cnt.rb +4 -0
  27. data/definitions/segments/cta.rb +89 -0
  28. data/definitions/segments/cux.rb +9 -2
  29. data/definitions/segments/dgs.rb +34 -0
  30. data/definitions/segments/doc.rb +45 -0
  31. data/definitions/segments/dtm.rb +75 -20
  32. data/definitions/segments/efi.rb +67 -0
  33. data/definitions/segments/eqd.rb +37 -0
  34. data/definitions/segments/ftx.rb +22 -8
  35. data/definitions/segments/gin.rb +113 -0
  36. data/definitions/segments/imd.rb +9 -13
  37. data/definitions/segments/inv.rb +94 -0
  38. data/definitions/segments/lin.rb +24 -4
  39. data/definitions/segments/loc.rb +52 -4
  40. data/definitions/segments/moa.rb +86 -2
  41. data/definitions/segments/nad.rb +69 -9
  42. data/definitions/segments/pac.rb +12 -0
  43. data/definitions/segments/pat.rb +171 -0
  44. data/definitions/segments/pcd.rb +9 -92
  45. data/definitions/segments/pci.rb +110 -0
  46. data/definitions/segments/pgi.rb +7 -3
  47. data/definitions/segments/pia.rb +21 -29
  48. data/definitions/segments/pri.rb +25 -13
  49. data/definitions/segments/qty.rb +208 -2
  50. data/definitions/segments/rff.rb +49 -13
  51. data/definitions/segments/rte.rb +52 -0
  52. data/definitions/segments/tax.rb +17 -10
  53. data/definitions/segments/tdt.rb +24 -0
  54. data/definitions/segments/tod.rb +64 -0
  55. data/definitions/segments/tru.rb +34 -0
  56. data/definitions/segments/una.rb +8 -8
  57. data/definitions/segments/unb.rb +4 -4
  58. data/definitions/segments/unh.rb +70 -5
  59. data/definitions/segments/uns.rb +2 -2
  60. data/definitions/segments/unt.rb +2 -2
  61. data/definitions/slsrpt/d01b.rb +132 -128
  62. data/definitions/slsrpt/d96a.rb +132 -129
  63. data/eancom.gemspec +5 -8
  64. data/lib/eancom/edifact/body.rb +37 -18
  65. data/lib/eancom/edifact/document.rb +20 -16
  66. data/lib/eancom/edifact/footer.rb +1 -0
  67. data/lib/eancom/edifact/item.rb +1 -1
  68. data/lib/eancom/edifact/message.rb +7 -39
  69. data/lib/eancom/edifact/segment.rb +9 -11
  70. data/lib/eancom/edifact/segments/ajt.rb +32 -0
  71. data/lib/eancom/edifact/segments/ali.rb +2 -4
  72. data/lib/eancom/edifact/segments/bgm.rb +4 -3
  73. data/lib/eancom/edifact/segments/cdi.rb +30 -0
  74. data/lib/eancom/edifact/segments/cnt.rb +8 -1
  75. data/lib/eancom/edifact/segments/cps.rb +4 -1
  76. data/lib/eancom/edifact/segments/cta.rb +30 -0
  77. data/lib/eancom/edifact/segments/cux.rb +1 -1
  78. data/lib/eancom/edifact/segments/dgs.rb +31 -0
  79. data/lib/eancom/edifact/segments/doc.rb +30 -0
  80. data/lib/eancom/edifact/segments/dtm.rb +10 -6
  81. data/lib/eancom/edifact/segments/efi.rb +38 -0
  82. data/lib/eancom/edifact/segments/eqd.rb +30 -0
  83. data/lib/eancom/edifact/segments/ftx.rb +2 -2
  84. data/lib/eancom/edifact/segments/gin.rb +45 -0
  85. data/lib/eancom/edifact/segments/imd.rb +1 -1
  86. data/lib/eancom/edifact/segments/inv.rb +43 -0
  87. data/lib/eancom/edifact/segments/lin.rb +7 -4
  88. data/lib/eancom/edifact/segments/loc.rb +8 -9
  89. data/lib/eancom/edifact/segments/mea.rb +1 -0
  90. data/lib/eancom/edifact/segments/moa.rb +3 -3
  91. data/lib/eancom/edifact/segments/nad.rb +11 -6
  92. data/lib/eancom/edifact/segments/pac.rb +3 -1
  93. data/lib/eancom/edifact/segments/pat.rb +37 -0
  94. data/lib/eancom/edifact/segments/pcd.rb +6 -17
  95. data/lib/eancom/edifact/segments/pci.rb +40 -0
  96. data/lib/eancom/edifact/segments/pia.rb +1 -0
  97. data/lib/eancom/edifact/segments/pri.rb +0 -1
  98. data/lib/eancom/edifact/segments/qty.rb +9 -5
  99. data/lib/eancom/edifact/segments/rff.rb +8 -2
  100. data/lib/eancom/edifact/segments/rte.rb +33 -0
  101. data/lib/eancom/edifact/segments/tax.rb +7 -1
  102. data/lib/eancom/edifact/segments/tdt.rb +4 -1
  103. data/lib/eancom/edifact/segments/tod.rb +33 -0
  104. data/lib/eancom/edifact/segments/tru.rb +31 -0
  105. data/lib/eancom/edifact/segments/una.rb +2 -1
  106. data/lib/eancom/edifact/segments/unb.rb +4 -5
  107. data/lib/eancom/edifact/segments/unh.rb +6 -4
  108. data/lib/eancom/edifact/segments/uns.rb +4 -1
  109. data/lib/eancom/edifact/structure.rb +0 -1
  110. data/lib/eancom/edifact.rb +15 -4
  111. data/lib/eancom/factory.rb +1 -1
  112. data/lib/eancom/parser/document.rb +3 -16
  113. data/lib/eancom/parser/segment.rb +9 -10
  114. data/lib/eancom/version.rb +1 -3
  115. data/lib/eancom.rb +3 -1
  116. data/pricat.json +1 -0
  117. metadata +45 -51
  118. data/.rubocop.yml +0 -2
  119. data/.tool-versions +0 -1
  120. data/definitions/segments/qvr.rb +0 -140
  121. data/lib/eancom/edifact/location.rb +0 -56
  122. data/lib/eancom/edifact/segments/qvr.rb +0 -50
@@ -0,0 +1,94 @@
1
+ tag = 'INV'
2
+ Eancom.register_segment(tag: tag, klass: Eancom::Edifact::INV)
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: 1..3,
12
+ dictionary: nil,
13
+ description: 'Message Header',
14
+ required: true
15
+ )
16
+ tag.add(:tag, data)
17
+
18
+ structure << tag
19
+ #==============================================================================
20
+ # Inventory movement direction code #
21
+ #==============================================================================
22
+ inventory_movement_direction_code = Eancom::Edifact::Composite.new
23
+ data = Eancom::Edifact::Data.new(
24
+ type: String,
25
+ length: 1..3,
26
+ dictionary: {
27
+ '1' => {
28
+ description: 'Movement out of inventory',
29
+ identifier: 'movement_out_of_inventory'
30
+ },
31
+ '2' => {
32
+ description: 'Movement into inventory',
33
+ identifier: 'movement_into_inventory'
34
+ }
35
+ },
36
+ description: 'Inventory movement direction code',
37
+ required: false
38
+ )
39
+ inventory_movement_direction_code.add(:inventory_movement_direction_code, data)
40
+ structure << inventory_movement_direction_code
41
+ #==============================================================================
42
+ # Inventory type code #
43
+ #==============================================================================
44
+ inventory_type_code = Eancom::Edifact::Composite.new
45
+ data = Eancom::Edifact::Data.new(
46
+ type: String,
47
+ length: 1..3,
48
+ dictionary: nil,
49
+ description: 'Inventory type code',
50
+ required: false
51
+ )
52
+ inventory_type_code.add(:inventory_type_code, data)
53
+ structure << inventory_type_code
54
+ #==============================================================================
55
+ # Inventory movement reason code #
56
+ #==============================================================================
57
+ inventory_movement_reason_code = Eancom::Edifact::Composite.new
58
+ data = Eancom::Edifact::Data.new(
59
+ type: String,
60
+ length: 1..3,
61
+ dictionary: nil,
62
+ description: 'Inventory movement reason code',
63
+ required: false
64
+ )
65
+ inventory_movement_reason_code.add(:inventory_movement_reason_code, data)
66
+ structure << inventory_movement_reason_code
67
+ #==============================================================================
68
+ # Inventory balance method code #
69
+ #==============================================================================
70
+ inventory_balance_method_code = Eancom::Edifact::Composite.new
71
+ data = Eancom::Edifact::Data.new(
72
+ type: String,
73
+ length: 1..3,
74
+ dictionary: {
75
+ '1' => {
76
+ description: 'Book-keeping inventory balance',
77
+ identifier: 'book_keeping_inventory_balance'
78
+ },
79
+ '2' => {
80
+ description: 'Formal inventory balance',
81
+ identifier: 'formal_inventory_balance'
82
+ }
83
+ },
84
+ description: 'Inventory balance method code',
85
+ required: false
86
+ )
87
+ inventory_balance_method_code.add(:inventory_balance_method_code, data)
88
+ structure << inventory_balance_method_code
89
+ #==============================================================================
90
+ # INSTRUCTION #
91
+ #==============================================================================
92
+ # TODO
93
+
94
+ Eancom.register_structure(tag: 'INV', structure: structure)
@@ -39,7 +39,28 @@ action_request_notification_description_code = Eancom::Edifact::Composite.new()
39
39
  data = Eancom::Edifact::Data.new(
40
40
  type: String,
41
41
  length: 0..3,
42
- dictionary: nil,
42
+ dictionary: {
43
+ '1' => {
44
+ description: 'Added',
45
+ identifier: 'added'
46
+ },
47
+ '3' => {
48
+ description: 'Changed',
49
+ identifier: 'changed'
50
+ },
51
+ '4' => {
52
+ description: 'No action',
53
+ identifier: 'no_action'
54
+ },
55
+ '5' => {
56
+ description: 'Accepted without amendment',
57
+ identifier: 'accepted_without_amendment'
58
+ },
59
+ '7' => {
60
+ description: 'Not accepted',
61
+ identifier: 'not_accepted'
62
+ }
63
+ },
43
64
  description: 'Action request/notification description code',
44
65
  required: false
45
66
  )
@@ -73,7 +94,7 @@ data = Eancom::Edifact::Data.new(
73
94
  identifier: 'ean'
74
95
  }
75
96
  },
76
- description: 'Item type identification code',
97
+ description: 'Item identifier',
77
98
  required: true
78
99
  )
79
100
  item_number_identification.add(:item_type_identification_code, data)
@@ -90,7 +111,7 @@ data = Eancom::Edifact::Data.new(
90
111
  dictionary: {
91
112
  '1' => {
92
113
  description: 'Sub-line information',
93
- identifier: 'sub_line_information',
114
+ identifier: 'sub_line_information'
94
115
  }
95
116
  },
96
117
  description: 'Sub-line indicator code',
@@ -107,7 +128,6 @@ data = Eancom::Edifact::Data.new(
107
128
  )
108
129
  sub_line_information.add(:line_item_identifier_2, data)
109
130
 
110
-
111
131
  structure << sub_line_information
112
132
  #==============================================================================
113
133
  Eancom.register_structure(tag: 'LIN', structure: structure)
@@ -8,7 +8,7 @@ structure = Eancom::Edifact::Structure.new(tag: tag)
8
8
  tag = Eancom::Edifact::Composite.new()
9
9
  data = Eancom::Edifact::Data.new(
10
10
  type: String,
11
- length: 3,
11
+ length: 1..3,
12
12
  dictionary: nil,
13
13
  description: "Message Header",
14
14
  required: true
@@ -23,12 +23,32 @@ location_function_qualifier = Eancom::Edifact::Composite.new()
23
23
 
24
24
  data = Eancom::Edifact::Data.new(
25
25
  type: String,
26
- length: 3,
26
+ length: 1..3,
27
27
  dictionary: {
28
+ '1' => {
29
+ description: 'Place of terms of delivery',
30
+ identifier: 'place_of_terms_of_delivery'
31
+ },
32
+ '5' => {
33
+ description: 'Place of departure',
34
+ identifier: 'place_of_departure'
35
+ },
28
36
  '7' => {
29
37
  description: 'Place of Delivery',
30
38
  identifier: 'place_of_delivery'
31
39
  },
40
+ '14' => {
41
+ description: 'Location of goods',
42
+ identifier: 'location_of_goods'
43
+ },
44
+ '18' => {
45
+ description: 'Warehouse',
46
+ identifier: 'warehouse'
47
+ },
48
+ '19' => {
49
+ description: 'Factory/plant',
50
+ identifier: 'factory_plant'
51
+ },
32
52
  '150' => {
33
53
  description: 'Container stack position',
34
54
  identifier: 'container_stack_position'
@@ -44,7 +64,7 @@ data = Eancom::Edifact::Data.new(
44
64
  location_function_qualifier.add(:location_function_qualifier, data)
45
65
  structure << location_function_qualifier
46
66
  #==============================================================================
47
- # Location Identification #
67
+ # First Location Identification #
48
68
  #==============================================================================
49
69
  location_identification = Eancom::Edifact::Composite.new()
50
70
 
@@ -70,6 +90,10 @@ data = Eancom::Edifact::Data.new(
70
90
  type: String,
71
91
  length: 0..3,
72
92
  dictionary: {
93
+ '3' => {
94
+ description: 'IATA (International Air Transport Association',
95
+ identifier: 'iata'
96
+ },
73
97
  '9' => {
74
98
  description: 'GS1',
75
99
  identifier: 'gs1'
@@ -82,8 +106,32 @@ data = Eancom::Edifact::Data.new(
82
106
  description: "Code list responsible agency code",
83
107
  required: false
84
108
  )
85
- location_identification.add(:code_list_responsible_agancy_code, data)
109
+ location_identification.add(:code_list_responsible_agency_code, data)
110
+
111
+ data = Eancom::Edifact::Data.new(
112
+ type: String,
113
+ length: 1..25,
114
+ dictionary: nil,
115
+ description: 'First related location name code',
116
+ required: false
117
+ )
118
+ location_identification.add(:first_related_name_code, data)
86
119
 
87
120
  structure << location_identification
88
121
  #==============================================================================
122
+ # Second Location Identification #
123
+ #==============================================================================
124
+ second_location_identification = Eancom::Edifact::Composite.new
125
+
126
+ data = Eancom::Edifact::Data.new(
127
+ type: String,
128
+ length: 1..25,
129
+ dictionary: nil,
130
+ description: 'Second related location name code',
131
+ required: false
132
+ )
133
+ second_location_identification.add(:second_location_identification, data)
134
+
135
+ structure << second_location_identification
136
+ #==============================================================================
89
137
  Eancom.register_structure(tag: 'LOC', structure: structure)
@@ -33,6 +33,22 @@ data = Eancom::Edifact::Data.new(
33
33
  description: 'Amount due/amount payable',
34
34
  identifier: 'amount_due_amount_payable'
35
35
  },
36
+ '21' => {
37
+ description: 'Cash discount',
38
+ identifier: 'cash_discount'
39
+ },
40
+ '23' => {
41
+ description: 'Charge amount',
42
+ identifier: 'charge_amount'
43
+ },
44
+ '25' => {
45
+ description: 'Charge/allowance bias',
46
+ identifier: 'charge_allowance_bias'
47
+ },
48
+ '52' => {
49
+ description: 'Discount amount',
50
+ identifier: 'discount_amount'
51
+ },
36
52
  '53' => {
37
53
  description: 'Discount amount due',
38
54
  identifier: 'discount_amount_due'
@@ -77,18 +93,58 @@ data = Eancom::Edifact::Data.new(
77
93
  description: 'Message total duty/tax/fee amount',
78
94
  identifier: 'message_total_duty_tax_fee_amount'
79
95
  },
96
+ '201' => {
97
+ description: 'Penalty amount',
98
+ identifier: 'penalty_amount'
99
+ },
80
100
  '203' => {
81
101
  description: 'Line item amount',
82
102
  identifier: 'line_item_amount'
83
103
  },
104
+ '204' => {
105
+ description: 'Allowance amount',
106
+ identifier: 'allowance_amount'
107
+ },
108
+ '210' => {
109
+ description: 'Credit note amount',
110
+ identifier: 'credit_note_amount'
111
+ },
112
+ '227' => {
113
+ description: 'Deposit',
114
+ identifier: 'deposit'
115
+ },
116
+ '236' => {
117
+ description: 'Amount subject to price adjustment',
118
+ identifier: 'amount_subject_to_price_adjustment'
119
+ },
120
+ '286' => {
121
+ description: 'Administration charge',
122
+ identifier: 'administration_charge'
123
+ },
124
+ '369' => {
125
+ description: 'Goods and services tax',
126
+ identifier: 'goods_and_services_tax'
127
+ },
128
+ '388' => {
129
+ description: 'Total amount including Value Added Tax (VAT)',
130
+ identifier: 'total_amount_including_value_added_tax_vat'
131
+ },
84
132
  '396' => {
85
133
  description: 'Total price subsidy value',
86
134
  identifier: 'total_price_subsidy_value'
87
135
  },
136
+ '400' => {
137
+ description: 'Rebate amount',
138
+ identifier: 'rebate_amount'
139
+ },
88
140
  '402' => {
89
141
  description: 'Total retail value',
90
142
  identifier: 'total_retail_value'
91
143
  },
144
+ '496' => {
145
+ description: 'Total returnable packages deposit amount',
146
+ identifier: 'total_returnable_packages_deposit_amount'
147
+ },
92
148
  '507' => {
93
149
  description: 'Net-progress payment amount',
94
150
  identifier: 'net_progress_payment_amount'
@@ -97,8 +153,20 @@ data = Eancom::Edifact::Data.new(
97
153
  description: 'Calculation basis excluding all taxes',
98
154
  identifier: 'calculation_basis_excluding_all_taxes'
99
155
  },
156
+ '529' => {
157
+ description: 'Calculation basis which includes all taxes except VAT',
158
+ identifier: 'calculation_basis_which_includes_all_taxes_except_vat'
159
+ },
160
+ 'X41' => {
161
+ description: 'Total returnable items rental fee amount',
162
+ identifier: 'total_returnable_items_rental_fee_amount'
163
+ },
164
+ 'X42' => {
165
+ description: 'Rental fee (GS1 Temporary Code)',
166
+ identifier: 'rental_fee_gs1_temporary_code'
167
+ }
100
168
  },
101
- description: "Monetary amount type code qualifier ",
169
+ description: "Monetary amount type code qualifier",
102
170
  required: true
103
171
  )
104
172
  monetary_amount.add(:monetary_amount_type_code_qualifier, data)
@@ -125,6 +193,18 @@ data = Eancom::Edifact::Data.new(
125
193
  type: String,
126
194
  length: 0..3,
127
195
  dictionary: {
196
+ '4' => {
197
+ description: 'Invoicing currency',
198
+ identifier: 'invoicing_currency'
199
+ },
200
+ '10' => {
201
+ description: 'Pricing currency',
202
+ identifier: 'pricing_currency'
203
+ },
204
+ '11' => {
205
+ description: 'Payment currency',
206
+ identifier: 'payment_currency'
207
+ },
128
208
  '13' => {
129
209
  description: 'Recipient local currency',
130
210
  identifier: 'recipient_local_currency'
@@ -132,6 +212,10 @@ data = Eancom::Edifact::Data.new(
132
212
  '15' => {
133
213
  description: 'Sender local currency',
134
214
  identifier: 'sender_local_currency'
215
+ },
216
+ '18' => {
217
+ description: 'Tax currency',
218
+ identifier: 'tax_currency'
135
219
  }
136
220
  },
137
221
  description: "Currency type code qualifier",
@@ -141,4 +225,4 @@ monetary_amount.add(:currency_type_code_qualifier, data)
141
225
 
142
226
  structure << monetary_amount
143
227
  #==============================================================================
144
- Eancom.register_structure(tag: 'MOA', structure: structure)
228
+ Eancom.register_structure(tag: 'MOA', structure: structure)
@@ -29,6 +29,14 @@ data = Eancom::Edifact::Data.new(
29
29
  description: 'Buyer',
30
30
  identifier: 'buyer'
31
31
  },
32
+ 'BO' => {
33
+ description: 'Broker or sales office',
34
+ identifier: 'broker_or_sales_office'
35
+ },
36
+ 'BS' => {
37
+ description: 'Bill and ship to',
38
+ identifier: 'bill_and_ship_to'
39
+ },
32
40
  'DP' => {
33
41
  description: 'Delivery party',
34
42
  identifier: 'delivery_party'
@@ -41,10 +49,30 @@ data = Eancom::Edifact::Data.new(
41
49
  description: 'Supplier',
42
50
  identifier: 'supplier'
43
51
  },
52
+ 'SN' => {
53
+ description: 'Store number',
54
+ identifier: 'store_number'
55
+ },
56
+ 'SE' => {
57
+ description: 'Seller',
58
+ identifier: 'seller'
59
+ },
60
+ 'SR' => {
61
+ description: "Supplier's agent/representative",
62
+ identifier: 'suppliers_agent_representative'
63
+ },
64
+ 'RB' => {
65
+ description: 'Receiving financial institution',
66
+ identifier: 'receiving_financial_institution'
67
+ },
44
68
  'UC' => {
45
69
  description: 'Ultimate consignee',
46
70
  identifier: 'ultimate_consignee'
47
71
  },
72
+ 'UD' => {
73
+ description: 'UD',
74
+ identifier: 'Ultimate customer'
75
+ },
48
76
  'MF' => {
49
77
  description: 'Manufacturer',
50
78
  identifier: 'manufacturer'
@@ -53,9 +81,45 @@ data = Eancom::Edifact::Data.new(
53
81
  description: 'Message recipient',
54
82
  identifier: 'message_recipient'
55
83
  },
84
+ 'II' => {
85
+ desription: 'Issuer of invoice',
86
+ identifier: 'issuer_of_invoice'
87
+ },
56
88
  'IV' => {
57
89
  description: 'Invoicee',
58
90
  identifier: 'invoicee'
91
+ },
92
+ 'CO' => {
93
+ description: 'Corporate officer',
94
+ identifier: 'corporate_officer'
95
+ },
96
+ 'GY' => {
97
+ description: 'Inventory reporting party',
98
+ identifier: 'inventory_reporting_party'
99
+ },
100
+ 'WH' => {
101
+ description: 'Warehouse keeper',
102
+ identifier: 'warehouse_keeper'
103
+ },
104
+ 'GO' => {
105
+ description: 'Goods owner',
106
+ identifier: 'goods_owner'
107
+ },
108
+ 'PO' => {
109
+ description: 'Ordering party',
110
+ identifier: 'ordering_party'
111
+ },
112
+ 'PE' => {
113
+ description: 'Payee',
114
+ identifier: 'payee'
115
+ },
116
+ 'CN' => {
117
+ description: 'Consignee',
118
+ identifier: 'consignee'
119
+ },
120
+ 'X52' => {
121
+ description: 'Breeder (GS1 Temporary Code)',
122
+ identifier: 'breeder'
59
123
  }
60
124
  },
61
125
  description: "Party function code qualifier",
@@ -94,16 +158,12 @@ data = Eancom::Edifact::Data.new(
94
158
  '9' => {
95
159
  description: 'GS1',
96
160
  identifier: 'gs1'
97
- },
98
- '92' => {
99
- description: 'Assigned by buyer or buyers agent',
100
- identifier: 'assigned_by_buyer_or_buyers_agent',
101
- },
161
+ }
102
162
  },
103
163
  description: 'Code list responsible agency code (9 = GS1)',
104
164
  required: true
105
165
  )
106
- party_identification_details.add(:code_list_responsible_agancy_code_1, data)
166
+ party_identification_details.add(:code_list_responsible_agency_code_1, data)
107
167
 
108
168
  structure << party_identification_details
109
169
  #==============================================================================
@@ -116,7 +176,7 @@ data = Eancom::Edifact::Data.new(
116
176
  length: 1..35,
117
177
  dictionary: nil,
118
178
  description: 'Name and address description',
119
- required: false
179
+ required: true
120
180
  )
121
181
  name_address.add(:name_and_address_description_1, data)
122
182
  name_address.add(:name_and_address_description_2, data)
@@ -135,7 +195,7 @@ data = Eancom::Edifact::Data.new(
135
195
  length: 1..35,
136
196
  dictionary: nil,
137
197
  description: 'Party Name',
138
- required: false
198
+ required: true
139
199
  )
140
200
  party_name.add(:party_name_1, data)
141
201
  party_name.add(:party_name_2, data)
@@ -154,7 +214,7 @@ data = Eancom::Edifact::Data.new(
154
214
  length: 1..35,
155
215
  dictionary: nil,
156
216
  description: 'Street and number or post office box identifier',
157
- required: false
217
+ required: true
158
218
  )
159
219
  street.add(:street_and_number_1, data)
160
220
  street.add(:street_and_number_2, data)
@@ -38,6 +38,16 @@ packaging_details = Eancom::Edifact::Composite.new()
38
38
  packaging_level_code = Eancom::Edifact::Data.new(
39
39
  type: String,
40
40
  length: 1..3,
41
+ dictionary: {
42
+ '1' => {
43
+ description: 'Inner',
44
+ identifier: 'inner'
45
+ },
46
+ '3' => {
47
+ description: 'Outer',
48
+ identifier: 'outer'
49
+ }
50
+ },
41
51
  description: "Packaging level code",
42
52
  required: false
43
53
  )
@@ -132,11 +142,13 @@ package_type_description_code = Eancom::Edifact::Data.new(
132
142
  },
133
143
  'PK' => {
134
144
  # TODO: Find out what this is used for
145
+ # PK means package. This should explain its use.
135
146
  description: 'PK: Function Unknown',
136
147
  identifier: 'pk_function_unknown'
137
148
  },
138
149
  'SL' => {
139
150
  # TODO: Find out what this is used for
151
+ # SL means slipsheet. This should explain its use.
140
152
  description: 'SL: Function Unknown',
141
153
  identifier: 'sl_function_unknown'
142
154
  },