stupidedi 1.2.2 → 1.2.5

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 (58) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +15 -3
  3. data/bin/edi-pp +3 -6
  4. data/lib/stupidedi/builder/builder_dsl.rb +4 -0
  5. data/lib/stupidedi/builder/generation.rb +2 -2
  6. data/lib/stupidedi/builder/states/abstract_state.rb +4 -4
  7. data/lib/stupidedi/config.rb +2 -0
  8. data/lib/stupidedi/contrib/003010/guides.rb +1 -1
  9. data/lib/stupidedi/contrib/003010/guides/PC860.rb +7 -2
  10. data/lib/stupidedi/contrib/003010/guides/PS830.rb +198 -0
  11. data/lib/stupidedi/contrib/003010/guides/RA820.rb +7 -0
  12. data/lib/stupidedi/contrib/003010/transaction_set_defs.rb +3 -0
  13. data/lib/stupidedi/contrib/003010/transaction_set_defs/PC860.rb +1 -1
  14. data/lib/stupidedi/contrib/003010/transaction_set_defs/PS830.rb +56 -0
  15. data/lib/stupidedi/contrib/003040/guides/WA142.rb +1 -0
  16. data/lib/stupidedi/contrib/004010/guides/PO850.rb +27 -1
  17. data/lib/stupidedi/contrib/004010/transaction_set_defs.rb +3 -0
  18. data/lib/stupidedi/contrib/004010/transaction_set_defs/PO850.rb +9 -1
  19. data/lib/stupidedi/contrib/004010/transaction_set_defs/SC832.rb +44 -0
  20. data/lib/stupidedi/schema/segment_def.rb +9 -1
  21. data/lib/stupidedi/schema/syntax_note.rb +0 -4
  22. data/lib/stupidedi/version.rb +1 -1
  23. data/lib/stupidedi/versions/functional_groups/002001/element_defs.rb +1 -1
  24. data/lib/stupidedi/versions/functional_groups/002001/element_types/identifier_val.rb +6 -6
  25. data/lib/stupidedi/versions/functional_groups/002001/segment_defs/MEA.rb +8 -9
  26. data/lib/stupidedi/versions/functional_groups/003010/element_defs.rb +57 -1
  27. data/lib/stupidedi/versions/functional_groups/003010/segment_defs.rb +14 -0
  28. data/lib/stupidedi/versions/functional_groups/003010/segment_defs/BFR.rb +40 -0
  29. data/lib/stupidedi/versions/functional_groups/003010/segment_defs/BPS.rb +8 -1
  30. data/lib/stupidedi/versions/functional_groups/003010/segment_defs/CTT.rb +2 -2
  31. data/lib/stupidedi/versions/functional_groups/003010/segment_defs/FOB.rb +2 -0
  32. data/lib/stupidedi/versions/functional_groups/003010/segment_defs/FST.rb +31 -0
  33. data/lib/stupidedi/versions/functional_groups/003010/segment_defs/MEA.rb +8 -9
  34. data/lib/stupidedi/versions/functional_groups/003010/segment_defs/N1.rb +3 -9
  35. data/lib/stupidedi/versions/functional_groups/003010/segment_defs/SDP.rb +21 -0
  36. data/lib/stupidedi/versions/functional_groups/003010/segment_defs/SHP.rb +22 -0
  37. data/lib/stupidedi/versions/functional_groups/003010/segment_defs/TD5.rb +3 -0
  38. data/lib/stupidedi/versions/functional_groups/003010/segment_defs/UIT.rb +20 -0
  39. data/lib/stupidedi/versions/functional_groups/003040/segment_defs/MEA.rb +8 -9
  40. data/lib/stupidedi/versions/functional_groups/003040/segment_defs/PRR.rb +2 -0
  41. data/lib/stupidedi/versions/functional_groups/003040/segment_defs/SSS.rb +2 -0
  42. data/lib/stupidedi/versions/functional_groups/003050/segment_defs/MEA.rb +8 -9
  43. data/lib/stupidedi/versions/functional_groups/004010/element_defs.rb +14 -7
  44. data/lib/stupidedi/versions/functional_groups/004010/segment_defs.rb +9 -0
  45. data/lib/stupidedi/versions/functional_groups/004010/segment_defs/BCT.rb +19 -0
  46. data/lib/stupidedi/versions/functional_groups/004010/segment_defs/BFR.rb +1 -0
  47. data/lib/stupidedi/versions/functional_groups/004010/segment_defs/CTP.rb +36 -0
  48. data/lib/stupidedi/versions/functional_groups/004010/segment_defs/SCH.rb +28 -0
  49. data/lib/stupidedi/versions/functional_groups/005010/element_defs.rb +1 -1
  50. data/lib/stupidedi/versions/interchanges/00200/element_defs.rb +2 -2
  51. data/lib/stupidedi/versions/interchanges/00200/segment_defs/ISA.rb +2 -2
  52. data/lib/stupidedi/versions/interchanges/00300/segment_defs/ISA.rb +2 -2
  53. data/lib/stupidedi/zipper/abstract_cursor.rb +4 -4
  54. data/spec/examples/integration/generating.example +10 -0
  55. data/spec/examples/stupidedi/reader/token_reader.example +1 -1
  56. data/spec/fixtures/SC832/1-good.txt +22 -0
  57. data/spec/fixtures/SC832/2-good.txt +1067 -0
  58. metadata +16 -4
