eddy 0.8.2 → 0.9.2

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 (111) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +4 -4
  3. data/CHANGELOG.md +46 -1
  4. data/Gemfile.lock +8 -8
  5. data/README.md +2 -5
  6. data/data/code-lists/333.tsv +8 -0
  7. data/data/segments/amt.segment.yml +7 -0
  8. data/data/segments/bia.segment.yml +10 -0
  9. data/data/segments/cur.segment.yml +8 -0
  10. data/data/segments/dtm.segment.yml +1 -0
  11. data/data/segments/fob.segment.yml +8 -0
  12. data/data/segments/itd.segment.yml +13 -0
  13. data/data/segments/mtx.segment.yml +7 -0
  14. data/data/segments/n9.segment.yml +7 -0
  15. data/data/segments/per.segment.yml +13 -0
  16. data/data/segments/po1.segment.yml +6 -0
  17. data/data/segments/po3.segment.yml +13 -0
  18. data/data/segments/qty.segment.yml +10 -0
  19. data/data/segments/ref.segment.yml +1 -0
  20. data/data/segments/sac.segment.yml +4 -0
  21. data/data/segments/sch.segment.yml +7 -0
  22. data/data/segments/sdq.segment.yml +8 -0
  23. data/data/segments/txi.segment.yml +9 -0
  24. data/data/transaction_sets/810.edi.yml +93 -0
  25. data/data/transaction_sets/846.edi.yml +57 -0
  26. data/data/transaction_sets/850.edi.yml +73 -0
  27. data/data/transaction_sets/855.edi.yml +74 -0
  28. data/data/transaction_sets/856.edi.yml +54 -0
  29. data/eddy.gemspec +1 -1
  30. data/exe/eddy +1 -0
  31. data/lib/definitions/elements/generated/100.currency_code.rb +200 -0
  32. data/lib/definitions/elements/generated/146.shipment_method_of_payment.rb +65 -0
  33. data/lib/definitions/elements/generated/1551.message_text.rb +29 -0
  34. data/lib/definitions/elements/generated/280.exchange_rate.rb +29 -0
  35. data/lib/definitions/elements/generated/309.location_qualifier.rb +209 -0
  36. data/lib/definitions/elements/generated/310.location_identifier.rb +29 -0
  37. data/lib/definitions/elements/generated/311.shipment_type_code.rb +42 -0
  38. data/lib/definitions/elements/generated/322.load_empty_status_code.rb +40 -0
  39. data/lib/definitions/elements/generated/325.tax_identification_number.rb +29 -0
  40. data/lib/definitions/elements/generated/333.terms_basis_date_code.rb +44 -0
  41. data/lib/definitions/elements/generated/336.terms_type_code.rb +102 -0
  42. data/lib/definitions/elements/generated/338.terms_discount_percent.rb +29 -0
  43. data/lib/definitions/elements/generated/351.terms_discount_days_due.rb +30 -0
  44. data/lib/definitions/elements/generated/363.note_reference_code.rb +278 -0
  45. data/lib/definitions/elements/generated/364.communication_number.rb +29 -0
  46. data/lib/definitions/elements/generated/365.communication_number_qualifier.rb +77 -0
  47. data/lib/definitions/elements/generated/366.contact_function_code.rb +267 -0
  48. data/lib/definitions/elements/generated/369.free_form_description.rb +29 -0
  49. data/lib/definitions/elements/generated/370.terms_discount_due_date.rb +29 -0
  50. data/lib/definitions/elements/generated/371.change_reason_code.rb +67 -0
  51. data/lib/definitions/elements/generated/378.allowance_charge_percent_qualifier.rb +48 -0
  52. data/lib/definitions/elements/generated/386.terms_net_days.rb +30 -0
  53. data/lib/definitions/elements/generated/446.terms_net_due_date.rb +29 -0
  54. data/lib/definitions/elements/generated/522.amount_qualifier_code.rb +1510 -0
  55. data/lib/definitions/elements/generated/673.quantity_qualifier.rb +869 -0
  56. data/lib/definitions/elements/generated/755.report_type_code.rb +559 -0
  57. data/lib/definitions/elements/generated/954.percent.rb +29 -0
  58. data/lib/definitions/elements/generated/963.tax_type_code.rb +111 -0
  59. data/lib/definitions/elements/manual/i/I10.interchange_control_standards_identifier.rb +2 -2
  60. data/lib/definitions/elements/manual/i/I11.interchange_control_version_number.rb +1 -0
  61. data/lib/definitions/segments/generated/amt.rb +56 -0
  62. data/lib/definitions/segments/generated/bia.rb +107 -0
  63. data/lib/definitions/segments/generated/cur.rb +73 -0
  64. data/lib/definitions/segments/generated/dtm.rb +17 -0
  65. data/lib/definitions/segments/generated/fob.rb +73 -0
  66. data/lib/definitions/segments/generated/hl.rb +90 -0
  67. data/lib/definitions/segments/generated/itd.rb +158 -0
  68. data/lib/definitions/segments/generated/mtx.rb +56 -0
  69. data/lib/definitions/segments/generated/n2.rb +56 -0
  70. data/lib/definitions/segments/generated/n9.rb +56 -0
  71. data/lib/definitions/segments/generated/per.rb +158 -0
  72. data/lib/definitions/segments/generated/po1.rb +102 -0
  73. data/lib/definitions/segments/generated/po3.rb +158 -0
  74. data/lib/definitions/segments/generated/qty.rb +73 -0
  75. data/lib/definitions/segments/generated/ref.rb +17 -0
  76. data/lib/definitions/segments/generated/sac.rb +68 -0
  77. data/lib/definitions/segments/generated/sch.rb +56 -0
  78. data/lib/definitions/segments/generated/sdq.rb +73 -0
  79. data/lib/definitions/segments/generated/txi.rb +90 -0
  80. data/lib/definitions/transaction_sets/manual/846/846.rb +122 -0
  81. data/lib/definitions/transaction_sets/manual/846/loops/lin.rb +155 -0
  82. data/lib/definitions/transaction_sets/manual/846/loops/n1.rb +107 -0
  83. data/lib/definitions/transaction_sets/manual/846/loops/qty.rb +75 -0
  84. data/lib/definitions/transaction_sets/manual/846/loops/sch.rb +59 -0
  85. data/lib/definitions/transaction_sets/manual/846/loops/sln.rb +59 -0
  86. data/lib/definitions/transaction_sets/manual/850/850.rb +108 -1
  87. data/lib/definitions/transaction_sets/manual/850/loops/ctp.rb +47 -0
  88. data/lib/definitions/transaction_sets/manual/850/loops/n1.rb +31 -10
  89. data/lib/definitions/transaction_sets/manual/850/loops/n9.rb +59 -0
  90. data/lib/definitions/transaction_sets/manual/850/loops/pid.rb +47 -0
  91. data/lib/definitions/transaction_sets/manual/850/loops/po1.rb +78 -10
  92. data/lib/definitions/transaction_sets/manual/850/loops/sac.rb +47 -0
  93. data/lib/eddy.rb +49 -3
  94. data/lib/eddy/build/transaction_set_builder.rb +1 -1
  95. data/lib/eddy/config.rb +0 -21
  96. data/lib/eddy/data.rb +0 -40
  97. data/lib/eddy/data/persistence/base.rb +5 -11
  98. data/lib/eddy/data/persistence/memory.rb +14 -22
  99. data/lib/eddy/errors.rb +13 -9
  100. data/lib/eddy/models/element/composite.rb +2 -0
  101. data/lib/eddy/models/element/id.rb +1 -1
  102. data/lib/eddy/models/element/r.rb +1 -0
  103. data/lib/eddy/models/functional_group.rb +3 -2
  104. data/lib/eddy/models/interchange.rb +6 -2
  105. data/lib/eddy/models/transaction_set.rb +1 -1
  106. data/lib/eddy/parse.rb +4 -56
  107. data/lib/eddy/parse/interchange.rb +58 -0
  108. data/lib/eddy/summary/loop.rb +1 -1
  109. data/lib/eddy/summary/segment.rb +2 -1
  110. data/lib/eddy/version.rb +1 -1
  111. metadata +78 -5
