Module: Stupidedi::Contrib::ThirtyTen::Guides

Defined in:
lib/stupidedi/contrib/003010/guides.rb,
lib/stupidedi/contrib/003010/guides/PC860.rb,
lib/stupidedi/contrib/003010/guides/PO850.rb,
lib/stupidedi/contrib/003010/guides/PS830.rb

Constant Summary collapse

GuideBuilder =

GuideBuilder = Stupidedi::Guides::TwoThousandOne::GuideBuilder SegmentReqs = Stupidedi::Guides::TwoThousandOne::SegmentReqs ElementReqs = Stupidedi::Guides::TwoThousandOne::ElementReqs

Stupidedi::Guides::FortyTen::GuideBuilder
SegmentReqs =
Stupidedi::Guides::FortyTen::SegmentReqs
ElementReqs =
Stupidedi::Guides::FortyTen::ElementReqs
PC860 =

Ship Notice/Manifest

b.build(t::PC860,
          d::TableDef.header("Heading",
            b::Segment(10, s:: ST, "Transaction Set Header",
r::Required, d::RepeatCount.bounded(1),
b::Element(e::Required,    "Transaction Set Identifier Code", b::Values("850")),
b::Element(e::Required,    "Transaction Set Control Number")),

            b::Segment(20, s::BCH, "Beginning Segment for Purchase Order Change",
r::Required, d::RepeatCount.bounded(1),
b::Element(e::Required,    "Transaction Set Purpose Code", b::Values("00","05","18")),
b::Element(e::Required,    "Purchase Order Type Code", b::Values("BE","BK","SP")),
b::Element(e::Required,    "Purchase Order Number"),
b::Element(e::NotUsed,     "Unknown"),
b::Element(e::Situational, "Change Order Sequence Number"),
b::Element(e::Situational, "Purchase Order Date")),

            b::Segment(40, s::CUR, "Currency",
r::Situational, d::RepeatCount.bounded(1),
b::Element(e::Required,    "Entity Identifier Code", b::Values("BY")),
b::Element(e::Required,    "Currency Code", b::Values("USD")),
b::Element(e::Situational, "Exchange Rate")),

            b::Segment(80, s::FOB, "F.O.B. Related Instructions",
r::Situational, d::RepeatCount.bounded(1),
b::Element(e::Required,    "Shipment Method of Payment", b::Values("DE")),
b::Element(e::Situational, "Location Qualifier", b::Values("AC")),
b::Element(e::Situational, "Description"),
b::Element(e::NotUsed,     "Unknown"),
b::Element(e::NotUsed,     "Unknown"),
b::Element(e::Situational, "Location Qualifier"),
b::Element(e::Situational, "Description - Postal Code")),

            b::Segment(130, s::ITD, "Terms of Sale/Deferred Terms of Sale",
r::Situational, d::RepeatCount.bounded(5),
b::Element(e::Situational, "Terms Type Code", b::Values("09","10","30")),
b::Element(e::Situational, "Terms Basis Date Code", b::Values("AA","AB","AE","NS","OR","TB","TD","TP")),
b::Element(e::Situational, "Terms Discount Percent"),
b::Element(e::Situational, "Terms Discount Due Date"),
b::Element(e::Situational, "Terms Discount Days Due"),
b::Element(e::Situational, "Terms Net Due Date"),
b::Element(e::Situational, "Terms Net Days"),
b::Element(e::Situational, "Terms Discount Amount"),
b::Element(e::Situational, "Terms Deferred Due Date"),
b::Element(e::Situational, "Deferred Amount Due"),
b::Element(e::Situational, "Percent of Invoice Payable"),
b::Element(e::Situational, "Description - Freight FOB Terms"),
b::Element(e::Situational, "Day of Month")),

            b::Segment(150, s::DTM, "Date/Time/Period",
r::Situational, d::RepeatCount.bounded(2),
b::Element(e::Required,    "Date/Time Qualifier", b::Values("007","036")),
b::Element(e::Required,    "Date")),

            b::Segment(240, s::TD5, "Carrier Details (Routing Sequence/Transit Time)",
r::Situational, d::RepeatCount.bounded(2),
b::Element(e::NotUsed,     "Unknown"),
b::Element(e::NotUsed,     "Unknown"),
b::Element(e::NotUsed,     "Unknown"),
b::Element(e::Required,    "Transportation Method/Type Code", b::Values("A","AE","M","PG","R","RR","SE","SS")),
b::Element(e::Required,    "Routing - Carrier's Name")),

            d::LoopDef.build("N9", d::RepeatCount.bounded(1),
b::Segment(280, s:: N9, "Reference Number - Design Note Number",
  r::Situational, d::RepeatCount.bounded(1),
  b::Element(e::Required,    "Reference Number Qualifier", b::Values("C4")),
  b::Element(e::Situational, "Reference Number - Design Note Number"))),

            d::LoopDef.build("N9", d::RepeatCount.bounded(1),
b::Segment(281, s:: N9, "Reference Number - Supplier Code",
  r::Situational, d::RepeatCount.bounded(1),
  b::Element(e::Required,    "Reference Number Qualifier", b::Values("VR")),
  b::Element(e::Situational, "Reference Number"))),

            d::LoopDef.build("N9", d::RepeatCount.bounded(1),
b::Segment(282, s:: N9, "Reference Number - Business Type",
  r::Situational, d::RepeatCount.bounded(1),
  b::Element(e::Required,    "Reference Number Qualifier", b::Values("PG")),
  b::Element(e::Situational, "Reference Number - Business Type", b::Values("AC","AE","AS","BS","ER","ES","ET",
                             "GW","IS","MP","MT","ND","NS","NT","PR","RB","RC","RP","SD","SN","SP","ST","UK","VP")))),

            d::LoopDef.build("N9", d::RepeatCount.bounded(1),
b::Segment(283, s:: N9, "Reference Number",
  r::Situational, d::RepeatCount.bounded(1),
  b::Element(e::Required,    "Reference Number Qualifier", b::Values("CU")),
  b::Element(e::Situational, "Reference Number")),

b::Segment(290, s::MSG, "Message Text",
  r::Situational, d::RepeatCount.bounded(1000),
  b::Element(e::Required,    "Free-Form Message Text"))),

            d::LoopDef.build("N1", d::RepeatCount.bounded(1),
b::Segment(300, s::N1, "Name",
  r::Situational, d::RepeatCount.bounded(2),
  b::Element(e::Required,    "Entity Identifier Code", b::Values("BT","MP")),
  b::Element(e::Situational, "Name")),

b::Segment(310, s::N2, "Additional Name Information",
  r::Situational, d::RepeatCount.bounded(2),
  b::Element(e::Required,    "Name"),
  b::Element(e::Situational, "Name")),

b::Segment(320, s::N3, "Address Information",
  r::Situational, d::RepeatCount.bounded(2),
  b::Element(e::Required,    "Address Information"),
  b::Element(e::Situational, "Address Information")),

b::Segment(330, s::N4, "Geographic Location",
  r::Situational, d::RepeatCount.bounded(1),
  b::Element(e::Required,    "City Name"),
  b::Element(e::Situational, "State or Province Code"),
  b::Element(e::Situational, "Postal Code"),
  b::Element(e::NotUsed,     "Unknown")))),

          d::TableDef.detail("Detail",
            d::LoopDef.build("POC", d::RepeatCount.bounded(100000),
b::Segment(10, s::POC, "Line Item Change",
  r::Required, d::RepeatCount.bounded(1),
  b::Element(e::Situational, "Assigned Identification - Purchase Order Line Number"),
  b::Element(e::Required,    "Change or Response Type Code",b::Values("AI","CA","CB","CC","CD","NC","PC","QD","QI")),
  b::Element(e::Situational, "Quantity Ordered"),
  b::Element(e::Situational, "Quantity Left to Receive"),
  b::Element(e::Situational, "Unit or Basis for Measurement Code",b::Values("EA")),
  b::Element(e::Situational, "Unit Price"),
  b::Element(e::NotUsed,     "Unknown"),
  b::Element(e::Situational, "Product/Service ID Qualifier",b::Values("BP")),
  b::Element(e::Situational, "Product/Service ID - Nissan Part Number"),
  b::Element(e::Situational, "Product/Service ID Qualifier",b::Values("C4")),
  b::Element(e::Situational, "Product/Service ID - Design Note Number")),

d::LoopDef.build("PID", d::RepeatCount.bounded(1),
  b::Segment( 50, s::PID, "Product/Item Description",
    r::Situational, d::RepeatCount.bounded(1),
    b::Element(e::Required,    "Item Description Type", b::Values("F")),
    b::Element(e::NotUsed,     "Unknown"),
    b::Element(e::NotUsed,     "Unknown"),
    b::Element(e::NotUsed,     "Unknown"),
    b::Element(e::Situational, "Description"))),

d::LoopDef.build("N9", d::RepeatCount.bounded(1),
  b::Segment(320, s:: N9, "Reference Number - Clear Text Clause",
    r::Situational, d::RepeatCount.bounded(1),
    b::Element(e::Required,    "Reference Number Qualifier", b::Values("CU")),
    b::Element(e::NotUsed,     "Unknown")),

  b::Segment(330, s::MSG, "Message Text",
    r::Situational, d::RepeatCount.bounded(1000),
    b::Element(e::Required,    "Free-Form Message Text"))))),

          d::TableDef.header("Summary",
            b::Segment(10, s::CTT, "Transaction Totals",
r::Situational, d::RepeatCount.bounded(1),
b::Element(e::Required,    "Number of Line Items")),
            b::Segment(30, s::SE, "Transaction Set Trailer",
r::Required, d::RepeatCount.bounded(1),
b::Element(e::Required,    "Number of Included Segments"),
b::Element(e::Required,    "Transaction Set Control Number"))))
PO850 =

