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.
- 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
|
-
[](http://travis-ci.org/kputnam/stupidedi) [](https://gemnasium.com/irobayna/stupidedi) [](http://badge.fury.io/gh/kputnam%2Fstupidedi) [](https://codeclimate.com/github/kputnam/stupidedi)
|
2
|
+
[](http://travis-ci.org/kputnam/stupidedi) [](https://gemnasium.com/irobayna/stupidedi) [](http://badge.fury.io/gh/kputnam%2Fstupidedi) [](https://codeclimate.com/github/kputnam/stupidedi) [](http://inch-ci.org/github/kputnam/stupidedi)
|
3
3
|
|
4
4
|

|
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
|