stupidedi 1.2.2 → 1.2.5

Sign up to get free protection for your applications and to get access to all the features.
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