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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9ff1d8f6beea22666b9a2951803ffa317f1e4751
4
- data.tar.gz: 93a7f43ad7423f24bb1ea303b332adab7137d24b
3
+ metadata.gz: 2093ddba04d861a92064a74df14c6c950f29b54d
4
+ data.tar.gz: d94a09d05a3d2f5c21cec4309e4cb3f72124ad6d
5
5
  SHA512:
6
- metadata.gz: 4154b4e91f33438c147ee2be6c1839a783b16d34e123a8e8e04bee574908f2646ce459afad0a23c4630213a43c329a8c24e05a5fab1a801094485c3749a2915b
7
- data.tar.gz: ce31dfd096d0b953289c0b56fa0ea08f158e1d143a219a9366ee34075ac856e3fb8020bfd793f7b9bebd1f48476ae3420bef328e178dc5d60b2141568d8164c3
6
+ metadata.gz: e9ed1ef8bc67776276b6ce099d7e721ed9eb61d0e75e6a265ef58dc291e131172b5129ffe2715d5d2dd7a58034a920e8172da523be8da0e42042e2fec4d1ce01
7
+ data.tar.gz: 36ab7df0ead50f68f75b063ad41566013e3cc6cc3b23ca533a951c1b86f35358732b76e36a84d09d6a791e6707a443ed2521985d102e95e261165fe6cbda5cdf
data/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  # Stupidedi
2
- [![Build Status](https://secure.travis-ci.org/kputnam/stupidedi.png?branch=master)](http://travis-ci.org/kputnam/stupidedi) [![Dependency Status](https://gemnasium.com/irobayna/stupidedi.svg)](https://gemnasium.com/irobayna/stupidedi) [![GitHub version](https://badge.fury.io/gh/kputnam%2Fstupidedi.svg)](http://badge.fury.io/gh/kputnam%2Fstupidedi) [![Code Climate](https://codeclimate.com/github/kputnam/stupidedi.png)](https://codeclimate.com/github/kputnam/stupidedi)
2
+ [![Build Status](https://secure.travis-ci.org/kputnam/stupidedi.png?branch=master)](http://travis-ci.org/kputnam/stupidedi) [![Dependency Status](https://gemnasium.com/irobayna/stupidedi.svg)](https://gemnasium.com/irobayna/stupidedi) [![GitHub version](https://badge.fury.io/gh/kputnam%2Fstupidedi.svg)](http://badge.fury.io/gh/kputnam%2Fstupidedi) [![Code Climate](https://codeclimate.com/github/kputnam/stupidedi.png)](https://codeclimate.com/github/kputnam/stupidedi) [![Inline docs](http://inch-ci.org/github/kputnam/stupidedi.png?branch=master)](http://inch-ci.org/github/kputnam/stupidedi)
3
3
 
4
4
  ![Screenshot](https://raw.github.com/kputnam/stupidedi/master/doc/images/edi-pp.png)
5
5
 
@@ -18,6 +18,18 @@ notices, and health care claims. It is similar to XML in some ways,
18
18
  but precedes it by about 15 years; so if you think XML sucks, you
19
19
  will love to hate EDI.
20
20
 
21
+ ### Beware / Help Wanted
22
+
23
+ Stupidedi monkey patches some classes in the Ruby standard library. These
24
+ are listed in `lib/ruby`. Rails users and other ActiveSupport users have
25
+ reported problems caused by these patches, since they are unintentionally
26
+ incompatible.
27
+
28
+ There is a pull request ([72](https://github.com/kputnam/stupidedi/pull/72))
29
+ which should solve these. Please test the `refinements` branch and provide
30
+ feedback -- it imposes a requirement of Ruby 2.1+, but should otherwise be
31
+ a seemless change.
32
+
21
33
  ## What problem does it solve?
22
34
 
23
35
  Transaction set specifications can be enormous, boring, and vague.
@@ -232,7 +244,7 @@ Perform validation on a file
232
244
  require "stupidedi"
233
245
 
234
246
  # You can customize this to delegate to your own grammar definitions, if needed.
235
- config = Stupidedi::Config.default
247
+ config = Stupidedi::Config.hipaa
236
248
 
237
249
  b = Stupidedi::Builder::BuilderDsl.build(config)
238
250
 
@@ -301,7 +313,7 @@ end
301
313
  ```ruby
302
314
  require "stupidedi"
303
315
 
304
- config = Stupidedi::Config.default
316
+ config = Stupidedi::Config.hipaa
305
317
  parser = Stupidedi::Builder::StateMachine.build(config)
306
318
 
307
319
  input = if RUBY_VERSION > "1.8"
data/bin/edi-pp CHANGED
@@ -8,10 +8,7 @@ GC.disable
8
8
  # This will be auto-enabled when $stdout.tty?, but -C forces color output
9
9
  require "term/ansicolor" if ARGV.delete("-C")
10
10
 
11
- # config = Stupidedi::Config.default
12
- # config = Stupidedi::Config.contrib
13
- config = Stupidedi::Config.hipaa
14
-
11
+ config = Stupidedi::Config.contrib(Stupidedi::Config.hipaa(Stupidedi::Config.default))
15
12
  parser = Stupidedi::Builder::StateMachine.build(config)
16
13
  start = Time.now
17
14
  nondet = ARGV.delete('-N')
@@ -31,7 +28,7 @@ stop = Time.now
31
28
 
32
29
  parser.zipper.map{|z| pp z.root.node }.explain do
33
30
  # Multiple parse trees (non-deterministic state)
34
- unless nondet
31
+ unless nondet
35
32
  puts "Non-deterministic state"
36
33
  else
37
34
  puts "Non-deterministic states (#{parser.active.length}):"
@@ -49,7 +46,7 @@ begin
49
46
  a = parser.first
50
47
  b = parser.last
51
48
 
52
- a.flatmap{|a| b.flatmap{|b| a.distance(b) }}.
49
+ a.flatmap{|a1| b.flatmap{|b1| a1.distance(b1) }}.
53
50
  tap{|d| puts "#{d + 1} segments" }
54
51
  end
55
52
 
@@ -24,6 +24,10 @@ module Stupidedi
24
24
  Reader::SegmentDict.empty)
25
25
  end
26
26
 
27
+ def respond_to_missing?(name, include_private = false)
28
+ SEGMENT_ID =~ name.to_s || super
29
+ end
30
+
27
31
  def strict?
28
32
  @strict
29
33
  end
@@ -9,9 +9,9 @@ module Stupidedi
9
9
  reader = reader.read_segment
10
10
 
11
11
  while reader.defined?
12
- reader = reader.flatmap do |segment_tok, reader|
12
+ reader = reader.flatmap do |segment_tok, reader1|
13
13
  machine, reader =
14
- machine.insert(segment_tok, reader)
14
+ machine.insert(segment_tok, reader1)
15
15
 
16
16
  reader.read_segment
17
17
  end
@@ -86,8 +86,8 @@ module Stupidedi
86
86
  if element_use.simple?
87
87
  if element_use.repeatable?
88
88
  element_toks = element_tok.element_toks
89
- element_vals = element_toks.map do |element_tok|
90
- mksimple(designator, element_use, element_tok)
89
+ element_vals = element_toks.map do |element_tok1|
90
+ mksimple(designator, element_use, element_tok1)
91
91
  end
92
92
 
93
93
  mkrepeated(designator, element_use, element_vals)
@@ -97,8 +97,8 @@ module Stupidedi
97
97
  else
98
98
  if element_use.repeatable?
99
99
  element_toks = element_tok.element_toks
100
- element_vals = element_toks.map do |element_tok|
101
- mkcomposite(designator, element_use, element_tok)
100
+ element_vals = element_toks.map do |element_tok1|
101
+ mkcomposite(designator, element_use, element_tok1)
102
102
  end
103
103
 
104
104
  mkrepeated(designator, element_use, element_vals)
@@ -126,6 +126,7 @@ module Stupidedi
126
126
  x.register("004010", "SH", "856") { Stupidedi::Contrib::FortyTen::TransactionSetDefs::SH856 }
127
127
  x.register("004010", "SQ", "866") { Stupidedi::Contrib::FortyTen::TransactionSetDefs::SQ866 }
128
128
  x.register("004010", "FA", "997") { Stupidedi::Contrib::FortyTen::TransactionSetDefs::FA997 }
129
+ x.register("004010", "SC", "832") { Stupidedi::Contrib::FortyTen::TransactionSetDefs::SC832 }
129
130
 
130
131
  x.register("002001", "SH", "856") { Stupidedi::Contrib::TwoThousandOne::TransactionSetDefs::SH856 }
131
132
  x.register("002001", "PO", "830") { Stupidedi::Contrib::TwoThousandOne::TransactionSetDefs::PO830 }
@@ -134,6 +135,7 @@ module Stupidedi
134
135
  x.register("003010", "RA", "820") { Stupidedi::Contrib::ThirtyTen::TransactionSetDefs::RA820 }
135
136
  x.register("003010", "PO", "850") { Stupidedi::Contrib::ThirtyTen::TransactionSetDefs::PO850 }
136
137
  x.register("003010", "PC", "860") { Stupidedi::Contrib::ThirtyTen::TransactionSetDefs::PC860 }
138
+ x.register("003010", "PS", "830") { Stupidedi::Contrib::ThirtyTen::TransactionSetDefs::PS830 }
137
139
 
138
140
  x.register("003040", "WA", "142") { Stupidedi::Contrib::ThirtyForty::TransactionSetDefs::WA142 }
139
141
 
@@ -14,7 +14,7 @@ module Stupidedi
14
14
  autoload :RA820, "stupidedi/contrib/003010/guides/RA820"
15
15
  autoload :PO850, "stupidedi/contrib/003010/guides/PO850"
16
16
  autoload :PC860, "stupidedi/contrib/003010/guides/PC860"
17
-
17
+ autoload :PS830, "stupidedi/contrib/003010/guides/PS830"
18
18
  end
19
19
  end
20
20
  end
@@ -40,6 +40,8 @@ module Stupidedi
40
40
  b::Element(e::Required, "Shipment Method of Payment", b::Values("DE")),
41
41
  b::Element(e::Situational, "Location Qualifier", b::Values("AC")),
42
42
  b::Element(e::Situational, "Description"),
43
+ b::Element(e::NotUsed, "Unknown"),
44
+ b::Element(e::NotUsed, "Unknown"),
43
45
  b::Element(e::Situational, "Location Qualifier"),
44
46
  b::Element(e::Situational, "Description - Postal Code")),
45
47
 
@@ -66,6 +68,9 @@ module Stupidedi
66
68
 
67
69
  b::Segment(240, s::TD5, "Carrier Details (Routing Sequence/Transit Time)",
68
70
  r::Situational, d::RepeatCount.bounded(2),
71
+ b::Element(e::NotUsed, "Unknown"),
72
+ b::Element(e::NotUsed, "Unknown"),
73
+ b::Element(e::NotUsed, "Unknown"),
69
74
  b::Element(e::Required, "Transportation Method/Type Code", b::Values("A","AE","M","PG","R","RR","SE","SS")),
70
75
  b::Element(e::Required, "Routing - Carrier's Name")),
71
76
 
@@ -98,9 +103,9 @@ module Stupidedi
98
103
  r::Situational, d::RepeatCount.bounded(1000),
99
104
  b::Element(e::Required, "Free-Form Message Text"))),
100
105
 
101
- d::LoopDef.build("N1", d::RepeatCount.bounded(200),
106
+ d::LoopDef.build("N1", d::RepeatCount.bounded(1),
102
107
  b::Segment(300, s::N1, "Name",
103
- r::Situational, d::RepeatCount.bounded(1),
108
+ r::Situational, d::RepeatCount.bounded(2),
104
109
  b::Element(e::Required, "Entity Identifier Code", b::Values("BT","MP")),
105
110
  b::Element(e::Situational, "Name")),
106
111
 
@@ -0,0 +1,198 @@
1
+ module Stupidedi
2
+ module Contrib
3
+ module ThirtyTen
4
+ module Guides
5
+
6
+ b = GuideBuilder
7
+ d = Schema
8
+ r = SegmentReqs
9
+ e = ElementReqs
10
+ s = Versions::FunctionalGroups::ThirtyTen::SegmentDefs
11
+ # s = Versions::FunctionalGroups::FortyTen::SegmentDefs
12
+ t = Contrib::ThirtyTen::TransactionSetDefs
13
+ #t = Contrib::FortyTen::TransactionSetDefs
14
+ #
15
+ # 830 Planning Schedule with Release Capability
16
+ #
17
+ PS830 = b.build(t::PS830,
18
+ d::TableDef.header("Header",
19
+ b::Segment(10, s:: ST, "Transaction Set Header",
20
+ r::Required, d::RepeatCount.bounded(1),
21
+ b::Element(e::Required, "Transaction Set Identifier Code", b::Values("830")),
22
+ b::Element(e::Required, "Transaction Set Control Number")),
23
+ b::Segment(20, s::BFR, "Beginning Segment for Planning Schedule",
24
+ r::Required, d::RepeatCount.bounded(1),
25
+ b::Element(e::Required, "Transaction Set Purpose Code", b::Values("00")),
26
+ b::Element(e::Situational, "Reference Number NNA Release Period"),
27
+ b::Element(e::Situational, "Release Number"),
28
+ b::Element(e::Required, "Schedule Type Qualifier", b::Values("DL")),
29
+ b::Element(e::Required, "Schedule Quantity Qualifier", b::Values("A")),
30
+ b::Element(e::Required, "Date - Beginning Date"),
31
+ b::Element(e::Required, "Date - Ending Date"),
32
+ b::Element(e::Required, "Date - Release Create Date"))),
33
+
34
+ d::TableDef.header("Detail",
35
+ d::LoopDef.build("N1 - LOOP1", d::RepeatCount.bounded(200),
36
+ b::Segment(90, s:: N1, "Name - Nissan Analyst",
37
+ r::Situational, d::RepeatCount.bounded(1),
38
+ b::Element(e::Required, "Entity Identifier Code", b::Values("MI")),
39
+ b::Element(e::Situational, "Identification Code Qualifier", b::Values("Nissan")),
40
+ b::Element(e::Situational, "Identification Code Qualifier"),
41
+ b::Element(e::Situational, "Identification Code - Supplier Code")),
42
+ b::Segment( 140, s::PER, "Administrative Communications Contact - Nissan Release Sr Analyst",
43
+ r::Situational, d::RepeatCount.bounded(3),
44
+ b::Element(e::Required, "Contact Function Code", b::Values("OD")),
45
+ b::Element(e::Situational, "Name - PER02"),
46
+ b::Element(e::Situational, "Communication Number Qualifier", b::Values("TE")),
47
+ b::Element(e::Situational, "Communication Number"),
48
+ b::Element(e::NotUsed, "PER05"),
49
+ b::Element(e::NotUsed, "PER06"),
50
+ b::Element(e::NotUsed, "PER07"),
51
+ b::Element(e::NotUsed, "PER08"),
52
+ b::Element(e::NotUsed, "PER09"))),
53
+
54
+ d::LoopDef.build("LIN", d::RepeatCount.bounded(10000),
55
+ b::Segment( 010, s::LIN, "Item Identification",
56
+ r::Required, d::RepeatCount.bounded(1),
57
+ b::Element(e::NotUsed, "LIN01"),
58
+ b::Element(e::Required, "Product/Service ID Qualifier - LIN02", b::Values("VP")),
59
+ b::Element(e::Required, "Product/Service ID - NNA Part Number"),
60
+ b::Element(e::Situational, "Product/Service ID Qualifier - LIN04", b::Values("PO")),
61
+ b::Element(e::Situational, "Product/Service ID - NNA PO Number"),
62
+ b::Element(e::NotUsed, "LIN06"),
63
+ b::Element(e::NotUsed, "LIN07"),
64
+ b::Element(e::NotUsed, "LIN08"),
65
+ b::Element(e::NotUsed, "LIN09"),
66
+ b::Element(e::NotUsed, "LIN10"),
67
+ b::Element(e::NotUsed, "LIN11"),
68
+ b::Element(e::NotUsed, "LIN12"),
69
+ b::Element(e::NotUsed, "LIN13"),
70
+ b::Element(e::NotUsed, "LIN14"),
71
+ b::Element(e::NotUsed, "LIN15"),
72
+ b::Element(e::NotUsed, "LIN16"),
73
+ b::Element(e::NotUsed, "LIN17"),
74
+ b::Element(e::NotUsed, "LIN18"),
75
+ b::Element(e::NotUsed, "LIN19"),
76
+ b::Element(e::NotUsed, "LIN20"),
77
+ b::Element(e::NotUsed, "LIN21"),
78
+ b::Element(e::NotUsed, "LIN22"),
79
+ b::Element(e::NotUsed, "LIN23"),
80
+ b::Element(e::NotUsed, "LIN24"),
81
+ b::Element(e::NotUsed, "LIN25"),
82
+ b::Element(e::NotUsed, "LIN26"),
83
+ b::Element(e::NotUsed, "LIN27"),
84
+ b::Element(e::NotUsed, "LIN28"),
85
+ b::Element(e::NotUsed, "LIN29"),
86
+ b::Element(e::NotUsed, "LIN30"),
87
+ b::Element(e::NotUsed, "LIN31")),
88
+ b::Segment( 020, s::UIT, "Unit of Measure",
89
+ r::Required, d::RepeatCount.bounded(1),
90
+ b::Element(e::Required, "Unit or Basis for Measurement Code", b::Values("LB"))),
91
+ b::Segment( 80, s::PID, "Product/Item Description",
92
+ r::Situational, d::RepeatCount.bounded(1000),
93
+ b::Element(e::Required, "Item Description Type", b::Values("F")),
94
+ b::Element(e::Situational, "Product/Process Characteristic Code", b::Values("9B")),
95
+ b::Element(e::NotUsed, "PID03"),
96
+ b::Element(e::NotUsed, "PID04"),
97
+ b::Element(e::Situational, "Description - Part Description")),
98
+ b::Segment(90, s:: N1, "Name - Nissan Analyst",
99
+ r::Situational, d::RepeatCount.bounded(1),
100
+ b::Element(e::Required, "Entity Identifier Code", b::Values("MI")),
101
+ b::Element(e::Situational, "Identification Code Qualifier", b::Values("Nissan")),
102
+ b::Element(e::Situational, "Identification Code Qualifier"),
103
+ b::Element(e::Situational, "Identification Code - Supplier Code")),
104
+ b::Segment( 290, s::SDP, "Ship/Delivery Pattern",
105
+ r::Required, d::RepeatCount.bounded(1),
106
+ b::Element(e::Required, "Ship/Delivery or Calendar Pattern Code", b::Values("Y")),
107
+ b::Element(e::Required, "Ship/Delivery Pattern Time Code", b::Values("Y"))),
108
+
109
+ # d::LoopDef.build("NTE", d::RepeatCount.bounded(260),
110
+ # b::Segment(400, s::NTE, "Note/Special Instruction",
111
+ # r::Situational, d::RepeatCount.bounded(1),
112
+ # b::Element(e::Situational, "Note Reference Code", b::Values("GEN", "LIN")),
113
+ # b::Element(e::Situational, "Free Form Text"))),
114
+ b::Segment( 300, s::FST, "Forecast Schedule",
115
+ r::Situational, d::RepeatCount.bounded(1),
116
+ b::Element(e::Required, "Quantity"),
117
+ b::Element(e::Required, "Forecast Qualifier", b::Values("C","D")),
118
+ b::Element(e::Required, "Forecast Timing Qualifier", b::Values("D")),
119
+ b::Element(e::Required, "Date - Scheduled Usage Date"),
120
+ b::Element(e::NotUsed, "FST05"),
121
+ b::Element(e::Situational, "Date/Time Qualifier", b::Values("002")),
122
+ b::Element(e::Situational, "Time - Delivery Requested Time"),
123
+ b::Element(e::Situational, "Reference Number Qualifier", b::Values("DO")),
124
+ b::Element(e::Situational, "Reference Number - Customer Assigned Order Number")),
125
+
126
+ # d::LoopDef.build("SHP", d::RepeatCount.bounded(1),
127
+ # b::Segment( 301, s::FST, "Forecast Schedule - LAST",
128
+ # r::Situational, d::RepeatCount.bounded(1),
129
+ # b::Element(e::Required, "Quantity"),
130
+ # b::Element(e::Required, "Forecast Qualifier", b::Values("C","D")),
131
+ # b::Element(e::Required, "Forecast Timing Qualifier", b::Values("D")),
132
+ # b::Element(e::Required, "Date - Scheduled Usage Date"),
133
+ # b::Element(e::NotUsed, "FST05"),
134
+ # b::Element(e::Situational, "Date/Time Qualifier", b::Values("002")),
135
+ # b::Element(e::Situational, "Time - Delivery Requested Time"),
136
+ # b::Element(e::Situational, "Reference Number Qualifier", b::Values("DO")),
137
+ # b::Element(e::Situational, "Reference Number - Customer Assigned Order Number")),
138
+ # b::Segment(470, s::SHP, "Shipped/Received Information",
139
+ # r::Situational, d::RepeatCount.bounded(1),
140
+ # b::Element(e::Situational, "Quantity Qualifier", b::Values("02")),
141
+ # b::Element(e::Situational, "Quantity"),
142
+ # b::Element(e::Situational, "Date/Time Qualifier", b::Values("011")),
143
+ # b::Element(e::Situational, "Date"))),
144
+
145
+ b::Segment(390, s::MAN, "Marks and Numbers",
146
+ r::Situational, d::RepeatCount.bounded(10),
147
+ b::Element(e::Required, "Marks and Numbers Qualifier", b::Values("PB")),
148
+ b::Element(e::Required, "Marks and Numbers")))),
149
+
150
+ # d::LoopDef.build("FST", d::RepeatCount.bounded(1),
151
+ # b::Segment( 301, s::FST, "Forecast Schedule - LAST",
152
+ # r::Situational, d::RepeatCount.bounded(1),
153
+ # b::Element(e::Required, "Quantity"),
154
+ # b::Element(e::Required, "Forecast Qualifier", b::Values("C","D")),
155
+ # b::Element(e::Required, "Forecast Timing Qualifier", b::Values("D")),
156
+ # b::Element(e::Required, "Date - Scheduled Usage Date"),
157
+ # b::Element(e::NotUsed, "FST05"),
158
+ # b::Element(e::Situational, "Date/Time Qualifier", b::Values("002")),
159
+ # b::Element(e::Situational, "Time - Delivery Requested Time"),
160
+ # b::Element(e::Situational, "Reference Number Qualifier", b::Values("DO")),
161
+ # b::Element(e::Situational, "Reference Number - Customer Assigned Order Number")),
162
+ # b::Segment(470, s::SHP, "Shipped/Received Information",
163
+ # r::Situational, d::RepeatCount.bounded(1),
164
+ # b::Element(e::Situational, "Quantity Qualifier", b::Values("02")),
165
+ # b::Element(e::Situational, "Quantity"),
166
+ # b::Element(e::Situational, "Date/Time Qualifier", b::Values("011")),
167
+ # b::Element(e::Situational, "Date")))),
168
+
169
+ d::TableDef.header("Summary",
170
+ # b::Segment( 301, s::FST, "Forecast Schedule - LAST",
171
+ # r::Required, d::RepeatCount.bounded(1),
172
+ # b::Element(e::Required, "Quantity"),
173
+ # b::Element(e::Required, "Forecast Qualifier", b::Values("C","D")),
174
+ # b::Element(e::Required, "Forecast Timing Qualifier", b::Values("D")),
175
+ # b::Element(e::Required, "Date - Scheduled Usage Date"),
176
+ # b::Element(e::NotUsed, "FST05"),
177
+ # b::Element(e::Situational, "Date/Time Qualifier", b::Values("002")),
178
+ # b::Element(e::Situational, "Time - Delivery Requested Time"),
179
+ # b::Element(e::Situational, "Reference Number Qualifier", b::Values("DO")),
180
+ # b::Element(e::Situational, "Reference Number - Customer Assigned Order Number")),
181
+ b::Segment(010, s::CTT, "Transaction Totals",
182
+ r::Required, d::RepeatCount.bounded(1),
183
+ b::Element(e::Required, "Number of Line Items"),
184
+ b::Element(e::Situational, "Hash Total"),
185
+ b::Element(e::NotUsed, "CTT03"),
186
+ b::Element(e::NotUsed, "CTT04"),
187
+ b::Element(e::NotUsed, "CTT05"),
188
+ b::Element(e::NotUsed, "CTT06"),
189
+ b::Element(e::NotUsed, "CTT07")),
190
+ b::Segment(020, s:: SE, "Transaction Set Trailer",
191
+ r::Required, d::RepeatCount.bounded(1),
192
+ b::Element(e::Required, "Number of Included Segments"),
193
+ b::Element(e::Required, "Transaction Set Control Number"))))
194
+
195
+ end
196
+ end
197
+ end
198
+ end
@@ -24,6 +24,13 @@ module Stupidedi
24
24
  b::Element(e::Required, "Payment Method Code", b::Values("PBC")),
25
25
  b::Element(e::Required, "Monetary Amount"),
26
26
  b::Element(e::Required, "Transaction Handling Code", b::Values("I")),
27
+ b::Element(e::NotUsed, "Unknown")),
28
+ b::Element(e::NotUsed, "Unknown")),
29
+ b::Element(e::NotUsed, "Unknown")),
30
+ b::Element(e::NotUsed, "Unknown")),
31
+ b::Element(e::NotUsed, "Unknown")),
32
+ b::Element(e::NotUsed, "Unknown")),
33
+ b::Element(e::NotUsed, "Unknown")),
27
34
  b::Element(e::Situational, "Account Number - Supplier Number"),
28
35
  b::Element(e::Situational, "Effective Entry Date - Issue Date")),
29
36
  b::Segment(50, s::REF, "Reference Numbers",
@@ -15,6 +15,9 @@ module Stupidedi
15
15
  autoload :PC860, # Purchase Order Change
16
16
  "stupidedi/contrib/003010/transaction_set_defs/PC860"
17
17
 
18
+ autoload :PS830, # Planning Schedule with Release Capability
19
+ "stupidedi/contrib/003010/transaction_set_defs/PS830"
20
+
18
21
  end
19
22
  end
20
23
  end
@@ -21,7 +21,7 @@ module Stupidedi
21
21
  s::MSG.use( 290, r::Optional, d::RepeatCount.bounded(1000))),
22
22
 
23
23
  d::LoopDef.build("N1", d::RepeatCount.bounded(1),
24
- s:: N1.use( 300, r::Optional, d::RepeatCount.bounded(1)),
24
+ s:: N1.use( 300, r::Optional, d::RepeatCount.bounded(2)),
25
25
  s:: N2.use( 310, r::Optional, d::RepeatCount.bounded(1)),
26
26
  s:: N3.use( 320, r::Optional, d::RepeatCount.bounded(1)),
27
27
  s:: N4.use( 330, r::Optional, d::RepeatCount.bounded(1)))),
@@ -0,0 +1,56 @@
1
+ module Stupidedi
2
+ module Contrib
3
+ module ThirtyTen
4
+ module TransactionSetDefs
5
+ d = Schema
6
+ r = SegmentReqs
7
+ s = SegmentDefs
8
+
9
+ PS830 = d::TransactionSetDef.build("PS", "830", "Planning Schedule with Release Capability",
10
+
11
+ d::TableDef.header("Table 1 - Header",
12
+ s:: ST.use( 10, r::Mandatory, d::RepeatCount.bounded(1)),
13
+ s::BFR.use( 20, r::Mandatory, d::RepeatCount.bounded(1)),
14
+
15
+ d::LoopDef.build("N1", d::RepeatCount.bounded(200),
16
+ s:: N1.use( 90, r::Optional, d::RepeatCount.bounded(1)),
17
+ s::PER.use( 140, r::Optional, d::RepeatCount.bounded(3)))),
18
+
19
+ d::TableDef.detail("Table 2 - Detail",
20
+ d::LoopDef.build("LIN", d::RepeatCount.bounded(10000),
21
+ s::LIN.use( 010, r::Mandatory, d::RepeatCount.bounded(1)),
22
+ s::UIT.use( 020, r::Mandatory, d::RepeatCount.bounded(1)),
23
+ s::PID.use( 80, r::Optional, d::RepeatCount.bounded(1)),
24
+ s:: N1.use( 90, r::Optional, d::RepeatCount.bounded(1)),
25
+ s::MAN.use( 280, r::Optional, d::RepeatCount.bounded(10)),
26
+
27
+ # d::LoopDef.build("FST", d::RepeatCount.bounded(10000),
28
+ # s::FST.use( 410, r::Optional, d::RepeatCount.bounded(1)),
29
+ # s::NTE.use( 400, r::Optional, d::RepeatCount.bounded(100))),
30
+
31
+ d::LoopDef.build("SDP", d::RepeatCount.bounded(260),
32
+ s::SDP.use( 290, r::Optional, d::RepeatCount.bounded(1)),
33
+ # d::LoopDef.build("NTE", d::RepeatCount.unbounded,
34
+ # s::NTE.use( 400, r::Optional, d::RepeatCount.unbounded)),
35
+ s::FST.use( 410, r::Optional, d::RepeatCount.unbounded)),
36
+
37
+ d::LoopDef.build("SHP", d::RepeatCount.bounded(25),
38
+ s::SHP.use( 480, r::Optional, d::RepeatCount.bounded(1)),
39
+ s::REF.use( 460, r::Optional, d::RepeatCount.bounded(5))))),
40
+
41
+ # s::MAN.use( 390, r::Optional, d::RepeatCount.bounded(10)))),
42
+
43
+ # d::LoopDef.build("FST", d::RepeatCount.bounded(1),
44
+ # # s::FST.use( 301, r::Optional, d::RepeatCount.bounded(1)),
45
+ # s::SHP.use( 470, r::Optional, d::RepeatCount.bounded(1)))),
46
+
47
+ d::TableDef.summary("Table 3 - Summary",
48
+ # s::FST.use(301, r::Mandatory, d::RepeatCount.bounded(1)),
49
+ s::CTT.use(010, r::Mandatory, d::RepeatCount.bounded(1)),
50
+ s:: SE.use(020, r::Mandatory, d::RepeatCount.bounded(1))))
51
+
52
+
53
+ end
54
+ end
55
+ end
56
+ end