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
@@ -0,0 +1,107 @@
1
+ module Eddy
2
+ module TransactionSets
3
+ module TS846
4
+ module Loops
5
+ module N1
6
+
7
+ # ### Loop Summary:
8
+ #
9
+ # - Repeat: 5
10
+ # - Components:
11
+ # - N1
12
+ # - N2
13
+ # - N3
14
+ # - N4
15
+ # - REF
16
+ # - PER
17
+ class Base < Eddy::Models::Loop::Base
18
+ # @param store [Eddy::Data::Store]
19
+ # @return [void]
20
+ def initialize(store)
21
+ @repeat_limit = 5
22
+ super(store, Repeat)
23
+ end
24
+ end
25
+
26
+ # (see Eddy::TransactionSets::TS846::Loops::N1::Base)
27
+ class Repeat < Eddy::Models::Loop::Repeat
28
+ # @param store [Eddy::Data::Store]
29
+ # @return [void]
30
+ def initialize(store)
31
+ @n1 = Eddy::Segments::N1.new(store)
32
+ @n2 = Eddy::Segments::N2.new(store)
33
+ @n3 = Eddy::Segments::N3.new(store)
34
+ @n4 = Eddy::Segments::N4.new(store)
35
+ @ref = Eddy::Segments::REF.new(store)
36
+ @per = Eddy::Segments::PER.new(store)
37
+ super(
38
+ store,
39
+ @n1,
40
+ @n2,
41
+ @n3,
42
+ @n4,
43
+ @ref,
44
+ @per,
45
+ )
46
+ end
47
+
48
+ # (see Eddy::Segments::N1)
49
+ #
50
+ # @yieldparam [Eddy::Segments::N1]
51
+ # @return [Eddy::Segments::N1]
52
+ def N1()
53
+ yield(@n1) if block_given?
54
+ return @n1
55
+ end
56
+
57
+ # (see Eddy::Segments::N2)
58
+ #
59
+ # @yieldparam [Eddy::Segments::N2]
60
+ # @return [Eddy::Segments::N2]
61
+ def N2()
62
+ yield(@n2) if block_given?
63
+ return @n2
64
+ end
65
+
66
+ # (see Eddy::Segments::N3)
67
+ #
68
+ # @yieldparam [Eddy::Segments::N3]
69
+ # @return [Eddy::Segments::N3]
70
+ def N3()
71
+ yield(@n3) if block_given?
72
+ return @n3
73
+ end
74
+
75
+ # (see Eddy::Segments::N4)
76
+ #
77
+ # @yieldparam [Eddy::Segments::N4]
78
+ # @return [Eddy::Segments::N4]
79
+ def N4()
80
+ yield(@n4) if block_given?
81
+ return @n4
82
+ end
83
+
84
+ # (see Eddy::Segments::REF)
85
+ #
86
+ # @yieldparam [Eddy::Segments::REF]
87
+ # @return [Eddy::Segments::REF]
88
+ def REF()
89
+ yield(@ref) if block_given?
90
+ return @ref
91
+ end
92
+
93
+ # (see Eddy::Segments::PER)
94
+ #
95
+ # @yieldparam [Eddy::Segments::PER]
96
+ # @return [Eddy::Segments::PER]
97
+ def PER()
98
+ yield(@per) if block_given?
99
+ return @per
100
+ end
101
+ end
102
+
103
+ end
104
+ end
105
+ end
106
+ end
107
+ end
@@ -0,0 +1,75 @@
1
+ module Eddy
2
+ module TransactionSets
3
+ module TS846
4
+ module Loops
5
+ module QTY
6
+
7
+ # ### Loop Summary:
8
+ #
9
+ # - Repeat: 99
10
+ # - Components:
11
+ # - QTY
12
+ # - DTM
13
+ # - SCH (loop)
14
+ class Base < Eddy::Models::Loop::Base
15
+ # @param store [Eddy::Data::Store]
16
+ # @return [void]
17
+ def initialize(store)
18
+ @repeat_limit = 99
19
+ super(store, Repeat)
20
+ end
21
+ end
22
+
23
+ # (see Eddy::TransactionSets::TS846::Loops::QTY::Base)
24
+ class Repeat < Eddy::Models::Loop::Repeat
25
+ # @param store [Eddy::Data::Store]
26
+ # @return [void]
27
+ def initialize(store)
28
+ @qty = Eddy::Segments::QTY.new(store)
29
+ @dtm = Eddy::Segments::DTM.new(store)
30
+ @l_sch = Eddy::TransactionSets::TS846::Loops::SCH::Base.new(store)
31
+ super(
32
+ store,
33
+ @qty,
34
+ @dtm,
35
+ @l_sch,
36
+ )
37
+ end
38
+
39
+ # (see Eddy::Segments::QTY)
40
+ #
41
+ # @yieldparam [Eddy::Segments::QTY]
42
+ # @return [Eddy::Segments::QTY]
43
+ def QTY()
44
+ yield(@qty) if block_given?
45
+ return @qty
46
+ end
47
+
48
+ # (see Eddy::Segments::DTM)
49
+ #
50
+ # @yieldparam [Eddy::Segments::DTM]
51
+ # @return [Eddy::Segments::DTM]
52
+ def DTM()
53
+ yield(@dtm) if block_given?
54
+ return @dtm
55
+ end
56
+
57
+ # (see Eddy::TransactionSets::TS846::Loops::SCH::Base)
58
+ #
59
+ # @yieldparam [Eddy::TransactionSets::TS846::Loops::SCH::Repeat]
60
+ # @return [void]
61
+ def L_SCH(&block)
62
+ if block_given?
63
+ @l_sch.repeat(&block)
64
+ else
65
+ raise Eddy::Errors::Error, "No block given in loop iteration"
66
+ end
67
+ return nil
68
+ end
69
+ end
70
+
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,59 @@
1
+ module Eddy
2
+ module TransactionSets
3
+ module TS846
4
+ module Loops
5
+ module SCH
6
+
7
+ # ### Loop Summary:
8
+ #
9
+ # - Repeat: 25
10
+ # - Components:
11
+ # - QTY
12
+ # - DTM
13
+ class Base < Eddy::Models::Loop::Base
14
+ # @param store [Eddy::Data::Store]
15
+ # @return [void]
16
+ def initialize(store)
17
+ @repeat_limit = 25
18
+ super(store, Repeat)
19
+ end
20
+ end
21
+
22
+ # (see Eddy::TransactionSets::TS846::Loops::SCH::Base)
23
+ class Repeat < Eddy::Models::Loop::Repeat
24
+ # @param store [Eddy::Data::Store]
25
+ # @return [void]
26
+ def initialize(store)
27
+ @qty = Eddy::Segments::QTY.new(store)
28
+ @dtm = Eddy::Segments::DTM.new(store)
29
+ super(
30
+ store,
31
+ @qty,
32
+ @dtm,
33
+ )
34
+ end
35
+
36
+ # (see Eddy::Segments::QTY)
37
+ #
38
+ # @yieldparam [Eddy::Segments::QTY]
39
+ # @return [Eddy::Segments::QTY]
40
+ def QTY()
41
+ yield(@qty) if block_given?
42
+ return @qty
43
+ end
44
+
45
+ # (see Eddy::Segments::DTM)
46
+ #
47
+ # @yieldparam [Eddy::Segments::DTM]
48
+ # @return [Eddy::Segments::DTM]
49
+ def DTM()
50
+ yield(@dtm) if block_given?
51
+ return @dtm
52
+ end
53
+ end
54
+
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,59 @@
1
+ module Eddy
2
+ module TransactionSets
3
+ module TS846
4
+ module Loops
5
+ module SLN
6
+
7
+ # ### Loop Summary:
8
+ #
9
+ # - Repeat: 1000
10
+ # - Components:
11
+ # - SLN
12
+ # - PID
13
+ class Base < Eddy::Models::Loop::Base
14
+ # @param store [Eddy::Data::Store]
15
+ # @return [void]
16
+ def initialize(store)
17
+ @repeat_limit = 1000
18
+ super(store, Repeat)
19
+ end
20
+ end
21
+
22
+ # (see Eddy::TransactionSets::TS846::Loops::SLN::Base)
23
+ class Repeat < Eddy::Models::Loop::Repeat
24
+ # @param store [Eddy::Data::Store]
25
+ # @return [void]
26
+ def initialize(store)
27
+ @sln = Eddy::Segments::SLN.new(store)
28
+ @pid = Eddy::Segments::PID.new(store)
29
+ super(
30
+ store,
31
+ @sln,
32
+ @pid,
33
+ )
34
+ end
35
+
36
+ # (see Eddy::Segments::SLN)
37
+ #
38
+ # @yieldparam [Eddy::Segments::SLN]
39
+ # @return [Eddy::Segments::SLN]
40
+ def SLN()
41
+ yield(@sln) if block_given?
42
+ return @sln
43
+ end
44
+
45
+ # (see Eddy::Segments::PID)
46
+ #
47
+ # @yieldparam [Eddy::Segments::PID]
48
+ # @return [Eddy::Segments::PID]
49
+ def PID()
50
+ yield(@pid) if block_given?
51
+ return @pid
52
+ end
53
+ end
54
+
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
@@ -7,7 +7,7 @@ module Eddy
7
7
  # - Id: 850