@@ -134,6 +134,7 @@ module Stupidedi
134
134
  b::Element(e::Required, "Special Services Code", b::Values("PP","SH","ZZ")),
135
135
  b::Element(e::Situational, "Allowance or Charge Rate - Supplier Rate"),
136
136
  b::Element(e::Situational, "Allowance or Charge Total Amount"),
137
+ b::Element(e::NotUsed, ""),
137
138
  b::Element(e::Situational, "Quantity - Supplier Amount"))),
138
139
 
139
140
  d::LoopDef.build("PRR", d::RepeatCount.unbounded,
@@ -86,7 +86,33 @@ module Stupidedi
86
86
  b::Element(e::Situational, "Product/Process Characteristic Code"),
87
87
  b::Element(e::Situational, "Agency Qualifier Code"),
88
88
  b::Element(e::Situational, "Product Description Code"),
89
- b::Element(e::Situational, "Description")))),
89
+ b::Element(e::Situational, "Description"))),
90
+ d::LoopDef.build("SCH", d::RepeatCount.bounded(200),
91
+ b::Segment(295, s::SCH, "Line Item Schedule",
92
+ r::Situational, d::RepeatCount.bounded(1),
93
+ b::Element(e::Required, "Numeric value ofquantiy"),
94
+ b::Element(e::Required, "Unit or Basis for Measurement Code", b::Values("DZ", "EA", "FT", "RL")),
95
+ b::Element(e::Situational, "Date/Time Qualifer"),
96
+ b::Element(e::Situational, "Date"),
97
+ b::Element(e::Situational, "Date/Time Qualifer"),
98
+ b::Element(e::Situational, "Date"))),
99
+ d::LoopDef.build("N1", d::RepeatCount.bounded(200),
100
+ b::Segment(350, s:: N1, "Name",
101
+ r::Situational, d::RepeatCount.bounded(1),
102
+ b::Element(e::Required, "Entity Identifier Code", b::Values("SF", "ST")),
103
+ b::Element(e::Required, "Name"),
104
+ b::Element(e::Situational, "Identification Code Qualifier", b::Values("91")),
105
+ b::Element(e::Situational, "Identification Code")),
106
+ b::Segment(370, s:: N3, "Address Information",
107
+ r::Situational, d::RepeatCount.bounded(2),
108
+ b::Element(e::Required, "Address Information"),
109
+ b::Element(e::Situational, "Address Information")),
110
+ b::Segment(380, s:: N4, "Geographic Location",
111
+ r::Situational, d::RepeatCount.bounded(1),
112
+ b::Element(e::Situational, "City Name"),
113
+ b::Element(e::Situational, "State or Province Code"),
114
+ b::Element(e::Situational, "Postal Code"),
115
+ b::Element(e::Situational, "Country Code")))),
90
116
 