Ship Notice/Manifest

b.build(t::PO850,
          d::TableDef.header("Heading",
            b::Segment(10, s:: ST, "Transaction Set Header",
r::Required, d::RepeatCount.bounded(1),
b::Element(e::Required,    "Transaction Set Identifier Code", b::Values("850")),
b::Element(e::Required,    "Transaction Set Control Number")),

            b::Segment(20, s::BEG, "Beginning Segment for Purchase Order",
r::Required, d::RepeatCount.bounded(1),
b::Element(e::Required,    "Transaction Set Purpose Code", b::Values("00","05","18")),
b::Element(e::Required,    "Purchase Order Type Code", b::Values("BE","BK","SP")),
b::Element(e::Required,    "Purchase Order Number"),
b::Element(e::Situational, "Release Number - Purchase Order Sequence Number"),
b::Element(e::Situational, "Purchase Order Date")),

            b::Segment(40, s::CUR, "Currency",
r::Situational, d::RepeatCount.bounded(1),
b::Element(e::Required,    "Entity Identifier Code", b::Values("BY")),
b::Element(e::Required,    "Currency Code", b::Values("USD")),
b::Element(e::Situational, "Exchange Rate")),

            b::Segment(80, s::FOB, "F.O.B. Related Instructions",
r::Situational, d::RepeatCount.bounded(1),
b::Element(e::Required,    "Shipment Method of Payment", b::Values("DE")),
b::Element(e::Situational, "Location Qualifier", b::Values("AC")),
b::Element(e::Situational, "Description"),
b::Element(e::Situational, "Location Qualifier"),
b::Element(e::Situational, "Description")),

            b::Segment(130, s::ITD, "Terms of Sale/Deferred Terms of Sale",
r::Situational, d::RepeatCount.bounded(5),
b::Element(e::Situational, "Terms Type Code", b::Values("09","10","30")),
b::Element(e::Situational, "Terms Basis Date Code", b::Values("AA","AB","AE","NS","OR","TB","TD","TP")),
b::Element(e::Situational, "Terms Discount Percent"),
b::Element(e::Situational, "Terms Discount Due Date"),
b::Element(e::Situational, "Terms Discount Days Due"),
b::Element(e::Situational, "Terms Net Due Date"),
b::Element(e::Situational, "Terms Net Days"),
b::Element(e::Situational, "Terms Discount Amount"),
b::Element(e::Situational, "Terms Deferred Due Date"),
b::Element(e::Situational, "Deferred Amount Due"),
b::Element(e::Situational, "Percent of Invoice Payable"),
b::Element(e::Situational, "Description - Freight FOB Terms"),
b::Element(e::Situational, "Day of Month")),

            b::Segment(150, s::DTM, "Date/Time/Period",
r::Situational, d::RepeatCount.bounded(2),
b::Element(e::Required,    "Date/Time Qualifier", b::Values("007","036")),
b::Element(e::Required,    "Date")),

            b::Segment(240, s::TD5, "Carrier Details (Routing Sequence/Transit Time)",
r::Situational, d::RepeatCount.bounded(1),
b::Element(e::Required,    "Transportation Method/Type Code", b::Values("A","AE","M","PG","R","RR","SE","SS")),
b::Element(e::Required,    "Routing - Carrier's Name")),

            d::LoopDef.build("N9", d::RepeatCount.bounded(1),
b::Segment(290, s:: N9, "Reference Number - Design Note Number",
  r::Situational, d::RepeatCount.bounded(1),
  b::Element(e::Required,    "Reference Number Qualifier", b::Values("C4")),
  b::Element(e::Situational, "Reference Number - Design Note Number"))),

            d::LoopDef.build("N9", d::RepeatCount.bounded(1),
b::Segment(291, s:: N9, "Reference Number - Supplier Code",
  r::Situational, d::RepeatCount.bounded(1),
  b::Element(e::Required,    "Reference Number Qualifier", b::Values("VR")),
  b::Element(e::Situational, "Reference Number"))),

            d::LoopDef.build("N9", d::RepeatCount.bounded(1),
b::Segment(292, s:: N9, "Reference Number - Business Type",
  r::Situational, d::RepeatCount.bounded(1),
  b::Element(e::Required,    "Reference Number Qualifier", b::Values("PG")),
  b::Element(e::Situational, "Reference Number - Business Type", b::Values("AC","AE","AS","BS","ER","ES","ET",
      "GW","IS","MP","MT","ND","NS","NT","PR","RB","RC","RP","SD","SN","SP","ST","UK","VP")))),

            d::LoopDef.build("N9", d::RepeatCount.bounded(1),
b::Segment(330, s:: N9, "Reference Number",
  r::Situational, d::RepeatCount.bounded(1),
  b::Element(e::Required,    "Reference Number Qualifier", b::Values("CU")),
  b::Element(e::Situational, "Reference Number")),

b::Segment(340, s::MSG, "Message Text",
  r::Situational, d::RepeatCount.bounded(1000),
  b::Element(e::Required,    "Free-Form Message Text"))),

            d::LoopDef.build("N1", d::RepeatCount.bounded(200),
b::Segment(310, s::N1, "Reference Number",
  r::Situational, d::RepeatCount.bounded(1),
  b::Element(e::Required,    "Entity Identifier Code", b::Values("BT","MP")),
  b::Element(e::Situational, "Name")),

b::Segment(320, s::N2, "Additional Name Information",
  r::Situational, d::RepeatCount.bounded(2),
  b::Element(e::Required,    "Name"),
  b::Element(e::Situational, "Name")),

b::Segment(330, s::N3, "Address Information",
  r::Situational, d::RepeatCount.bounded(2),
  b::Element(e::Required,    "Address Information"),
  b::Element(e::Situational, "Address Information")),

b::Segment(340, s::N4, "Geographic Location",
  r::Situational, d::RepeatCount.bounded(1),
  b::Element(e::Required,    "City Name"),
  b::Element(e::Situational, "State or Province Code"),
  b::Element(e::Situational, "Postal Code"),
  b::Element(e::Situational, "Country Code")))),


          d::TableDef.detail("Detail",
            d::LoopDef.build("PO1", d::RepeatCount.bounded(100000),
b::Segment(10, s::PO1, "Purchase Order Baseline Item Data",
  r::Required, d::RepeatCount.bounded(1),
  b::Element(e::Situational, "Assigned Identification - Purchase Order Line Number"),
  b::Element(e::Required,    "Quantity Ordered"),
  b::Element(e::Required,    "Unit or Basis for Measurement Code",b::Values("EA")),
  b::Element(e::Situational, "Unit Price"),
  b::Element(e::NotUsed, "Unknown"),
  b::Element(e::Situational, "Product/Service ID Qualifier - Buyer's Part Number Qualifier",b::Values("BP")),
  b::Element(e::Situational, "Product/Service ID - Nissan Part Number"),
  b::Element(e::Situational, "Product/Service ID Qualifier",b::Values("C4")),
  b::Element(e::Situational, "Product/Service ID - Design Note Number")),

d::LoopDef.build("PID", d::RepeatCount.bounded(1),
  b::Segment( 50, s::PID, "Product/Item Description",
    r::Situational, d::RepeatCount.bounded(1),
    b::Element(e::Required,    "Item Description Type", b::Values("F")),
    b::Element(e::NotUsed,     "Unknown"),
    b::Element(e::NotUsed,     "Unknown"),
    b::Element(e::NotUsed,     "Unknown"),
    b::Element(e::Situational, "Description - Part Description"))),

d::LoopDef.build("N9", d::RepeatCount.bounded(1000),
  b::Segment(330, s:: N9, "Reference Number",
    r::Situational, d::RepeatCount.bounded(1),
    b::Element(e::Required,    "Reference Number Qualifier", b::Values("CU")),
    b::Element(e::Situational, "Reference Number")),

  b::Segment(340, s::MSG, "Message Text",
    r::Situational, d::RepeatCount.bounded(1000),
    b::Element(e::Required,    "Free-Form Message Text"))))),

          d::TableDef.header("Summary",
            b::Segment(10, s::CTT, "Transaction Totals",
r::Required, d::RepeatCount.bounded(1),
b::Element(e::Required,    "Number of Line Items")),
            b::Segment(30, s::SE, "Transaction Set Trailer",
r::Required, d::RepeatCount.bounded(1),
b::Element(e::Required,    "Number of Included Segments"),
b::Element(e::Required,    "Transaction Set Control Number"))))
PS830 =