8
8
  # - Name: Purchase Order
9
9
  # - Functional Group: PO
10
- class TS < Eddy::Models::TransactionSet
10
+ class TS850 < Eddy::Models::TransactionSet
11
11
 
12
12
  ID = "850".freeze
13
13
  NAME = "Purchase Order".freeze
@@ -17,17 +17,35 @@ module Eddy
17
17
  # @return [void]
18
18
  def initialize(store)
19
19
  @beg = Eddy::Segments::BEG.new(store)
20
+ @cur = Eddy::Segments::CUR.new(store)
21
+ @ref = Eddy::Segments::REF.new(store)
22
+ @fob = Eddy::Segments::FOB.new(store)
23
+ @l_sac = Eddy::TransactionSets::TS850::Loops::SAC::Base.new(store)
24
+ @itd = Eddy::Segments::ITD.new(store)
25
+ @dtm = Eddy::Segments::DTM.new(store)
20
26
  @td5 = Eddy::Segments::TD5.new(store)
27
+ @txi = Eddy::Segments::TXI.new(store)
28
+ @l_n9 = Eddy::TransactionSets::TS850::Loops::N9::Base.new(store)
21
29
  @l_n1 = Eddy::TransactionSets::TS850::Loops::N1::Base.new(store)
22
30
  @l_po1 = Eddy::TransactionSets::TS850::Loops::PO1::Base.new(store)