91
117
  d::TableDef.header("Summary",
92
118
  d::LoopDef.build("CTT", d::RepeatCount.bounded(1),
@@ -45,6 +45,9 @@ module Stupidedi
45
45
  autoload :SQ866, # Production Sequence
46
46
  "stupidedi/contrib/004010/transaction_set_defs/SQ866"
47
47
 
48
+ autoload :SC832, # Price/Sales Catalog
49
+ "stupidedi/contrib/004010/transaction_set_defs/SC832"
50
+
48
51
  end
49
52
  end
50
53
  end
@@ -28,7 +28,15 @@ module Stupidedi
28
28
  s::PO1.use( 10, r::Mandatory, d::RepeatCount.bounded(1))),
29
29
 
30
30
  d::LoopDef.build("PID", d::RepeatCount.bounded(1000),
31
- s::PID.use( 50, r::Optional, d::RepeatCount.bounded(1)))),
31
+ s::PID.use( 50, r::Optional, d::RepeatCount.bounded(1))),
32
+
33
+ d::LoopDef.build("SCH", d::RepeatCount.bounded(200),
34
+ s::SCH.use( 295, r::Optional, d::RepeatCount.bounded(1))),
35
+
36
+ d::LoopDef.build("N1", d::RepeatCount.bounded(200),
37
+ s::N1.use( 350, r::Optional, d::RepeatCount.bounded(1)),
38
+ s::N3.use( 370, r::Optional, d::RepeatCount.bounded(2)),
39
+ s::N4.use( 380, r::Optional, d::RepeatCount.bounded(1)))),
32
40
 
