Private Sub btnConvert_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConvert.Click
Dim oEdiDoc As ediDocument
Dim oSchema As ediSchema
Dim oSchemas As ediSchemas
Dim oSegment As ediDataSegment
Dim sSegmentID As String
Dim sLoopSection As String
Dim nArea As Integer
Dim sValue As String
Dim sN1Entity As String
Dim sQlfr As String
Dim sPath As String
Dim sEdiFile As String
Dim sSefFile As String
Dim oFile As System.IO.File
Dim oWrite As System.IO.StreamWriter
Dim sHeader As String
Dim sDetailEnt As String
Dim sDetailEntRmr As String
sPath = AppDomain.CurrentDomain.BaseDirectory & "\"
sEdiFile = "820.X12"
sSefFile = "820_4010.EVAL0.SEF" 'evaluation sef file
oWrite = oFile.CreateText(sPath & "csvOutput.txt")
'CREATES EDIDOC OBJECT
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 TRANSLATE THE EDI FILE.
oSchemas = oEdiDoc.GetSchemas
oSchemas.EnableStandardReference = False
'THIS OPTIONS STOPS FREDI FROM KEEPING ALL THE SEGMENTS IN MEMORY
oEdiDoc.CursorType = DocumentCursorTypeConstants.Cursor_ForwardOnly
'LOADS THE SEF FILE
oSchema = oEdiDoc.LoadSchema(sPath & sSefFile, 0)
'LOADS THE EDI FILE
oEdiDoc.LoadEdi(sPath & sEdiFile)
'GETS THE FIRST DATA SEGMENT
oSegment = oEdiDoc.FirstDataSegment
'LOOP THAT WILL TRAVERSE THRU EDI FILE FROM TOP TO BOTTOM
Do While Not oSegment Is Nothing
'DATA SEGMENTS WILL BE IDENTIFIED BY THEIR ID, THE LOOP SECTION AND AREA
'(OR TABLE) NUMBER THAT THEY ARE IN.
sSegmentID = oSegment.ID
sLoopSection = oSegment.LoopSection
nArea = oSegment.Area
If nArea = 0 Then
If sLoopSection = "" Then
If sSegmentID = "ISA" Then
sValue = oSegment.DataElementValue(1) 'Authorization Information Qualifier
sValue = oSegment.DataElementValue(2) 'Authorization Information
sValue = oSegment.DataElementValue(3) 'Security Information Qualifier
sValue = oSegment.DataElementValue(4) 'Security Information
sValue = oSegment.DataElementValue(5) 'Interchange ID Qualifier
sValue = oSegment.DataElementValue(6) 'Interchange Sender ID
sValue = oSegment.DataElementValue(7) 'Interchange ID Qualifier
sValue = oSegment.DataElementValue(8) 'Interchange Receiver ID
sValue = oSegment.DataElementValue(9) 'Interchange Date
sValue = oSegment.DataElementValue(10) 'Interchange Time
sValue = oSegment.DataElementValue(11) 'Interchange Control Standards Identifier
sValue = oSegment.DataElementValue(12) 'Interchange Control Version Number
sValue = oSegment.DataElementValue(13) 'Interchange Control Number
sValue = oSegment.DataElementValue(14) 'Acknowledgment Requested
sValue = oSegment.DataElementValue(15) 'Usage Indicator
sValue = oSegment.DataElementValue(16) 'Component Element Separator
ElseIf sSegmentID = "GS" Then
sValue = oSegment.DataElementValue(1) 'Functional Identifier Code
sValue = oSegment.DataElementValue(2) 'Application Sender's Code
sValue = oSegment.DataElementValue(3) 'Application Receiver's Code
sValue = oSegment.DataElementValue(4) 'Date
sValue = oSegment.DataElementValue(5) 'Time
sValue = oSegment.DataElementValue(6) 'Group Control Number
sValue = oSegment.DataElementValue(7) 'Responsible Agency Code
sValue = oSegment.DataElementValue(8) 'Version / Release / Industry Identifier Code
End If 'sSegmentID
End If 'sLoopSection
ElseIf nArea = 1 Then
If sLoopSection = "" Then
If sSegmentID = "ST" Then
sValue = oSegment.DataElementValue(1) 'Transaction Set Identifier Code
sValue = oSegment.DataElementValue(2) 'Transaction Set Control Number
ElseIf sSegmentID = "BPR" Then
sValue = oSegment.DataElementValue(1) 'Transaction Handling Code
sHeader = oSegment.DataElementValue(2) & "," 'Monetary Amount
sValue = oSegment.DataElementValue(3) 'Credit/Debit Flag Code
sValue = oSegment.DataElementValue(4) 'Payment Method Code
sValue = oSegment.DataElementValue(5) 'Payment Format Code
sValue = oSegment.DataElementValue(6) '(DFI) ID Number Qualifier
sValue = oSegment.DataElementValue(7) '(DFI) Identification Number
sValue = oSegment.DataElementValue(8) 'Account Number Qualifier
sValue = oSegment.DataElementValue(9) 'Account Number
sHeader = sHeader & oSegment.DataElementValue(10) & "," 'Originating Company Identifier
sValue = oSegment.DataElementValue(11) 'Originating Company Supplemental Code
sValue = oSegment.DataElementValue(12) '(DFI) ID Number Qualifier
sValue = oSegment.DataElementValue(13) '(DFI) Identification Number
sValue = oSegment.DataElementValue(14) 'Account Number Qualifier
sHeader = sHeader & oSegment.DataElementValue(15) & "," 'Account Number
sHeader = sHeader & oSegment.DataElementValue(16) & "," 'Date
ElseIf sSegmentID = "NTE" Then
sValue = oSegment.DataElementValue(1) 'Note Reference Code
sValue = oSegment.DataElementValue(2) 'Description
ElseIf sSegmentID = "REF" Then
sValue = oSegment.DataElementValue(1) 'Reference Identification Qualifier
sHeader = sHeader & oSegment.DataElementValue(2) & "," 'Reference Identification
ElseIf sSegmentID = "DTM" Then
sValue = oSegment.DataElementValue(1) 'Date/Time Qualifier
sHeader = sHeader & oSegment.DataElementValue(2) & "," 'Date
End If 'Segment ID
ElseIf sLoopSection = "N1" Then
If sSegmentID = "N1" Then
sN1Entity = oSegment.DataElementValue(1) 'In most cases the loop qualifier is the first element of the first segment in the loop, but not necessarily
End If
If sN1Entity = "PE" Then
If sSegmentID = "N1" Then
sValue = oSegment.DataElementValue(1) 'Entity Identifier Code
sHeader = sHeader & oSegment.DataElementValue(2) & "," 'Name
ElseIf sSegmentID = "N3" Then
sValue = oSegment.DataElementValue(1) 'Address Information
ElseIf sSegmentID = "N4" Then
sValue = oSegment.DataElementValue(1) 'City Name
sValue = oSegment.DataElementValue(2) 'State or Province Code
sValue = oSegment.DataElementValue(3) 'Postal Code
ElseIf sSegmentID = "PER" Then
sValue = oSegment.DataElementValue(1) 'Contact Function Code
sValue = oSegment.DataElementValue(2) 'Name
sValue = oSegment.DataElementValue(3) 'Communication Number Qualifier
sValue = oSegment.DataElementValue(4) 'Communication Number
End If 'sSegmentID
ElseIf sN1Entity = "PR" Then
If sSegmentID = "N1" Then
sValue = oSegment.DataElementValue(1) 'Entity Identifier Code
sHeader = sHeader & oSegment.DataElementValue(2) & "," 'Name
ElseIf sSegmentID = "N3" Then
sValue = oSegment.DataElementValue(1) 'Address Information
ElseIf sSegmentID = "N4" Then
sValue = oSegment.DataElementValue(1) 'City Name
sValue = oSegment.DataElementValue(2) 'State or Province Code
sValue = oSegment.DataElementValue(3) 'Postal Code
End If 'sSegmentID
ElseIf sN1Entity = "RB" Then
If sSegmentID = "N1" Then
sValue = oSegment.DataElementValue(1) 'Entity Identifier Code
sHeader = sHeader & oSegment.DataElementValue(2) & "," 'Name
ElseIf sSegmentID = "N3" Then
sValue = oSegment.DataElementValue(1) 'Address Information
ElseIf sSegmentID = "N4" Then
sValue = oSegment.DataElementValue(1) 'City Name
sValue = oSegment.DataElementValue(2) 'State or Province Code
sValue = oSegment.DataElementValue(3) 'Postal Code
End If 'sSegmentID
End If
End If 'sLoopSection
ElseIf nArea = 2 Then
If sLoopSection = "ENT" Then
If sSegmentID = "ENT" Then
sValue = oSegment.DataElementValue(1) 'Assigned Number
sValue = oSegment.DataElementValue(2) 'Entity Identifier Code
sValue = oSegment.DataElementValue(3) 'Identification Code Qualifier
sDetailEnt = oSegment.DataElementValue(4) & "," 'Identification Code
End If 'Segment ID
ElseIf sLoopSection = "ENT;RMR" Then
If sSegmentID = "RMR" Then
sValue = oSegment.DataElementValue(1) 'Reference Identification Qualifier
sDetailEntRmr = oSegment.DataElementValue(2) & "," 'Reference Identification
sValue = oSegment.DataElementValue(3) 'Payment Action Code
sDetailEntRmr = sDetailEntRmr & oSegment.DataElementValue(4) & "," 'Monetary Amount
ElseIf sSegmentID = "REF" Then
sValue = oSegment.DataElementValue(1) 'Reference Identification Qualifier
sDetailEntRmr = sDetailEntRmr & oSegment.DataElementValue(2) & "," 'Reference Identification
ElseIf sSegmentID = "DTM" Then
sQlfr = oSegment.DataElementValue(1) 'Date/Time Qualifier
If sQlfr = "097" Then
sDetailEntRmr = sDetailEntRmr & oSegment.DataElementValue(2) & "," 'Date
ElseIf sQlfr = "003" Then
sDetailEntRmr = sDetailEntRmr & oSegment.DataElementValue(2) 'Date
oWrite.WriteLine(sHeader & sDetailEnt & sDetailEntRmr) 'write line to csv
End If
End If 'Segment ID
ElseIf sLoopSection = "TXP" Then
If sSegmentID = "TXP" Then
sValue = oSegment.DataElementValue(1) 'Tax Identification Number
sValue = oSegment.DataElementValue(2) 'Tax Payment Type Code
sValue = oSegment.DataElementValue(3) 'Date
sValue = oSegment.DataElementValue(4) 'Tax Information Identification Number
sValue = oSegment.DataElementValue(5) 'Tax Amount
End If 'Segment ID
ElseIf sLoopSection = "DED" Then
If sSegmentID = "DED" Then
sValue = oSegment.DataElementValue(1) 'Type of Deduction
sValue = oSegment.DataElementValue(2) 'Reference Identification
sValue = oSegment.DataElementValue(3) 'Date
sValue = oSegment.DataElementValue(4) 'Amount
sValue = oSegment.DataElementValue(5) 'Reference Identification
sValue = oSegment.DataElementValue(6) 'Yes/No Condition or Response Code
sValue = oSegment.DataElementValue(7) 'Name
sValue = oSegment.DataElementValue(8) 'Reference Identification
sValue = oSegment.DataElementValue(9) 'Yes/No Condition or Response Code
End If 'sSegmentID
End If 'sLoopSection
ElseIf nArea = 3 Then
If sLoopSection = "" Then
End If 'sLoopSection
End If 'nArea
'GETS THE NEXT DATA SEGMENT
ediDataSegment.Set(oSegment, oSegment.Next)
Loop
oWrite.Close()
'DESTROY OBJECTS
oEdiDoc = Nothing
oSchema = Nothing
oSchemas = Nothing
oSegment = Nothing
MessageBox.Show("Done")
End Sub