eddy 0.8.4 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (106) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +4 -4
  3. data/CHANGELOG.md +18 -0
  4. data/Gemfile.lock +8 -8
  5. data/README.md +1 -1
  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 -29
  95. data/lib/eddy/data/persistence/base.rb +7 -0
  96. data/lib/eddy/data/persistence/memory.rb +14 -4
  97. data/lib/eddy/errors.rb +13 -9
  98. data/lib/eddy/models/element/composite.rb +2 -0
  99. data/lib/eddy/models/element/id.rb +1 -1
  100. data/lib/eddy/models/element/r.rb +1 -0
  101. data/lib/eddy/parse.rb +4 -56
  102. data/lib/eddy/parse/interchange.rb +58 -0
  103. data/lib/eddy/summary/loop.rb +1 -1
  104. data/lib/eddy/summary/segment.rb +2 -1
  105. data/lib/eddy/version.rb +1 -1
  106. 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