33
41
  d::TableDef.header("Table 3 - Summary",
34
42
  d::LoopDef.build("CTT", d::RepeatCount.bounded(1),
@@ -0,0 +1,44 @@
1
+ module Stupidedi
2
+ module Contrib
3
+ module FortyTen
4
+ module TransactionSetDefs
5
+
6
+ d = Schema
7
+ r = SegmentReqs
8
+ s = SegmentDefs
9
+
10
+ SC832 = d::TransactionSetDef.build("SC", "832", "Price/Sales Catalog",
11
+
12
+ d::TableDef.header("Table 1 - Header",
13
+ s:: ST.use( 100, r::Mandatory, d::RepeatCount.bounded(1)),
14
+ s::BCT.use( 200, r::Mandatory, d::RepeatCount.bounded(1)),
15
+ s::REF.use( 500, r::Optional, d::RepeatCount.unbounded),
16
+ s::DTM.use( 700, r::Optional, d::RepeatCount.bounded(10)),
17
+ d::LoopDef.build("N1", d::RepeatCount.bounded(1),
18
+ s::N1.use(1500, r::Optional, d::RepeatCount.bounded(1))
19
+ )
20
+ ),
21
+
22
+ d::TableDef.detail("Table 2 - Products",
23
+ d::LoopDef.build("LIN", d::RepeatCount.bounded(200000),
24
+ s::LIN.use( 100, r::Optional, d::RepeatCount.bounded(1)),
25
+ s::DTM.use( 300, r::Optional, d::RepeatCount.bounded(10)),
26
+ s::REF.use( 400, r::Optional, d::RepeatCount.unbounded),
27
+ s::PID.use( 700, r::Optional, d::RepeatCount.bounded(200)),
28
+ s::PO4.use(1000, r::Mandatory, d::RepeatCount.bounded(1)),
29
+ d::LoopDef.build("CTP", d::RepeatCount.bounded(100),
30
+ s::CTP.use(1700, r::Optional, d::RepeatCount.bounded(1))
31
+ )
32
+ )
33
+ ),
34
+
35
+ d::TableDef.summary("Table 3 - Summary",
36
+ s::CTT.use(100, r::Optional, d::RepeatCount.bounded(1)),
37
+ s:: SE.use(200, r::Mandatory, d::RepeatCount.bounded(1))
38
+ )
39
+ )
40
+
41
+ end
42
+ end
43
+ end
44
+ end
@@ -96,7 +96,15 @@ module Stupidedi
96
96
  element_uses = args.take_while{|x| x.is_a?(AbstractElementUse) }
97
97
  syntax_notes = args.drop(element_uses.length)
98
98
 
99
- # @todo: Validate SyntaxNotes
99
+ # @todo: Validate SyntaxNotes (beyond this rudimentary validation)
100
+ syntax_notes.each do |sn|
101
+ unless sn.indexes.max - 1 <= element_uses.length
102
+ raise Exceptions::InvalidSchemaError,
103
+ "Syntax note for #{id} (#{element_uses.length} elements) " <<
104
+ "refers to non-existent element #{sn.indexes.max}"
105
+ end
106
+ end
107
+
100
108
  new(id, name, purpose, element_uses, syntax_notes, nil)
101
109
  end
102
110
 
@@ -52,10 +52,6 @@ module Stupidedi
52
52
 
53
53
  def children(zipper)
54
54
  indexes.map{|n| zipper.child(n - 1) }
55
- rescue
56
- pp zipper.node
57
- pp indexes
58
- raise $!
59
55
  end
60
56
  end
61
57
 
@@ -1,3 +1,3 @@
1
1
  module Stupidedi
2
- VERSION = "1.2.2"
2
+ VERSION = "1.2.5"
3
3
  end
@@ -5661,7 +5661,7 @@ module Stupidedi
5661
5661
  E369 = t::AN.new(:E369, "Free-form Description" , 1, 45)
5662
5662
 
5663
5663
  E372 = t::AN.new(:E372, "Lading Liability Code - Nissan Part Description", 1, 25)
5664
- E373 = t::DT.new(:E373 , "Date" , 8, 8)
5664
+ E373 = t::DT.new(:E373 , "Date" , 6, 6)
5665
5665
  E374 = t::ID.new(:E374 , "Date/Time Qualifier" , 3, 3,
5666
5666
  s::CodeList.build(
5667
5667
  "001" => "Cancel after",
@@ -145,14 +145,14 @@ module Stupidedi
145
145
 
146
146
  # (string any* -> any)
147
147
  extend Forwardable
148
- def_delegators :@value, :to_d, :to_s, :to_f, :to_c, :to_r, :to_sym, :to_str,
148
+ def_delegators :value, :to_d, :to_s, :to_f, :to_c, :to_r, :to_sym, :to_str,
149
149
  :hex, :oct, :ord, :sum, :length, :count, :index, :rindex,
150
150
  :lines, :bytes, :chars, :each, :upto, :split, :scan, :unpack,
151
151
  :=~, :match, :partition, :rpatition, :each, :split, :scan,
152
152
  :unpack, :encoding, :count, :casecmp, :sum, :valid_enocding?,
153
- :at, :empty?, :blank?
154
-
155
-
153
+ :at, :empty?, :blank?
154
+
155
+
156
156
  # (string any* -> StringVal)
157
157
  extend Operators::Wrappers
158
158
  wrappers :%, :+, :*, :slice, :take, :drop, :[], :capitalize,
@@ -241,8 +241,8 @@ module Stupidedi
241
241
  :=~, :match, :partition, :rpatition, :each, :split, :scan,
242
242
  :unpack, :encoding, :count, :casecmp, :sum, :valid_enocding?,
243
243
  :at, :empty?, :blank?
244
-
245
-
244
+
245
+
246
246
 
247
247
  # (string any* -> StringVal)
248
248
  extend Operators::Wrappers
@@ -15,16 +15,15 @@ module Stupidedi
15
15
  e::E739 .simple_use(r::Relational, s::RepeatCount.bounded(1)),
16
16
  e::E355 .simple_use(r::Mandatory, s::RepeatCount.bounded(1)),
17
17
  e::E740 .simple_use(r::Relational, s::RepeatCount.bounded(1)),
18
- e::E741 .simple_use(r::Relational, s::RepeatCount.bounded(1)),
19
-
20
- SyntaxNotes::R.build( 3, 5, 6, 8),
21
- SyntaxNotes::E.build( 4, 12),
22
- SyntaxNotes::L.build( 5, 4, 12),
23
- SyntaxNotes::L.build( 6, 4, 12),
24
- SyntaxNotes::L.build( 7, 3, 5, 6),
25
- SyntaxNotes::E.build( 8, 3),
26
- SyntaxNotes::P.build(11, 12))
18
+ e::E741 .simple_use(r::Relational, s::RepeatCount.bounded(1)))
27
19
 
20
+ # SyntaxNotes::R.build( 3, 5, 6, 8),
21
+ # SyntaxNotes::E.build( 4, 12),
22
+ # SyntaxNotes::L.build( 5, 4, 12),
23
+ # SyntaxNotes::L.build( 6, 4, 12),
24
+ # SyntaxNotes::L.build( 7, 3, 5, 6),
25
+ # SyntaxNotes::E.build( 8, 3),
26
+ # SyntaxNotes::P.build(11, 12))
28
27
 
29
28
  end
30
29
  end
@@ -4215,7 +4215,9 @@ module Stupidedi
4215
4215
  E362 = t::Nn.new(:E362 , "Terms Discount Amount" , 1, 10, 2)
4216
4216
  E363 = t::ID.new(:E363 , "Note Reference Code" , 3, 3,
4217
4217
  s::CodeList.build(
4218
- "ZZZ" => "Mutually Defined"))
4218
+ "ZZZ" => "Mutually Defined",
4219
+ "GEN" => "Entire Transaction Set",
4220
+ "LIN" => "Line Item"))
4219
4221
 