@@ -21,6 +21,12 @@ module Eddy
21
21
  @po107 = Eddy::Elements::E234.new(ref: "PO107", req: "X")
22
22
  @po108 = Eddy::Elements::E235.new(ref: "PO108", req: "X")
23
23
  @po109 = Eddy::Elements::E234.new(ref: "PO109", req: "X")
24
+ @po110 = Eddy::Elements::E235.new(ref: "PO110", req: "X")
25
+ @po111 = Eddy::Elements::E234.new(ref: "PO111", req: "X")
26
+ @po112 = Eddy::Elements::E235.new(ref: "PO112", req: "X")
27
+ @po113 = Eddy::Elements::E234.new(ref: "PO113", req: "X")
28
+ @po114 = Eddy::Elements::E235.new(ref: "PO114", req: "X")
29
+ @po115 = Eddy::Elements::E234.new(ref: "PO115", req: "X")
24
30
  super(
25
31
  store,
26
32
  @po101,
@@ -32,6 +38,12 @@ module Eddy
32
38
  @po107,
33
39
  @po108,
34
40
  @po109,
41
+ @po110,
42
+ @po111,
43
+ @po112,
44
+ @po113,
45
+ @po114,
46
+ @po115,
35
47
  )
36
48
  end
37
49
 
@@ -170,6 +182,96 @@ module Eddy
170
182
  end