23
31
  @ctt = Eddy::Segments::CTT.new(store)
32
+ @amt = Eddy::Segments::AMT.new(store)
24
33
  super(
25
34
  store,
26
35
  @beg,
36
+ @cur,
37
+ @ref,
38
+ @fob,
39
+ @l_sac,
40
+ @itd,
41
+ @dtm,
27
42
  @td5,
43
+ @txi,
44
+ @l_n9,
28
45
  @l_n1,
29
46
  @l_po1,
30
47
  @ctt,
48
+ @amt,
31
49
  )
32
50
  end
33
51
 
@@ -40,6 +58,64 @@ module Eddy
40
58
  return @beg
41
59
  end
42
60
 
61
+ # (see Eddy::Segments::CUR)
62
+ #
63
+ # @yieldparam [Eddy::Segments::CUR]
64
+ # @return [Eddy::Segments::CUR]
65
+ def CUR()
66
+ yield(@cur) if block_given?
67
+ return @cur
68
+ end
69
+
70
+ # (see Eddy::Segments::REF)
71
+ #
72
+ # @yieldparam [Eddy::Segments::REF]
73
+ # @return [Eddy::Segments::REF]
74
+ def REF()
75
+ yield(@ref) if block_given?
76
+ return @ref
77
+ end
78
+
79
+ # (see Eddy::Segments::FOB)
80
+ #
81
+ # @yieldparam [Eddy::Segments::FOB]
82
+ # @return [Eddy::Segments::FOB]
83
+ def FOB()
84
+ yield(@fob) if block_given?
85
+ return @fob
86
+ end
87
+
88
+ # (see Eddy::TransactionSets::TS850::Loops::SAC::Base)
89
+ #
90
+ # @yieldparam [Eddy::TransactionSets::TS850::Loops::SAC::Repeat]
91
+ # @return [void]
92
+ def L_SAC(&block)
93
+ if block_given?
94
+ @l_sac.repeat(&block)
95
+ else
96
+ raise Eddy::Errors::Error, "No block given in loop iteration"
97
+ end
98
+ return nil
99
+ end
100
+
101
+ # (see Eddy::Segments::ITD)
102
+ #
103
+ # @yieldparam [Eddy::Segments::ITD]
104
+ # @return [Eddy::Segments::ITD]
105
+ def ITD()
106
+ yield(@itd) if block_given?
107
+ return @itd
108
+ end
109
+
110
+ # (see Eddy::Segments::DTM)
111
+ #
112
+ # @yieldparam [Eddy::Segments::DTM]
113
+ # @return [Eddy::Segments::DTM]
114
+ def DTM()
115
+ yield(@dtm) if block_given?
116
+ return @dtm
117
+ end
118
+
43
119
  # (see Eddy::Segments::TD5)
44
120
  #
45
121
  # @yieldparam [Eddy::Segments::TD5]
@@ -49,6 +125,28 @@ module Eddy
49
125
  return @td5
50
126
  end
51
127
 
128
+ # (see Eddy::Segments::TXI)
129
+ #
130
+ # @yieldparam [Eddy::Segments::TXI]
131
+ # @return [Eddy::Segments::TXI]
132
+ def TXI()
133
+ yield(@txi) if block_given?
134
+ return @txi
135
+ end
136
+
137
+ # (see Eddy::TransactionSets::TS850::Loops::N9::Base)
138
+ #
139
+ # @yieldparam [Eddy::TransactionSets::TS850::Loops::N9::Repeat]
140
+ # @return [void]
141
+ def L_N9(&block)
142
+ if block_given?
143
+ @l_n9.repeat(&block)
144
+ else
145
+ raise Eddy::Errors::Error, "No block given in loop iteration"
146
+ end
147
+ return nil
148
+ end
149
+
52
150
  # (see Eddy::TransactionSets::TS850::Loops::N1::Base)
53
151
  #
54
152
  # @yieldparam [Eddy::TransactionSets::TS850::Loops::N1::Repeat]
@@ -84,6 +182,15 @@ module Eddy
84
182
  return @ctt
85
183
  end
86
184
 
185
+ # (see Eddy::Segments::AMT)
186
+ #
187
+ # @yieldparam [Eddy::Segments::AMT]
188
+ # @return [Eddy::Segments::AMT]
189
+ def AMT()
190
+ yield(@amt) if block_given?
191
+ return @amt
192
+ end
193
+
87
194
  end
88
195
  end
89
196
  end