4220
4222
  E364 = t::AN.new(:E364 , "Communication Number" , 1, 80)
4221
4223
  E365 = t::ID.new(:E365 , "Communcation Number Qualifier" , 2, 2,
@@ -4245,6 +4247,7 @@ module Stupidedi
4245
4247
  s::CodeList.build(
4246
4248
  "001" => "Cancel after",
4247
4249
  "002" => "Delivery Requested",
4250
+ "003" => "",
4248
4251
  "007" => "Effective",
4249
4252
  "010" => "Requested ship",
4250
4253
  "011" => "Shipped",
@@ -5871,8 +5874,61 @@ module Stupidedi
5871
5874
  "PC" => "Price Change",
5872
5875
  "QD" => "Quantity Decrease",
5873
5876
  "QI" => "Quantity Increase"))
5877
+
5874
5878
  E671 = t:: R.new(:E671 , "Quantity Left to Receive" , 1, 9)
5875
5879
 
5880
+ E673 = t::ID.new(:E673 , "Quantity Qualifier" , 2, 2,
5881
+ s::CodeList.build(
5882
+ "01" => "Discrete Quantity",
5883
+ "02" => "Cumulative Quantity",
5884
+ "90" => "Acknowledged Quantity",
5885
+ "AA" => "Unacknowledged Quantity",
5886
+ "CA" => "Covered - Actual",
5887
+ "CD" => "Co-insured - Actual",
5888
+ "FL" => "Units",
5889
+ "LA" => "Life-time Reserve - Actual",
5890
+ "LE" => "Life-time Reserve - Estimated",
5891
+ "NA" => "Number of Non-covered Days",
5892
+ "NE" => "Non-Covered Amount - Estimated",
5893
+ "NR" => "Not Replaced Blood Units",
5894
+ "OU" => "Outlier Days",
5895
+ "PS" => "Prescription",
5896
+ "PT" => "Patients",
5897
+ "QA" => "Quantity Approved",
5898
+ "QC" => "Quantity Disapproved",
5899
+ "VS" => "Visits",
5900
+ "ZK" => "Federal Medicare or Medicaid Payment Mandate Category 1",
5901
+ "ZL" => "Federal Medicare or Medicaid Payment Mandate Category 2",
5902
+ "ZM" => "Federal Medicare or Medicaid Payment Mandate Category 3",
5903
+ "ZN" => "Federal Medicare or Medicaid Payment Mandate Category 4",
5904
+ "ZO" => "Federal Medicare or Medicaid Payment Mandate Category 5"))
5905
+
5906
+ E675 = t::ID.new(:E675 , "Schedule Type Qualifier" , 2, 2,
5907
+ s::CodeList.build(
5908
+ "DL" => "Delivery Based",
5909
+ "SH" => "Shipment Based"))
5910
+
5911
+ E676 = t::ID.new(:E676 , "Schedule Quantity Qualifier" , 2, 2,
5912
+ s::CodeList.build(
5913
+ "A" => "Actual Discrete Quantities"))
5914
+
5915
+ E678 = t::ID.new(:E678 , "Ship/Delivery or Calendar Pattern Code" , 1, 2,
5916
+ s::CodeList.build(
5917
+ "Y" => "None"))
5918
+
5919
+ E679 = t::ID.new(:E679 , "Ship/Delivery Pattern Time Code" , 1, 1,
5920
+ s::CodeList.build(
5921
+ "Y" => "None"))
5922
+
5923
+ E680 = t::ID.new(:E680 , "Forecast Qualifier" , 1, 1,
5924
+ s::CodeList.build(
5925
+ "C" => "New Firm Order",
5926
+ "D" => "Planning/Forecast"))
5927
+ E681 = t::ID.new(:E681 , "Forecast Timing Qualifier" , 1, 1,
5928
+ s::CodeList.build(
5929
+ "D" => "Discrete",
5930
+ "F" => "Flexible Interval (from Date X through Date Y)"))
5931
+
5876
5932
  E706 = t::ID.new(:E706 , "Entity Relationship Code" , 2, 2,
5877
5933
  s::CodeList.build(
5878
5934
  "01" => "Parent",
@@ -245,6 +245,20 @@ module Stupidedi
245
245
  autoload :POC,
246
246
  "stupidedi/versions/functional_groups/003010/segment_defs/POC"
247
247
 
248
+ autoload :BFR,
249
+ "stupidedi/versions/functional_groups/003010/segment_defs/BFR"
250
+
251
+ autoload :UIT,
252
+ "stupidedi/versions/functional_groups/003010/segment_defs/UIT"
253
+
254
+ autoload :SDP,
255
+ "stupidedi/versions/functional_groups/003010/segment_defs/SDP"
256
+
257
+ autoload :FST,
258
+ "stupidedi/versions/functional_groups/003010/segment_defs/FST"
259
+
260
+ autoload :SHP,
261
+ "stupidedi/versions/functional_groups/003010/segment_defs/SHP"
248
262
  end
249
263
  end
250
264
  end
@@ -0,0 +1,40 @@
1
+ module Stupidedi
2
+ module Versions
3
+ module FunctionalGroups
4
+ module ThirtyTen
5
+ module SegmentDefs
6
+
7
+ s = Schema
8
+ e = ElementDefs
9
+ r = ElementReqs
10
+
11
+ # Definition might be outdated, working from ANSI X12 2001 specification
12
+ BFR = s::SegmentDef.build(:BFR, "Beginning Segment for Planning Schedule",
13
+ "To indicate the beginning of a planning schedule transaction set; whether a ship or "\
14
+ "delivery based forecast; and related forecast envelope dates",
15
+ e::E353 .simple_use(r::Mandatory, s::RepeatCount.bounded(1)),
16
+ e::E127 .simple_use(r::Relational,s::RepeatCount.bounded(1)),
17
+ e::E328 .simple_use(r::Relational,s::RepeatCount.bounded(1)),
18
+ e::E675 .simple_use(r::Mandatory, s::RepeatCount.bounded(1)),
19
+ e::E676 .simple_use(r::Mandatory, s::RepeatCount.bounded(1)),
20
+ e::E373 .simple_use(r::Mandatory, s::RepeatCount.bounded(1)),
21
+ e::E373 .simple_use(r::Optional, s::RepeatCount.bounded(1)),
22
+ e::E373 .simple_use(r::Mandatory, s::RepeatCount.bounded(1)),
23
+ e::E367 .simple_use(r::Optional, s::RepeatCount.bounded(1)),
24
+ e::E367 .simple_use(r::Optional, s::RepeatCount.bounded(1)),
25
+ e::E324 .simple_use(r::Optional, s::RepeatCount.bounded(1)))
26
+
27
+ # e::E353.simple_use(r::Mandatory, s::RepeatCount.bounded(1)),
28
+ # e::E127.simple_use(r::Relational, s::RepeatCount.bounded(1)),
29
+ # e::E328.simple_use(r::Relational, s::RepeatCount.bounded(1)),
30
+ # e::E675.simple_use(r::Mandatory, s::RepeatCount.bounded(1)),
31
+ # e::E676.simple_use(r::Mandatory, s::RepeatCount.bounded(1)),
32
+ # e::E373.simple_use(r::Mandatory, s::RepeatCount.bounded(1)),
33
+ # e::E373.simple_use(r::Mandatory, s::RepeatCount.bounded(1)),
34
+ # e::E373.simple_use(r::Mandatory, s::RepeatCount.bounded(1)))
35
+
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -15,7 +15,14 @@ module Stupidedi
15
15
  payee to occur while utilizing an automated clearing house (ACH) or other banking network.",
16
16
  e::E591.simple_use(r::Mandatory, s::RepeatCount.bounded(1)),
17
17
  e::E782.simple_use(r::Mandatory, s::RepeatCount.bounded(1)),
18
- e::E305.simple_use(r::Mandatory, s::RepeatCount.bounded(1)), #E373 ?
18
+ e::E305.simple_use(r::Mandatory, s::RepeatCount.bounded(1)),
19
+ e::E352.simple_use(r::Optional, s::RepeatCount.bounded(1)),
20
+ e::E352.simple_use(r::Optional, s::RepeatCount.bounded(1)),
21
+ e::E352.simple_use(r::Optional, s::RepeatCount.bounded(1)),
22
+ e::E352.simple_use(r::Optional, s::RepeatCount.bounded(1)),
23
+ e::E352.simple_use(r::Optional, s::RepeatCount.bounded(1)),
24
+ e::E352.simple_use(r::Optional, s::RepeatCount.bounded(1)),
25
+ e::E352.simple_use(r::Optional, s::RepeatCount.bounded(1)),
19
26
  e::E508.simple_use(r::Optional, s::RepeatCount.bounded(1)),
20
27
  e::E513.simple_use(r::Optional, s::RepeatCount.bounded(1)))
21
28
 
@@ -10,8 +10,8 @@ module Stupidedi
10
10
 
11
11
  CTT = s::SegmentDef.build(:CTT, "Transaction Totals",
12
12
  "To transmit a hash total for a specific element in the transaction set",
13
- e::E354 .simple_use(r::Mandatory, s::RepeatCount.bounded(1)))
14
- # e::E347 .simple_use(r::Optional, s::RepeatCount.bounded(1)),
13
+ e::E354 .simple_use(r::Mandatory, s::RepeatCount.bounded(1)),
14
+ e::E347 .simple_use(r::Optional, s::RepeatCount.bounded(1)))
15
15
  # e::E81 .simple_use(r::Relational, s::RepeatCount.bounded(1)),