171
183
  alias ProductServiceId2= PO109=
172
184
 
185
+ # ### PO110
186
+ #
187
+ # - Id: 235
188
+ # - Name: Product/Service ID Qualifier
189
+ # - Type: ID
190
+ # - Min/Max: 2/2
191
+ # - Description: Code identifying the type/source of the descriptive number used in Product/Service ID (234)
192
+ #
193
+ # @param arg [String]
194
+ # @return [void]
195
+ def PO110=(arg)
196
+ @po110.value = arg
197
+ end
198
+ alias ProductServiceIdQualifier3= PO110=
199
+
200
+ # ### PO111
201
+ #
202
+ # - Id: 234
203
+ # - Name: Product/Service ID
204
+ # - Type: AN
205
+ # - Min/Max: 1/48
206
+ # - Description: Identifying number for a product or service
207
+ #
208
+ # @param arg [String]
209
+ # @return [void]
210
+ def PO111=(arg)
211
+ @po111.value = arg
212
+ end
213
+ alias ProductServiceId3= PO111=
214
+
215
+ # ### PO112
216
+ #
217
+ # - Id: 235
218
+ # - Name: Product/Service ID Qualifier
219
+ # - Type: ID
220
+ # - Min/Max: 2/2
221
+ # - Description: Code identifying the type/source of the descriptive number used in Product/Service ID (234)
222
+ #
223
+ # @param arg [String]
224
+ # @return [void]
225
+ def PO112=(arg)
226
+ @po112.value = arg
227
+ end
228
+ alias ProductServiceIdQualifier4= PO112=
229
+
230
+ # ### PO113
231
+ #
232
+ # - Id: 234
233
+ # - Name: Product/Service ID
234
+ # - Type: AN
235
+ # - Min/Max: 1/48
236
+ # - Description: Identifying number for a product or service
237
+ #
238
+ # @param arg [String]
239
+ # @return [void]
240
+ def PO113=(arg)
241
+ @po113.value = arg
242
+ end
243
+ alias ProductServiceId4= PO113=
244
+
245
+ # ### PO114
246
+ #
247
+ # - Id: 235
248
+ # - Name: Product/Service ID Qualifier
249
+ # - Type: ID
250
+ # - Min/Max: 2/2
251
+ # - Description: Code identifying the type/source of the descriptive number used in Product/Service ID (234)
252
+ #
253
+ # @param arg [String]
254
+ # @return [void]
255
+ def PO114=(arg)
256
+ @po114.value = arg
257
+ end
258
+ alias ProductServiceIdQualifier5= PO114=
259
+
260
+ # ### PO115
261
+ #
262
+ # - Id: 234
263
+ # - Name: Product/Service ID
264
+ # - Type: AN
265
+ # - Min/Max: 1/48
266
+ # - Description: Identifying number for a product or service
267
+ #
268
+ # @param arg [String]
269
+ # @return [void]
270
+ def PO115=(arg)
271
+ @po115.value = arg
272
+ end
273
+ alias ProductServiceId5= PO115=
274
+
173
275
  end
