/// <summary> /// Generate and write EDI document to a stream async /// </summary> public static async void Run() { Debug.WriteLine("******************************"); Debug.WriteLine(MethodBase.GetCurrentMethod().Name); Debug.WriteLine("******************************"); // 1. Construct the invoice var invoice = EF_X12_004010_810_Builder.BuildInvoice("1"); using (var stream = new MemoryStream()) { using (var writer = new X12Writer(stream)) { // 2. Begin with ISA segment await writer.WriteAsync(SegmentBuilders.BuildIsa("1")); // 3. Follow up with GS segment await writer.WriteAsync(SegmentBuilders.BuildGs("1")); // 4. Then write the invoice(s) await writer.WriteAsync(invoice); } Debug.Write(stream.LoadToString()); } }
/// <summary> /// Batch multiple transactions in the same functional group\EDI stream. /// </summary> public static void Run() { Debug.WriteLine("******************************"); Debug.WriteLine(MethodBase.GetCurrentMethod().Name); Debug.WriteLine("******************************"); using (var stream = new MemoryStream()) { using (var writer = new X12Writer(stream, new X12WriterSettings() { Postfix = Environment.NewLine })) { writer.Write(SegmentBuilders.BuildIsa("1")); writer.Write(SegmentBuilders.BuildGs("1")); // 1. Write the first invoice writer.Write(EF_X12_004010_810_Builder.BuildInvoice("1")); // 2. Write the second invoice writer.Write(EF_X12_004010_810_Builder.BuildInvoice("2")); // 3. Write any subsequent invoices... } Debug.Write(stream.LoadToString()); } }
/// <summary> /// Batch multiple interchanges in the same EDI stream /// </summary> public static void Run() { Debug.WriteLine("******************************"); Debug.WriteLine(MethodBase.GetCurrentMethod().Name); Debug.WriteLine("******************************"); using (var stream = new MemoryStream()) { using (var writer = new X12Writer(stream)) { // 1. Write the first interchange writer.Write(SegmentBuilders.BuildIsa("1")); writer.Write(SegmentBuilders.BuildGs("1")); writer.Write(EF_X12_004010_810_Builder.BuildInvoice("1")); // 2. Write the second interchange // No need to close the previous interchange with a IEA writer.Write(SegmentBuilders.BuildIsa("2")); writer.Write(SegmentBuilders.BuildGs("1")); writer.Write(EF_X12_004010_810_Builder.BuildInvoice("1")); } Debug.Write(stream.LoadToString()); } }
/// <summary> /// Batch multiple transactions under multiple functional groups in the same EDI stream /// </summary> public static void Run() { Debug.WriteLine("******************************"); Debug.WriteLine(MethodBase.GetCurrentMethod().Name); Debug.WriteLine("******************************"); using (var stream = new MemoryStream()) { using (var writer = new X12Writer(stream)) { writer.Write(SegmentBuilders.BuildIsa("1")); // 1. Write the first group writer.Write(SegmentBuilders.BuildGs("1")); // Write the transactions... writer.Write(EF_X12_004010_810_Builder.BuildInvoice("1")); // 2. Write the second group // No need to close the previous group with a GE writer.Write(SegmentBuilders.BuildGs("2")); // Write the transactions... writer.Write(EF_X12_004010_810_Builder.BuildInvoice("2")); } Debug.Write(stream.LoadToString()); } }
/// <summary> /// Write transactions with whitespace. /// </summary> public static void Run() { Debug.WriteLine("******************************"); Debug.WriteLine(MethodBase.GetCurrentMethod().Name); Debug.WriteLine("******************************"); var invoice = EF_X12_004010_810_Builder.BuildInvoice("1"); // Initialize some properties with blanks invoice.BIG.ReleaseNumber_05 = ""; invoice.BIG.ChangeOrderSequenceNumber_06 = ""; using (var stream = new MemoryStream()) { // Set the PreserveWhitespace flag to true using (var writer = new X12Writer(stream, new X12WriterSettings() { PreserveWhitespace = true })) { writer.Write(SegmentBuilders.BuildIsa("1")); writer.Write(SegmentBuilders.BuildGs("1")); writer.Write(invoice); } Debug.Write(stream.LoadToString()); } }
/// <summary> /// Write with custom separators, by default it uses the standard separators. /// </summary> public static void Run() { Debug.WriteLine("******************************"); Debug.WriteLine(MethodBase.GetCurrentMethod().Name); Debug.WriteLine("******************************"); var invoice = EF_X12_004010_810_Builder.BuildInvoice("1"); using (var stream = new MemoryStream()) { using (var writer = new X12Writer(stream)) { // Set a custom segment separator. var separators = new Separators('|', Separators.X12.ComponentDataElement, Separators.X12.DataElement, Separators.X12.RepetitionDataElement, Separators.X12.Escape); // Write the ISA with the custom separator set writer.Write(SegmentBuilders.BuildIsa("1"), separators); writer.Write(SegmentBuilders.BuildGs("1")); writer.Write(invoice); } Debug.Write(stream.LoadToString()); } }
/// <summary> /// Generate and write EDI document to a file /// </summary> public static void Run() { Debug.WriteLine("******************************"); Debug.WriteLine(MethodBase.GetCurrentMethod().Name); Debug.WriteLine("******************************"); // 1. Construct the invoice var invoice = EF_X12_004010_810_Builder.BuildInvoice("1"); // 2. Write directly to a file // Change the patch to a file on your machine using (var writer = new X12Writer(@"C:\Test\Output.txt", false)) { writer.Write(SegmentBuilders.BuildIsa("1")); writer.Write(SegmentBuilders.BuildGs("1")); writer.Write(invoice); } Debug.WriteLine("Written to file."); }
/// <summary> /// Writes to stream without envelopes - no ISA, GS, GE or IEA /// </summary> public static void Run() { Debug.WriteLine("******************************"); Debug.WriteLine(MethodBase.GetCurrentMethod().Name); Debug.WriteLine("******************************"); using (var stream = new MemoryStream()) { // Set the separators using (var writer = new X12Writer(stream, new X12WriterSettings() { Separators = Separators.X12 })) { writer.Write(EF_X12_004010_810_Builder.BuildInvoice("1")); writer.Write(EF_X12_004010_810_Builder.BuildInvoice("2")); } Debug.Write(stream.LoadToString()); } }
/// <summary> /// Validate EDI transactions before writing them out, skipping the trailer validation because trailers hadn't been set just yet /// </summary> public static void Run() { Debug.WriteLine("******************************"); Debug.WriteLine(MethodBase.GetCurrentMethod().Name); Debug.WriteLine("******************************"); var invoice = EF_X12_004010_810_Builder.BuildInvoice("1"); // Then validate it MessageErrorContext errorContext; if (!invoice.IsValid(out errorContext, new ValidationSettings { SkipTrailerValidation = true })) { // Report it back to the sender, log, etc. var errors = errorContext.Flatten(); } else { // purchaseOrder is valid, handle it downstream } }
/// <summary> /// Write with segment postfix. /// </summary> public static void Run() { Debug.WriteLine("******************************"); Debug.WriteLine(MethodBase.GetCurrentMethod().Name); Debug.WriteLine("******************************"); var invoice = EF_X12_004010_810_Builder.BuildInvoice("1"); using (var stream = new MemoryStream()) { using (var writer = new X12Writer(stream, new X12WriterSettings() { Postfix = Environment.NewLine })) { writer.Write(SegmentBuilders.BuildIsa("1")); writer.Write(SegmentBuilders.BuildGs("1")); writer.Write(invoice); } Debug.Write(stream.LoadToString()); } }
/// <summary> /// Write without auto trailers /// </summary> public static void Run() { Debug.WriteLine("******************************"); Debug.WriteLine(MethodBase.GetCurrentMethod().Name); Debug.WriteLine("******************************"); using (var stream = new MemoryStream()) { // Set AutoTrailers to false using (var writer = new X12Writer(stream, new X12WriterSettings { AutoTrailers = false })) { writer.Write(SegmentBuilders.BuildIsa("1")); writer.Write(SegmentBuilders.BuildGs("1")); writer.Write(EF_X12_004010_810_Builder.BuildInvoice("1")); // trailers need to be manually written } using (var writer = new StreamWriter(stream)) { var ge = new GE(); ge.NumberOfIncludedSets_1 = "1"; ge.GroupControlNumber_2 = "000000001"; writer.Write(ge.ToEdi(Separators.X12)); var iea = new IEA(); iea.NumberOfIncludedGroups_1 = "1"; iea.InterchangeControlNumber_2 = "000000001"; writer.Write(iea.ToEdi(Separators.X12)); writer.Flush(); Debug.Write(stream.LoadToString()); } } }