16
16
  # e::E355 .simple_use(r::Relational, s::RepeatCount.bounded(1)),
17
17
  # e::E183 .simple_use(r::Relational, s::RepeatCount.bounded(1)),
@@ -13,6 +13,8 @@ module Stupidedi
13
13
  e::E146 .simple_use(r::Mandatory, s::RepeatCount.bounded(1)),
14
14
  e::E309 .simple_use(r::Relational, s::RepeatCount.bounded(1)),
15
15
  e::E352 .simple_use(r::Optional, s::RepeatCount.bounded(1)),
16
+ e::E352 .simple_use(r::Optional, s::RepeatCount.bounded(1)),
17
+ e::E352 .simple_use(r::Optional, s::RepeatCount.bounded(1)),
16
18
  e::E309 .simple_use(r::Relational, s::RepeatCount.bounded(1)),
17
19
  e::E352 .simple_use(r::Optional, s::RepeatCount.bounded(1)))
18
20
 
@@ -0,0 +1,31 @@
1
+ module Stupidedi
2
+ module Versions
3
+ module FunctionalGroups
4
+ module ThirtyTen
5
+ module SegmentDefs
6
+
7
+ s = Schema
8
+ e = ElementDefs
9
+ r = ElementReqs
10
+
11
+ FST = s::SegmentDef.build(:FST, "Forecast Schedule",
12
+ "To specify the forecasted dates and quantities",
13
+ e::E380 .simple_use(r::Mandatory, s::RepeatCount.bounded(1)),
14
+ e::E680 .simple_use(r::Mandatory, s::RepeatCount.bounded(1)),
15
+ e::E681 .simple_use(r::Mandatory, s::RepeatCount.bounded(1)),
16
+ e::E373 .simple_use(r::Mandatory, s::RepeatCount.bounded(1)),
17
+ e::E373 .simple_use(r::Optional, s::RepeatCount.bounded(1)),
18
+ e::E374 .simple_use(r::Relational, s::RepeatCount.bounded(1)),
19
+ e::E337 .simple_use(r::Relational, s::RepeatCount.bounded(1)),
20
+ e::E128 .simple_use(r::Relational, s::RepeatCount.bounded(1)),
21
+ e::E127 .simple_use(r::Relational, s::RepeatCount.bounded(1)))
22
+
23
+
24
+ # SyntaxNotes::P.build(6, 7),
25
+ # SyntaxNotes::P.build(1, 2, 3))
26
+
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -15,16 +15,15 @@ module Stupidedi
15
15
  e::E739 .simple_use(r::Relational, s::RepeatCount.bounded(1)),