174
276
  end
175
277
  end
@@ -0,0 +1,158 @@
1
+ module Eddy
2
+ module Segments
3
+ # ### Segment Summary:
4
+ #
5
+ # - Id: PO3
6
+ # - Name: Additional Item Detail
7
+ # - Purpose: To specify additional item-related data involving variations in normal price/quantity structure.
8
+ class PO3 < Eddy::Models::Segment
9
+
10
+ # @param store [Eddy::Data::Store]
11
+ # @return [void]
12
+ def initialize(store)
13
+ @id = "PO3"
14
+ @name = "Additional Item Detail"
15
+ @po301 = Eddy::Elements::E371.new(ref: "PO301", req: "M")
16
+ @po302 = Eddy::Elements::E373.new(ref: "PO302", req: "O")
17
+ @po303 = Eddy::Elements::E236.new(ref: "PO303", req: "X")
18
+ @po304 = Eddy::Elements::E212.new(ref: "PO304", req: "O")
19
+ @po305 = Eddy::Elements::E639.new(ref: "PO305", req: "X")
20
+ @po306 = Eddy::Elements::E380.new(ref: "PO306", req: "M")
21
+ @po307 = Eddy::Elements::E355.new(ref: "PO307", req: "M")
22
+ @po308 = Eddy::Elements::E352.new(ref: "PO308", req: "O")
23
+ super(
24
+ store,
25
+ @po301,
26
+ @po302,
27
+ @po303,
28
+ @po304,
29
+ @po305,
30
+ @po306,
31
+ @po307,
32
+ @po308,
33
+ )
34
+ end
35
+
36
+ # ### PO301
37
+ #
38
+ # - Id: 371
39
+ # - Name: Change Reason Code
40
+ # - Type: ID
41
+ # - Min/Max: 2/2
42
+ # - Description: Code specifying the reason for price or quantity change
43
+ #
44
+ # @param arg [String]
45
+ # @return [void]
46
+ def PO301=(arg)
47
+ @po301.value = arg
48
+ end
49
+ alias ChangeReasonCode= PO301=
50
+
51
+ # ### PO302
52
+ #
53
+ # - Id: 373
54
+ # - Name: Date
55
+ # - Type: DT
56
+ # - Min/Max: 8/8
57
+ # - Description: Date expressed as CCYYMMDD
58
+ #
59
+ # @param arg [Time]
60
+ # @return [void]
61
+ def PO302=(arg)
62
+ @po302.value = arg
63
+ end
64
+ alias Date= PO302=
65
+
66
+ # ### PO303
67
+ #
68
+ # - Id: 236
69
+ # - Name: Price Identifier Code
70
+ # - Type: ID
71
+ # - Min/Max: 3/3
72
+ # - Description: Code identifying pricing specification
73
+ #
74
+ # @param arg [String]
75
+ # @return [void]
76
+ def PO303=(arg)
77
+ @po303.value = arg
78
+ end
79
+ alias PriceIdentifierCode= PO303=
80
+
81
+ # ### PO304
82
+ #
83
+ # - Id: 212
84
+ # - Name: Unit Price
85
+ # - Type: R
86
+ # - Min/Max: 1/17
87
+ # - Description: Price per unit of product, service, commodity, etc.
88
+ #
89
+ # @param arg [Float]
90
+ # @return [void]
91
+ def PO304=(arg)
92
+ @po304.value = arg
93
+ end
94
+ alias UnitPrice= PO304=
95
+
96
+ # ### PO305
97
+ #
98
+ # - Id: 639
99
+ # - Name: Basis of Unit Price Code
100
+ # - Type: ID
101
+ # - Min/Max: 2/2
102
+ # - Description: Code identifying the type of unit price for an item
103
+ #
104
+ # @param arg [String]
105
+ # @return [void]
106
+ def PO305=(arg)
107
+ @po305.value = arg
108
+ end
109
+ alias BasisOfUnitPriceCode= PO305=
110
+
111
+ # ### PO306
112
+ #
113
+ # - Id: 380
114
+ # - Name: Quantity
115
+ # - Type: R
116
+ # - Min/Max: 1/15
117
+ # - Description: Numeric value of quantity
118
+ #
119
+ # @param arg [Float]
120
+ # @return [void]
121
+ def PO306=(arg)
122
+ @po306.value = arg
123
+ end
124
+ alias Quantity= PO306=
125
+
126
+ # ### PO307
127
+ #
128
+ # - Id: 355
129
+ # - Name: Unit or Basis for Measurement Code
130
+ # - Type: ID
131
+ # - Min/Max: 2/2
132
+ # - Description: Code specifying the units in which a value is being expressed, or manner in which a measurement has been taken
133
+ #
134
+ # @param arg [String]
135
+ # @return [void]
136
+ def PO307=(arg)
137
+ @po307.value = arg
138
+ end
139
+ alias UnitOrBasisForMeasurementCode= PO307=
140
+
141
+ # ### PO308
142
+ #
143
+ # - Id: 352
144
+ # - Name: Description
145
+ # - Type: AN
146
+ # - Min/Max: 1/80
147
+ # - Description: A free-form description to clarify the related data elements and their content
148
+ #
149
+ # @param arg [String]
150
+ # @return [void]
151
+ def PO308=(arg)
152
+ @po308.value = arg
153
+ end
154
+ alias Description= PO308=
155
+
156
+ end
157
+ end
158
+ end
@@ -0,0 +1,73 @@
1
+ module Eddy
2
+ module Segments
3
+ # ### Segment Summary:
4
+ #
5
+ # - Id: QTY
6
+ # - Name: Quantity Information
7
+ # - Purpose: To specify quantity information
8
+ class QTY < Eddy::Models::Segment
9
+
10
+ # @param store [Eddy::Data::Store]
11
+ # @return [void]
12
+ def initialize(store)
13
+ @id = "QTY"
14
+ @name = "Quantity Information"
15
+ @qty01 = Eddy::Elements::E673.new(ref: "QTY01", req: "M")
16
+ @qty02 = Eddy::Elements::E380.new(ref: "QTY02", req: "X")
17
+ @qty03 = Eddy::Elements::E355.new(ref: "QTY03", req: "M")
18
+ super(
19
+ store,
20
+ @qty01,
21
+ @qty02,
22
+ @qty03,
23
+ )
24
+ end
25
+
26
+ # ### QTY01
27
+ #
28
+ # - Id: 673
29
+ # - Name: Quantity Qualifier
30
+ # - Type: ID
31
+ # - Min/Max: 2/2
32
+ # - Description: Code specifying the type of quantity
33
+ #
34
+ # @param arg [String]
35
+ # @return [void]
36
+ def QTY01=(arg)
37
+ @qty01.value = arg
38
+ end
39
+ alias QuantityQualifier= QTY01=
40
+
41
+ # ### QTY02
42
+ #
43
+ # - Id: 380
44
+ # - Name: Quantity
45
+ # - Type: R
46
+ # - Min/Max: 1/15
47
+ # - Description: Numeric value of quantity
48
+ #
49
+ # @param arg [Float]
50
+ # @return [void]
51
+ def QTY02=(arg)
52
+ @qty02.value = arg
53
+ end
54
+ alias Quantity= QTY02=
55
+
56
+ # ### QTY03
57
+ #
58
+ # - Id: 355
59
+ # - Name: Unit or Basis for Measurement Code
60
+ # - Type: ID
61
+ # - Min/Max: 2/2
62
+ # - Description: Code specifying the units in which a value is being expressed, or manner in which a measurement has been taken
63
+ #
64
+ # @param arg [String]
65
+ # @return [void]
66
+ def QTY03=(arg)
67
+ @qty03.value = arg
68
+ end
69
+ alias UnitOrBasisForMeasurementCode= QTY03=
70
+
71
+ end
72
+ end
73
+ end
@@ -14,10 +14,12 @@ module Eddy
14
14
  @name = "Reference Identification"
