private void btnGenerate_Click(object sender, System.EventArgs e) { //This is just an example program to demonstrate how to generate and validate an 810 EDI file //in C# using the Framework EDI component ediDocument oEdiDoc = null; ediSchema oSchema = null; ediSchemas oSchemas = null; ediInterchange oInterchange = null; ediGroup oGroup = null; ediTransactionSet oTransactionset = null; ediDataSegment oSegment = null; ediWarnings oWarnings = null; ediWarning oWarning = null; int nErrors; string sPath; string sEdiFile; string sSefFile; sPath = AppDomain.CurrentDomain.BaseDirectory; sSefFile = "810_X12-4010.SEF"; sEdiFile = "810OUTPUT.X12"; //CREATES OEDIDOC OBJECT ediDocument.Set(ref oEdiDoc, new ediDocument()); //THIS MAKES CERTAIN THAT FREDI ONLY USES THE SEF FILE PROVIDED, AND THAT IT DOES //NOT USE ITS BUILT-IN STANDARD REFERENCE TABLE TO GENERATE THE EDI FILE. ediSchemas.Set(ref oSchemas,(ediSchemas) oEdiDoc.GetSchemas()); oSchemas.EnableStandardReference = false; //ENABLES FORWARD WRITE, AND INCREASES BUFFER I/O TO IMPROVE PERFORMANCE oEdiDoc.CursorType = DocumentCursorTypeConstants.Cursor_ForwardWrite; oEdiDoc.set_Property(DocumentPropertyIDConstants.Property_DocumentBufferIO, 2000); //SET TERMINATORS oEdiDoc.SegmentTerminator = "~{13:10}"; oEdiDoc.ElementTerminator = "*"; oEdiDoc.CompositeTerminator = ">"; //LOADS THE SEF FILE ediSchema.Set(ref oSchema, (ediSchema) oEdiDoc.LoadSchema(sPath + sSefFile, 0)); //CREATES THE ISA SEGMENT ediInterchange.Set(ref oInterchange, (ediInterchange) oEdiDoc.CreateInterchange("X","004010")); ediDataSegment.Set(ref oSegment, (ediDataSegment) oInterchange.GetDataSegmentHeader()); oSegment.set_DataElementValue(1,0,"00"); //Authorization Information Qualifier oSegment.set_DataElementValue(2,0," "); //Authorization Information oSegment.set_DataElementValue(3,0,"00"); //Security Information Qualifier oSegment.set_DataElementValue(4,0," "); //Security Information oSegment.set_DataElementValue(5,0,"ZZ"); //Interchange ID Qualifier oSegment.set_DataElementValue(6,0,"SENDERISA "); //Interchange Sender ID oSegment.set_DataElementValue(7,0,"ZZ"); //Interchange ID Qualifier oSegment.set_DataElementValue(8,0,"RECEIVERISA "); //Interchange Receiver ID oSegment.set_DataElementValue(9,0,"960807"); //Interchange Date oSegment.set_DataElementValue(10,0,"1548"); //Interchange Time oSegment.set_DataElementValue(11,0,"U"); //Interchange Control Standards Identifier oSegment.set_DataElementValue(12,0,"00401"); //Interchange Control Version Number oSegment.set_DataElementValue(13,0,"000000020"); //Interchange Control Number oSegment.set_DataElementValue(14,0,"0"); //Acknowledgment Requested oSegment.set_DataElementValue(15,0,"T"); //Usage Indicator oSegment.set_DataElementValue(16,0,">"); //Component Element Separator //CREATES THE GS SEGMENT ediGroup.Set(ref oGroup, (ediGroup) oInterchange.CreateGroup("004010")); ediDataSegment.Set( ref oSegment, (ediDataSegment) oGroup.GetDataSegmentHeader()); oSegment.set_DataElementValue(1,0,"IN"); //Functional Identifier Code oSegment.set_DataElementValue(2,0,"SENDERDEPT"); //Application Sender's Code oSegment.set_DataElementValue(3,0,"007326879"); //Application Receiver's Code oSegment.set_DataElementValue(4,0,"19960807"); //Date oSegment.set_DataElementValue(5,0,"1548"); //Time oSegment.set_DataElementValue(6,0,"1"); //Group Control Number oSegment.set_DataElementValue(7,0,"X"); //Responsible Agency Code oSegment.set_DataElementValue(8,0,"004010"); //Version / Release / Industry Identifier Code //CREATES THE ST SEGMENT ediTransactionSet.Set(ref oTransactionset, (ediTransactionSet) oGroup.CreateTransactionSet("810")); ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.GetDataSegmentHeader()); oSegment.set_DataElementValue(1,0,"810"); //Transaction Set Identifier Code oSegment.set_DataElementValue(2,0,"000000001"); //Transaction Set Control Number //BIG - BEGINNING SEGMENT FOR INVOICE ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("BIG")); //oSegment.set_DataElementValue(1,0,"19971211"); //Date //this is a mandatory element, which will generata an error if omitted oSegment.set_DataElementValue(2,0,txtInvoiceNo.Text ); //Invoice Number oSegment.set_DataElementValue(4,0,"A99999-01"); //Purchase Order Number //SHIP-TO INFORMATION LOOP //N1 - NAME ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("N1\\N1")); oSegment.set_DataElementValue(1,0,"ST"); //Entity Identifier Code oSegment.set_DataElementValue(2,0,"BUYSNACKS PORT"); //Name oSegment.set_DataElementValue(3,0,"9"); //Identification Code Qualifier oSegment.set_DataElementValue(4,0,"1223334445"); //Identification Code //N3 - ADDRESS INFORMATION ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("N1\\N3")); oSegment.set_DataElementValue(1,0,"1000 N. SAMPLE HIGHWAY"); //Address Information //N4 - GEOGRAPHIC LOCATION ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("N1\\N4")); oSegment.set_DataElementValue(1,0,"ATHENS"); //City Name oSegment.set_DataElementValue(2,0,"GA"); //State or Province Code oSegment.set_DataElementValue(3,0,"30603"); //Postal Code //BILL-TO INFORMATION LOOP //N1 - NAME ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("N1(2)\\N1")); //it is not necessary to include the instance loop counter e.g. (2) when the cursor type is set to forwardwrite oSegment.set_DataElementValue(1,0,"BT"); //Entity Identifier Code oSegment.set_DataElementValue(2,0,"BUYSNACKS"); //Name oSegment.set_DataElementValue(3,0,"9"); //Identification Code Qualifier oSegment.set_DataElementValue(4,0,"1223334444"); //Identification Code //N3 - ADDRESS INFORMATION ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("N1(2)\\N3")); oSegment.set_DataElementValue(1,0,"P.O. BOX 0000"); //Address Information //N4 - GEOGRAPHIC LOCATION ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("N1(2)\\N4")); oSegment.set_DataElementValue(1,0,"TEMPLE"); //City Name oSegment.set_DataElementValue(2,0,"TX"); //State or Province Code oSegment.set_DataElementValue(3,0,"76503"); //Postal Code //REMIT-TO INFORMATION //N1 - NAME ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("N1(3)\\N1")); oSegment.set_DataElementValue(1,0,"RE"); //Entity Identifier Code oSegment.set_DataElementValue(2,0,"FOODSELLER"); //Name oSegment.set_DataElementValue(3,0,"9"); //Identification Code Qualifier oSegment.set_DataElementValue(4,0,"12345QQQQ"); //Identification Code //N3 - ADDRESS INFORMATION ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("N1(3)\\N3")); oSegment.set_DataElementValue(1,0,"P.O. BOX 222222"); //Address Information //N4 - GEOGRAPHIC LOCATION ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("N1(3)\\N4")); oSegment.set_DataElementValue(1,0,"DALLAS"); //City Name oSegment.set_DataElementValue(2,0,"TX"); //State or Province Code oSegment.set_DataElementValue(3,0,"723224444"); //Postal Code //ITD - TERMS OF SALE/DEFERRED TERMS OF SALE ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("ITD")); oSegment.set_DataElementValue(1,0,"01"); //Terms Type Code oSegment.set_DataElementValue(2,0,"3"); //Terms Basis Date Code oSegment.set_DataElementValue(3,0,"1.000"); //Terms Discount Percent oSegment.set_DataElementValue(5,0,"15"); //Terms Discount Days Due oSegment.set_DataElementValue(7,0,"16"); //Terms Net Days oSegment.set_DataElementValue(12,0,"1/15 NET 30"); //Description //FOB - F.O.B. RELATED INSTRUCTIONS ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("FOB")); oSegment.set_DataElementValue(1,0,"PP"); //Shipment Method of Payment //IT1 - BASELINE ITEM DATA (INVOICE) ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("IT1\\IT1")); oSegment.set_DataElementValue(2,0,"16"); //Quantity Invoiced oSegment.set_DataElementValue(3,0,"CA"); //Unit or Basis for Measurement Code oSegment.set_DataElementValue(4,0,"12.34"); //Unit Price oSegment.set_DataElementValue(6,0,"UA"); //Product/Service ID Qualifier oSegment.set_DataElementValue(7,0,"002840022222"); //Product/Service ID //PID - PRODUCT/ITEM DESCRIPTION ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("IT1\\PID\\PID")); oSegment.set_DataElementValue(1,0,"F"); //Item Description Type oSegment.set_DataElementValue(5,0,"CRUNCHY CHIPS LSS"); //Description //IT1 - BASELINE ITEM DATA (INVOICE) ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("IT1(2)\\IT1")); oSegment.set_DataElementValue(2,0,"13"); //Quantity Invoiced oSegment.set_DataElementValue(3,0,"CA"); //Unit or Basis for Measurement Code oSegment.set_DataElementValue(4,0,"12.34"); //Unit Price oSegment.set_DataElementValue(6,0,"UA"); //Product/Service ID Qualifier oSegment.set_DataElementValue(7,0,"002840033333"); //Product/Service ID //PID - PRODUCT/ITEM DESCRIPTION ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("IT1(2)\\PID\\PID")); oSegment.set_DataElementValue(1,0,"F"); //Item Description Type oSegment.set_DataElementValue(5,0,"NACHO CHIPS LSS"); //Description //IT1 - BASELINE ITEM DATA (INVOICE) ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("IT1(3)\\IT1")); oSegment.set_DataElementValue(2,0,"32"); //Quantity Invoiced oSegment.set_DataElementValue(3,0,"CA"); //Unit or Basis for Measurement Code oSegment.set_DataElementValue(4,0,"12.34"); //Unit Price oSegment.set_DataElementValue(6,0,"UA"); //Product/Service ID Qualifier oSegment.set_DataElementValue(7,0,"002840044444"); //Product/Service ID //PID - PRODUCT/ITEM DESCRIPTION ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("IT1(3)\\PID\\PID")); oSegment.set_DataElementValue(1,0,"F"); //Item Description Type oSegment.set_DataElementValue(5,0,"POTATO CHIPS"); //Description //IT1 - BASELINE ITEM DATA (INVOICE) ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("IT1(4)\\IT1")); oSegment.set_DataElementValue(2,0,"51"); //Quantity Invoiced oSegment.set_DataElementValue(3,0,"CA"); //Unit or Basis for Measurement Code oSegment.set_DataElementValue(4,0,"12.34"); //Unit Price oSegment.set_DataElementValue(6,0,"UA"); //Product/Service ID Qualifier oSegment.set_DataElementValue(7,0,"002840055555"); //Product/Service ID //PID - PRODUCT/ITEM DESCRIPTION ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("IT1(4)\\PID\\PID")); oSegment.set_DataElementValue(1,0,"F"); //Item Description Type oSegment.set_DataElementValue(5,0,"CORN CHIPS"); //Description //IT1 - BASELINE ITEM DATA (INVOICE) ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("IT1(5)\\IT1")); oSegment.set_DataElementValue(2,0,"9"); //Quantity Invoiced oSegment.set_DataElementValue(3,0,"CA"); //Unit or Basis for Measurement Code oSegment.set_DataElementValue(4,0,"12.34"); //Unit Price oSegment.set_DataElementValue(6,0,"UA"); //Product/Service ID Qualifier oSegment.set_DataElementValue(7,0,"002840066666"); //Product/Service ID //PID - PRODUCT/ITEM DESCRIPTION ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("IT1(5)\\PID\\PID")); oSegment.set_DataElementValue(1,0,"F"); //Item Description Type oSegment.set_DataElementValue(5,0,"BBQ CHIPS"); //Description //IT1 - BASELINE ITEM DATA (INVOICE) ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("IT1(6)\\IT1")); oSegment.set_DataElementValue(2,0,"85"); //Quantity Invoiced oSegment.set_DataElementValue(3,0,"CA"); //Unit or Basis for Measurement Code oSegment.set_DataElementValue(4,0,"12.34"); //Unit Price oSegment.set_DataElementValue(6,0,"UA"); //Product/Service ID Qualifier oSegment.set_DataElementValue(7,0,"002840077777"); //Product/Service ID //PID - PRODUCT/ITEM DESCRIPTION ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("IT1(6)\\PID\\PID")); oSegment.set_DataElementValue(1,0,"F"); //Item Description Type oSegment.set_DataElementValue(5,0,"GREAT BIG CHIPS LSS"); //Description //IT1 - BASELINE ITEM DATA (INVOICE) ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("IT1(7)\\IT1")); oSegment.set_DataElementValue(2,0,"1"); //Quantity Invoiced oSegment.set_DataElementValue(3,0,"CA"); //Unit or Basis for Measurement Code oSegment.set_DataElementValue(4,0,"12.34"); //Unit Price oSegment.set_DataElementValue(6,0,"UA"); //Product/Service ID Qualifier oSegment.set_DataElementValue(7,0,"002840088888"); //Product/Service ID //PID - PRODUCT/ITEM DESCRIPTION ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("IT1(7)\\PID\\PID")); oSegment.set_DataElementValue(1,0,"F"); //Item Description Type oSegment.set_DataElementValue(5,0,"MINI CHIPS LSS"); //Description //TDS - TOTAL MONETARY VALUE SUMMARY ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("TDS")); oSegment.set_DataElementValue(1,0,"255438"); //Amount //CAD - CARRIER DETAIL ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("CAD")); oSegment.set_DataElementValue(5,0,"FREEFORM"); //Routing //ISS - INVOICE SHIPMENT SUMMARY ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("ISS\\ISS")); oSegment.set_DataElementValue(1,0,"207"); //Number of Units Shipped oSegment.set_DataElementValue(2,0,"CA"); //Unit or Basis for Measurement Code //CTT - TRANSACTION TOTALS ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("CTT")); oSegment.set_DataElementValue(1,0,"7"); //Number of Line Items //TRAILING SEGMENTS ARE AUTOMATICALLY CREATED WHEN FREDI COMMITS (SAVES) //THE EDIDOC OBJECT INTO AN EDI FILE. oEdiDoc.Save(sPath + sEdiFile); //check to see if any errors were found during generation ediWarnings.Set(ref oWarnings, (ediWarnings) oEdiDoc.GetWarnings()); nErrors = oWarnings.Count; for (int i=1; i <= nErrors; i++) { ediWarning.Set(ref oWarning, (ediWarning) oWarnings.get_Warning(i)); listBoxErrors.Items.Add(oWarning.Description); } //DESTROYS OBJECTS oSegment.Dispose(); oTransactionset.Dispose(); oGroup.Dispose(); oInterchange.Dispose(); oSchema.Dispose(); oSchemas.Dispose(); oEdiDoc.Dispose(); MessageBox.Show("Done. Output = " + sPath + sEdiFile); }