16
16
  e::E355 .simple_use(r::Mandatory, s::RepeatCount.bounded(1)),
17
17
  e::E740 .simple_use(r::Relational, s::RepeatCount.bounded(1)),
18
- e::E741 .simple_use(r::Relational, s::RepeatCount.bounded(1)),
19
-
20
- SyntaxNotes::R.build( 3, 5, 6, 8),
21
- SyntaxNotes::E.build( 4, 12),
22
- SyntaxNotes::L.build( 5, 4, 12),
23
- SyntaxNotes::L.build( 6, 4, 12),
24
- SyntaxNotes::L.build( 7, 3, 5, 6),
25
- SyntaxNotes::E.build( 8, 3),
26
- SyntaxNotes::P.build(11, 12))
18
+ e::E741 .simple_use(r::Relational, s::RepeatCount.bounded(1)))
27
19
 
20
+ # SyntaxNotes::R.build( 3, 5, 6, 8),
21
+ # SyntaxNotes::E.build( 4, 12),
22
+ # SyntaxNotes::L.build( 5, 4, 12),
23
+ # SyntaxNotes::L.build( 6, 4, 12),
24
+ # SyntaxNotes::L.build( 7, 3, 5, 6),
25
+ # SyntaxNotes::E.build( 8, 3),
26
+ # SyntaxNotes::P.build(11, 12))
28
27
 
29
28
  end
30
29
  end