eddy 0.8.0 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (110) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +4 -4
  3. data/CHANGELOG.md +49 -0
  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/segments/generated/amt.rb +56 -0
  60. data/lib/definitions/segments/generated/bia.rb +107 -0
  61. data/lib/definitions/segments/generated/cur.rb +73 -0
  62. data/lib/definitions/segments/generated/dtm.rb +17 -0
  63. data/lib/definitions/segments/generated/fob.rb +73 -0
  64. data/lib/definitions/segments/generated/hl.rb +90 -0
  65. data/lib/definitions/segments/generated/itd.rb +158 -0
  66. data/lib/definitions/segments/generated/mtx.rb +56 -0
  67. data/lib/definitions/segments/generated/n2.rb +56 -0
  68. data/lib/definitions/segments/generated/n9.rb +56 -0
  69. data/lib/definitions/segments/generated/per.rb +158 -0
  70. data/lib/definitions/segments/generated/po1.rb +102 -0
  71. data/lib/definitions/segments/generated/po3.rb +158 -0
  72. data/lib/definitions/segments/generated/qty.rb +73 -0
  73. data/lib/definitions/segments/generated/ref.rb +17 -0
  74. data/lib/definitions/segments/generated/sac.rb +68 -0
  75. data/lib/definitions/segments/generated/sch.rb +56 -0
  76. data/lib/definitions/segments/generated/sdq.rb +73 -0
  77. data/lib/definitions/segments/generated/txi.rb +90 -0
  78. data/lib/definitions/transaction_sets/manual/846/846.rb +122 -0
  79. data/lib/definitions/transaction_sets/manual/846/loops/lin.rb +155 -0
  80. data/lib/definitions/transaction_sets/manual/846/loops/n1.rb +107 -0
  81. data/lib/definitions/transaction_sets/manual/846/loops/qty.rb +75 -0
  82. data/lib/definitions/transaction_sets/manual/846/loops/sch.rb +59 -0
  83. data/lib/definitions/transaction_sets/manual/846/loops/sln.rb +59 -0
  84. data/lib/definitions/transaction_sets/manual/850/850.rb +108 -1
  85. data/lib/definitions/transaction_sets/manual/850/loops/ctp.rb +47 -0
  86. data/lib/definitions/transaction_sets/manual/850/loops/n1.rb +31 -10
  87. data/lib/definitions/transaction_sets/manual/850/loops/n9.rb +59 -0
  88. data/lib/definitions/transaction_sets/manual/850/loops/pid.rb +47 -0
  89. data/lib/definitions/transaction_sets/manual/850/loops/po1.rb +78 -10
  90. data/lib/definitions/transaction_sets/manual/850/loops/sac.rb +47 -0
  91. data/lib/eddy.rb +49 -3
  92. data/lib/eddy/build/transaction_set_builder.rb +1 -1
  93. data/lib/eddy/config.rb +0 -21
  94. data/lib/eddy/data.rb +0 -40
  95. data/lib/eddy/data/persistence/base.rb +5 -11
  96. data/lib/eddy/data/persistence/memory.rb +14 -22
  97. data/lib/eddy/data/store.rb +0 -18
  98. data/lib/eddy/errors.rb +13 -9
  99. data/lib/eddy/models/element/composite.rb +2 -0
  100. data/lib/eddy/models/element/id.rb +1 -1
  101. data/lib/eddy/models/element/r.rb +5 -3
  102. data/lib/eddy/models/functional_group.rb +10 -5
  103. data/lib/eddy/models/interchange.rb +12 -5
  104. data/lib/eddy/models/transaction_set.rb +19 -7
  105. data/lib/eddy/parse.rb +4 -56
  106. data/lib/eddy/parse/interchange.rb +58 -0
  107. data/lib/eddy/summary/loop.rb +1 -1
  108. data/lib/eddy/summary/segment.rb +2 -1
  109. data/lib/eddy/version.rb +1 -1
  110. 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