15
15
  @ref01 = Eddy::Elements::E128.new(ref: "REF01", req: "M")
16
16
  @ref02 = Eddy::Elements::E127.new(ref: "REF02", req: "X")
17
+ @ref03 = Eddy::Elements::E352.new(ref: "REF03", req: "X")
17
18
  super(
18
19
  store,
19
20
  @ref01,
20
21
  @ref02,
22
+ @ref03,
21
23
  )
22
24
  end
23
25
 
@@ -51,6 +53,21 @@ module Eddy
51
53
  end
52
54
  alias ReferenceIdentification= REF02=
53
55
 
56
+ # ### REF03
57
+ #
58
+ # - Id: 352
59
+ # - Name: Description
60
+ # - Type: AN
61
+ # - Min/Max: 1/80
62
+ # - Description: A free-form description to clarify the related data elements and their content
63
+ #
64
+ # @param arg [String]
65
+ # @return [void]
66
+ def REF03=(arg)
67
+ @ref03.value = arg
68
+ end
69
+ alias Description= REF03=
70
+
54
71
  end
55
72
  end
56
73
  end
@@ -17,6 +17,10 @@ module Eddy
17
17
  @sac03 = Eddy::Elements::E559.new(ref: "SAC03", req: "X")
18
18
  @sac04 = Eddy::Elements::E1301.new(ref: "SAC04", req: "X")
