From f3d8d478c5c7d634f461fda7ceed5b161cb82ddb Mon Sep 17 00:00:00 2001 From: Karim Elnadim Date: Thu, 7 May 2020 13:48:52 -0500 Subject: [PATCH 1/9] Add ACK segment to PO855 v4010. --- .../004010/standards/PR855.rb | 3 +- lib/stupidedi/versions/004010/element_defs.rb | 2 + lib/stupidedi/versions/004010/segment_defs.rb | 1 + .../versions/004010/segment_defs/ACK.rb | 44 +++++++++++++++++++ 4 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 lib/stupidedi/versions/004010/segment_defs/ACK.rb diff --git a/lib/stupidedi/transaction_sets/004010/standards/PR855.rb b/lib/stupidedi/transaction_sets/004010/standards/PR855.rb index 8e41b1a92..3d9467862 100644 --- a/lib/stupidedi/transaction_sets/004010/standards/PR855.rb +++ b/lib/stupidedi/transaction_sets/004010/standards/PR855.rb @@ -21,7 +21,8 @@ module Standards d::TableDef.detail("2 - Detail", d::LoopDef.build("PO1", d::RepeatCount.bounded(10000), - s::PO1.use( 10, r::Mandatory, d::RepeatCount.bounded(1)))), + s::PO1.use( 10, r::Mandatory, d::RepeatCount.bounded(1)), + s::ACK.use( 10, r::Mandatory, d::RepeatCount.bounded(1)))), d::TableDef.summary("3 - Summary", d::LoopDef.build("CTT", d::RepeatCount.bounded(1), diff --git a/lib/stupidedi/versions/004010/element_defs.rb b/lib/stupidedi/versions/004010/element_defs.rb index f0445015c..f047332bc 100644 --- a/lib/stupidedi/versions/004010/element_defs.rb +++ b/lib/stupidedi/versions/004010/element_defs.rb @@ -4045,6 +4045,7 @@ module ElementDefs "BL" => "Brand/Label", "CB" => "Buyer's Part Number", "ER" => "Jurisdiction Specific Procedure and Supply Codes", + "EN" => "European Article Number (EAN)", "HC" => "Health Care Financing Administration Common Procedural Coding System (HCPCS) Codes", "ID" => "International Classification of Diseases Clinical Modification (ICD-9-CM) - Procedure", "IV" => "Home Infusion EDI Coalition (HIEC) Product/Service Code", @@ -4678,6 +4679,7 @@ module ElementDefs E310 = t::AN.new(:E310 , "Location Identifier" , 1, 30) E319 = t::AN.new(:E319 , "Temperature Control" , 3, 6) E324 = t::AN.new(:E324 , "Purchase Order Number" , 1, 22) + E326 = t::AN.new(:E326 , "Request Reference Number" , 1, 45) E328 = t::AN.new(:E328 , "Release Number" , 1, 30) E329 = t::ID.new(:E329 , "Transaction Set Control Number" , 4, 9) E330 = t:: R.new(:E330 , "Quantity Ordered" , 1, 15) diff --git a/lib/stupidedi/versions/004010/segment_defs.rb b/lib/stupidedi/versions/004010/segment_defs.rb index 839218ec1..28f782ecb 100644 --- a/lib/stupidedi/versions/004010/segment_defs.rb +++ b/lib/stupidedi/versions/004010/segment_defs.rb @@ -3,6 +3,7 @@ module Stupidedi module Versions module FortyTen module SegmentDefs + autoload :ACK, "stupidedi/versions/004010/segment_defs/ACK" autoload :AK1, "stupidedi/versions/004010/segment_defs/AK1" autoload :AK2, "stupidedi/versions/004010/segment_defs/AK2" autoload :AK3, "stupidedi/versions/004010/segment_defs/AK3" diff --git a/lib/stupidedi/versions/004010/segment_defs/ACK.rb b/lib/stupidedi/versions/004010/segment_defs/ACK.rb new file mode 100644 index 000000000..aa09e2168 --- /dev/null +++ b/lib/stupidedi/versions/004010/segment_defs/ACK.rb @@ -0,0 +1,44 @@ +# frozen_string_literal: true +module Stupidedi + module Versions + module FortyTen + module SegmentDefs + s = Schema + e = ElementDefs + r = ElementReqs + + ACK = s::SegmentDef.build(:ACK, "Line Item Acknowledgment", + "To start acknowledgement of a line item", + e::E668 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E380 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E355 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E374 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E373 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E326 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E235 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E234 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E235 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E234 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E235 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E234 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E235 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E234 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E235 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E234 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E235 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E234 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E235 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E234 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E235 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E234 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E235 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E234 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E235 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E234 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E235 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E234 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1271 .simple_use(r::Optional, s::RepeatCount.bounded(1))) + end + end + end +end From 6d15b445771e05ba51ea1d79a7dea905bfa92835 Mon Sep 17 00:00:00 2001 From: Karim Elnadim Date: Thu, 14 May 2020 13:51:24 -0500 Subject: [PATCH 2/9] adding 810v4010 based on rkkandah/stupidedi PR --- lib/stupidedi/config.rb | 1 + .../004010/implementations.rb | 1 + .../004010/implementations/IN810.rb | 191 ++++++++++++++++++ .../transaction_sets/004010/standards.rb | 1 + .../004010/standards/IN810.rb | 56 +++++ lib/stupidedi/versions/004010/element_defs.rb | 69 ++++++- lib/stupidedi/versions/004010/segment_defs.rb | 6 + .../versions/004010/segment_defs/BIG.rb | 26 +++ .../versions/004010/segment_defs/IT1.rb | 40 ++++ .../versions/004010/segment_defs/ITD.rb | 30 +++ .../versions/004010/segment_defs/SAC.rb | 32 +++ .../versions/004010/segment_defs/TDS.rb | 20 ++ .../versions/004010/segment_defs/TXI.rb | 26 +++ 13 files changed, 498 insertions(+), 1 deletion(-) create mode 100644 lib/stupidedi/transaction_sets/004010/implementations/IN810.rb create mode 100644 lib/stupidedi/transaction_sets/004010/standards/IN810.rb create mode 100644 lib/stupidedi/versions/004010/segment_defs/BIG.rb create mode 100644 lib/stupidedi/versions/004010/segment_defs/IT1.rb create mode 100644 lib/stupidedi/versions/004010/segment_defs/ITD.rb create mode 100644 lib/stupidedi/versions/004010/segment_defs/SAC.rb create mode 100644 lib/stupidedi/versions/004010/segment_defs/TDS.rb create mode 100644 lib/stupidedi/versions/004010/segment_defs/TXI.rb diff --git a/lib/stupidedi/config.rb b/lib/stupidedi/config.rb index 9e0bfeaaa..61be066d5 100644 --- a/lib/stupidedi/config.rb +++ b/lib/stupidedi/config.rb @@ -153,6 +153,7 @@ def contrib(base = default) x.register("003050", "PO", "850") { Stupidedi::TransactionSets::ThirtyFifty::Standards::PO850 } x.register("004010", "PO", "850") { Stupidedi::TransactionSets::FortyTen::Standards::PO850 } x.register("004010", "PR", "855") { Stupidedi::TransactionSets::FortyTen::Standards::PR855 } + x.register("004010", "IN", "810") { Stupidedi::TransactionSets::FortyTen::Standards::IN810 } x.register("004010", "OW", "940") { Stupidedi::TransactionSets::FortyTen::Standards::OW940 } x.register("004010", "AR", "943") { Stupidedi::TransactionSets::FortyTen::Standards::AR943 } x.register("004010", "RE", "944") { Stupidedi::TransactionSets::FortyTen::Standards::RE944 } diff --git a/lib/stupidedi/transaction_sets/004010/implementations.rb b/lib/stupidedi/transaction_sets/004010/implementations.rb index db22ce902..63097d568 100644 --- a/lib/stupidedi/transaction_sets/004010/implementations.rb +++ b/lib/stupidedi/transaction_sets/004010/implementations.rb @@ -28,6 +28,7 @@ module ElementReqs #utoload :SQ866, "stupidedi/transaction_sets/004010/implementations/SQ866" autoload :SS862, "stupidedi/transaction_sets/004010/implementations/SS862" #utoload :SW945, "stupidedi/transaction_sets/004010/implementations/SW945" + autoload :IN810, "stupidedi/transaction_sets/004010/implementations/IN810" module X091A1 autoload :HP835, "stupidedi/transaction_sets/004010/implementations/X091A1-HP835" diff --git a/lib/stupidedi/transaction_sets/004010/implementations/IN810.rb b/lib/stupidedi/transaction_sets/004010/implementations/IN810.rb new file mode 100644 index 000000000..829d8d742 --- /dev/null +++ b/lib/stupidedi/transaction_sets/004010/implementations/IN810.rb @@ -0,0 +1,191 @@ +module Stupidedi + module TransactionSets + module FortyTen + module Implementations + b = Builder + d = Schema + r = SegmentReqs + e = ElementReqs + s = SegmentDefs + IN810 = b.build("IN", "810", "Invoice", + 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("810")), + b::Element(e::Required, "Transaction Set Control Number")), + b::Segment(20, s::BIG, "Beginning Segment for Invoice", r::Required, d::RepeatCount.bounded(1), + b::Element(e::Required, "Date"), + b::Element(e::Required, "Invoice Number"), + b::Element(e::Situational, "Date"), + b::Element(e::Situational, "Purchase Order Number"), + b::Element(e::Situational, "Release Number"), + b::Element(e::Situational, "Change Order Sequence Number"), + b::Element(e::Situational, "Transaction Type Code"), + b::Element(e::Situational, "Transaction Set Purpose Code"), + b::Element(e::Situational, "Action Code"), + b::Element(e::Situational, "Invoice Number")), + b::Segment(30, s:: REF, "Reference Identification", r::Situational, d::RepeatCount.unbounded, + b::Element(e::Required, "Reference Identification Qualifier"), + b::Element(e::Situational, "Reference Identification"), + b::Element(e::Situational, "Description"), + b::Element(e::Situational, "Description")), + d::LoopDef.build("N1", d::RepeatCount.bounded(200), + b::Segment(110, s:: N1, "Name", r::Situational, d::RepeatCount.bounded(1), + b::Element(e::Required, "Entity Identifier Code"), + b::Element(e::Situational, "Name"), + b::Element(e::Situational, "Identification Code Qualifier"), + b::Element(e::Situational, "Identification Code"), + b::Element(e::Situational, "Code describing entity relationship"), + b::Element(e::Situational, "Code identifying an organizational entity, a physical location, property or an individual")), + b::Segment(120, s:: N2, "Address Information", r::Situational, d::RepeatCount.bounded(2), + b::Element(e::Situational, "Name"), + b::Element(e::Situational, "Name")), + b::Segment(130, s:: N3, "Address Information", r::Situational, d::RepeatCount.bounded(2), + b::Element(e::Situational, "Address Information"), + b::Element(e::Situational, "Address Information")), + b::Segment(140, s:: N4, "Geographic Location", r::Situational, d::RepeatCount.unbounded, + b::Element(e::Situational, "City Name"), + b::Element(e::Situational, "State or Province Code"), + b::Element(e::Situational, "Postal Code"), + b::Element(e::Situational, "Country Code"), + b::Element(e::Situational, "Location Qualifier"), + b::Element(e::Situational, "Location Identifier"))), + b::Segment(200, s:: ITD, "Terms of Sale or Deferred Terms of Sale", r::Situational, d::RepeatCount.unbounded, + b::Element(e::Situational, "Terms Type Code"), + b::Element(e::Situational, "Terms Basis Date Code"), + 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"), + b::Element(e::Situational, "Day of Month"), + b::Element(e::Situational, "Payment Method Code"), + b::Element(e::Situational, "Percent")) + ), #end TableDef HEADING + + d::TableDef.header("Detail", + d::LoopDef.build("IT1", d::RepeatCount.bounded(100000), + b::Segment(10, s::IT1, "Baseline Item Data (Invoice)", r::Required, d::RepeatCount.bounded(1), + b::Element(e::Situational, "Assigned Identification"), + b::Element(e::Situational, "Quantity"), + b::Element(e::Situational, "UOM"), + b::Element(e::Situational, "Unit Price"), + b::Element(e::Situational, "Basis of Unit Price Code"), + b::Element(e::Situational, "Product/Service ID Qualifier"), + b::Element(e::Situational, "Product/Service ID"), + b::Element(e::Situational, "Product/Service ID Qualifier"), + b::Element(e::Situational, "Product/Service ID"), + b::Element(e::Situational, "Product/Service ID Qualifier"), + b::Element(e::Situational, "Product/Service ID"), + b::Element(e::Situational, "Product/Service ID Qualifier"), + b::Element(e::Situational, "Product/Service ID"), + b::Element(e::Situational, "Product/Service ID Qualifier"), + b::Element(e::Situational, "Product/Service ID"), + b::Element(e::Situational, "Product/Service ID Qualifier"), + b::Element(e::Situational, "Product/Service ID"), + b::Element(e::Situational, "Product/Service ID Qualifier"), + b::Element(e::Situational, "Product/Service ID"), + b::Element(e::Situational, "Product/Service ID Qualifier"), + b::Element(e::Situational, "Product/Service ID"), + b::Element(e::Situational, "Product/Service ID Qualifier"), + b::Element(e::Situational, "Product/Service ID"), + b::Element(e::Situational, "Product/Service ID Qualifier"), + b::Element(e::Situational, "Product/Service ID") + ), + b::Segment(20, s::TXI, "Tax Information", r::Situational, d::RepeatCount.bounded(10), + b::Element(e::Situational, "Tax Type Code"), + b::Element(e::Situational, "Monetary Amount"), + b::Element(e::Situational, "Percent"), + b::Element(e::Situational, "Tax Jurisdiction Code Qualifier"), + b::Element(e::Situational, "Tax Jurisdiction Code"), + b::Element(e::Situational, "Tax Exempt Code"), + b::Element(e::Situational, "Relationship Code"), + b::Element(e::Situational, "Dollar Basis For Percent"), + b::Element(e::Situational, "Tax Identification Number"), + b::Element(e::Situational, "Assigned Identification") + ), + d::LoopDef.build("PID", d::RepeatCount.bounded(1000), + b::Segment(30, s::PID, "Product/Item Description", r::Situational, d::RepeatCount.bounded(1), + b::Element(e::Situational, "Item Description Type"), + b::Element(e::Situational, "Process Characteristic Code"), + b::Element(e::Situational, "Agency Qualifier Code"), + b::Element(e::Situational, "Product Description Code"), + b::Element(e::Situational, "Description"), + b::Element(e::Situational, "Surface/Layer/Position Code"), + b::Element(e::Situational, "Source Subqualifier"), + b::Element(e::Situational, "Yes/No Condition or Response Code"), + b::Element(e::Situational, "Language Code") + ) + ), + b::Segment(40, s:: REF, "Reference Identification", r::Situational, d::RepeatCount.unbounded, + b::Element(e::Required, "Reference Identification Qualifier"), + b::Element(e::Situational, "Reference Identification"), + b::Element(e::Situational, "Description"), + b::Element(e::Situational, "Description")) + ) #end IT1 loop + ), #end TableDef Detail + + d::TableDef.header("Summary", + b::Segment(10, s::TDS, "Total Monetary Value Summary", r::Required, d::RepeatCount.bounded(1), + b::Element(e::Situational, "Amount"), + b::Element(e::Situational, "Amount"), + b::Element(e::Situational, "Amount"), + b::Element(e::Situational, "Amount") + ), + b::Segment(20, s::TXI, "Tax Information", r::Situational, d::RepeatCount.bounded(10), + b::Element(e::Situational, "Tax Type Code"), + b::Element(e::Situational, "Monetary Amount"), + b::Element(e::Situational, "Percent"), + b::Element(e::Situational, "Tax Jurisdiction Code Qualifier"), + b::Element(e::Situational, "Tax Jurisdiction Code"), + b::Element(e::Situational, "Tax Exempt Code"), + b::Element(e::Situational, "Relationship Code"), + b::Element(e::Situational, "Dollar Basis For Percent"), + b::Element(e::Situational, "Tax Identification Number"), + b::Element(e::Situational, "Assigned Identification") + ), + d::LoopDef.build("SAC", d::RepeatCount.bounded(25), + b::Segment(30, s::SAC, "Service, Promotion, Allowance, or Charge Information", r::Situational, d::RepeatCount.bounded(1), + b::Element(e::Situational, "Allowance or Charge Indicator"), + b::Element(e::Situational, "Service, Promotion, Allowance, or Charge Code"), + b::Element(e::Situational, "Agency Qualifier Code"), + b::Element(e::Situational, "Agency Service, Promotion, Allowance, or Charge Code"), + b::Element(e::Situational, "Amount"), + b::Element(e::Situational, "Allowance/Charge Percent Qualifier"), + b::Element(e::Situational, "Percent"), + b::Element(e::Situational, "Rate"), + b::Element(e::Situational, "Unit or Basis for Measurement Code"), + b::Element(e::Situational, "Quantity"), + b::Element(e::Situational, "Quantity"), + b::Element(e::Situational, "Allowance or Charge Method of Handling Code"), + b::Element(e::Situational, "Reference Identification"), + b::Element(e::Situational, "Option Number"), + b::Element(e::Situational, "Description"), + b::Element(e::Situational, "Language Code")) + ),#end sac loop + b::Segment(40, s::CTT, "Transaction Totals", r::Situational, d::RepeatCount.bounded(10), + b::Element(e::Situational, "Number of Line Items"), + b::Element(e::Situational, "Hash Total"), + b::Element(e::Situational, "Weight"), + b::Element(e::Situational, "Unit or Basis for Measurement Code"), + b::Element(e::Situational, "Volume"), + b::Element(e::Situational, "Unit or Basis for Measurement Code"), + b::Element(e::Situational, "Description") + ), + b::Segment(50, 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")) + )# end TableDef Summary + + ) #end builder + + + + end + end + end +end \ No newline at end of file diff --git a/lib/stupidedi/transaction_sets/004010/standards.rb b/lib/stupidedi/transaction_sets/004010/standards.rb index ae2df0189..ff568e4ad 100644 --- a/lib/stupidedi/transaction_sets/004010/standards.rb +++ b/lib/stupidedi/transaction_sets/004010/standards.rb @@ -13,6 +13,7 @@ module Standards autoload :OW940, "stupidedi/transaction_sets/004010/standards/OW940" autoload :PO850, "stupidedi/transaction_sets/004010/standards/PO850" autoload :PR855, "stupidedi/transaction_sets/004010/standards/PR855" + autoload :IN810, "stupidedi/transaction_sets/004010/standards/IN810" autoload :PS830, "stupidedi/transaction_sets/004010/standards/PS830" autoload :QM214, "stupidedi/transaction_sets/004010/standards/QM214" autoload :RE944, "stupidedi/transaction_sets/004010/standards/RE944" diff --git a/lib/stupidedi/transaction_sets/004010/standards/IN810.rb b/lib/stupidedi/transaction_sets/004010/standards/IN810.rb new file mode 100644 index 000000000..f9a584fed --- /dev/null +++ b/lib/stupidedi/transaction_sets/004010/standards/IN810.rb @@ -0,0 +1,56 @@ +module Stupidedi + module TransactionSets + module FortyTen + module Standards + b = Builder + d = Schema + r = SegmentReqs + s = SegmentDefs + + IN810 = b.build("IN", "810", "Invoice", + d::TableDef.header("1 - Header", + s::ST.use( 10, r::Mandatory, d::RepeatCount.bounded(1)), + s::BIG.use( 20, r::Mandatory, d::RepeatCount.bounded(1)), + s::REF.use( 30, r::Optional, d::RepeatCount.bounded(1)), + + d::LoopDef.build("N1", d::RepeatCount.bounded(200), + s:: N1.use( 110, r::Optional, d::RepeatCount.bounded(1)), + s:: N2.use( 120, r::Optional, d::RepeatCount.bounded(2)), + s:: N3.use( 130, r::Optional, d::RepeatCount.bounded(2)), + s:: N4.use( 140, r::Optional, d::RepeatCount.unbounded) + ), + + s::ITD.use( 200, r::Optional, d::RepeatCount.unbounded) + + ), #end TableDef Header + + d::TableDef.detail("2 - Detail", + d::LoopDef.build("IT1", d::RepeatCount.bounded(100000), + s::IT1.use( 10, r::Mandatory, d::RepeatCount.bounded(1)), + s::TXI.use( 20, r::Optional, d::RepeatCount.bounded(10)), + + d::LoopDef.build("PID", d::RepeatCount.bounded(1000), + s::PID.use( 30, r::Optional, d::RepeatCount.bounded(1)) + ), + + s::REF.use( 40, r::Optional, d::RepeatCount.unbounded) + ) + ), #end TableDef Detail + + d::TableDef.summary("3 - Summary", + s::TDS.use( 10, r::Mandatory, d::RepeatCount.bounded(1)), + s::TXI.use( 20, r::Optional, d::RepeatCount.bounded(10)), + + d::LoopDef.build("SAC", d::RepeatCount.bounded(25), + s:: SAC.use( 30, r::Optional, d::RepeatCount.bounded(1)) + ), + + s:: CTT.use( 40, r::Optional, d::RepeatCount.bounded(10)), + s:: SE.use( 50, r::Mandatory, d::RepeatCount.bounded(1)) + ) #end TableDef Summary + ) #end of build + + end + end + end +end \ No newline at end of file diff --git a/lib/stupidedi/versions/004010/element_defs.rb b/lib/stupidedi/versions/004010/element_defs.rb index f047332bc..9ce2abe49 100644 --- a/lib/stupidedi/versions/004010/element_defs.rb +++ b/lib/stupidedi/versions/004010/element_defs.rb @@ -5413,7 +5413,9 @@ module ElementDefs s::CodeList.build( "PE" => "Price per Each", "PP" => "Price per Pound", - "UM" => "Price per Unit of Measure")) + "UM" => "Price per Unit of Measure", + "PC" => "Price per Case", + "ZZ" => "Mutually Defined")) E640 = t::ID.new(:E640 , "Transaction Type Code" , 2, 2, s::CodeList.build( "01" => "Location Address Message", @@ -9463,6 +9465,71 @@ module ElementDefs s::CodeList.external("559")) E1715 = t::ID.new(:E1715, "Country Subdivision Code" , 1, 3, s::CodeList.external("5")) + E1716 = t::AN.new(:E1716 , "Change Order Sequence Number" , 1, 8) + E1717 = t::ID.new(:E1717 , "Allowance or Charge Indicator" , 1, 1, + s::CodeList.build( + "A" => "Allowance", + "C" => "Charge", + "N" => "No Allowance or Charge")) + E1718 = t::ID.new(:E1718 , "Allowance or Charge Indicator" , 4, 4, + s::CodeList.build( + "A310" => "Air Express Charge", + "A930" => "Carrier Credit Allowance", + "B720" => "Cooperative Advertising Allowance", + "B820" => "Currency Adjustment", + "B860" => "Customs Broker Fee", + "B870" => "Customs Charge", + "B872" => "Customs Duty", + "B994" => "Declared Value for Customs", + "C000" => "Defective Allowance", + "C040" => "Delivery", + "C260" => "Discount - Incentive", + "C860" => "Expedited Shipments", + "D170" => "Free Goods", + "D240" => "Freight", + "D360" => "Goods and Services Tax Charge", + "D500" => "Handling", + "D900" => "Installation", + "E170" => "Labeling", + "F155" => "Packaging", + "F330" => "Pick-up and Delivery", + "F920" => "Quantity Surcharge", + "G740" => "Service Charge", + "G970" => "Small Order Charge", + "H090" => "Special Handling", + "H151" => "Special Services", + "H640" => "Tax - Excist Tax - Destination", + "H740" => "Tax - Sate and Use", + "H770" => "Tax - Sate Tax", + "H750" => "Tax - Sales Tax", + "H800" => "Tax - VAT", + "I170" => "Trade Discountt", + "ZZZZ" => "Mutually Defined")) + E1719 = t::AN.new(:E1719 , "Agency Service, Promotion, Allowance, or Charge Code" , 1, 10) + E1720 = t::ID.new(:E1720 , "Allowance/Charge Percent Qualifier" , 1, 1) + E1721 = t:: R.new(:E1721 , "Rate" , 1, 10) + E1722 = t::ID.new(:E1722 , "Allowance or Charge Method of Handling Code" , 2, 2) + E1723 = t::AN.new(:E1723 , "Option Number" , 1, 20) + E1724 = t::ID.new(:E1724 , "Tax Type Code" , 2, 2) + E1725 = t::ID.new(:E1725 , "Tax Jurisdiction Code Qualifier" , 2, 2) + E1726 = t::AN.new(:E1726 , "Tax Jurisdiction Code" , 1, 10) + E1727 = t::ID.new(:E1727 , "Tax Exempt Code" , 1, 1) + E1728 = t::ID.new(:E1728 , "Relationship Code" , 1, 1) + E1729 = t:: R.new(:E1729 , "Dollar Basis for Percent" , 1, 9) + E1730 = t::AN.new(:E1730 , "Tax Identification Number" , 1, 20) + E1731 = t::AN.new(:E1731 , "Assigned Identification" , 1, 20) + E1732 = t:: R.new(:E1732 , "Quantity Invoiced" , 1, 10) + E1733 = t::ID.new(:E1733 , "Terms Type Code" , 2, 2) + E1734 = t::ID.new(:E1734 , "Terms Basis Date Code" , 1, 2) + E1735 = t::DT.new(:E1735 , "Terms Discount Due Date" , 8, 8) + E1736 = t::Nn.new(:E1736 , "Terms Discount Days Due" , 1, 3, 0) + E1737 = t::DT.new(:E1737 , "Terms Net Due Date" , 8, 8) + E1738 = t::Nn.new(:E1738 , "Terms Net Days" , 1, 3, 0) + E1739 = t::Nn.new(:E1739 , "Terms Discount Amount" , 1, 10, 2) + E1740 = t::DT.new(:E1740 , "Terms Deferred Due Date" , 8, 8) + E1741 = t::Nn.new(:E1741 , "Deferred Amount Due" , 1, 10, 2) + E1742 = t::Nn.new(:E1742 , "Day of Month" , 1, 2, 0) + E1743 = t::ID.new(:E1743 , "Payment Method Code" , 1, 2) C001 = Schema::CompositeElementDef.build(:C001, "Composite Unit of Measure", "To identify a composite unit of measure", diff --git a/lib/stupidedi/versions/004010/segment_defs.rb b/lib/stupidedi/versions/004010/segment_defs.rb index 28f782ecb..1975e1f91 100644 --- a/lib/stupidedi/versions/004010/segment_defs.rb +++ b/lib/stupidedi/versions/004010/segment_defs.rb @@ -21,6 +21,12 @@ module SegmentDefs autoload :BAK, "stupidedi/versions/004010/segment_defs/BAK" autoload :BCT, "stupidedi/versions/004010/segment_defs/BCT" autoload :BEG, "stupidedi/versions/004010/segment_defs/BEG" + autoload :BIG, "stupidedi/versions/004010/segment_defs/BIG" + autoload :ITD, "stupidedi/versions/004010/segment_defs/ITD" + autoload :IT1, "stupidedi/versions/004010/segment_defs/IT1" + autoload :TXI, "stupidedi/versions/004010/segment_defs/TXI" + autoload :TDS, "stupidedi/versions/004010/segment_defs/TDS" + autoload :SAC, "stupidedi/versions/004010/segment_defs/SAC" autoload :BFR, "stupidedi/versions/004010/segment_defs/BFR" autoload :BPR, "stupidedi/versions/004010/segment_defs/BPR" autoload :BSN, "stupidedi/versions/004010/segment_defs/BSN" diff --git a/lib/stupidedi/versions/004010/segment_defs/BIG.rb b/lib/stupidedi/versions/004010/segment_defs/BIG.rb new file mode 100644 index 000000000..9f61b36f6 --- /dev/null +++ b/lib/stupidedi/versions/004010/segment_defs/BIG.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true +module Stupidedi + module Versions + module FortyTen + module SegmentDefs + s = Schema + e = ElementDefs + r = ElementReqs + + BIG = s::SegmentDef.build(:BIG, "Beginning Segment for Invoice", + "To indicate the beginning of the Invoice Transaction Set and + transmit identifying numbers and dates", + e::E32.simple_use(r::Mandatory, s::RepeatCount.bounded(1)), + e::E76.simple_use(r::Mandatory, s::RepeatCount.bounded(1)), + e::E32.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E324.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E328.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1716.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E640.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E353.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E306.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E76.simple_use(r::Optional, s::RepeatCount.bounded(1))) + end + end + end +end \ No newline at end of file diff --git a/lib/stupidedi/versions/004010/segment_defs/IT1.rb b/lib/stupidedi/versions/004010/segment_defs/IT1.rb new file mode 100644 index 000000000..31a668359 --- /dev/null +++ b/lib/stupidedi/versions/004010/segment_defs/IT1.rb @@ -0,0 +1,40 @@ +# frozen_string_literal: true +module Stupidedi + module Versions + module FortyTen + module SegmentDefs + s = Schema + e = ElementDefs + r = ElementReqs + + IT1 = s::SegmentDef.build(:IT1, "Baseline Item Data (Invoice)", + "Invoice Lines", + e::E1731.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1732.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E355.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E212.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E639.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E235.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E234.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E235.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E234.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E235.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E234.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E235.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E234.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E235.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E234.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E235.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E234.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E235.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E234.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E235.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E234.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E235.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E234.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E235.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E234.simple_use(r::Optional, s::RepeatCount.bounded(1))) + end + end + end +end \ No newline at end of file diff --git a/lib/stupidedi/versions/004010/segment_defs/ITD.rb b/lib/stupidedi/versions/004010/segment_defs/ITD.rb new file mode 100644 index 000000000..bfb0a3e8e --- /dev/null +++ b/lib/stupidedi/versions/004010/segment_defs/ITD.rb @@ -0,0 +1,30 @@ +# frozen_string_literal: true +module Stupidedi + module Versions + module FortyTen + module SegmentDefs + s = Schema + e = ElementDefs + r = ElementReqs + + ITD = s::SegmentDef.build(:ITD, "Terms of Sale/Deferred Terms of Sale", + "Terms of Sale/Deferred Terms of Sale", + e::E1733.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1734.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E954.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1735.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1736.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1737.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1738.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1739.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1740.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1741.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E954.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E352.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1742.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1743.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E954.simple_use(r::Optional, s::RepeatCount.bounded(1))) + end + end + end +end \ No newline at end of file diff --git a/lib/stupidedi/versions/004010/segment_defs/SAC.rb b/lib/stupidedi/versions/004010/segment_defs/SAC.rb new file mode 100644 index 000000000..2c0afd783 --- /dev/null +++ b/lib/stupidedi/versions/004010/segment_defs/SAC.rb @@ -0,0 +1,32 @@ +# frozen_string_literal: true +module Stupidedi + module Versions + module FortyTen + module SegmentDefs + s = Schema + e = ElementDefs + r = ElementReqs + + SAC = s::SegmentDef.build(:SAC, "Service, Promotion, Allowance, or Charge Information", + "To indicate the header charge information", + e::E1717.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1718.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E559.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1719.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E782.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1720.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E954.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1721.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E355.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E380.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E380.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1722.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E127.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1723.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E352.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E819.simple_use(r::Optional, s::RepeatCount.bounded(1)) + ) + end + end + end +end \ No newline at end of file diff --git a/lib/stupidedi/versions/004010/segment_defs/TDS.rb b/lib/stupidedi/versions/004010/segment_defs/TDS.rb new file mode 100644 index 000000000..2f22a3237 --- /dev/null +++ b/lib/stupidedi/versions/004010/segment_defs/TDS.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true +module Stupidedi + module Versions + module FortyTen + module SegmentDefs + s = Schema + e = ElementDefs + r = ElementReqs + + TDS = s::SegmentDef.build(:TDS, "Total Monetary Value Summary", + "Total Monetary Value Summary", + e::E610.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E610.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E610.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E610.simple_use(r::Optional, s::RepeatCount.bounded(1)) + ) + end + end + end +end \ No newline at end of file diff --git a/lib/stupidedi/versions/004010/segment_defs/TXI.rb b/lib/stupidedi/versions/004010/segment_defs/TXI.rb new file mode 100644 index 000000000..f8c0426a2 --- /dev/null +++ b/lib/stupidedi/versions/004010/segment_defs/TXI.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true +module Stupidedi + module Versions + module FortyTen + module SegmentDefs + s = Schema + e = ElementDefs + r = ElementReqs + + TXI = s::SegmentDef.build(:TXI, "Tax Information", + "Tax Information", + e::E1724.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E782.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E954.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1725.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1726.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1727.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1728.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1729.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1730.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1731.simple_use(r::Optional, s::RepeatCount.bounded(1)) + ) + end + end + end +end \ No newline at end of file From d1472262c9158324d7fe00b3493b47b7a3c3fd52 Mon Sep 17 00:00:00 2001 From: Karim Elnadim Date: Thu, 14 May 2020 15:00:43 -0500 Subject: [PATCH 3/9] update term-ansicolor version --- stupidedi.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stupidedi.gemspec b/stupidedi.gemspec index 9d9095687..63823ff03 100644 --- a/stupidedi.gemspec +++ b/stupidedi.gemspec @@ -20,7 +20,7 @@ Gem::Specification.new do |s| s.executables = ["edi-pp", "edi-ed"] s.require_path = "lib" - s.add_dependency "term-ansicolor", "~> 1.3" + s.add_dependency "term-ansicolor", "~> 1.0.5" s.add_dependency "cantor", "~> 1.2.1" # s.metadata["yard.run"] = "yard doc" end From 8ad0deeece466eae7dd7ea95e4c1bc79408c063a Mon Sep 17 00:00:00 2001 From: Karim Elnadim Date: Fri, 5 Jun 2020 15:32:18 -0500 Subject: [PATCH 4/9] add grade code to ACK segment --- lib/stupidedi/versions/004010/element_defs.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/stupidedi/versions/004010/element_defs.rb b/lib/stupidedi/versions/004010/element_defs.rb index 9ce2abe49..d8fe4248f 100644 --- a/lib/stupidedi/versions/004010/element_defs.rb +++ b/lib/stupidedi/versions/004010/element_defs.rb @@ -4046,6 +4046,7 @@ module ElementDefs "CB" => "Buyer's Part Number", "ER" => "Jurisdiction Specific Procedure and Supply Codes", "EN" => "European Article Number (EAN)", + "GC" => "Grade Code", "HC" => "Health Care Financing Administration Common Procedural Coding System (HCPCS) Codes", "ID" => "International Classification of Diseases Clinical Modification (ICD-9-CM) - Procedure", "IV" => "Home Infusion EDI Coalition (HIEC) Product/Service Code", From 986c7a44bf3ad15d03d89fa32affcb8107a8ee5d Mon Sep 17 00:00:00 2001 From: Karim Elnadim Date: Thu, 9 Dec 2021 14:18:44 -0600 Subject: [PATCH 5/9] revert term term-ansicolor version --- stupidedi.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stupidedi.gemspec b/stupidedi.gemspec index 63823ff03..9d9095687 100644 --- a/stupidedi.gemspec +++ b/stupidedi.gemspec @@ -20,7 +20,7 @@ Gem::Specification.new do |s| s.executables = ["edi-pp", "edi-ed"] s.require_path = "lib" - s.add_dependency "term-ansicolor", "~> 1.0.5" + s.add_dependency "term-ansicolor", "~> 1.3" s.add_dependency "cantor", "~> 1.2.1" # s.metadata["yard.run"] = "yard doc" end From faa576d53b25e10e2bc2be37a41b3a41aa82dbeb Mon Sep 17 00:00:00 2001 From: Karim Elnadim Date: Thu, 16 Dec 2021 08:50:35 -0600 Subject: [PATCH 6/9] Match the whitespace and vertical alignment style used in the project based on kputnam feedback --- .../004010/implementations/IN810.rb | 337 +++++++++--------- .../004010/standards/IN810.rb | 68 ++-- lib/stupidedi/versions/004010/element_defs.rb | 130 +++---- .../versions/004010/segment_defs/ACK.rb | 61 ++-- .../versions/004010/segment_defs/BIG.rb | 25 +- .../versions/004010/segment_defs/IT1.rb | 55 ++- .../versions/004010/segment_defs/ITD.rb | 35 +- .../versions/004010/segment_defs/SAC.rb | 37 +- .../versions/004010/segment_defs/TDS.rb | 14 +- .../versions/004010/segment_defs/TXI.rb | 26 +- 10 files changed, 371 insertions(+), 417 deletions(-) diff --git a/lib/stupidedi/transaction_sets/004010/implementations/IN810.rb b/lib/stupidedi/transaction_sets/004010/implementations/IN810.rb index 829d8d742..e3c3334c8 100644 --- a/lib/stupidedi/transaction_sets/004010/implementations/IN810.rb +++ b/lib/stupidedi/transaction_sets/004010/implementations/IN810.rb @@ -8,184 +8,165 @@ module Implementations e = ElementReqs s = SegmentDefs IN810 = b.build("IN", "810", "Invoice", - 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("810")), - b::Element(e::Required, "Transaction Set Control Number")), - b::Segment(20, s::BIG, "Beginning Segment for Invoice", r::Required, d::RepeatCount.bounded(1), - b::Element(e::Required, "Date"), - b::Element(e::Required, "Invoice Number"), - b::Element(e::Situational, "Date"), - b::Element(e::Situational, "Purchase Order Number"), - b::Element(e::Situational, "Release Number"), - b::Element(e::Situational, "Change Order Sequence Number"), - b::Element(e::Situational, "Transaction Type Code"), - b::Element(e::Situational, "Transaction Set Purpose Code"), - b::Element(e::Situational, "Action Code"), - b::Element(e::Situational, "Invoice Number")), - b::Segment(30, s:: REF, "Reference Identification", r::Situational, d::RepeatCount.unbounded, - b::Element(e::Required, "Reference Identification Qualifier"), - b::Element(e::Situational, "Reference Identification"), - b::Element(e::Situational, "Description"), - b::Element(e::Situational, "Description")), - d::LoopDef.build("N1", d::RepeatCount.bounded(200), - b::Segment(110, s:: N1, "Name", r::Situational, d::RepeatCount.bounded(1), - b::Element(e::Required, "Entity Identifier Code"), - b::Element(e::Situational, "Name"), - b::Element(e::Situational, "Identification Code Qualifier"), - b::Element(e::Situational, "Identification Code"), - b::Element(e::Situational, "Code describing entity relationship"), - b::Element(e::Situational, "Code identifying an organizational entity, a physical location, property or an individual")), - b::Segment(120, s:: N2, "Address Information", r::Situational, d::RepeatCount.bounded(2), - b::Element(e::Situational, "Name"), - b::Element(e::Situational, "Name")), - b::Segment(130, s:: N3, "Address Information", r::Situational, d::RepeatCount.bounded(2), - b::Element(e::Situational, "Address Information"), - b::Element(e::Situational, "Address Information")), - b::Segment(140, s:: N4, "Geographic Location", r::Situational, d::RepeatCount.unbounded, - b::Element(e::Situational, "City Name"), - b::Element(e::Situational, "State or Province Code"), - b::Element(e::Situational, "Postal Code"), - b::Element(e::Situational, "Country Code"), - b::Element(e::Situational, "Location Qualifier"), - b::Element(e::Situational, "Location Identifier"))), - b::Segment(200, s:: ITD, "Terms of Sale or Deferred Terms of Sale", r::Situational, d::RepeatCount.unbounded, - b::Element(e::Situational, "Terms Type Code"), - b::Element(e::Situational, "Terms Basis Date Code"), - 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"), - b::Element(e::Situational, "Day of Month"), - b::Element(e::Situational, "Payment Method Code"), - b::Element(e::Situational, "Percent")) - ), #end TableDef HEADING - - d::TableDef.header("Detail", - d::LoopDef.build("IT1", d::RepeatCount.bounded(100000), - b::Segment(10, s::IT1, "Baseline Item Data (Invoice)", r::Required, d::RepeatCount.bounded(1), - b::Element(e::Situational, "Assigned Identification"), - b::Element(e::Situational, "Quantity"), - b::Element(e::Situational, "UOM"), - b::Element(e::Situational, "Unit Price"), - b::Element(e::Situational, "Basis of Unit Price Code"), - b::Element(e::Situational, "Product/Service ID Qualifier"), - b::Element(e::Situational, "Product/Service ID"), - b::Element(e::Situational, "Product/Service ID Qualifier"), - b::Element(e::Situational, "Product/Service ID"), - b::Element(e::Situational, "Product/Service ID Qualifier"), - b::Element(e::Situational, "Product/Service ID"), - b::Element(e::Situational, "Product/Service ID Qualifier"), - b::Element(e::Situational, "Product/Service ID"), - b::Element(e::Situational, "Product/Service ID Qualifier"), - b::Element(e::Situational, "Product/Service ID"), - b::Element(e::Situational, "Product/Service ID Qualifier"), - b::Element(e::Situational, "Product/Service ID"), - b::Element(e::Situational, "Product/Service ID Qualifier"), - b::Element(e::Situational, "Product/Service ID"), - b::Element(e::Situational, "Product/Service ID Qualifier"), - b::Element(e::Situational, "Product/Service ID"), - b::Element(e::Situational, "Product/Service ID Qualifier"), - b::Element(e::Situational, "Product/Service ID"), - b::Element(e::Situational, "Product/Service ID Qualifier"), - b::Element(e::Situational, "Product/Service ID") - ), - b::Segment(20, s::TXI, "Tax Information", r::Situational, d::RepeatCount.bounded(10), - b::Element(e::Situational, "Tax Type Code"), - b::Element(e::Situational, "Monetary Amount"), - b::Element(e::Situational, "Percent"), - b::Element(e::Situational, "Tax Jurisdiction Code Qualifier"), - b::Element(e::Situational, "Tax Jurisdiction Code"), - b::Element(e::Situational, "Tax Exempt Code"), - b::Element(e::Situational, "Relationship Code"), - b::Element(e::Situational, "Dollar Basis For Percent"), - b::Element(e::Situational, "Tax Identification Number"), - b::Element(e::Situational, "Assigned Identification") - ), - d::LoopDef.build("PID", d::RepeatCount.bounded(1000), - b::Segment(30, s::PID, "Product/Item Description", r::Situational, d::RepeatCount.bounded(1), - b::Element(e::Situational, "Item Description Type"), - b::Element(e::Situational, "Process Characteristic Code"), - b::Element(e::Situational, "Agency Qualifier Code"), - b::Element(e::Situational, "Product Description Code"), - b::Element(e::Situational, "Description"), - b::Element(e::Situational, "Surface/Layer/Position Code"), - b::Element(e::Situational, "Source Subqualifier"), - b::Element(e::Situational, "Yes/No Condition or Response Code"), - b::Element(e::Situational, "Language Code") - ) - ), - b::Segment(40, s:: REF, "Reference Identification", r::Situational, d::RepeatCount.unbounded, - b::Element(e::Required, "Reference Identification Qualifier"), - b::Element(e::Situational, "Reference Identification"), - b::Element(e::Situational, "Description"), - b::Element(e::Situational, "Description")) - ) #end IT1 loop - ), #end TableDef Detail - - d::TableDef.header("Summary", - b::Segment(10, s::TDS, "Total Monetary Value Summary", r::Required, d::RepeatCount.bounded(1), - b::Element(e::Situational, "Amount"), - b::Element(e::Situational, "Amount"), - b::Element(e::Situational, "Amount"), - b::Element(e::Situational, "Amount") - ), - b::Segment(20, s::TXI, "Tax Information", r::Situational, d::RepeatCount.bounded(10), - b::Element(e::Situational, "Tax Type Code"), - b::Element(e::Situational, "Monetary Amount"), - b::Element(e::Situational, "Percent"), - b::Element(e::Situational, "Tax Jurisdiction Code Qualifier"), - b::Element(e::Situational, "Tax Jurisdiction Code"), - b::Element(e::Situational, "Tax Exempt Code"), - b::Element(e::Situational, "Relationship Code"), - b::Element(e::Situational, "Dollar Basis For Percent"), - b::Element(e::Situational, "Tax Identification Number"), - b::Element(e::Situational, "Assigned Identification") - ), - d::LoopDef.build("SAC", d::RepeatCount.bounded(25), - b::Segment(30, s::SAC, "Service, Promotion, Allowance, or Charge Information", r::Situational, d::RepeatCount.bounded(1), - b::Element(e::Situational, "Allowance or Charge Indicator"), - b::Element(e::Situational, "Service, Promotion, Allowance, or Charge Code"), - b::Element(e::Situational, "Agency Qualifier Code"), - b::Element(e::Situational, "Agency Service, Promotion, Allowance, or Charge Code"), - b::Element(e::Situational, "Amount"), - b::Element(e::Situational, "Allowance/Charge Percent Qualifier"), - b::Element(e::Situational, "Percent"), - b::Element(e::Situational, "Rate"), - b::Element(e::Situational, "Unit or Basis for Measurement Code"), - b::Element(e::Situational, "Quantity"), - b::Element(e::Situational, "Quantity"), - b::Element(e::Situational, "Allowance or Charge Method of Handling Code"), - b::Element(e::Situational, "Reference Identification"), - b::Element(e::Situational, "Option Number"), - b::Element(e::Situational, "Description"), - b::Element(e::Situational, "Language Code")) - ),#end sac loop - b::Segment(40, s::CTT, "Transaction Totals", r::Situational, d::RepeatCount.bounded(10), - b::Element(e::Situational, "Number of Line Items"), - b::Element(e::Situational, "Hash Total"), - b::Element(e::Situational, "Weight"), - b::Element(e::Situational, "Unit or Basis for Measurement Code"), - b::Element(e::Situational, "Volume"), - b::Element(e::Situational, "Unit or Basis for Measurement Code"), - b::Element(e::Situational, "Description") - ), - b::Segment(50, 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")) - )# end TableDef Summary - - ) #end builder - - - + 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("810")), + b::Element(e::Required, "Transaction Set Control Number")), + b::Segment(20, s::BIG, "Beginning Segment for Invoice", r::Required, d::RepeatCount.bounded(1), + b::Element(e::Required, "Date"), + b::Element(e::Required, "Invoice Number"), + b::Element(e::Situational, "Date"), + b::Element(e::Situational, "Purchase Order Number"), + b::Element(e::Situational, "Release Number"), + b::Element(e::Situational, "Change Order Sequence Number"), + b::Element(e::Situational, "Transaction Type Code"), + b::Element(e::Situational, "Transaction Set Purpose Code"), + b::Element(e::Situational, "Action Code"), + b::Element(e::Situational, "Invoice Number")), + b::Segment(30, s:: REF, "Reference Identification", r::Situational, d::RepeatCount.unbounded, + b::Element(e::Required, "Reference Identification Qualifier"), + b::Element(e::Situational, "Reference Identification"), + b::Element(e::Situational, "Description"), + b::Element(e::Situational, "Description")), + d::LoopDef.build("N1", d::RepeatCount.bounded(200), + b::Segment(110, s:: N1, "Name", r::Situational, d::RepeatCount.bounded(1), + b::Element(e::Required, "Entity Identifier Code"), + b::Element(e::Situational, "Name"), + b::Element(e::Situational, "Identification Code Qualifier"), + b::Element(e::Situational, "Identification Code"), + b::Element(e::Situational, "Code describing entity relationship"), + b::Element(e::Situational, "Code identifying an organizational entity, a physical location, property or an individual")), + b::Segment(120, s:: N2, "Address Information", r::Situational, d::RepeatCount.bounded(2), + b::Element(e::Situational, "Name"), + b::Element(e::Situational, "Name")), + b::Segment(130, s:: N3, "Address Information", r::Situational, d::RepeatCount.bounded(2), + b::Element(e::Situational, "Address Information"), + b::Element(e::Situational, "Address Information")), + b::Segment(140, s:: N4, "Geographic Location", r::Situational, d::RepeatCount.unbounded, + b::Element(e::Situational, "City Name"), + b::Element(e::Situational, "State or Province Code"), + b::Element(e::Situational, "Postal Code"), + b::Element(e::Situational, "Country Code"), + b::Element(e::Situational, "Location Qualifier"), + b::Element(e::Situational, "Location Identifier"))), #end LoopDef N1, Segment 140 + b::Segment(200, s:: ITD, "Terms of Sale or Deferred Terms of Sale", r::Situational, d::RepeatCount.unbounded, + b::Element(e::Situational, "Terms Type Code"), + b::Element(e::Situational, "Terms Basis Date Code"), + 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"), + b::Element(e::Situational, "Day of Month"), + b::Element(e::Situational, "Payment Method Code"), + b::Element(e::Situational, "Percent"))), #end TableDef HEADING, Segment 200 + d::TableDef.header("Detail", + d::LoopDef.build("IT1", d::RepeatCount.bounded(100000), + b::Segment(10, s::IT1, "Baseline Item Data (Invoice)", r::Required, d::RepeatCount.bounded(1), + b::Element(e::Situational, "Assigned Identification"), + b::Element(e::Situational, "Quantity"), + b::Element(e::Situational, "UOM"), + b::Element(e::Situational, "Unit Price"), + b::Element(e::Situational, "Basis of Unit Price Code"), + b::Element(e::Situational, "Product/Service ID Qualifier"), + b::Element(e::Situational, "Product/Service ID"), + b::Element(e::Situational, "Product/Service ID Qualifier"), + b::Element(e::Situational, "Product/Service ID"), + b::Element(e::Situational, "Product/Service ID Qualifier"), + b::Element(e::Situational, "Product/Service ID"), + b::Element(e::Situational, "Product/Service ID Qualifier"), + b::Element(e::Situational, "Product/Service ID"), + b::Element(e::Situational, "Product/Service ID Qualifier"), + b::Element(e::Situational, "Product/Service ID"), + b::Element(e::Situational, "Product/Service ID Qualifier"), + b::Element(e::Situational, "Product/Service ID"), + b::Element(e::Situational, "Product/Service ID Qualifier"), + b::Element(e::Situational, "Product/Service ID"), + b::Element(e::Situational, "Product/Service ID Qualifier"), + b::Element(e::Situational, "Product/Service ID"), + b::Element(e::Situational, "Product/Service ID Qualifier"), + b::Element(e::Situational, "Product/Service ID"), + b::Element(e::Situational, "Product/Service ID Qualifier"), + b::Element(e::Situational, "Product/Service ID")), #end Segment 10 + b::Segment(20, s::TXI, "Tax Information", r::Situational, d::RepeatCount.bounded(10), + b::Element(e::Situational, "Tax Type Code"), + b::Element(e::Situational, "Monetary Amount"), + b::Element(e::Situational, "Percent"), + b::Element(e::Situational, "Tax Jurisdiction Code Qualifier"), + b::Element(e::Situational, "Tax Jurisdiction Code"), + b::Element(e::Situational, "Tax Exempt Code"), + b::Element(e::Situational, "Relationship Code"), + b::Element(e::Situational, "Dollar Basis For Percent"), + b::Element(e::Situational, "Tax Identification Number"), + b::Element(e::Situational, "Assigned Identification")), #end Segment 20 + d::LoopDef.build("PID", d::RepeatCount.bounded(1000), + b::Segment(30, s::PID, "Product/Item Description", r::Situational, d::RepeatCount.bounded(1), + b::Element(e::Situational, "Item Description Type"), + b::Element(e::Situational, "Process Characteristic Code"), + b::Element(e::Situational, "Agency Qualifier Code"), + b::Element(e::Situational, "Product Description Code"), + b::Element(e::Situational, "Description"), + b::Element(e::Situational, "Surface/Layer/Position Code"), + b::Element(e::Situational, "Source Subqualifier"), + b::Element(e::Situational, "Yes/No Condition or Response Code"), + b::Element(e::Situational, "Language Code"))), #end LoopDef PID, Segment 30 + b::Segment(40, s:: REF, "Reference Identification", r::Situational, d::RepeatCount.unbounded, + b::Element(e::Required, "Reference Identification Qualifier"), + b::Element(e::Situational, "Reference Identification"), + b::Element(e::Situational, "Description"), + b::Element(e::Situational, "Description")))), #end TableDef Detail, LoopDef IT1 + d::TableDef.header("Summary", + b::Segment(10, s::TDS, "Total Monetary Value Summary", r::Required, d::RepeatCount.bounded(1), + b::Element(e::Situational, "Amount"), + b::Element(e::Situational, "Amount"), + b::Element(e::Situational, "Amount"), + b::Element(e::Situational, "Amount")), #end Segment 10 + b::Segment(20, s::TXI, "Tax Information", r::Situational, d::RepeatCount.bounded(10), + b::Element(e::Situational, "Tax Type Code"), + b::Element(e::Situational, "Monetary Amount"), + b::Element(e::Situational, "Percent"), + b::Element(e::Situational, "Tax Jurisdiction Code Qualifier"), + b::Element(e::Situational, "Tax Jurisdiction Code"), + b::Element(e::Situational, "Tax Exempt Code"), + b::Element(e::Situational, "Relationship Code"), + b::Element(e::Situational, "Dollar Basis For Percent"), + b::Element(e::Situational, "Tax Identification Number"), + b::Element(e::Situational, "Assigned Identification")), #end Segment 20 + d::LoopDef.build("SAC", d::RepeatCount.bounded(25), + b::Segment(30, s::SAC, "Service, Promotion, Allowance, or Charge Information", r::Situational, d::RepeatCount.bounded(1), + b::Element(e::Situational, "Allowance or Charge Indicator"), + b::Element(e::Situational, "Service, Promotion, Allowance, or Charge Code"), + b::Element(e::Situational, "Agency Qualifier Code"), + b::Element(e::Situational, "Agency Service, Promotion, Allowance, or Charge Code"), + b::Element(e::Situational, "Amount"), + b::Element(e::Situational, "Allowance/Charge Percent Qualifier"), + b::Element(e::Situational, "Percent"), + b::Element(e::Situational, "Rate"), + b::Element(e::Situational, "Unit or Basis for Measurement Code"), + b::Element(e::Situational, "Quantity"), + b::Element(e::Situational, "Quantity"), + b::Element(e::Situational, "Allowance or Charge Method of Handling Code"), + b::Element(e::Situational, "Reference Identification"), + b::Element(e::Situational, "Option Number"), + b::Element(e::Situational, "Description"), + b::Element(e::Situational, "Language Code"))), #end LoopDef SAC, Segment 30 + b::Segment(40, s::CTT, "Transaction Totals", r::Situational, d::RepeatCount.bounded(10), + b::Element(e::Situational, "Number of Line Items"), + b::Element(e::Situational, "Hash Total"), + b::Element(e::Situational, "Weight"), + b::Element(e::Situational, "Unit or Basis for Measurement Code"), + b::Element(e::Situational, "Volume"), + b::Element(e::Situational, "Unit or Basis for Measurement Code"), + b::Element(e::Situational, "Description")), #end Segment 40 + b::Segment(50, 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")))) #end build IN, TableDef Summary, Segment 50 end end end -end \ No newline at end of file +end diff --git a/lib/stupidedi/transaction_sets/004010/standards/IN810.rb b/lib/stupidedi/transaction_sets/004010/standards/IN810.rb index f9a584fed..38eb6b735 100644 --- a/lib/stupidedi/transaction_sets/004010/standards/IN810.rb +++ b/lib/stupidedi/transaction_sets/004010/standards/IN810.rb @@ -8,49 +8,31 @@ module Standards s = SegmentDefs IN810 = b.build("IN", "810", "Invoice", - d::TableDef.header("1 - Header", - s::ST.use( 10, r::Mandatory, d::RepeatCount.bounded(1)), - s::BIG.use( 20, r::Mandatory, d::RepeatCount.bounded(1)), - s::REF.use( 30, r::Optional, d::RepeatCount.bounded(1)), - - d::LoopDef.build("N1", d::RepeatCount.bounded(200), - s:: N1.use( 110, r::Optional, d::RepeatCount.bounded(1)), - s:: N2.use( 120, r::Optional, d::RepeatCount.bounded(2)), - s:: N3.use( 130, r::Optional, d::RepeatCount.bounded(2)), - s:: N4.use( 140, r::Optional, d::RepeatCount.unbounded) - ), - - s::ITD.use( 200, r::Optional, d::RepeatCount.unbounded) - - ), #end TableDef Header - - d::TableDef.detail("2 - Detail", - d::LoopDef.build("IT1", d::RepeatCount.bounded(100000), - s::IT1.use( 10, r::Mandatory, d::RepeatCount.bounded(1)), - s::TXI.use( 20, r::Optional, d::RepeatCount.bounded(10)), - - d::LoopDef.build("PID", d::RepeatCount.bounded(1000), - s::PID.use( 30, r::Optional, d::RepeatCount.bounded(1)) - ), - - s::REF.use( 40, r::Optional, d::RepeatCount.unbounded) - ) - ), #end TableDef Detail - - d::TableDef.summary("3 - Summary", - s::TDS.use( 10, r::Mandatory, d::RepeatCount.bounded(1)), - s::TXI.use( 20, r::Optional, d::RepeatCount.bounded(10)), - - d::LoopDef.build("SAC", d::RepeatCount.bounded(25), - s:: SAC.use( 30, r::Optional, d::RepeatCount.bounded(1)) - ), - - s:: CTT.use( 40, r::Optional, d::RepeatCount.bounded(10)), - s:: SE.use( 50, r::Mandatory, d::RepeatCount.bounded(1)) - ) #end TableDef Summary - ) #end of build - + d::TableDef.header("1 - Header", + s::ST.use( 10, r::Mandatory, d::RepeatCount.bounded(1)), + s::BIG.use( 20, r::Mandatory, d::RepeatCount.bounded(1)), + s::REF.use( 30, r::Optional, d::RepeatCount.bounded(1)), + d::LoopDef.build("N1", d::RepeatCount.bounded(200), + s:: N1.use( 110, r::Optional, d::RepeatCount.bounded(1)), + s:: N2.use( 120, r::Optional, d::RepeatCount.bounded(2)), + s:: N3.use( 130, r::Optional, d::RepeatCount.bounded(2)), + s:: N4.use( 140, r::Optional, d::RepeatCount.unbounded)), #end LoopDef build N1 + s::ITD.use( 200, r::Optional, d::RepeatCount.unbounded)), #end TableDef Header + d::TableDef.detail("2 - Detail", + d::LoopDef.build("IT1", d::RepeatCount.bounded(100000), + s::IT1.use( 10, r::Mandatory, d::RepeatCount.bounded(1)), + s::TXI.use( 20, r::Optional, d::RepeatCount.bounded(10)), + d::LoopDef.build("PID", d::RepeatCount.bounded(1000), + s::PID.use( 30, r::Optional, d::RepeatCount.bounded(1))), #end LoopDef build PID + s::REF.use( 40, r::Optional, d::RepeatCount.unbounded))), #end TableDef Detail, LoopDef build IT1 + d::TableDef.summary("3 - Summary", + s::TDS.use( 10, r::Mandatory, d::RepeatCount.bounded(1)), + s::TXI.use( 20, r::Optional, d::RepeatCount.bounded(10)), + d::LoopDef.build("SAC", d::RepeatCount.bounded(25), + s:: SAC.use( 30, r::Optional, d::RepeatCount.bounded(1))), #end LoopDef build SAC + s:: CTT.use( 40, r::Optional, d::RepeatCount.bounded(10)), + s:: SE.use( 50, r::Mandatory, d::RepeatCount.bounded(1)))) #end build IN, TableDef Summary end end end -end \ No newline at end of file +end diff --git a/lib/stupidedi/versions/004010/element_defs.rb b/lib/stupidedi/versions/004010/element_defs.rb index 7de4aa78f..db95ec8c3 100644 --- a/lib/stupidedi/versions/004010/element_defs.rb +++ b/lib/stupidedi/versions/004010/element_defs.rb @@ -9466,71 +9466,71 @@ module ElementDefs s::CodeList.external("559")) E1715 = t::ID.new(:E1715, "Country Subdivision Code" , 1, 3, s::CodeList.external("5")) - E1716 = t::AN.new(:E1716 , "Change Order Sequence Number" , 1, 8) - E1717 = t::ID.new(:E1717 , "Allowance or Charge Indicator" , 1, 1, - s::CodeList.build( - "A" => "Allowance", - "C" => "Charge", - "N" => "No Allowance or Charge")) - E1718 = t::ID.new(:E1718 , "Allowance or Charge Indicator" , 4, 4, - s::CodeList.build( - "A310" => "Air Express Charge", - "A930" => "Carrier Credit Allowance", - "B720" => "Cooperative Advertising Allowance", - "B820" => "Currency Adjustment", - "B860" => "Customs Broker Fee", - "B870" => "Customs Charge", - "B872" => "Customs Duty", - "B994" => "Declared Value for Customs", - "C000" => "Defective Allowance", - "C040" => "Delivery", - "C260" => "Discount - Incentive", - "C860" => "Expedited Shipments", - "D170" => "Free Goods", - "D240" => "Freight", - "D360" => "Goods and Services Tax Charge", - "D500" => "Handling", - "D900" => "Installation", - "E170" => "Labeling", - "F155" => "Packaging", - "F330" => "Pick-up and Delivery", - "F920" => "Quantity Surcharge", - "G740" => "Service Charge", - "G970" => "Small Order Charge", - "H090" => "Special Handling", - "H151" => "Special Services", - "H640" => "Tax - Excist Tax - Destination", - "H740" => "Tax - Sate and Use", - "H770" => "Tax - Sate Tax", - "H750" => "Tax - Sales Tax", - "H800" => "Tax - VAT", - "I170" => "Trade Discountt", - "ZZZZ" => "Mutually Defined")) - E1719 = t::AN.new(:E1719 , "Agency Service, Promotion, Allowance, or Charge Code" , 1, 10) - E1720 = t::ID.new(:E1720 , "Allowance/Charge Percent Qualifier" , 1, 1) - E1721 = t:: R.new(:E1721 , "Rate" , 1, 10) - E1722 = t::ID.new(:E1722 , "Allowance or Charge Method of Handling Code" , 2, 2) - E1723 = t::AN.new(:E1723 , "Option Number" , 1, 20) - E1724 = t::ID.new(:E1724 , "Tax Type Code" , 2, 2) - E1725 = t::ID.new(:E1725 , "Tax Jurisdiction Code Qualifier" , 2, 2) - E1726 = t::AN.new(:E1726 , "Tax Jurisdiction Code" , 1, 10) - E1727 = t::ID.new(:E1727 , "Tax Exempt Code" , 1, 1) - E1728 = t::ID.new(:E1728 , "Relationship Code" , 1, 1) - E1729 = t:: R.new(:E1729 , "Dollar Basis for Percent" , 1, 9) - E1730 = t::AN.new(:E1730 , "Tax Identification Number" , 1, 20) - E1731 = t::AN.new(:E1731 , "Assigned Identification" , 1, 20) - E1732 = t:: R.new(:E1732 , "Quantity Invoiced" , 1, 10) - E1733 = t::ID.new(:E1733 , "Terms Type Code" , 2, 2) - E1734 = t::ID.new(:E1734 , "Terms Basis Date Code" , 1, 2) - E1735 = t::DT.new(:E1735 , "Terms Discount Due Date" , 8, 8) - E1736 = t::Nn.new(:E1736 , "Terms Discount Days Due" , 1, 3, 0) - E1737 = t::DT.new(:E1737 , "Terms Net Due Date" , 8, 8) - E1738 = t::Nn.new(:E1738 , "Terms Net Days" , 1, 3, 0) - E1739 = t::Nn.new(:E1739 , "Terms Discount Amount" , 1, 10, 2) - E1740 = t::DT.new(:E1740 , "Terms Deferred Due Date" , 8, 8) - E1741 = t::Nn.new(:E1741 , "Deferred Amount Due" , 1, 10, 2) - E1742 = t::Nn.new(:E1742 , "Day of Month" , 1, 2, 0) - E1743 = t::ID.new(:E1743 , "Payment Method Code" , 1, 2) + E1716 = t::AN.new(:E1716, "Change Order Sequence Number" , 1, 8) + E1717 = t::ID.new(:E1717, "Allowance or Charge Indicator" , 1, 1, + s::CodeList.build( + "A" => "Allowance", + "C" => "Charge", + "N" => "No Allowance or Charge")) + E1718 = t::ID.new(:E1718, "Allowance or Charge Indicator" , 4, 4, + s::CodeList.build( + "A310" => "Air Express Charge", + "A930" => "Carrier Credit Allowance", + "B720" => "Cooperative Advertising Allowance", + "B820" => "Currency Adjustment", + "B860" => "Customs Broker Fee", + "B870" => "Customs Charge", + "B872" => "Customs Duty", + "B994" => "Declared Value for Customs", + "C000" => "Defective Allowance", + "C040" => "Delivery", + "C260" => "Discount - Incentive", + "C860" => "Expedited Shipments", + "D170" => "Free Goods", + "D240" => "Freight", + "D360" => "Goods and Services Tax Charge", + "D500" => "Handling", + "D900" => "Installation", + "E170" => "Labeling", + "F155" => "Packaging", + "F330" => "Pick-up and Delivery", + "F920" => "Quantity Surcharge", + "G740" => "Service Charge", + "G970" => "Small Order Charge", + "H090" => "Special Handling", + "H151" => "Special Services", + "H640" => "Tax - Excist Tax - Destination", + "H740" => "Tax - Sate and Use", + "H770" => "Tax - Sate Tax", + "H750" => "Tax - Sales Tax", + "H800" => "Tax - VAT", + "I170" => "Trade Discountt", + "ZZZZ" => "Mutually Defined")) + E1719 = t::AN.new(:E1719, "Agency Service, Promotion, Allowance, or Charge Code", 1, 10) + E1720 = t::ID.new(:E1720, "Allowance/Charge Percent Qualifier" , 1, 1) + E1721 = t:: R.new(:E1721, "Rate" , 1, 10) + E1722 = t::ID.new(:E1722, "Allowance or Charge Method of Handling Code", 2, 2) + E1723 = t::AN.new(:E1723, "Option Number" , 1, 20) + E1724 = t::ID.new(:E1724, "Tax Type Code" , 2, 2) + E1725 = t::ID.new(:E1725, "Tax Jurisdiction Code Qualifier" , 2, 2) + E1726 = t::AN.new(:E1726, "Tax Jurisdiction Code" , 1, 10) + E1727 = t::ID.new(:E1727, "Tax Exempt Code" , 1, 1) + E1728 = t::ID.new(:E1728, "Relationship Code" , 1, 1) + E1729 = t:: R.new(:E1729, "Dollar Basis for Percent" , 1, 9) + E1730 = t::AN.new(:E1730, "Tax Identification Number" , 1, 20) + E1731 = t::AN.new(:E1731, "Assigned Identification" , 1, 20) + E1732 = t:: R.new(:E1732, "Quantity Invoiced" , 1, 10) + E1733 = t::ID.new(:E1733, "Terms Type Code" , 2, 2) + E1734 = t::ID.new(:E1734, "Terms Basis Date Code" , 1, 2) + E1735 = t::DT.new(:E1735, "Terms Discount Due Date" , 8, 8) + E1736 = t::Nn.new(:E1736, "Terms Discount Days Due" , 1, 3, 0) + E1737 = t::DT.new(:E1737, "Terms Net Due Date" , 8, 8) + E1738 = t::Nn.new(:E1738, "Terms Net Days" , 1, 3, 0) + E1739 = t::Nn.new(:E1739, "Terms Discount Amount" , 1, 10, 2) + E1740 = t::DT.new(:E1740, "Terms Deferred Due Date" , 8, 8) + E1741 = t::Nn.new(:E1741, "Deferred Amount Due" , 1, 10, 2) + E1742 = t::Nn.new(:E1742, "Day of Month" , 1, 2, 0) + E1743 = t::ID.new(:E1743, "Payment Method Code" , 1, 2) C001 = Schema::CompositeElementDef.build(:C001, "Composite Unit of Measure", "To identify a composite unit of measure", diff --git a/lib/stupidedi/versions/004010/segment_defs/ACK.rb b/lib/stupidedi/versions/004010/segment_defs/ACK.rb index aa09e2168..4724880f8 100644 --- a/lib/stupidedi/versions/004010/segment_defs/ACK.rb +++ b/lib/stupidedi/versions/004010/segment_defs/ACK.rb @@ -7,37 +7,36 @@ module SegmentDefs e = ElementDefs r = ElementReqs - ACK = s::SegmentDef.build(:ACK, "Line Item Acknowledgment", - "To start acknowledgement of a line item", - e::E668 .simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E380 .simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E355 .simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E374 .simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E373 .simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E326 .simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E235 .simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E234 .simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E235 .simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E234 .simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E235 .simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E234 .simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E235 .simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E234 .simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E235 .simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E234 .simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E235 .simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E234 .simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E235 .simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E234 .simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E235 .simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E234 .simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E235 .simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E234 .simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E235 .simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E234 .simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E235 .simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E234 .simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E1271 .simple_use(r::Optional, s::RepeatCount.bounded(1))) + ACK = s::SegmentDef.build(:ACK, "Line Item Acknowledgment", "To start acknowledgement of a line item", + e::E668 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E380 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E355 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E374 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E373 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E326 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E235 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E234 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E235 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E234 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E235 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E234 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E235 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E234 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E235 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E234 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E235 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E234 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E235 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E234 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E235 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E234 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E235 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E234 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E235 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E234 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E235 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E234 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1271 .simple_use(r::Optional, s::RepeatCount.bounded(1))) end end end diff --git a/lib/stupidedi/versions/004010/segment_defs/BIG.rb b/lib/stupidedi/versions/004010/segment_defs/BIG.rb index 9f61b36f6..7ef91ed24 100644 --- a/lib/stupidedi/versions/004010/segment_defs/BIG.rb +++ b/lib/stupidedi/versions/004010/segment_defs/BIG.rb @@ -8,19 +8,18 @@ module SegmentDefs r = ElementReqs BIG = s::SegmentDef.build(:BIG, "Beginning Segment for Invoice", - "To indicate the beginning of the Invoice Transaction Set and - transmit identifying numbers and dates", - e::E32.simple_use(r::Mandatory, s::RepeatCount.bounded(1)), - e::E76.simple_use(r::Mandatory, s::RepeatCount.bounded(1)), - e::E32.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E324.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E328.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E1716.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E640.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E353.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E306.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E76.simple_use(r::Optional, s::RepeatCount.bounded(1))) + "To indicate the beginning of the Invoice Transaction Set and transmit identifying numbers and dates", + e::E32 .simple_use(r::Mandatory, s::RepeatCount.bounded(1)), + e::E76 .simple_use(r::Mandatory, s::RepeatCount.bounded(1)), + e::E32 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E324 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E328 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1716.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E640 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E353 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E306 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E76 .simple_use(r::Optional, s::RepeatCount.bounded(1))) end end end -end \ No newline at end of file +end diff --git a/lib/stupidedi/versions/004010/segment_defs/IT1.rb b/lib/stupidedi/versions/004010/segment_defs/IT1.rb index 31a668359..07957426e 100644 --- a/lib/stupidedi/versions/004010/segment_defs/IT1.rb +++ b/lib/stupidedi/versions/004010/segment_defs/IT1.rb @@ -7,34 +7,33 @@ module SegmentDefs e = ElementDefs r = ElementReqs - IT1 = s::SegmentDef.build(:IT1, "Baseline Item Data (Invoice)", - "Invoice Lines", - e::E1731.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E1732.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E355.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E212.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E639.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E235.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E234.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E235.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E234.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E235.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E234.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E235.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E234.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E235.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E234.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E235.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E234.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E235.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E234.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E235.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E234.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E235.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E234.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E235.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E234.simple_use(r::Optional, s::RepeatCount.bounded(1))) + IT1 = s::SegmentDef.build(:IT1, "Baseline Item Data (Invoice)", "Invoice Lines", + e::E1731.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1732.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E355 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E212 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E639 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E235 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E234 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E235 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E234 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E235 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E234 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E235 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E234 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E235 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E234 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E235 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E234 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E235 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E234 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E235 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E234 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E235 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E234 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E235 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E234 .simple_use(r::Optional, s::RepeatCount.bounded(1))) end end end -end \ No newline at end of file +end diff --git a/lib/stupidedi/versions/004010/segment_defs/ITD.rb b/lib/stupidedi/versions/004010/segment_defs/ITD.rb index bfb0a3e8e..9454530c1 100644 --- a/lib/stupidedi/versions/004010/segment_defs/ITD.rb +++ b/lib/stupidedi/versions/004010/segment_defs/ITD.rb @@ -7,24 +7,23 @@ module SegmentDefs e = ElementDefs r = ElementReqs - ITD = s::SegmentDef.build(:ITD, "Terms of Sale/Deferred Terms of Sale", - "Terms of Sale/Deferred Terms of Sale", - e::E1733.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E1734.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E954.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E1735.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E1736.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E1737.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E1738.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E1739.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E1740.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E1741.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E954.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E352.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E1742.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E1743.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E954.simple_use(r::Optional, s::RepeatCount.bounded(1))) + ITD = s::SegmentDef.build(:ITD, "Terms of Sale/Deferred Terms of Sale", "Terms of Sale/Deferred Terms of Sale", + e::E1733.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1734.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E954 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1735.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1736.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1737.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1738.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1739.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1740.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1741.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E954 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E352 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1742.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1743.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E954 .simple_use(r::Optional, s::RepeatCount.bounded(1))) end end end -end \ No newline at end of file +end diff --git a/lib/stupidedi/versions/004010/segment_defs/SAC.rb b/lib/stupidedi/versions/004010/segment_defs/SAC.rb index 2c0afd783..bce4395d3 100644 --- a/lib/stupidedi/versions/004010/segment_defs/SAC.rb +++ b/lib/stupidedi/versions/004010/segment_defs/SAC.rb @@ -8,25 +8,24 @@ module SegmentDefs r = ElementReqs SAC = s::SegmentDef.build(:SAC, "Service, Promotion, Allowance, or Charge Information", - "To indicate the header charge information", - e::E1717.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E1718.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E559.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E1719.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E782.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E1720.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E954.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E1721.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E355.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E380.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E380.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E1722.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E127.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E1723.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E352.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E819.simple_use(r::Optional, s::RepeatCount.bounded(1)) - ) + "To indicate the header charge information", + e::E1717.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1718.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E559 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1719.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E782 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1720.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E954 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1721.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E355 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E380 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E380 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1722.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E127 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1723.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E352 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E819 .simple_use(r::Optional, s::RepeatCount.bounded(1))) end end end -end \ No newline at end of file +end diff --git a/lib/stupidedi/versions/004010/segment_defs/TDS.rb b/lib/stupidedi/versions/004010/segment_defs/TDS.rb index 2f22a3237..d436caecc 100644 --- a/lib/stupidedi/versions/004010/segment_defs/TDS.rb +++ b/lib/stupidedi/versions/004010/segment_defs/TDS.rb @@ -7,14 +7,12 @@ module SegmentDefs e = ElementDefs r = ElementReqs - TDS = s::SegmentDef.build(:TDS, "Total Monetary Value Summary", - "Total Monetary Value Summary", - e::E610.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E610.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E610.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E610.simple_use(r::Optional, s::RepeatCount.bounded(1)) - ) + TDS = s::SegmentDef.build(:TDS, "Total Monetary Value Summary", "Total Monetary Value Summary", + e::E610.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E610.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E610.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E610.simple_use(r::Optional, s::RepeatCount.bounded(1))) end end end -end \ No newline at end of file +end diff --git a/lib/stupidedi/versions/004010/segment_defs/TXI.rb b/lib/stupidedi/versions/004010/segment_defs/TXI.rb index f8c0426a2..a0b0a1125 100644 --- a/lib/stupidedi/versions/004010/segment_defs/TXI.rb +++ b/lib/stupidedi/versions/004010/segment_defs/TXI.rb @@ -7,20 +7,18 @@ module SegmentDefs e = ElementDefs r = ElementReqs - TXI = s::SegmentDef.build(:TXI, "Tax Information", - "Tax Information", - e::E1724.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E782.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E954.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E1725.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E1726.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E1727.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E1728.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E1729.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E1730.simple_use(r::Optional, s::RepeatCount.bounded(1)), - e::E1731.simple_use(r::Optional, s::RepeatCount.bounded(1)) - ) + TXI = s::SegmentDef.build(:TXI, "Tax Information", "Tax Information", + e::E1724.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E782 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E954 .simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1725.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1726.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1727.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1728.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1729.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1730.simple_use(r::Optional, s::RepeatCount.bounded(1)), + e::E1731.simple_use(r::Optional, s::RepeatCount.bounded(1))) end end end -end \ No newline at end of file +end From fbf40e892cb9a5720e41d86cc91e355ec05808f6 Mon Sep 17 00:00:00 2001 From: Karim Elnadim Date: Thu, 16 Dec 2021 09:16:29 -0600 Subject: [PATCH 7/9] add 4010/810 fixture --- spec/fixtures/004010/IN810/pass/1.edi | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 spec/fixtures/004010/IN810/pass/1.edi diff --git a/spec/fixtures/004010/IN810/pass/1.edi b/spec/fixtures/004010/IN810/pass/1.edi new file mode 100644 index 000000000..86c8e8937 --- /dev/null +++ b/spec/fixtures/004010/IN810/pass/1.edi @@ -0,0 +1,15 @@ +ISA*00*810BK4010 *00* *ZZ*111111 *ZZ*2222222 *211216*0252*U*00401*005626765*0*P*>~ +GS*IN*111111*2222222*20211216*0252*5626765*X*004010~ +ST*810*5626765~ +BIG*20211216*00232917*20211026*1376-0010391~ +N1*ST*Store Shipping Address*ZZ*8025886~ +N3*123 address_1*address_2~ +N4*Huntington*IN*46750~ +ITD**3*****30~ +IT1**1**5.32****EN*9780618872657*GC*02~ +PID*F****Native Guard~ +TDS*532~ +CTT*1*1~ +SE*11*5626765~ +GE*1*5626765~ +IEA*1*005626765~ From ee1be1c95f03ee2878965d58943126535c3c5743 Mon Sep 17 00:00:00 2001 From: Karim Elnadim Date: Thu, 16 Dec 2021 14:01:29 -0600 Subject: [PATCH 8/9] add 4010 810 spec --- .../004010/implementations/IN810.rb | 68 +++++++---------- spec/fixtures/004010/IN810/pass/1.edi | 32 ++++---- .../transaction_sets/004010/IN810_spec.rb | 76 +++++++++++++++++++ 3 files changed, 122 insertions(+), 54 deletions(-) create mode 100644 spec/lib/stupidedi/transaction_sets/004010/IN810_spec.rb diff --git a/lib/stupidedi/transaction_sets/004010/implementations/IN810.rb b/lib/stupidedi/transaction_sets/004010/implementations/IN810.rb index e3c3334c8..2fedae383 100644 --- a/lib/stupidedi/transaction_sets/004010/implementations/IN810.rb +++ b/lib/stupidedi/transaction_sets/004010/implementations/IN810.rb @@ -23,11 +23,6 @@ module Implementations b::Element(e::Situational, "Transaction Set Purpose Code"), b::Element(e::Situational, "Action Code"), b::Element(e::Situational, "Invoice Number")), - b::Segment(30, s:: REF, "Reference Identification", r::Situational, d::RepeatCount.unbounded, - b::Element(e::Required, "Reference Identification Qualifier"), - b::Element(e::Situational, "Reference Identification"), - b::Element(e::Situational, "Description"), - b::Element(e::Situational, "Description")), d::LoopDef.build("N1", d::RepeatCount.bounded(200), b::Segment(110, s:: N1, "Name", r::Situational, d::RepeatCount.bounded(1), b::Element(e::Required, "Entity Identifier Code"), @@ -114,12 +109,7 @@ module Implementations b::Element(e::Situational, "Surface/Layer/Position Code"), b::Element(e::Situational, "Source Subqualifier"), b::Element(e::Situational, "Yes/No Condition or Response Code"), - b::Element(e::Situational, "Language Code"))), #end LoopDef PID, Segment 30 - b::Segment(40, s:: REF, "Reference Identification", r::Situational, d::RepeatCount.unbounded, - b::Element(e::Required, "Reference Identification Qualifier"), - b::Element(e::Situational, "Reference Identification"), - b::Element(e::Situational, "Description"), - b::Element(e::Situational, "Description")))), #end TableDef Detail, LoopDef IT1 + b::Element(e::Situational, "Language Code"))))), #end TableDef Detail, LoopDef IT1, LoopDef PID, Segment 30 d::TableDef.header("Summary", b::Segment(10, s::TDS, "Total Monetary Value Summary", r::Required, d::RepeatCount.bounded(1), b::Element(e::Situational, "Amount"), @@ -137,35 +127,35 @@ module Implementations b::Element(e::Situational, "Dollar Basis For Percent"), b::Element(e::Situational, "Tax Identification Number"), b::Element(e::Situational, "Assigned Identification")), #end Segment 20 - d::LoopDef.build("SAC", d::RepeatCount.bounded(25), - b::Segment(30, s::SAC, "Service, Promotion, Allowance, or Charge Information", r::Situational, d::RepeatCount.bounded(1), - b::Element(e::Situational, "Allowance or Charge Indicator"), - b::Element(e::Situational, "Service, Promotion, Allowance, or Charge Code"), - b::Element(e::Situational, "Agency Qualifier Code"), - b::Element(e::Situational, "Agency Service, Promotion, Allowance, or Charge Code"), - b::Element(e::Situational, "Amount"), - b::Element(e::Situational, "Allowance/Charge Percent Qualifier"), - b::Element(e::Situational, "Percent"), - b::Element(e::Situational, "Rate"), + d::LoopDef.build("SAC", d::RepeatCount.bounded(25), + b::Segment(30, s::SAC, "Service, Promotion, Allowance, or Charge Information", r::Situational, d::RepeatCount.bounded(1), + b::Element(e::Situational, "Allowance or Charge Indicator"), + b::Element(e::Situational, "Service, Promotion, Allowance, or Charge Code"), + b::Element(e::Situational, "Agency Qualifier Code"), + b::Element(e::Situational, "Agency Service, Promotion, Allowance, or Charge Code"), + b::Element(e::Situational, "Amount"), + b::Element(e::Situational, "Allowance/Charge Percent Qualifier"), + b::Element(e::Situational, "Percent"), + b::Element(e::Situational, "Rate"), + b::Element(e::Situational, "Unit or Basis for Measurement Code"), + b::Element(e::Situational, "Quantity"), + b::Element(e::Situational, "Quantity"), + b::Element(e::Situational, "Allowance or Charge Method of Handling Code"), + b::Element(e::Situational, "Reference Identification"), + b::Element(e::Situational, "Option Number"), + b::Element(e::Situational, "Description"), + b::Element(e::Situational, "Language Code"))), #end LoopDef SAC, Segment 30 + b::Segment(40, s::CTT, "Transaction Totals", r::Situational, d::RepeatCount.bounded(10), + b::Element(e::Situational, "Number of Line Items"), + b::Element(e::Situational, "Hash Total"), + b::Element(e::Situational, "Weight"), b::Element(e::Situational, "Unit or Basis for Measurement Code"), - b::Element(e::Situational, "Quantity"), - b::Element(e::Situational, "Quantity"), - b::Element(e::Situational, "Allowance or Charge Method of Handling Code"), - b::Element(e::Situational, "Reference Identification"), - b::Element(e::Situational, "Option Number"), - b::Element(e::Situational, "Description"), - b::Element(e::Situational, "Language Code"))), #end LoopDef SAC, Segment 30 - b::Segment(40, s::CTT, "Transaction Totals", r::Situational, d::RepeatCount.bounded(10), - b::Element(e::Situational, "Number of Line Items"), - b::Element(e::Situational, "Hash Total"), - b::Element(e::Situational, "Weight"), - b::Element(e::Situational, "Unit or Basis for Measurement Code"), - b::Element(e::Situational, "Volume"), - b::Element(e::Situational, "Unit or Basis for Measurement Code"), - b::Element(e::Situational, "Description")), #end Segment 40 - b::Segment(50, 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")))) #end build IN, TableDef Summary, Segment 50 + b::Element(e::Situational, "Volume"), + b::Element(e::Situational, "Unit or Basis for Measurement Code"), + b::Element(e::Situational, "Description")), #end Segment 40 + b::Segment(50, 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")))) #end build IN, TableDef Summary, Segment 50 end end end diff --git a/spec/fixtures/004010/IN810/pass/1.edi b/spec/fixtures/004010/IN810/pass/1.edi index 86c8e8937..29c534ee7 100644 --- a/spec/fixtures/004010/IN810/pass/1.edi +++ b/spec/fixtures/004010/IN810/pass/1.edi @@ -1,15 +1,17 @@ -ISA*00*810BK4010 *00* *ZZ*111111 *ZZ*2222222 *211216*0252*U*00401*005626765*0*P*>~ -GS*IN*111111*2222222*20211216*0252*5626765*X*004010~ -ST*810*5626765~ -BIG*20211216*00232917*20211026*1376-0010391~ -N1*ST*Store Shipping Address*ZZ*8025886~ -N3*123 address_1*address_2~ -N4*Huntington*IN*46750~ -ITD**3*****30~ -IT1**1**5.32****EN*9780618872657*GC*02~ -PID*F****Native Guard~ -TDS*532~ -CTT*1*1~ -SE*11*5626765~ -GE*1*5626765~ -IEA*1*005626765~ +ISA|00|810BK4010 |00| |ZZ|111111 |ZZ|2222222 |211118|0752|U|00401|005639689|0|T|>~ +GS|IN|111111|2222222|20211118|0752|5639689|X|004010~ +ST|810|5639689~ +BIG|20211118|00237058|20211102|0691-0014403~ +N1|ST|Store Shipping Address|ZZ|1091581~ +N3|123 address_1|address_2~ +N4|SAVANNAH|GA|314014245~ +ITD||3|||||30~ +IT1||4||70||||EN|9781501331978|GC|01~ +PID|F||||Retail Buying From Basics to Fashion~ +IT1||1||5.66||||EN|9780316154680|GC|02~ +PID|F||||When You Are Engulfed in Flames~ +TDS|28566~ +CTT|2|5~ +SE|13|5639689~ +GE|1|5639689~ +IEA|1|005639689~ diff --git a/spec/lib/stupidedi/transaction_sets/004010/IN810_spec.rb b/spec/lib/stupidedi/transaction_sets/004010/IN810_spec.rb new file mode 100644 index 000000000..d1306bc5d --- /dev/null +++ b/spec/lib/stupidedi/transaction_sets/004010/IN810_spec.rb @@ -0,0 +1,76 @@ +describe "Stupidedi::TransactionSets::FortyTen::Implementations::IN810" do + using Stupidedi::Refinements + include TreeMatchers + include NavigationMatchers + + describe "parser" do + let(:fixdir) { "004010/IN810/pass" } + let(:parser) { Fixtures.parse!("#{fixdir}/1.edi").head } + + describe "parser" do + let(:iea) { parser.segment.fetch } + + it "is deterministic" do + expect(parser).to be_deterministic + expect(parser).to be_last + end + + it "infers separators" do + expect(parser).to have_separators( + :element => "|", + :component => ">", + :repetition => nil, + :segment => "~") + end + end + + describe "structure" do + let(:isa) { parser.parent.fetch } + + it "has defined sequence" do + expect(parser).to have_sequence(%w(ISA GS ST BIG N1 N3 N4 ITD IT1 PID IT1 PID TDS CTT SE GE IEA)) + end + + it "is correct" do + expect(isa).to have_distance(16).to(parser) + expect(isa).to have_structure( + Ss(X(:ST), + R(:ISA), + # GS|IN|111111|2222222|20211118|0752|5639689|X|004010~ + S(:GS, "IN", "111111", "2222222", "20211118", "0752", "5639689", "X", "004010") => + Ss(R(:GS), + # ST|810|5639689~ + S(:ST, "810", "5639689") => + Ss(R(:ST), + # BIG|20211118|00237058|20211102|0691-0014403~ + S(:BIG, "20211118", "00237058", "20211102", "0691-0014403"), + # N1|ST|Store Shipping Address|ZZ|1091581~ + S(:N1, "ST", "Store Shipping Address", "ZZ", "1091581") => Ss( + # N3|123 address_1|address_2~ + S(:N3, "123 address_1", "address_2") => Ss( + # N4|SAVANNAH|GA|314014245~ + S(:N4, "SAVANNAH", "GA", "314014245") => Ss())), + # ITD||3|||||30~ + S(:ITD, "", "3", "", "", "", "", "30") => Ss(), + # IT1||4||70||||EN|9781501331978|GC|01~ + S(:IT1, "", "", "", "70", "", "", "", "EN", "9781501331978", "GC", "01") => Ss( + # PID|F||||Retail Buying From Basics to Fashion~ + S(:PID, "F", "", "", "", "Retail Buying From Basics to Fashion") => Ss()), + # IT1||1||5.66||||EN|9780316154680|GC|02~ + S(:IT1, "", "1", "", "5.66", "", "", "", "EN", "9780316154680", "GC", "02") => Ss( + # PID|F||||When You Are Engulfed in Flames~ + S(:PID, "F", "", "", "", "When You Are Engulfed in Flames") => Ss()), + # TDS|28566~ + S(:TDS, "28566") => Ss( + # CTT|2|5~ + S(:CTT, "2", "5") => Ss( + # SE|13|5639689~ + S(:SE, "13", "5639689") => Ss()))), + # GE|1|5639689~ + S(:GE, "1", "5639689") => Ss(S(:IEA)), + # IEA|1|005639689~ + S(:IEA, "1", "005639689") => Ss()))) + end + end + end +end From cc223fd3476bc93621a10b5ac2878ea3efd402f9 Mon Sep 17 00:00:00 2001 From: Karim Elnadim Date: Thu, 16 Dec 2021 14:10:06 -0600 Subject: [PATCH 9/9] Fix PR855 spec by not requiring the added ACK --- lib/stupidedi/transaction_sets/004010/standards/PR855.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/stupidedi/transaction_sets/004010/standards/PR855.rb b/lib/stupidedi/transaction_sets/004010/standards/PR855.rb index 3d9467862..d72074611 100644 --- a/lib/stupidedi/transaction_sets/004010/standards/PR855.rb +++ b/lib/stupidedi/transaction_sets/004010/standards/PR855.rb @@ -22,7 +22,7 @@ module Standards d::TableDef.detail("2 - Detail", d::LoopDef.build("PO1", d::RepeatCount.bounded(10000), s::PO1.use( 10, r::Mandatory, d::RepeatCount.bounded(1)), - s::ACK.use( 10, r::Mandatory, d::RepeatCount.bounded(1)))), + s::ACK.use( 10, r::Optional, d::RepeatCount.bounded(1)))), d::TableDef.summary("3 - Summary", d::LoopDef.build("CTT", d::RepeatCount.bounded(1),