stupidedi 1.2.2 → 1.2.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +15 -3
- data/bin/edi-pp +3 -6
- data/lib/stupidedi/builder/builder_dsl.rb +4 -0
- data/lib/stupidedi/builder/generation.rb +2 -2
- data/lib/stupidedi/builder/states/abstract_state.rb +4 -4
- data/lib/stupidedi/config.rb +2 -0
- data/lib/stupidedi/contrib/003010/guides.rb +1 -1
- data/lib/stupidedi/contrib/003010/guides/PC860.rb +7 -2
- data/lib/stupidedi/contrib/003010/guides/PS830.rb +198 -0
- data/lib/stupidedi/contrib/003010/guides/RA820.rb +7 -0
- data/lib/stupidedi/contrib/003010/transaction_set_defs.rb +3 -0
- data/lib/stupidedi/contrib/003010/transaction_set_defs/PC860.rb +1 -1
- data/lib/stupidedi/contrib/003010/transaction_set_defs/PS830.rb +56 -0
- data/lib/stupidedi/contrib/003040/guides/WA142.rb +1 -0
- data/lib/stupidedi/contrib/004010/guides/PO850.rb +27 -1
- data/lib/stupidedi/contrib/004010/transaction_set_defs.rb +3 -0
- data/lib/stupidedi/contrib/004010/transaction_set_defs/PO850.rb +9 -1
- data/lib/stupidedi/contrib/004010/transaction_set_defs/SC832.rb +44 -0
- data/lib/stupidedi/schema/segment_def.rb +9 -1
- data/lib/stupidedi/schema/syntax_note.rb +0 -4
- data/lib/stupidedi/version.rb +1 -1
- data/lib/stupidedi/versions/functional_groups/002001/element_defs.rb +1 -1
- data/lib/stupidedi/versions/functional_groups/002001/element_types/identifier_val.rb +6 -6
- data/lib/stupidedi/versions/functional_groups/002001/segment_defs/MEA.rb +8 -9
- data/lib/stupidedi/versions/functional_groups/003010/element_defs.rb +57 -1
- data/lib/stupidedi/versions/functional_groups/003010/segment_defs.rb +14 -0
- data/lib/stupidedi/versions/functional_groups/003010/segment_defs/BFR.rb +40 -0
- data/lib/stupidedi/versions/functional_groups/003010/segment_defs/BPS.rb +8 -1
- data/lib/stupidedi/versions/functional_groups/003010/segment_defs/CTT.rb +2 -2
- data/lib/stupidedi/versions/functional_groups/003010/segment_defs/FOB.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/003010/segment_defs/FST.rb +31 -0
- data/lib/stupidedi/versions/functional_groups/003010/segment_defs/MEA.rb +8 -9
- data/lib/stupidedi/versions/functional_groups/003010/segment_defs/N1.rb +3 -9
- data/lib/stupidedi/versions/functional_groups/003010/segment_defs/SDP.rb +21 -0
- data/lib/stupidedi/versions/functional_groups/003010/segment_defs/SHP.rb +22 -0
- data/lib/stupidedi/versions/functional_groups/003010/segment_defs/TD5.rb +3 -0
- data/lib/stupidedi/versions/functional_groups/003010/segment_defs/UIT.rb +20 -0
- data/lib/stupidedi/versions/functional_groups/003040/segment_defs/MEA.rb +8 -9
- data/lib/stupidedi/versions/functional_groups/003040/segment_defs/PRR.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/003040/segment_defs/SSS.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/003050/segment_defs/MEA.rb +8 -9
- data/lib/stupidedi/versions/functional_groups/004010/element_defs.rb +14 -7
- data/lib/stupidedi/versions/functional_groups/004010/segment_defs.rb +9 -0
- data/lib/stupidedi/versions/functional_groups/004010/segment_defs/BCT.rb +19 -0
- data/lib/stupidedi/versions/functional_groups/004010/segment_defs/BFR.rb +1 -0
- data/lib/stupidedi/versions/functional_groups/004010/segment_defs/CTP.rb +36 -0
- data/lib/stupidedi/versions/functional_groups/004010/segment_defs/SCH.rb +28 -0
- data/lib/stupidedi/versions/functional_groups/005010/element_defs.rb +1 -1
- data/lib/stupidedi/versions/interchanges/00200/element_defs.rb +2 -2
- data/lib/stupidedi/versions/interchanges/00200/segment_defs/ISA.rb +2 -2
- data/lib/stupidedi/versions/interchanges/00300/segment_defs/ISA.rb +2 -2
- data/lib/stupidedi/zipper/abstract_cursor.rb +4 -4
- data/spec/examples/integration/generating.example +10 -0
- data/spec/examples/stupidedi/reader/token_reader.example +1 -1
- data/spec/fixtures/SC832/1-good.txt +22 -0
- data/spec/fixtures/SC832/2-good.txt +1067 -0
- metadata +16 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2093ddba04d861a92064a74df14c6c950f29b54d
|
4
|
+
data.tar.gz: d94a09d05a3d2f5c21cec4309e4cb3f72124ad6d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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.
|
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.
|
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
|
-
|
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{|
|
49
|
+
a.flatmap{|a1| b.flatmap{|b1| a1.distance(b1) }}.
|
53
50
|
tap{|d| puts "#{d + 1} segments" }
|
54
51
|
end
|
55
52
|
|
@@ -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,
|
12
|
+
reader = reader.flatmap do |segment_tok, reader1|
|
13
13
|
machine, reader =
|
14
|
-
machine.insert(segment_tok,
|
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 |
|
90
|
-
mksimple(designator, element_use,
|
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 |
|
101
|
-
mkcomposite(designator, element_use,
|
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)
|
data/lib/stupidedi/config.rb
CHANGED
@@ -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(
|
106
|
+
d::LoopDef.build("N1", d::RepeatCount.bounded(1),
|
102
107
|
b::Segment(300, s::N1, "Name",
|
103
|
-
r::Situational, d::RepeatCount.bounded(
|
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(
|
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
|