19
19
  @sac05 = Eddy::Elements::E610.new(ref: "SAC05", req: "O")
20
+ @sac06 = Eddy::Elements::E378.new(ref: "SAC06", req: "X")
21
+ @sac07 = Eddy::Elements::E322.new(ref: "SAC07", req: "X")
22
+ @sac12 = Eddy::Elements::E311.new(ref: "SAC12", req: "O")
23
+ @sac15 = Eddy::Elements::E352.new(ref: "SAC15", req: "X")
20
24
  super(
21
25
  store,
22
26
  @sac01,
@@ -24,6 +28,10 @@ module Eddy
24
28
  @sac03,
25
29
  @sac04,
26
30
  @sac05,
31
+ @sac06,
32
+ @sac07,
33
+ @sac12,
34
+ @sac15,
27
35
  )
28
36
  end
29
37
 
@@ -102,6 +110,66 @@ module Eddy
102
110
  end
103
111
  alias Amount= SAC05=
104
112
 
113
+ # ### SAC06
114
+ #
115
+ # - Id: 378
116
+ # - Name: Allowance/Charge Percent Qualifier
117
+ # - Type: ID
118
+ # - Min/Max: 1/1
119
+ # - Description: Code indicating on what basis allowance or charge percent is calculated
120
+ #
121
+ # @param arg [String]
122
+ # @return [void]
123
+ def SAC06=(arg)
124
+ @sac06.value = arg
125
+ end
126
+ alias AllowanceChargePercentQualifier= SAC06=
127
+
128
+ # ### SAC07
129
+ #
130
+ # - Id: 322
131
+ # - Name: Load/Empty Status Code
132
+ # - Type: ID
133
+ # - Min/Max: 1/1
134
+ # - Description: Code which specifies the loaded condition of transportation equipment
135
+ #
136
+ # @param arg [String]
137
+ # @return [void]
138
+ def SAC07=(arg)
139
+ @sac07.value = arg
140
+ end
141
+ alias LoadEmptyStatusCode= SAC07=
142
+
143
+ # ### SAC12
144
+ #
145
+ # - Id: 311
146
+ # - Name: Shipment Type Code
147
+ # - Type: ID
148
+ # - Min/Max: 1/2
149
+ # - Description: Code identifying shipment type
150
+ #
151
+ # @param arg [String]
152
+ # @return [void]
153
+ def SAC12=(arg)
154
+ @sac12.value = arg
155
+ end
156
+ alias ShipmentTypeCode= SAC12=
157
+
158
+ # ### SAC15
159
+ #
160
+ # - Id: 352
161
+ # - Name: Description
162
+ # - Type: AN
163
+ # - Min/Max: 1/80
164
+ # - Description: A free-form description to clarify the related data elements and their content
165
+ #
166
+ # @param arg [String]
167
+ # @return [void]
168
+ def SAC15=(arg)
169
+ @sac15.value = arg
170
+ end
171
+ alias Description= SAC15=
172
+
105
173
  end
106
174
  end
107
175
  end