t = Contrib::FortyTen::TransactionSetDefs

830 Planning Schedule with Release Capability

b.build(t::PS830,
          d::TableDef.header("Header",
            b::Segment(10, s:: ST, "Transaction Set Header",
r::Required, d::RepeatCount.bounded(1),
b::Element(e::Required,    "Transaction Set Identifier Code", b::Values("830")),
b::Element(e::Required,    "Transaction Set Control Number")),
            b::Segment(20, s::BFR, "Beginning Segment for Planning Schedule",
r::Required, d::RepeatCount.bounded(1),
b::Element(e::Required,    "Transaction Set Purpose Code", b::Values("00")),
b::Element(e::Situational,  "Reference Number NNA Release Period"),
b::Element(e::Situational,    "Release Number"),
b::Element(e::Required,    "Schedule Type Qualifier", b::Values("DL")),
b::Element(e::Required,    "Schedule Quantity Qualifier", b::Values("A")),
b::Element(e::Required,    "Date - Beginning Date"),
b::Element(e::Required,    "Date - Ending Date"),
b::Element(e::Required,    "Date - Release Create Date"))),

          d::TableDef.header("Detail",
            d::LoopDef.build("N1 - LOOP1", d::RepeatCount.bounded(200),
b::Segment(90, s:: N1, "Name - Nissan Analyst",
  r::Situational, d::RepeatCount.bounded(1),
  b::Element(e::Required,    "Entity Identifier Code", b::Values("MI")),
  b::Element(e::Situational, "Identification Code Qualifier", b::Values("Nissan")),
  b::Element(e::Situational, "Identification Code Qualifier"),
  b::Element(e::Situational,  "Identification Code - Supplier Code")),
b::Segment( 140, s::PER, "Administrative Communications Contact - Nissan Release Sr Analyst",
  r::Situational, d::RepeatCount.bounded(3),
  b::Element(e::Required,    "Contact Function Code", b::Values("OD")),
  b::Element(e::Situational, "Name - PER02"),
  b::Element(e::Situational, "Communication Number Qualifier", b::Values("TE")),
  b::Element(e::Situational, "Communication Number"),
  b::Element(e::NotUsed,     "PER05"),
  b::Element(e::NotUsed,     "PER06"),
  b::Element(e::NotUsed,     "PER07"),
  b::Element(e::NotUsed,     "PER08"),
  b::Element(e::NotUsed,     "PER09"))),

            d::LoopDef.build("LIN", d::RepeatCount.bounded(10000),
b::Segment( 10, s::LIN, "Item Identification",
  r::Required, d::RepeatCount.bounded(1),
  b::Element(e::NotUsed,     "LIN01"),
  b::Element(e::Required,    "Product/Service ID Qualifier - LIN02", b::Values("VP")),
  b::Element(e::Required,    "Product/Service ID - NNA Part Number"),
  b::Element(e::Situational, "Product/Service ID Qualifier - LIN04", b::Values("PO")),
  b::Element(e::Situational, "Product/Service ID - NNA PO Number"),
  b::Element(e::NotUsed,     "LIN06"),
  b::Element(e::NotUsed,     "LIN07"),
  b::Element(e::NotUsed,     "LIN08"),
  b::Element(e::NotUsed,     "LIN09"),
  b::Element(e::NotUsed,     "LIN10"),
  b::Element(e::NotUsed,     "LIN11"),
  b::Element(e::NotUsed,     "LIN12"),
  b::Element(e::NotUsed,     "LIN13"),
  b::Element(e::NotUsed,     "LIN14"),
  b::Element(e::NotUsed,     "LIN15"),
  b::Element(e::NotUsed,     "LIN16"),
  b::Element(e::NotUsed,     "LIN17"),
  b::Element(e::NotUsed,     "LIN18"),
  b::Element(e::NotUsed,     "LIN19"),
  b::Element(e::NotUsed,     "LIN20"),
  b::Element(e::NotUsed,     "LIN21"),
  b::Element(e::NotUsed,     "LIN22"),
  b::Element(e::NotUsed,     "LIN23"),
  b::Element(e::NotUsed,     "LIN24"),
  b::Element(e::NotUsed,     "LIN25"),
  b::Element(e::NotUsed,     "LIN26"),
  b::Element(e::NotUsed,     "LIN27"),
  b::Element(e::NotUsed,     "LIN28"),
  b::Element(e::NotUsed,     "LIN29"),
  b::Element(e::NotUsed,     "LIN30"),
  b::Element(e::NotUsed,     "LIN31")),
b::Segment( 20, s::UIT, "Unit of Measure",
  r::Required, d::RepeatCount.bounded(1),
  b::Element(e::Required,    "Unit or Basis for Measurement Code", b::Values("LB"))),
b::Segment( 80, s::PID, "Product/Item Description",
  r::Situational, d::RepeatCount.bounded(1000),
  b::Element(e::Required,     "Item Description Type",  b::Values("F")),
  b::Element(e::Situational, "Product/Process Characteristic Code", b::Values("9B")),
  b::Element(e::NotUsed,     "PID03"),
  b::Element(e::NotUsed,     "PID04"),
  b::Element(e::Situational, "Description - Part Description")),
b::Segment(90, s:: N1, "Name - Nissan Analyst",
  r::Situational, d::RepeatCount.bounded(1),
  b::Element(e::Required,    "Entity Identifier Code", b::Values("MI")),
  b::Element(e::Situational, "Identification Code Qualifier", b::Values("Nissan")),
  b::Element(e::Situational, "Identification Code Qualifier"),
  b::Element(e::Situational,  "Identification Code - Supplier Code")),
b::Segment( 290, s::SDP, "Ship/Delivery Pattern",
  r::Required, d::RepeatCount.bounded(1),
  b::Element(e::Required,    "Ship/Delivery or Calendar Pattern Code", b::Values("Y")),
  b::Element(e::Required,    "Ship/Delivery Pattern Time Code", b::Values("Y"))),

# d::LoopDef.build("NTE", d::RepeatCount.bounded(260),
#   b::Segment(400, s::NTE, "Note/Special Instruction",
#     r::Situational, d::RepeatCount.bounded(1),
#     b::Element(e::Situational, "Note Reference Code", b::Values("GEN", "LIN")),
#     b::Element(e::Situational, "Free Form Text"))),
b::Segment( 300, s::FST, "Forecast Schedule",
  r::Situational, d::RepeatCount.bounded(1),
  b::Element(e::Required,    "Quantity"),
  b::Element(e::Required,    "Forecast Qualifier", b::Values("C","D")),
  b::Element(e::Required,    "Forecast Timing Qualifier", b::Values("D")),
  b::Element(e::Required,    "Date - Scheduled Usage Date"),
  b::Element(e::NotUsed,  "FST05"),
  b::Element(e::Situational, "Date/Time Qualifier", b::Values("002")),
  b::Element(e::Situational, "Time - Delivery Requested Time"),
  b::Element(e::Situational, "Reference Number Qualifier", b::Values("DO")),
  b::Element(e::Situational, "Reference Number - Customer Assigned Order Number")),

# d::LoopDef.build("SHP", d::RepeatCount.bounded(1),
#   b::Segment( 301, s::FST, "Forecast Schedule - LAST",
#     r::Situational, d::RepeatCount.bounded(1),
#     b::Element(e::Required,    "Quantity"),
#     b::Element(e::Required,    "Forecast Qualifier", b::Values("C","D")),
#     b::Element(e::Required,    "Forecast Timing Qualifier", b::Values("D")),
#     b::Element(e::Required,    "Date - Scheduled Usage Date"),
#     b::Element(e::NotUsed,  "FST05"),
#     b::Element(e::Situational, "Date/Time Qualifier", b::Values("002")),
#     b::Element(e::Situational, "Time - Delivery Requested Time"),
#     b::Element(e::Situational, "Reference Number Qualifier", b::Values("DO")),
#     b::Element(e::Situational, "Reference Number - Customer Assigned Order Number")),
#   b::Segment(470, s::SHP, "Shipped/Received Information",
#     r::Situational, d::RepeatCount.bounded(1),
#     b::Element(e::Situational, "Quantity Qualifier", b::Values("02")),
#     b::Element(e::Situational, "Quantity"),
#     b::Element(e::Situational, "Date/Time Qualifier", b::Values("011")),
#     b::Element(e::Situational, "Date"))),

b::Segment(390, s::MAN, "Marks and Numbers",
  r::Situational, d::RepeatCount.bounded(10),
  b::Element(e::Required, "Marks and Numbers Qualifier", b::Values("PB")),
  b::Element(e::Required, "Marks and Numbers")))),

            # d::LoopDef.build("FST", d::RepeatCount.bounded(1),
# b::Segment( 301, s::FST, "Forecast Schedule - LAST",
#   r::Situational, d::RepeatCount.bounded(1),
#   b::Element(e::Required,    "Quantity"),
#   b::Element(e::Required,    "Forecast Qualifier", b::Values("C","D")),
#   b::Element(e::Required,    "Forecast Timing Qualifier", b::Values("D")),
#   b::Element(e::Required,    "Date - Scheduled Usage Date"),
#   b::Element(e::NotUsed,  "FST05"),
#   b::Element(e::Situational, "Date/Time Qualifier", b::Values("002")),
#   b::Element(e::Situational, "Time - Delivery Requested Time"),
#   b::Element(e::Situational, "Reference Number Qualifier", b::Values("DO")),
#   b::Element(e::Situational, "Reference Number - Customer Assigned Order Number")),
# b::Segment(470, s::SHP, "Shipped/Received Information",
#   r::Situational, d::RepeatCount.bounded(1),
#   b::Element(e::Situational, "Quantity Qualifier", b::Values("02")),
#   b::Element(e::Situational, "Quantity"),
#   b::Element(e::Situational, "Date/Time Qualifier", b::Values("011")),
#   b::Element(e::Situational, "Date")))),

          d::TableDef.header("Summary",
            # b::Segment( 301, s::FST, "Forecast Schedule - LAST",
            #   r::Required, d::RepeatCount.bounded(1),
            #   b::Element(e::Required,    "Quantity"),
            #   b::Element(e::Required,    "Forecast Qualifier", b::Values("C","D")),
            #   b::Element(e::Required,    "Forecast Timing Qualifier", b::Values("D")),
            #   b::Element(e::Required,    "Date - Scheduled Usage Date"),
            #   b::Element(e::NotUsed,  "FST05"),
            #   b::Element(e::Situational, "Date/Time Qualifier", b::Values("002")),
            #   b::Element(e::Situational, "Time - Delivery Requested Time"),
            #   b::Element(e::Situational, "Reference Number Qualifier", b::Values("DO")),
            #   b::Element(e::Situational, "Reference Number - Customer Assigned Order Number")),
            b::Segment(10, s::CTT, "Transaction Totals",
r::Required, d::RepeatCount.bounded(1),
b::Element(e::Required, "Number of Line Items"),
b::Element(e::Situational,  "Hash Total"),
b::Element(e::NotUsed,  "CTT03"),
b::Element(e::NotUsed,  "CTT04"),
b::Element(e::NotUsed,  "CTT05"),
b::Element(e::NotUsed,  "CTT06"),
b::Element(e::NotUsed,  "CTT07")),
            b::Segment(20, s:: SE, "Transaction Set Trailer",
r::Required, d::RepeatCount.bounded(1),
b::Element(e::Required, "Number of Included Segments"),
b::Element(e::Required, "Transaction Set Control Number"))))