ProTech's home page

ProTech-Online.com

Visual Basic code example for EDI AS2 communication.

Imports nsoftware.IPWorksEDI
Imports System.IO
Imports System.Data
Imports System.Data.SqlClient
Imports System.Net.Mail
Partial Class reciever
    Inherits System.Web.UI.Page
    Protected TextMessageCON As SqlConnection = New SqlConnection("Data Source=*******; Initial Catalog=*******; User Id=*******; Password=*******")
    Protected TextMessageDA As SqlDataAdapter = _
        New SqlDataAdapter("SELECT TOP 1 MSG_ID, DATE_RECEIVED, INVOICENUM, PURPOSE_CODE, MESSAGE FROM TEXTMESSAGE", TextMessageCON)
    Protected TextMessageDS As DataSet = New DataSet
    Protected AcknowledgmentCON As SqlConnection = New SqlConnection("Data Source=*******; Initial Catalog=*******; User Id=*******; Password=*******")
    Protected AcknowledgmentDA As SqlDataAdapter = _
        New SqlDataAdapter("SELECT TOP 1 MSG_ID, DATE_RECEIVED, INVOICENUM, CODE, MESSAGE FROM ACKNOWLEDGMENT", AcknowledgmentCON)
    Protected AcknowledgmentDS As DataSet = New DataSet
    Protected AddressListCON As SqlConnection = New SqlConnection("Data Source=*******; Initial Catalog=*******; User Id=******; Password=********")
    Protected AddressListDA As SqlDataAdapter = _
        New SqlDataAdapter("SELECT GLN_ID, GLN, NAME, ADDRESS1, ADDRESS2, CITY, STATE, ZIP, COUNTRY, CONTACT, PHONE, DUNS, STORENUM, DISTRONUM, DATE FROM ADDRESSLIST", AddressListCON)
    Protected AddressListDS As DataSet = New DataSet
    Protected PO_CON As SqlConnection = New SqlConnection("Data Source=*******; Initial Catalog=*******; User Id=*******; Password=*******")
    Protected PO_DA As SqlDataAdapter = _
        New SqlDataAdapter("SELECT TOP 1 MSG_ID, DATE_RECEIVED, GS_CONTROLNUM, ST_CONTROLNUM, PONUM, PURPOSE_CODE, CURRENCY, ORDER_DATE, VENDORNUM, DIVISION, PO_TYPE, " + _
                           "VENDOR_ORDERNUM, BUYER, BUYER_PHONE, REVISED_BY, REVISED_PHONE, FACILITY_CONTACT, FACILITY_PHONE, FOB, " + _
                           "DISCOUNT, DISCOUNT_DAYS, TERMS, ARRIVAL_DATE, NOTES_LABEL, NOTES, BILL_TO_NAME, BILL_TO_GLN, SHIP_TO_NAME, " + _
                           "SHIP_TO_GLN, VENDOR_NAME, SHIP_TO_ADDRESS1, SHIP_TO_ADDRESS2, SHIP_TO_CITY, SHIP_TO_STATE, SHIP_TO_ZIP, " + _
                           "SHIP_TO_COUNTRY, FINAL_DELIVERY_LOCATION, AMOUNT, ACKNOWLEDGED, QUANTUS FROM PO", PO_CON)
    Protected PO_DS As DataSet = New DataSet
    Protected PO_LINE_CON As SqlConnection = New SqlConnection("Data Source=*******; Initial Catalog=*******; User Id=*******; Password=*******")
    Protected PO_LINE_DA As SqlDataAdapter = _
        New SqlDataAdapter("SELECT TOP 1 LINE_ID, MSG_ID, LINE_NUM, QTY, UNITS, UNIT_PRICE, CUSTOMER_ITEM_NUM, VENDOR_ITEM_NUM, DESCRIPTION, " + _
                           "AMOUNT, SDQ FROM PO_LINE", PO_LINE_CON)
    Protected PO_LINE_DS As DataSet = New DataSet
    Protected SDQ_CON As SqlConnection = New SqlConnection("Data Source=*******; Initial Catalog=*******; User Id=*******; Password=*******")
    Protected SDQ_DA As SqlDataAdapter = _
        New SqlDataAdapter("SELECT TOP 1 LINE_ID, GLN, QTY FROM SDQ", SDQ_CON)
    Protected SDQ_DS As DataSet = New DataSet
    Protected lstEdiParsed As List(Of String) = New List(Of String)
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim as2 As New nsoftware.IPWorksEDI.As2receiver
        Dim receiptMessage As String = ""
        as2.RuntimeLicense = "*******"
        If Not Me.Request.HttpMethod.Equals("POST") Then
            Return
        End If
        Try
            ' You can generate detailed logs, but make sure first that you have the appropriate
            ' write permissions.
            as2.LogDirectory = Path.Combine(Request.PhysicalApplicationPath, "Logs")
            as2.Config("RequireSign=true")
            ' The first order of business is to parse the incoming headers. This will
            ' make sure it is an AS2 message, and will also determine the values of
            ' AS2From and AS2To.
            as2.ReadRequest()
            Dim myAS2Identifier As String = "*******"
            'Check to make sure that this request is intended for you
            If (Not as2.AS2To.Equals(myAS2Identifier)) Then
                Throw New Exception("The EDI message is meant for " + as2.AS2To + " not for us. [" + myAS2Identifier + "]")
            End If
            ' In a real AS2 application you would now check the values of
            ' AS2To and look up your trading partner's certificate in a database.
            ' This demo application uses a simple select statement to load a
            ' partner certificate. Note that this certificate corresponds to the
            ' as2sender.pfx used in the client demo.
            'Select Case (as2.AS2From)
            '    Case "*******"
            '        as2.SignerCert = New Certificate(Path.Combine(Request.PhysicalApplicationPath, "*******.cer"))
            '    Case "AS2 Test Sending Organization"
            '        as2.SignerCert = New Certificate(Path.Combine(Request.PhysicalApplicationPath, "*******.cer"))
            '    Case Else
            '        'Alternatively, close the request
            '        Throw New Exception("Partner unknown: [" + as2.AS2From + "]")
            'End Select
            If as2.AS2From = "AS2 Test Sending Organization" Then
                as2.SignerCert = New Certificate(Path.Combine(Request.PhysicalApplicationPath, "*******.cer"))
            Else
                as2.SignerCert = New Certificate(Path.Combine(Request.PhysicalApplicationPath, "*******.cer"))
            End If
            ' To sign receipts and/or decrypt incoming transmissions, you will need to
            ' set your certificate. (Note that by default, you do not need to explicitly
            ' tell the component to sign or decrypt; per AS2 standards message security is
            ' at the option of the client.
            ' For yourself, you will need a certificate with a private key. You can use a PFX
            ' file for this, or you can use a certificate directly from a Windows system store.
            ' Note that if you don't know the subject for your certificate, you can use the
            ' CertMgr component to determine it.
            ' Note: this is the certificate that corresponds to the as2receiver.cer
            ' key that is included with the client.
            as2.Certificate = New Certificate(CertStoreTypes.cstPFXFile, Path.Combine(Request.PhysicalApplicationPath, _
                "*******.pfx"), "*******", "CN=*******")
            as2.ParseRequest()
        Catch ex As Exception
            ' Set the unexpected processing error status in the MDN
            as2.Config("ProcessingError=true")
            receiptMessage = ex.Message
        Finally
            Try
                ' If no eerror was encountered, the component will generate a default message
                as2.CreateMDNReceipt("", "", receiptMessage)
                ' close the connection if dealing with an asynch MDN
                as2.AckRequest()
                If (as2.ReceiptDeliveryOption <> "") Then
                    Response.Close()
                End If
                ' Send the MDN receipt, synchronously or asynchronously, as requested
                as2.SendResponse()
                If String.IsNullOrEmpty(as2.EDIData.Data.ToString) = False Then
                    lstEdiParsed = as2.EDIData.Data.ToString.Split("~").ToList
                    handlemessage()
                End If
            Catch ex As Exception
                ' An error here means that the component was not even able to send an MDN.
                Response.StatusCode = 400
                Response.Write("ERROR: " + ex.Message)
                Response.Flush()
                Response.Close()
                email("AS2 failed!" + vbCrLf + ex.ToString + vbCrLf + "Chad Stacktrace:" + vbCrLf)
            End Try
        End Try
    End Sub
    Protected Sub handlemessage()
        Try
            Select Case lstEdiParsed.ElementAt(2).ToString.Substring(0, 7)
                Case "ST*864*"
                    TextMessage()
                Case "ST*997*"
                    Acknowledgment()
                Case "ST*816*"
                    AddressList()
                Case "ST*850*"
                    PurchaseOrder()
                    'Case "ST*820*"
                    'RemintenceAdvice()
            End Select
        Catch ex As Exception
            email("handlemessage failed!" + vbCrLf + ex.ToString)
        End Try
    End Sub
    Protected Sub TextMessage()
        Dim dr As DataRow
        Dim lstParsedBMG As List(Of String) = New List(Of String)
        Dim lstParsedREFIV As List(Of String) = New List(Of String)
        Dim message As String = ""
        Try
            MessageDASetup()
            lstParsedBMG = lstEdiParsed.ElementAt(3).ToString.Split("*").ToList()
            For i As Integer = 0 To lstEdiParsed.Count - 1
                message = message + lstEdiParsed.ElementAt(i).ToString + vbCrLf
                If lstEdiParsed.ElementAt(i).ToString.Length > 6 Then
                    If lstEdiParsed.ElementAt(i).ToString.Substring(0, 7) = "REF*IV*" Then
                        lstParsedREFIV = lstEdiParsed.ElementAt(i).ToString.Split("*").ToList()
                    End If
                End If
            Next
            dr = TextMessageDS.Tables("TextMessage").NewRow
            dr.Item("DATE_RECEIVED") = DateTime.Now
            dr.Item("PURPOSE_CODE") = lstParsedBMG.ElementAt(1).ToString
            dr.Item("INVOICENUM") = lstParsedREFIV.ElementAt(2).ToString.TrimStart("0")
            dr.Item("MESSAGE") = message
            TextMessageDS.Tables("TextMessage").Rows.Add(dr)
            TextMessageDA.Update(TextMessageDS, "TextMessage")
        Catch ex As Exception
            email("TextMessage failed!" + vbCrLf + ex.ToString)
        End Try
    End Sub
    Protected Sub Acknowledgment()
        Dim INVS_CON As SqlConnection = New SqlConnection("Data Source=*******; Initial Catalog=*******; User Id=*******; Password=*******")
        Dim INVS_DA As SqlDataAdapter = New SqlDataAdapter("SELECT * FROM SENT_INVS WHERE MSG_ID = @MSG_ID", INVS_CON)
        Dim INVS_DS As DataSet = New DataSet
        INVS_DA.SelectCommand.Parameters.Add("@MSG_ID", SqlDbType.Int, 4, "MSG_ID")
        Dim dr As DataRow
        Dim lstParsedAK1 As List(Of String) = New List(Of String)
        Dim lstParsedAK5 As List(Of String) = New List(Of String)
        Dim lstParsedSentInvsEDI_DATA1 As List(Of String) = New List(Of String)
        Dim lstParsedSentInvsEDI_DATA2 As List(Of String) = New List(Of String)
        Dim InvoiceSentMSG_ID As Integer
        Dim message As String = ""
        Try
            AcknowledgmentDASetup()
            lstParsedAK1 = lstEdiParsed.ElementAt(3).ToString.Split("*").ToList()
            InvoiceSentMSG_ID = lstParsedAK1.ElementAt(2) - 100000000
            INVS_DA.SelectCommand.Parameters.Item("@MSG_ID").Value = InvoiceSentMSG_ID
            INVS_DA.Fill(INVS_DS, "SENT_INVS")
            lstParsedSentInvsEDI_DATA1 = INVS_DS.Tables("SENT_INVS").Rows(0).Item("EDI_DATA").ToString.Split("~").ToList()
            lstParsedSentInvsEDI_DATA2 = lstParsedSentInvsEDI_DATA1.ElementAt(3).ToString.Split("*").ToList()
            For i As Integer = 0 To lstEdiParsed.Count - 1
                message = message + lstEdiParsed.ElementAt(i).ToString + vbCrLf
                If lstEdiParsed.ElementAt(i).ToString.Length > 3 Then
                    If lstEdiParsed.ElementAt(i).ToString.Substring(0, 4) = "AK5*" Then
                        lstParsedAK5 = lstEdiParsed.ElementAt(i).ToString.Split("*").ToList()
                    End If
                End If
            Next
            dr = AcknowledgmentDS.Tables("Acknowledgment").NewRow
            dr.Item("DATE_RECEIVED") = DateTime.Now
            dr.Item("INVOICENUM") = lstParsedSentInvsEDI_DATA2.ElementAt(2).ToString
            dr.Item("CODE") = lstParsedAK5.ElementAt(1).ToString
            dr.Item("MESSAGE") = message
            AcknowledgmentDS.Tables("Acknowledgment").Rows.Add(dr)
            AcknowledgmentDA.Update(AcknowledgmentDS, "Acknowledgment")
        Catch ex As Exception
            email("Acknowledgment failed!" + vbCrLf + ex.ToString)
        End Try
    End Sub
    Protected Sub AddressList()
        Dim dr As DataRow
        Dim count As Integer
        Dim row_count As Integer
        Dim lstParsedBHT As List(Of String) = New List(Of String)
        Dim lstParsed As List(Of String) = New List(Of String)
        Try
            lstParsedBHT = lstEdiParsed.ElementAt(3).ToString.Split("*").ToList()
            If lstParsedBHT(2).ToString = "04" Then
                'email()
                'Throw New Exception("Received a Weekly Update Address List from *******")
                AddressListDASetup(True)
                AddressListUpdate()
                Exit Sub
            End If
            AddressListDASetup(False)
            Dim activedate = ""
            activedate = lstParsedBHT.ElementAt(4).ToString().Insert(4, "/")
            activedate = activedate.Insert(7, "/")
            count = 5
            row_count = 0
            While True
                dr = AddressListDS.Tables("AddressList").NewRow
                row_count = row_count + 1
                dr.Item("GLN_ID") = row_count
                dr.Item("Date") = activedate
                While True
                    count = count + 1
                    lstParsed = lstEdiParsed.ElementAt(count).ToString.Split("*").ToList()
                    Select Case lstParsed.ElementAt(0).ToString
                        Case "N1"
                            If lstParsed.Count > 4 Then
                                dr.Item("GLN") = lstParsed.ElementAt(4).ToString
                            End If
                            dr.Item("NAME") = lstParsed.ElementAt(2).ToString
                        Case "N3"
                            dr.Item("ADDRESS1") = lstParsed.ElementAt(1).ToString
                            If lstParsed.Count > 3 Then
                                dr.Item("ADDRESS2") = lstParsed.ElementAt(2).ToString
                            End If
                        Case "N4"
                            If lstParsed.Count > 1 Then
                                dr.Item("CITY") = lstParsed.ElementAt(1).ToString
                            End If
                            If lstParsed.Count > 2 Then
                                dr.Item("STATE") = lstParsed.ElementAt(2).ToString
                            End If
                            If lstParsed.Count > 3 Then
                                dr.Item("ZIP") = lstParsed.ElementAt(3).ToString
                            End If
                            If lstParsed.Count > 4 Then
                                dr.Item("COUNTRY") = lstParsed.ElementAt(4).ToString
                            End If
                        Case "PER"
                            dr.Item("CONTACT") = lstParsed.ElementAt(2).ToString
                            If lstParsed.Count > 4 Then
                                dr.Item("PHONE") = lstParsed.ElementAt(4).ToString
                            End If
                        Case "REF"
                            Select Case lstParsed.ElementAt(1).ToString
                                Case "DNS"
                                    dr.Item("DUNS") = lstParsed.ElementAt(2).ToString
                                Case "ST"
                                    dr.Item("STORENUM") = lstParsed.ElementAt(2).ToString
                                Case "AEM"
                                    dr.Item("DISTRONUM") = lstParsed.ElementAt(2).ToString
                            End Select
                        Case "HL", "SE"
                            Exit While
                    End Select
                End While
                AddressListDS.Tables("AddressList").Rows.Add(dr)
                If lstParsed.ElementAt(0).ToString = "SE" Then
                    Exit While
                End If
            End While
            AddressListDA.Update(AddressListDS, "AddressList")
        Catch ex As Exception
            email("AddressList failed!" + vbCrLf + ex.ToString)
        End Try
    End Sub
    Protected Sub AddressListUpdate()
        Dim dr As DataRow
        Dim count As Integer
        Dim row_count As Integer
        Dim PrimaryKeys(1) As DataColumn
        Dim lstParsedBHT As List(Of String) = New List(Of String)
        Dim lstParsed As List(Of String) = New List(Of String)
        Try
            AddressListDA.SelectCommand.CommandText = "SELECT MAX(GLN_ID) FROM ADDRESSLIST"
            AddressListDA.Fill(AddressListDS, "AddressList")
            row_count = AddressListDS.Tables("AddressList").Rows(0).Item(0)
            AddressListDS.Tables("AddressList").Reset()
            'AddressListDS.AcceptChanges()
            AddressListDA.SelectCommand.CommandText = "SELECT TOP 1 GLN_ID, GLN, NAME, ADDRESS1, ADDRESS2, CITY, STATE, ZIP, COUNTRY, CONTACT, PHONE, DUNS, STORENUM, DISTRONUM, DATE " + _
                                        "FROM ADDRESSLIST"
            AddressListDA.Fill(AddressListDS, "AddressList")
            PrimaryKeys(0) = AddressListDS.Tables("AddressList").Columns("GLN_ID")
            AddressListDS.Tables("AddressList").PrimaryKey = PrimaryKeys
            AddressListDS.Tables("AddressList").Rows(0).Delete()
            AddressListDS.AcceptChanges()
            lstParsedBHT = lstEdiParsed.ElementAt(3).ToString.Split("*").ToList()
            Dim activedate = ""
            activedate = lstParsedBHT.ElementAt(4).ToString().Insert(4, "/")
            activedate = activedate.Insert(7, "/")
            count = 5
            While True
                dr = AddressListDS.Tables("AddressList").NewRow
                dr.Item("DATE") = activedate
                While True
                    count = count + 1
                    lstParsed = lstEdiParsed.ElementAt(count).ToString.Split("*").ToList()
                    Select Case lstParsed.ElementAt(0).ToString
                        Case "N1"
                            If lstParsed.Count > 4 Then
                                dr.Item("GLN") = lstParsed.ElementAt(4).ToString
                            End If
                            dr.Item("NAME") = lstParsed.ElementAt(2).ToString
                        Case "N3"
                            dr.Item("ADDRESS1") = lstParsed.ElementAt(1).ToString
                            If lstParsed.Count > 3 Then
                                dr.Item("ADDRESS2") = lstParsed.ElementAt(2).ToString
                            End If
                        Case "N4"
                            If lstParsed.Count > 1 Then
                                dr.Item("CITY") = lstParsed.ElementAt(1).ToString
                            End If
                            If lstParsed.Count > 2 Then
                                dr.Item("STATE") = lstParsed.ElementAt(2).ToString
                            End If
                            If lstParsed.Count > 3 Then
                                dr.Item("ZIP") = lstParsed.ElementAt(3).ToString
                            End If
                            If lstParsed.Count > 4 Then
                                dr.Item("COUNTRY") = lstParsed.ElementAt(4).ToString
                            End If
                        Case "PER"
                            dr.Item("CONTACT") = lstParsed.ElementAt(2).ToString
                            If lstParsed.Count > 4 Then
                                dr.Item("PHONE") = lstParsed.ElementAt(4).ToString
                            End If
                        Case "REF"
                            Select Case lstParsed.ElementAt(1).ToString
                                Case "DNS"
                                    dr.Item("DUNS") = lstParsed.ElementAt(2).ToString
                                Case "ST"
                                    dr.Item("STORENUM") = lstParsed.ElementAt(2).ToString
                                Case "AEM"
                                    dr.Item("DISTRONUM") = lstParsed.ElementAt(2).ToString
                            End Select
                        Case "ASI"
                            Select Case lstParsed.ElementAt(2).ToString
                                Case "001"
                                    AddressListDA.SelectCommand.CommandText = "SELECT GLN_ID, GLN, NAME, ADDRESS1, ADDRESS2, CITY, STATE, ZIP, COUNTRY, CONTACT, PHONE, DUNS, STORENUM, DISTRONUM, DATE " + _
                                        "FROM ADDRESSLIST WHERE GLN = '" + dr.Item("GLN").ToString + "' AND NAME = '" + dr.Item("NAME").ToString + "' AND COUNTRY = '" + dr.Item("COUNTRY").ToString + "'"
                                    If AddressListDA.Fill(AddressListDS, "AddressList") > 0 Then
                                        AddressListDS.Tables("AddressList").Rows(0).Item("GLN") = dr.Item("GLN")
                                        AddressListDS.Tables("AddressList").Rows(0).Item("NAME") = dr.Item("NAME")
                                        AddressListDS.Tables("AddressList").Rows(0).Item("ADDRESS1") = dr.Item("ADDRESS1")
                                        AddressListDS.Tables("AddressList").Rows(0).Item("ADDRESS2") = dr.Item("ADDRESS2")
                                        AddressListDS.Tables("AddressList").Rows(0).Item("CITY") = dr.Item("CITY")
                                        AddressListDS.Tables("AddressList").Rows(0).Item("STATE") = dr.Item("STATE")
                                        AddressListDS.Tables("AddressList").Rows(0).Item("ZIP") = dr.Item("ZIP")
                                        AddressListDS.Tables("AddressList").Rows(0).Item("COUNTRY") = dr.Item("COUNTRY")
                                        AddressListDS.Tables("AddressList").Rows(0).Item("CONTACT") = dr.Item("CONTACT")
                                        AddressListDS.Tables("AddressList").Rows(0).Item("PHONE") = dr.Item("PHONE")
                                        AddressListDS.Tables("AddressList").Rows(0).Item("DUNS") = dr.Item("DUNS")
                                        AddressListDS.Tables("AddressList").Rows(0).Item("STORENUM") = dr.Item("STORENUM")
                                        AddressListDS.Tables("AddressList").Rows(0).Item("DISTRONUM") = dr.Item("DISTRONUM")
                                        AddressListDS.Tables("AddressList").Rows(0).Item("DATE") = dr.Item("DATE")
                                    Else
                                        row_count = row_count + 1
                                        dr.Item("GLN_ID") = row_count
                                        AddressListDS.Tables("AddressList").Rows.Add(dr)
                                    End If
                                    AddressListDA.Update(AddressListDS, "AddressList")
                                    AddressListDS.Tables("AddressList").Rows(0).Delete()
                                    AddressListDS.AcceptChanges()
                                Case "002"
                                    AddressListDA.SelectCommand.CommandText = "SELECT GLN_ID, GLN, NAME, ADDRESS1, ADDRESS2, CITY, STATE, ZIP, COUNTRY, CONTACT, PHONE, DUNS, STORENUM, DISTRONUM, DATE " + _
                                        "FROM ADDRESSLIST WHERE GLN = '" + dr.Item("GLN").ToString + "' AND NAME = '" + dr.Item("NAME").ToString + "' AND COUNTRY = '" + dr.Item("COUNTRY").ToString + "'"
                                    If AddressListDA.Fill(AddressListDS, "AddressList") > 0 Then
                                        AddressListDS.Tables("AddressList").Rows(0).Delete()
                                        AddressListDA.Update(AddressListDS, "AddressList")
                                        AddressListDS.AcceptChanges()
                                    End If
                                Case "021"
                                    row_count = row_count + 1
                                    dr.Item("GLN_ID") = row_count
                                    AddressListDS.Tables("AddressList").Rows.Add(dr)
                                    AddressListDA.Update(AddressListDS, "AddressList")
                                    AddressListDS.Tables("AddressList").Rows(0).Delete()
                                    AddressListDS.AcceptChanges()
                            End Select
                        Case "HL", "SE"
                            Exit While
                    End Select
                End While
                lstParsed = lstEdiParsed.ElementAt(count + 1).ToString.Split("*").ToList()
                If lstParsed.ElementAt(0).ToString = "GE" Then
                    Exit While
                End If
            End While
        Catch ex As Exception
            email("AddressListUpdate failed!" + vbCrLf + ex.ToString)
        End Try
    End Sub
    Protected Sub PurchaseOrder()
        Dim dr As DataRow
        Dim dr_line As DataRow
        Dim dr_sdq_line As DataRow
        Dim count As Integer
        Dim SDQ_count As Integer
        Dim strMessage As String
        Dim lstParsed As List(Of String) = New List(Of String)
        Dim gs_controlnum As String
        Try
            PO_DASetup()
            PO_LINE_DASetup()
            SDQ_DASetup()
            count = 0
            While True
                dr = PO_DS.Tables("PO").NewRow
                dr.Item("DATE_RECEIVED") = DateTime.Now
                strMessage = ""
                While True
                    count = count + 1
                    lstParsed = lstEdiParsed.ElementAt(count).ToString.Split("*").ToList()
                    Select Case lstParsed.ElementAt(0).ToString
                        Case "GS"
                            gs_controlnum = lstParsed.ElementAt(6).ToString
                        Case "ST"
                            dr.Item("GS_CONTROLNUM") = gs_controlnum
                            dr.Item("ST_CONTROLNUM") = lstParsed.ElementAt(2).ToString
                        Case "BEG"
                            dr.Item("PONUM") = lstParsed.ElementAt(3).ToString
                            'sendAcknowledgment(lstParsed.ElementAt(3).ToString)
                            dr.Item("PURPOSE_CODE") = lstParsed.ElementAt(1).ToString
                            Dim orderdate = ""
                            orderdate = lstParsed.ElementAt(5).ToString.Insert(4, "/")
                            orderdate = orderdate.Insert(7, "/")
                            dr.Item("ORDER_DATE") = orderdate
                        Case "CUR"
                            dr.Item("CURRENCY") = lstParsed.ElementAt(2).ToString
                            PO_DS.Tables("PO").Rows.Add(dr)
                            PO_DA.Update(PO_DS, "PO")
                        Case "REF"
                            Select Case lstParsed.ElementAt(1).ToString
                                Case "IA"
                                    dr.Item("VENDORNUM") = lstParsed.ElementAt(2).ToString
                                Case "19"
                                    dr.Item("DIVISION") = lstParsed.ElementAt(2).ToString
                                Case "MR"
                                    dr.Item("PO_TYPE") = lstParsed.ElementAt(2).ToString
                                Case "VN"
                                    dr.Item("VENDOR_ORDERNUM") = lstParsed.ElementAt(2).ToString
                                Case "AFN"
                                    If dr.Item("PO_TYPE") = "ZUS2" And (lstParsed.ElementAt(2).ToString = "10" Or _
                                                                        lstParsed.ElementAt(2).ToString = "11" Or _
                                                                        lstParsed.ElementAt(2).ToString = "12") Then
                                        dr.Item("PO_TYPE") = "ZUS2_S"
                                    End If
                            End Select
                        Case "PER"
                            Select Case lstParsed.ElementAt(1).ToString
                                Case "BD"
                                    If lstParsed.Count > 2 Then
                                        dr.Item("BUYER") = lstParsed.ElementAt(2).ToString
                                    End If
                                    If lstParsed.Count > 4 Then
                                        dr.Item("BUYER_PHONE") = lstParsed.ElementAt(4).ToString
                                    End If
                                Case "CB"
                                    If lstParsed.Count > 2 Then
                                        dr.Item("REVISED_BY") = lstParsed.ElementAt(2).ToString
                                    End If
                                    If lstParsed.Count > 4 Then
                                        dr.Item("REVISED_PHONE") = lstParsed.ElementAt(4).ToString
                                    End If
                                Case "AJ"
                                    If lstParsed.Count > 2 Then
                                        dr.Item("FACILITY_CONTACT") = lstParsed.ElementAt(2).ToString
                                    End If
                                    If lstParsed.Count > 4 Then
                                        dr.Item("FACILITY_PHONE") = lstParsed.ElementAt(4).ToString
                                    End If
                            End Select
                        Case "FOB"
                            dr.Item("FOB") = lstParsed.ElementAt(1).ToString
                        Case "ITD"
                            If lstParsed.Count > 3 Then
                                dr.Item("DISCOUNT") = lstParsed.ElementAt(3).ToString
                            End If
                            If lstParsed.Count > 5 Then
                                dr.Item("DISCOUNT_DAYS") = lstParsed.ElementAt(5).ToString
                            End If
                            If lstParsed.Count > 12 Then
                                dr.Item("TERMS") = lstParsed.ElementAt(12).ToString
                            End If
                        Case "DTM"
                            Dim orderdate = ""
                            orderdate = lstParsed.ElementAt(2).ToString.Insert(4, "/")
                            orderdate = orderdate.Insert(7, "/")
                            dr.Item("ARRIVAL_DATE") = orderdate
                        Case "N9"
                            dr.Item("NOTES_LABEL") = lstParsed.ElementAt(2).ToString
                        Case "MTX"
                            strMessage = strMessage + lstParsed.ElementAt(2).ToString + vbCrLf
                            dr.Item("NOTES") = strMessage
                        Case "N1"
                            Select Case lstParsed.ElementAt(1).ToString
                                Case "BT"
                                    dr.Item("BILL_TO_NAME") = lstParsed.ElementAt(2).ToString
                                    dr.Item("BILL_TO_GLN") = lstParsed.ElementAt(4).ToString
                                Case "ST"
                                    dr.Item("SHIP_TO_NAME") = lstParsed.ElementAt(2).ToString
                                    If lstParsed.Count > 4 Then
                                        dr.Item("SHIP_TO_GLN") = lstParsed.ElementAt(4).ToString
                                    End If
                                Case "SU"
                                    dr.Item("VENDOR_NAME") = lstParsed.ElementAt(2).ToString
                                Case "MQ"
                                    dr.Item("FINAL_DELIVERY_LOCATION") = lstParsed.ElementAt(2).ToString
                            End Select
                        Case "N3"
                            If lstParsed.Count > 1 Then
                                dr.Item("SHIP_TO_ADDRESS1") = lstParsed.ElementAt(1).ToString
                            End If
                            If lstParsed.Count > 2 Then
                                dr.Item("SHIP_TO_ADDRESS2") = lstParsed.ElementAt(2).ToString
                            End If
                        Case "N4"
                            If lstParsed.Count > 1 Then
                                dr.Item("SHIP_TO_CITY") = lstParsed.ElementAt(1).ToString
                            End If
                            If lstParsed.Count > 2 Then
                                dr.Item("SHIP_TO_STATE") = lstParsed.ElementAt(2).ToString
                            End If
                            If lstParsed.Count > 3 Then
                                dr.Item("SHIP_TO_ZIP") = lstParsed.ElementAt(3).ToString
                            End If
                            If lstParsed.Count > 4 Then
                                dr.Item("SHIP_TO_COUNTRY") = lstParsed.ElementAt(4).ToString
                            End If
                        Case "AMT"
                            Select Case lstParsed.ElementAt(1).ToString
                                Case "TT"
                                    dr.Item("AMOUNT") = lstParsed.ElementAt(2).ToString
                                Case "1"
                                    If Not dr_line.IsNull("LINE_ID") Then
                                        dr_line.Item("AMOUNT") = lstParsed.ElementAt(2).ToString
                                        PO_LINE_DA.Update(PO_LINE_DS, "PO_LINE")
                                    End If
                            End Select
                        Case "PO1"
                            dr_line = PO_LINE_DS.Tables("PO_LINE").NewRow
                            dr_line.Item("MSG_ID") = dr.Item("MSG_ID").ToString
                            PO_LINE_DS.Tables("PO_LINE").Rows.Add(dr_line)
                            PO_LINE_DA.Update(PO_LINE_DS, "PO_LINE")
                            If lstParsed.Count > 1 Then
                                dr_line.Item("LINE_NUM") = lstParsed.ElementAt(1).ToString
                            End If
                            If lstParsed.Count > 2 Then
                                dr_line.Item("QTY") = lstParsed.ElementAt(2).ToString
                            End If
                            If lstParsed.Count > 3 Then
                                dr_line.Item("UNITS") = lstParsed.ElementAt(3).ToString
                            End If
                            If lstParsed.Count > 4 Then
                                dr_line.Item("UNIT_PRICE") = lstParsed.ElementAt(4).ToString
                            End If
                            If lstParsed.Count > 7 Then
                                dr_line.Item("CUSTOMER_ITEM_NUM") = lstParsed.ElementAt(7).ToString
                            End If
                            If lstParsed.Count > 9 Then
                                dr_line.Item("VENDOR_ITEM_NUM") = lstParsed.ElementAt(9).ToString
                            End If
                        Case "PID"
                            If Not dr_line.IsNull("LINE_ID") Then
                                dr_line.Item("DESCRIPTION") = lstParsed.ElementAt(5).ToString
                                PO_LINE_DA.Update(PO_LINE_DS, "PO_LINE")
                            End If
                        Case "SDQ"
                            If Not dr_line.IsNull("LINE_ID") Then
                                dr_line.Item("SDQ") = 1
                                SDQ_count = 3
                                While True
                                    dr_sdq_line = SDQ_DS.Tables("SDQ").NewRow
                                    dr_sdq_line.Item("LINE_ID") = dr_line.Item("LINE_ID").ToString
                                    dr_sdq_line.Item("GLN") = lstParsed.ElementAt(SDQ_count).ToString
                                    SDQ_count = SDQ_count + 1
                                    dr_sdq_line.Item("QTY") = lstParsed.ElementAt(SDQ_count).ToString
                                    SDQ_DS.Tables("SDQ").Rows.Add(dr_sdq_line)
                                    SDQ_DA.Update(SDQ_DS, "SDQ")
                                    If lstParsed.Count = SDQ_count + 1 Then
                                        Exit While
                                    Else
                                        SDQ_count = SDQ_count + 1
                                    End If
                                End While
                                PO_LINE_DA.Update(PO_LINE_DS, "PO_LINE")
                            End If
                        Case "SE"
                            Exit While
                    End Select
                End While
                lstParsed = lstEdiParsed.ElementAt(count + 1).ToString.Split("*").ToList()
                If lstParsed.ElementAt(0).ToString = "GE" Then
                    Exit While
                End If
            End While
            PO_LINE_DA.Update(PO_LINE_DS, "PO_LINE")
            PO_DA.Update(PO_DS, "PO")
            Console.WriteLine("")
        Catch ex As Exception
            email("PurchaseOrder failed!" + vbCrLf + ex.ToString)
        End Try
    End Sub
    'Protected Sub RemintenceAdvice()
    '    Return
    'End Sub
    Protected Sub MessageDASetup()
        'Dim PrimaryKeys(1) As DataColumn
        Dim DAInsertCmd As SqlCommand
        Try
            'Insert command
            DAInsertCmd = New SqlCommand("INSERT INTO TEXTMESSAGE VALUES (@DATE_RECEIVED, @INVOICENUM, @PURPOSE_CODE, @MESSAGE)", TextMessageDA.SelectCommand.Connection)
            DAInsertCmd.Parameters.Add("@INVOICENUM", SqlDbType.VarChar, 22, "INVOICENUM")
            DAInsertCmd.Parameters.Add("@DATE_RECEIVED", SqlDbType.DateTime, 8, "DATE_RECEIVED")
            DAInsertCmd.Parameters.Add("@PURPOSE_CODE", SqlDbType.VarChar, 2, "PURPOSE_CODE")
            DAInsertCmd.Parameters.Add("@MESSAGE", SqlDbType.Text, -1, "MESSAGE")
            TextMessageDA.InsertCommand = DAInsertCmd
            TextMessageDA.Fill(TextMessageDS, "TextMessage")
            'PrimaryKeys(0) = TextMessageDS.Tables("TextMessage").Columns("MSG_ID")
            'TextMessageDS.Tables("TextMessage").PrimaryKey = PrimaryKeys
            TextMessageDS.Tables("TextMessage").Rows(0).Delete()
            TextMessageDS.AcceptChanges()
        Catch ex As Exception
            email("MessageDASetup failed!" + vbCrLf + ex.ToString)
        End Try
    End Sub
    Protected Sub AcknowledgmentDASetup()
        'Dim PrimaryKeys(1) As DataColumn
        Dim DAInsertCmd As SqlCommand
        Try
            'Insert command
            DAInsertCmd = New SqlCommand("INSERT INTO ACKNOWLEDGMENT VALUES (@DATE_RECEIVED, @INVOICENUM, @CODE, @MESSAGE)", AcknowledgmentDA.SelectCommand.Connection)
            DAInsertCmd.Parameters.Add("@DATE_RECEIVED", SqlDbType.DateTime, 8, "DATE_RECEIVED")
            DAInsertCmd.Parameters.Add("@INVOICENUM", SqlDbType.VarChar, 22, "INVOICENUM")
            DAInsertCmd.Parameters.Add("@CODE", SqlDbType.Char, 1, "CODE")
            DAInsertCmd.Parameters.Add("@MESSAGE", SqlDbType.Text, -1, "MESSAGE")
            AcknowledgmentDA.InsertCommand = DAInsertCmd
            AcknowledgmentDA.Fill(AcknowledgmentDS, "Acknowledgment")
            'PrimaryKeys(0) = AcknowledgmentDS.Tables("Acknowledgment").Columns("MSG_ID")
            'AcknowledgmentDS.Tables("Acknowledgment").PrimaryKey = PrimaryKeys
            AcknowledgmentDS.Tables("Acknowledgment").Rows(0).Delete()
            AcknowledgmentDS.AcceptChanges()
        Catch ex As Exception
            email("AcknowledgmentDASetup failed!" + vbCrLf + ex.ToString)
        End Try
    End Sub
    Protected Sub AddressListDASetup(ByVal update As Boolean)
        Dim PrimaryKeys(1) As DataColumn
        Dim DAInsertCmd As SqlCommand
        Dim DAUpdateCmd As SqlCommand
        Dim DADeleteCmd As SqlCommand
        Try
            'Insert command
            DAInsertCmd = New SqlCommand("INSERT INTO ADDRESSLIST VALUES (@GLN_ID, @GLN, @NAME, @ADDRESS1, @ADDRESS2, @CITY, @STATE, " + _
                                         "@ZIP, @COUNTRY, @CONTACT, @PHONE, @DUNS, @STORENUM, @DISTRONUM, @DATE)", AddressListDA.SelectCommand.Connection)
            DAInsertCmd.Parameters.Add("@GLN_ID", SqlDbType.Int, 4, "GLN_ID")
            DAInsertCmd.Parameters.Add("@GLN", SqlDbType.VarChar, 80, "GLN")
            DAInsertCmd.Parameters.Add("@NAME", SqlDbType.VarChar, 60, "NAME")
            DAInsertCmd.Parameters.Add("@ADDRESS1", SqlDbType.VarChar, 55, "ADDRESS1")
            DAInsertCmd.Parameters.Add("@ADDRESS2", SqlDbType.VarChar, 55, "ADDRESS2")
            DAInsertCmd.Parameters.Add("@CITY", SqlDbType.VarChar, 30, "CITY")
            DAInsertCmd.Parameters.Add("@STATE", SqlDbType.VarChar, 2, "STATE")
            DAInsertCmd.Parameters.Add("@ZIP", SqlDbType.VarChar, 15, "ZIP")
            DAInsertCmd.Parameters.Add("@COUNTRY", SqlDbType.VarChar, 3, "COUNTRY")
            DAInsertCmd.Parameters.Add("@CONTACT", SqlDbType.VarChar, 60, "CONTACT")
            DAInsertCmd.Parameters.Add("@PHONE", SqlDbType.VarChar, 256, "PHONE")
            DAInsertCmd.Parameters.Add("@DUNS", SqlDbType.VarChar, 50, "DUNS")
            DAInsertCmd.Parameters.Add("@STORENUM", SqlDbType.VarChar, 50, "STORENUM")
            DAInsertCmd.Parameters.Add("@DISTRONUM", SqlDbType.VarChar, 50, "DISTRONUM")
            DAInsertCmd.Parameters.Add("@DATE", SqlDbType.Date, 3, "DATE")
            AddressListDA.InsertCommand = DAInsertCmd
            'Update command
            DAUpdateCmd = New SqlCommand("UPDATE ADDRESSLIST SET NAME = @NAME, ADDRESS1 = @ADDRESS1, ADDRESS2 = @ADDRESS2, " + _
                                         "CITY = @CITY, STATE = @STATE, ZIP = @ZIP, COUNTRY = @COUNTRY, CONTACT = @CONTACT, PHONE = @PHONE, DUNS = @DUNS, " + _
                                         "STORENUM = @STORENUM, DISTRONUM = @DISTRONUM, DATE = @DATE WHERE GLN_ID = @GLN_ID AND GLN = @GLN and NAME = @NAME", AddressListDA.SelectCommand.Connection)
            DAUpdateCmd.Parameters.Add("@GLN_ID", SqlDbType.Int, 4, "GLN_ID")
            DAUpdateCmd.Parameters.Add("@GLN", SqlDbType.VarChar, 80, "GLN")
            DAUpdateCmd.Parameters.Add("@NAME", SqlDbType.VarChar, 60, "NAME")
            DAUpdateCmd.Parameters.Add("@ADDRESS1", SqlDbType.VarChar, 55, "ADDRESS1")
            DAUpdateCmd.Parameters.Add("@ADDRESS2", SqlDbType.VarChar, 55, "ADDRESS2")
            DAUpdateCmd.Parameters.Add("@CITY", SqlDbType.VarChar, 30, "CITY")
            DAUpdateCmd.Parameters.Add("@STATE", SqlDbType.VarChar, 2, "STATE")
            DAUpdateCmd.Parameters.Add("@ZIP", SqlDbType.VarChar, 15, "ZIP")
            DAUpdateCmd.Parameters.Add("@COUNTRY", SqlDbType.VarChar, 3, "COUNTRY")
            DAUpdateCmd.Parameters.Add("@CONTACT", SqlDbType.VarChar, 60, "CONTACT")
            DAUpdateCmd.Parameters.Add("@PHONE", SqlDbType.VarChar, 256, "PHONE")
            DAUpdateCmd.Parameters.Add("@DUNS", SqlDbType.VarChar, 50, "DUNS")
            DAUpdateCmd.Parameters.Add("@STORENUM", SqlDbType.VarChar, 50, "STORENUM")
            DAUpdateCmd.Parameters.Add("@DISTRONUM", SqlDbType.VarChar, 50, "DISTRONUM")
            DAUpdateCmd.Parameters.Add("@DATE", SqlDbType.Date, 3, "DATE")
            AddressListDA.UpdateCommand = DAUpdateCmd
            'Delete command
            DADeleteCmd = New SqlCommand("DELETE FROM ADDRESSLIST WHERE GLN_ID = @GLN_ID AND GLN = @GLN AND NAME = @NAME", AddressListDA.SelectCommand.Connection)
            DADeleteCmd.Parameters.Add("@GLN_ID", SqlDbType.Int, 4, "GLN_ID")
            DADeleteCmd.Parameters.Add("@GLN", SqlDbType.VarChar, 80, "GLN")
            DADeleteCmd.Parameters.Add("@NAME", SqlDbType.VarChar, 60, "NAME")
            AddressListDA.DeleteCommand = DADeleteCmd
            If Not update Then
                AddressListDA.Fill(AddressListDS, "AddressList")
                'AddressListDA.ContinueUpdateOnError = True
                PrimaryKeys(0) = AddressListDS.Tables("AddressList").Columns("GLN_ID")
                AddressListDS.Tables("AddressList").PrimaryKey = PrimaryKeys
                For i As Integer = 0 To AddressListDS.Tables("AddressList").Rows.Count - 1
                    AddressListDS.Tables("AddressList").Rows(i).Delete()
                Next
                AddressListDA.Update(AddressListDS, "AddressList")
                AddressListDS.AcceptChanges()
            End If
        Catch ex As Exception
            email("AddressListDASetup failed!" + vbCrLf + ex.ToString)
        End Try
    End Sub
    Protected Sub PO_DASetup()
        Dim PrimaryKeys(1) As DataColumn
        Dim DAInsertCmd As SqlCommand
        Dim DAUpdateCmd As SqlCommand
        Try
            'Insert command
            'DAInsertCmd = New SqlCommand("INSERT INTO PO VALUES (@CONTROLNUM, @PONUM, @PURPOSE_CODE, @CURRENCY, @ORDER_DATE, @VENDORNUM, " + _
            '                             "@DIVISION, @PO_TYPE, @VENDOR_ORDERNUM, @BUYER, @BUYER_PHONE, @REVISED_BY, @REVISED_PHONE, @FACILITY_CONTACT, " + _
            '                            "@FACILITY_PHONE, @FOB, @DISCOUNT, @DISCOUNT_DAYS, @TERMS, @ARRIVAL_DATE, @NOTES_LABEL, @NOTES, @BILL_TO_NAME, " + _
            '                            "@BILL_TO_GLN, @SHIP_TO_NAME, @SHIP_TO_GLN, @VENDOR_NAME, @SHIP_TO_ADDRESS1, @SHIP_TO_ADDRESS2, @SHIP_TO_CITY, " + _
            '                            "@SHIP_TO_STATE, @SHIP_TO_ZIP, @SHIP_TO_COUNTRY, @FINAL_DELIVERY_LOCATION, @AMOUNT)", PO_DA.SelectCommand.Connection)
            DAInsertCmd = New SqlCommand("InsertMSG_ID", PO_DA.SelectCommand.Connection)
            DAInsertCmd.CommandType = CommandType.StoredProcedure
            DAInsertCmd.Parameters.Add("@MSG_ID", SqlDbType.Int, 4, "MSG_ID")
            DAInsertCmd.Parameters("@MSG_ID").Direction = ParameterDirection.Output
            DAInsertCmd.Parameters.Add("@DATE_RECEIVED", SqlDbType.DateTime, 8, "DATE_RECEIVED")
            DAInsertCmd.Parameters.Add("@GS_CONTROLNUM", SqlDbType.VarChar, 9, "GS_CONTROLNUM")
            DAInsertCmd.Parameters.Add("@ST_CONTROLNUM", SqlDbType.VarChar, 9, "ST_CONTROLNUM")
            DAInsertCmd.Parameters.Add("@PONUM", SqlDbType.VarChar, 22, "PONUM")
            DAInsertCmd.Parameters.Add("@PURPOSE_CODE", SqlDbType.VarChar, 2, "PURPOSE_CODE")
            DAInsertCmd.Parameters.Add("@CURRENCY", SqlDbType.VarChar, 3, "CURRENCY")
            DAInsertCmd.Parameters.Add("@ORDER_DATE", SqlDbType.Date, 3, "ORDER_DATE")
            DAInsertCmd.Parameters.Add("@VENDORNUM", SqlDbType.VarChar, 50, "VENDORNUM")
            DAInsertCmd.Parameters.Add("@DIVISION", SqlDbType.VarChar, 50, "DIVISION")
            DAInsertCmd.Parameters.Add("@PO_TYPE", SqlDbType.VarChar, 50, "PO_TYPE")
            DAInsertCmd.Parameters.Add("@VENDOR_ORDERNUM", SqlDbType.VarChar, 50, "VENDOR_ORDERNUM")
            DAInsertCmd.Parameters.Add("@BUYER", SqlDbType.VarChar, 60, "BUYER")
            DAInsertCmd.Parameters.Add("@BUYER_PHONE", SqlDbType.VarChar, 256, "BUYER_PHONE")
            DAInsertCmd.Parameters.Add("@REVISED_BY", SqlDbType.VarChar, 60, "REVISED_BY")
            DAInsertCmd.Parameters.Add("@REVISED_PHONE", SqlDbType.VarChar, 256, "REVISED_PHONE")
            DAInsertCmd.Parameters.Add("@FACILITY_CONTACT", SqlDbType.VarChar, 60, "FACILITY_CONTACT")
            DAInsertCmd.Parameters.Add("@FACILITY_PHONE", SqlDbType.VarChar, 256, "FACILITY_PHONE")
            DAInsertCmd.Parameters.Add("@FOB", SqlDbType.VarChar, 2, "FOB")
            DAInsertCmd.Parameters.Add("@DISCOUNT", SqlDbType.VarChar, 6, "DISCOUNT")
            DAInsertCmd.Parameters.Add("@DISCOUNT_DAYS", SqlDbType.VarChar, 3, "DISCOUNT_DAYS")
            DAInsertCmd.Parameters.Add("@TERMS", SqlDbType.VarChar, 80, "TERMS")
            DAInsertCmd.Parameters.Add("@ARRIVAL_DATE", SqlDbType.Date, 3, "ARRIVAL_DATE")
            DAInsertCmd.Parameters.Add("@NOTES_LABEL", SqlDbType.VarChar, 50, "NOTES_LABEL")
            DAInsertCmd.Parameters.Add("@NOTES", SqlDbType.Text, -1, "NOTES")
            DAInsertCmd.Parameters.Add("@BILL_TO_NAME", SqlDbType.VarChar, 60, "BILL_TO_NAME")
            DAInsertCmd.Parameters.Add("@BILL_TO_GLN", SqlDbType.VarChar, 80, "BILL_TO_GLN")
            DAInsertCmd.Parameters.Add("@SHIP_TO_NAME", SqlDbType.VarChar, 60, "SHIP_TO_NAME")
            DAInsertCmd.Parameters.Add("@SHIP_TO_GLN", SqlDbType.VarChar, 80, "SHIP_TO_GLN")
            DAInsertCmd.Parameters.Add("@VENDOR_NAME", SqlDbType.VarChar, 60, "VENDOR_NAME")
            DAInsertCmd.Parameters.Add("@SHIP_TO_ADDRESS1", SqlDbType.VarChar, 55, "SHIP_TO_ADDRESS1")
            DAInsertCmd.Parameters.Add("@SHIP_TO_ADDRESS2", SqlDbType.VarChar, 55, "SHIP_TO_ADDRESS2")
            DAInsertCmd.Parameters.Add("@SHIP_TO_CITY", SqlDbType.VarChar, 30, "SHIP_TO_CITY")
            DAInsertCmd.Parameters.Add("@SHIP_TO_STATE", SqlDbType.VarChar, 2, "SHIP_TO_STATE")
            DAInsertCmd.Parameters.Add("@SHIP_TO_ZIP", SqlDbType.VarChar, 15, "SHIP_TO_ZIP")
            DAInsertCmd.Parameters.Add("@SHIP_TO_COUNTRY", SqlDbType.VarChar, 3, "SHIP_TO_COUNTRY")
            DAInsertCmd.Parameters.Add("@FINAL_DELIVERY_LOCATION", SqlDbType.VarChar, 60, "FINAL_DELIVERY_LOCATION")
            DAInsertCmd.Parameters.Add("@AMOUNT", SqlDbType.VarChar, 18, "AMOUNT")
            DAInsertCmd.Parameters.Add("@ACKNOWLEDGED", SqlDbType.Bit, 1, "ACKNOWLEDGED")
            DAInsertCmd.Parameters.Add("@QUANTUS", SqlDbType.Bit, 1, "QUANTUS")
            PO_DA.InsertCommand = DAInsertCmd
            'Update command
            DAUpdateCmd = New SqlCommand("UPDATE PO SET DATE_RECEIVED = @DATE_RECEIVED, GS_CONTROLNUM = @GS_CONTROLNUM, ST_CONTROLNUM = @ST_CONTROLNUM, PONUM = @PONUM, PURPOSE_CODE = @PURPOSE_CODE, CURRENCY = @CURRENCY, ORDER_DATE = @ORDER_DATE, VENDORNUM = @VENDORNUM, " + _
                                         "DIVISION = @DIVISION, PO_TYPE = @PO_TYPE, VENDOR_ORDERNUM = @VENDOR_ORDERNUM, BUYER = @BUYER, BUYER_PHONE = @BUYER_PHONE, REVISED_BY = @REVISED_BY, REVISED_PHONE = @REVISED_PHONE, FACILITY_CONTACT = @FACILITY_CONTACT, " + _
                                         "FACILITY_PHONE = @FACILITY_PHONE, FOB = @FOB, DISCOUNT = @DISCOUNT, DISCOUNT_DAYS = @DISCOUNT_DAYS, TERMS = @TERMS, ARRIVAL_DATE = @ARRIVAL_DATE, NOTES_LABEL = @NOTES_LABEL, NOTES = @NOTES, BILL_TO_NAME = @BILL_TO_NAME, " + _
                                         "BILL_TO_GLN = @BILL_TO_GLN, SHIP_TO_NAME = @SHIP_TO_NAME, SHIP_TO_GLN = @SHIP_TO_GLN, VENDOR_NAME = @VENDOR_NAME, SHIP_TO_ADDRESS1 = @SHIP_TO_ADDRESS1, SHIP_TO_ADDRESS2 = @SHIP_TO_ADDRESS2, SHIP_TO_CITY = @SHIP_TO_CITY, " + _
                                         "SHIP_TO_STATE = @SHIP_TO_STATE, SHIP_TO_ZIP = @SHIP_TO_ZIP, SHIP_TO_COUNTRY = @SHIP_TO_COUNTRY, FINAL_DELIVERY_LOCATION = @FINAL_DELIVERY_LOCATION, AMOUNT = @AMOUNT, ACKNOWLEDGED = @ACKNOWLEDGED, QUANTUS = @QUANTUS WHERE MSG_ID = @MSG_ID", AddressListDA.SelectCommand.Connection)
            DAUpdateCmd.Parameters.Add("@MSG_ID", SqlDbType.Int, 4, "MSG_ID")
            DAUpdateCmd.Parameters.Add("@DATE_RECEIVED", SqlDbType.DateTime, 8, "DATE_RECEIVED")
            DAUpdateCmd.Parameters.Add("@GS_CONTROLNUM", SqlDbType.VarChar, 9, "GS_CONTROLNUM")
            DAUpdateCmd.Parameters.Add("@ST_CONTROLNUM", SqlDbType.VarChar, 9, "ST_CONTROLNUM")
            DAUpdateCmd.Parameters.Add("@PONUM", SqlDbType.VarChar, 22, "PONUM")
            DAUpdateCmd.Parameters.Add("@PURPOSE_CODE", SqlDbType.VarChar, 2, "PURPOSE_CODE")
            DAUpdateCmd.Parameters.Add("@CURRENCY", SqlDbType.VarChar, 3, "CURRENCY")
            DAUpdateCmd.Parameters.Add("@ORDER_DATE", SqlDbType.Date, 3, "ORDER_DATE")
            DAUpdateCmd.Parameters.Add("@VENDORNUM", SqlDbType.VarChar, 50, "VENDORNUM")
            DAUpdateCmd.Parameters.Add("@DIVISION", SqlDbType.VarChar, 50, "DIVISION")
            DAUpdateCmd.Parameters.Add("@PO_TYPE", SqlDbType.VarChar, 50, "PO_TYPE")
            DAUpdateCmd.Parameters.Add("@VENDOR_ORDERNUM", SqlDbType.VarChar, 50, "VENDOR_ORDERNUM")
            DAUpdateCmd.Parameters.Add("@BUYER", SqlDbType.VarChar, 60, "BUYER")
            DAUpdateCmd.Parameters.Add("@BUYER_PHONE", SqlDbType.VarChar, 256, "BUYER_PHONE")
            DAUpdateCmd.Parameters.Add("@REVISED_BY", SqlDbType.VarChar, 60, "REVISED_BY")
            DAUpdateCmd.Parameters.Add("@REVISED_PHONE", SqlDbType.VarChar, 256, "REVISED_PHONE")
            DAUpdateCmd.Parameters.Add("@FACILITY_CONTACT", SqlDbType.VarChar, 60, "FACILITY_CONTACT")
            DAUpdateCmd.Parameters.Add("@FACILITY_PHONE", SqlDbType.VarChar, 256, "FACILITY_PHONE")
            DAUpdateCmd.Parameters.Add("@FOB", SqlDbType.VarChar, 2, "FOB")
            DAUpdateCmd.Parameters.Add("@DISCOUNT", SqlDbType.VarChar, 6, "DISCOUNT")
            DAUpdateCmd.Parameters.Add("@DISCOUNT_DAYS", SqlDbType.VarChar, 3, "DISCOUNT_DAYS")
            DAUpdateCmd.Parameters.Add("@TERMS", SqlDbType.VarChar, 80, "TERMS")
            DAUpdateCmd.Parameters.Add("@ARRIVAL_DATE", SqlDbType.Date, 3, "ARRIVAL_DATE")
            DAUpdateCmd.Parameters.Add("@NOTES_LABEL", SqlDbType.VarChar, 50, "NOTES_LABEL")
            DAUpdateCmd.Parameters.Add("@NOTES", SqlDbType.Text, -1, "NOTES")
            DAUpdateCmd.Parameters.Add("@BILL_TO_NAME", SqlDbType.VarChar, 60, "BILL_TO_NAME")
            DAUpdateCmd.Parameters.Add("@BILL_TO_GLN", SqlDbType.VarChar, 80, "BILL_TO_GLN")
            DAUpdateCmd.Parameters.Add("@SHIP_TO_NAME", SqlDbType.VarChar, 60, "SHIP_TO_NAME")
            DAUpdateCmd.Parameters.Add("@SHIP_TO_GLN", SqlDbType.VarChar, 80, "SHIP_TO_GLN")
            DAUpdateCmd.Parameters.Add("@VENDOR_NAME", SqlDbType.VarChar, 60, "VENDOR_NAME")
            DAUpdateCmd.Parameters.Add("@SHIP_TO_ADDRESS1", SqlDbType.VarChar, 55, "SHIP_TO_ADDRESS1")
            DAUpdateCmd.Parameters.Add("@SHIP_TO_ADDRESS2", SqlDbType.VarChar, 55, "SHIP_TO_ADDRESS2")
            DAUpdateCmd.Parameters.Add("@SHIP_TO_CITY", SqlDbType.VarChar, 30, "SHIP_TO_CITY")
            DAUpdateCmd.Parameters.Add("@SHIP_TO_STATE", SqlDbType.VarChar, 2, "SHIP_TO_STATE")
            DAUpdateCmd.Parameters.Add("@SHIP_TO_ZIP", SqlDbType.VarChar, 15, "SHIP_TO_ZIP")
            DAUpdateCmd.Parameters.Add("@SHIP_TO_COUNTRY", SqlDbType.VarChar, 3, "SHIP_TO_COUNTRY")
            DAUpdateCmd.Parameters.Add("@FINAL_DELIVERY_LOCATION", SqlDbType.VarChar, 60, "FINAL_DELIVERY_LOCATION")
            DAUpdateCmd.Parameters.Add("@AMOUNT", SqlDbType.VarChar, 18, "AMOUNT")
            DAUpdateCmd.Parameters.Add("@ACKNOWLEDGED", SqlDbType.Bit, 1, "ACKNOWLEDGED")
            DAUpdateCmd.Parameters.Add("@QUANTUS", SqlDbType.Bit, 1, "QUANTUS")
            PO_DA.UpdateCommand = DAUpdateCmd
            PO_DA.Fill(PO_DS, "PO")
            'PrimaryKeys(0) = PO_DS.Tables("PO").Columns("MSG_ID")
            'PO_DS.Tables("PO").PrimaryKey = PrimaryKeys
            PO_DS.Tables("PO").Rows(0).Delete()
            PO_DS.AcceptChanges()
        Catch ex As Exception
            email("PO_DASetup failed!" + vbCrLf + ex.ToString)
        End Try
    End Sub
    Protected Sub PO_LINE_DASetup()
        Dim PrimaryKeys(1) As DataColumn
        Dim DAInsertCmd As SqlCommand
        Dim DAUpdateCmd As SqlCommand
        Try
            'Insert command
            'DAInsertCmd = New SqlCommand("INSERT INTO PO_LINE VALUES (@MSG_ID, @LINE_NUM, @QTY, @UNITS, @UNIT_PRICE, @CUSTOMER_ITEM_NUM, " + _
            '                            "@VENDOR_ITEM_NUM, @DESCRIPTION, @AMOUNT, @SDQ)", PO_LINE_DA.SelectCommand.Connection)
            DAInsertCmd = New SqlCommand("InsertLINE_ID", PO_LINE_DA.SelectCommand.Connection)
            DAInsertCmd.CommandType = CommandType.StoredProcedure
            DAInsertCmd.Parameters.Add("@LINE_ID", SqlDbType.Int, 4, "LINE_ID")
            DAInsertCmd.Parameters("@LINE_ID").Direction = ParameterDirection.Output
            DAInsertCmd.Parameters.Add("@MSG_ID", SqlDbType.Int, 4, "MSG_ID")
            DAInsertCmd.Parameters.Add("@LINE_NUM", SqlDbType.VarChar, 20, "LINE_NUM")
            DAInsertCmd.Parameters.Add("@QTY", SqlDbType.VarChar, 15, "QTY")
            DAInsertCmd.Parameters.Add("@UNITS", SqlDbType.VarChar, 2, "UNITS")
            DAInsertCmd.Parameters.Add("@UNIT_PRICE", SqlDbType.VarChar, 20, "UNIT_PRICE")
            DAInsertCmd.Parameters.Add("@CUSTOMER_ITEM_NUM", SqlDbType.VarChar, 48, "CUSTOMER_ITEM_NUM")
            DAInsertCmd.Parameters.Add("@VENDOR_ITEM_NUM", SqlDbType.VarChar, 48, "VENDOR_ITEM_NUM")
            DAInsertCmd.Parameters.Add("@DESCRIPTION", SqlDbType.VarChar, 80, "DESCRIPTION")
            DAInsertCmd.Parameters.Add("@AMOUNT", SqlDbType.VarChar, 18, "AMOUNT")
            DAInsertCmd.Parameters.Add("@SDQ", SqlDbType.Bit, 1, "SDQ")
            PO_LINE_DA.InsertCommand = DAInsertCmd
            'Update command
            DAUpdateCmd = New SqlCommand("UPDATE PO_LINE SET MSG_ID = @MSG_ID, LINE_NUM = @LINE_NUM, QTY = @QTY, UNITS = @UNITS, UNIT_PRICE = @UNIT_PRICE, " + _
                                         "CUSTOMER_ITEM_NUM = @CUSTOMER_ITEM_NUM, VENDOR_ITEM_NUM = @VENDOR_ITEM_NUM, DESCRIPTION = @DESCRIPTION, AMOUNT = @AMOUNT, SDQ = @SDQ " + _
                                         "WHERE LINE_ID = @LINE_ID", PO_LINE_DA.SelectCommand.Connection)
            DAUpdateCmd.Parameters.Add("@LINE_ID", SqlDbType.Int, 4, "LINE_ID")
            DAUpdateCmd.Parameters.Add("@MSG_ID", SqlDbType.Int, 4, "MSG_ID")
            DAUpdateCmd.Parameters.Add("@LINE_NUM", SqlDbType.VarChar, 20, "LINE_NUM")
            DAUpdateCmd.Parameters.Add("@QTY", SqlDbType.VarChar, 15, "QTY")
            DAUpdateCmd.Parameters.Add("@UNITS", SqlDbType.VarChar, 2, "UNITS")
            DAUpdateCmd.Parameters.Add("@UNIT_PRICE", SqlDbType.VarChar, 20, "UNIT_PRICE")
            DAUpdateCmd.Parameters.Add("@CUSTOMER_ITEM_NUM", SqlDbType.VarChar, 48, "CUSTOMER_ITEM_NUM")
            DAUpdateCmd.Parameters.Add("@VENDOR_ITEM_NUM", SqlDbType.VarChar, 48, "VENDOR_ITEM_NUM")
            DAUpdateCmd.Parameters.Add("@DESCRIPTION", SqlDbType.VarChar, 80, "DESCRIPTION")
            DAUpdateCmd.Parameters.Add("@AMOUNT", SqlDbType.VarChar, 18, "AMOUNT")
            DAUpdateCmd.Parameters.Add("@SDQ", SqlDbType.Bit, 1, "SDQ")
            PO_LINE_DA.UpdateCommand = DAUpdateCmd
            PO_LINE_DA.Fill(PO_LINE_DS, "PO_LINE")
            'PrimaryKeys(0) = PO_LINE_DS.Tables("PO_LINE").Columns("LINE_ID")
            'PO_LINE_DS.Tables("PO_LINE").PrimaryKey = PrimaryKeys
            PO_LINE_DS.Tables("PO_LINE").Rows(0).Delete()
            PO_LINE_DS.AcceptChanges()
        Catch ex As Exception
            email("PO_LINE_DASetup failed!" + vbCrLf + ex.ToString)
        End Try
    End Sub
    Protected Sub SDQ_DASetup()
        'Dim PrimaryKeys(1) As DataColumn
        Dim DAInsertCmd As SqlCommand
        Try
            'Insert command
            DAInsertCmd = New SqlCommand("INSERT INTO SDQ VALUES (@LINE_ID, @GLN, @QTY)", SDQ_DA.SelectCommand.Connection)
            DAInsertCmd.Parameters.Add("@LINE_ID", SqlDbType.Int, 4, "LINE_ID")
            DAInsertCmd.Parameters.Add("@GLN", SqlDbType.VarChar, 80, "GLN")
            DAInsertCmd.Parameters.Add("@QTY", SqlDbType.VarChar, 15, "QTY")
            SDQ_DA.InsertCommand = DAInsertCmd
            SDQ_DA.Fill(SDQ_DS, "SDQ")
            'PrimaryKeys(0) = AcknowledgmentDS.Tables("Acknowledgment").Columns("MSG_ID")
            'AcknowledgmentDS.Tables("Acknowledgment").PrimaryKey = PrimaryKeys
            SDQ_DS.Tables("SDQ").Rows(0).Delete()
            SDQ_DS.AcceptChanges()
        Catch ex As Exception
            email("SDQ_DASetup failed!" + vbCrLf + ex.ToString)
        End Try
    End Sub
    Sub email(ByVal EmailBody As String)
        Dim MailObj As New System.Net.Mail.SmtpClient
        Dim msgTo As String = "*******@*******.com"
        Dim msgFrom As String = "aspnet@*******.*******.com"
        Dim msgSubject As String = "Message from ******* EDI!"
        Dim msgBody As String = EmailBody
        MailObj.Host = "chad1"
        MailObj.Send(msgFrom, msgTo, msgSubject, msgBody)
    End Sub
    'Sub sendAcknowledgment(ByVal PONUM As String)
    'End Sub
End Class


Copyright © 2013 ProTechs-Online.com; All rights reserved.