ProTech's home page

ProTech-Online.com

Visual Studio module code example for EDI AS2 communication.

Imports System.Data.SqlClient
Imports Rebex.Net
Imports Rebex.Security.Certificates
Module Module1
    Public myLog As New EventLog()
    Public WPOT_CON As SqlConnection = New SqlConnection("Data Source=*******; Initial Catalog=*******; User Id=*******; Password=*******")
    Public WPOT_DA As SqlDataAdapter = New SqlDataAdapter("SELECT TOP 1 * FROM WPOT", WPOT_CON)
    Public WPOT_DS As DataSet = New DataSet
    Sub Main()
        WPOTEventlog()
        CreateUploadFile()
    End Sub
    Sub WPOTEventlog()
        If Not EventLog.SourceExists("WPOT") Then
            EventLog.CreateEventSource("WPOT", "******* Tracking")
            Console.WriteLine("CreatingEventSource")
        End If
        ' Create an EventLog instance and assign its source.
        myLog.Source = "WPOT"
        ' Write an informational entry to the event log.   
        'myLog.WriteEntry("******* Tracking Eventlog setup.")
    End Sub
    Sub CreateUploadFile()
        Dim BatchID As Long
        Dim FilePath As String = "Upload\*******_"
        Dim FileName As String
        Dim str As String = "Supplier Acct Number,******* PO Number,******* Store Number,Supplier Sales/Work Order Number,Estimated Ship Date,Actual Ship Date,Estimated Date of Arrival,Ship To Name,Ship to Street Address,Ship to City,Ship to State,Carrier SCAC (Standard Carrier Alpha Code) Number,Pro Number or Load Number,Bill of Lading Number,Pallet ID Number,Container Type,Container Number,Quantity in Container,******* Item Part Number,Supplier Item Part Number,Supplier Item Part Number Description,******* Component Part Number,Supplier Component Part Number,Supplier Component Description,Supplier Quantity Ordered,Supplier Quantity Shipped,Status,Ship Condition,Part Type" + vbCrLf
        Dim tmpdate As Date
        Try
            setupWpot()
            WPOT_DA.SelectCommand.CommandText = "SELECT * FROM WPOT WHERE SENT = 0"
            BatchID = My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\*******", "Batch ID", Nothing)
            BatchID = BatchID + 1
            If WPOT_DA.Fill(WPOT_DS, "WPOT") > 0 Then
                For Each dr As DataRow In WPOT_DS.Tables("WPOT").Rows
                    If Not dr.Item("SHIP_TO_CODE").ToString = "ON" Then
                        str = str + "*******,"
                        str = str + dr.Item("PONUM").ToString.Replace(",", " ") + ","
                        str = str + dr.Item("STORENUM").ToString.Replace(",", " ") + ","
                        str = str + dr.Item("ORDERNUM").ToString + ","
                        tmpdate = dr.Item("DTREQUESTED")
                        str = str + tmpdate.ToString("MM/dd/yyyy") + ","
                        If IsDBNull(dr.Item("DTSHIPPED")) Then
                            str = str + ","
                        Else
                            tmpdate = dr.Item("DTSHIPPED")
                            str = str + tmpdate.ToString("MM/dd/yyyy") + ","
                        End If
                        tmpdate = dr.Item("DTPROMISED")
                        str = str + tmpdate.ToString("MM/dd/yyyy") + ","
                        str = str + dr.Item("SHIP_TO_CODE").ToString + ","
                        str = str + dr.Item("ADDRESS1").ToString.Replace(",", " ") + " " + dr.Item("ADDRESS2").ToString.Replace(",", " ") + ","
                        str = str + dr.Item("CITY").ToString.Replace(",", " ") + ","
                        str = str + dr.Item("STATE").ToString.Replace(",", " ") + ","
                        If IsDBNull(dr.Item("CARRIER")) Then
                            str = str + ","
                        Else
                            str = str + dr.Item("CARRIER").ToString.Replace(",", " ") + ","
                        End If
                        If IsDBNull(dr.Item("PRONUM")) Then
                            str = str + ","
                        Else
                            str = str + dr.Item("PRONUM").ToString.Replace(",", " ") + ","
                        End If
                        If IsDBNull(dr.Item("WAYBILLNUM")) Then
                            str = str + ","
                        Else
                            str = str + dr.Item("WAYBILLNUM").ToString.Replace(",", " ") + ","
                        End If
                        If IsDBNull(dr.Item("PALLETID")) Or dr.Item("SHIPQTY") = 0 Then
                            str = str + ","
                        Else
                            str = str + dr.Item("PALLETID").ToString + ","
                        End If
                        'Container Type
                        str = str + ","
                        'Container Number
                        str = str + ","
                        'Qty in Container
                        If IsDBNull(dr.Item("PALLETID")) Or dr.Item("SHIPQTY") = 0 Then
                            str = str + ","
                        Else
                            str = str + dr.Item("SHIPQTY").ToString + ","
                        End If
                        str = str + dr.Item("ALTITEMNUM").ToString.Replace(",", " ") + ","
                        If dr.Item("ITEMNUM").ToString.Contains("_CMP") Then
                            str = str + dr.Item("ITEMNUM").ToString.Substring(0, dr.Item("ITEMNUM").ToString.IndexOf("_CMP")) + ","
                        Else
                            str = str + dr.Item("ITEMNUM").ToString + ","
                        End If
                        str = str + dr.Item("ALTITEMDESC").ToString.Replace(vbCrLf, " ") + ","
                        '******* Component Number
                        str = str + ","
                        'Supplier Component Number
                        If dr.Item("ITEMNUM").ToString.Contains("_CMP") Then
                            str = str + dr.Item("ITEMNUM").ToString + ","
                        Else
                            str = str + ","
                        End If
                        'Supplier Component Description
                        If dr.Item("ITEMNUM").ToString.Contains("_CMP") Then
                            str = str + dr.Item("ALTITEMDESC").ToString.Replace(vbCrLf, " ") + ","
                        Else
                            str = str + ","
                        End If
                        str = str + dr.Item("QTY").ToString + ","
                        str = str + dr.Item("SHIPQTY").ToString + ","
                        If dr.Item("STATUS") Then
                            str = str + "C,"
                        Else
                            str = str + "A,"
                        End If
                        'Ship Condition
                        If IsDBNull(dr.Item("ETA")) Then
                            str = str + ","
                        Else
                            str = str + dr.Item("ETA").ToString + ","
                        End If
                        'Part Type
                        If dr.Item("ITEMNUM").ToString.Contains("_CMP") Then
                            str = str + "C" + vbCrLf
                        Else
                            str = str + "I" + vbCrLf
                        End If
                        dr.Item("DATE_SENT") = DateTime.Now
                        dr.Item("BATCHID") = BatchID.ToString
                    End If
                    dr.Item("SENT") = 1
                Next
                FileName = FilePath + BatchID.ToString("D6") + ".csv"
                System.IO.File.WriteAllText(FileName, str)
                My.Computer.Registry.SetValue("HKEY_LOCAL_MACHINE\SOFTWARE\*******", "Batch ID", BatchID)
                If FTPUploadFile(FileName) Then
                    WPOT_DA.Update(WPOT_DS, "WPOT")
                End If
            End If
        Catch ex As Exception
            myLog.WriteEntry("CreateUploadFile failed!" + vbCrLf + ex.ToString, System.Diagnostics.EventLogEntryType.Error)
        End Try
    End Sub
    Function FTPUploadFile(ByVal fileString As String) As Boolean
        Dim FileName As String
        Dim FTPServer As String = "*******.*******.com"
        Dim ftp As New Ftp()
        Dim success As Boolean = False
        Dim startpos As Integer
        Dim endpos As Integer
        Try
            startpos = fileString.LastIndexOf("\") + 1
            endpos = fileString.Length - startpos
            FileName = fileString.Substring(startpos, endpos)
            ' create Ftp object, connect and log in
            ftp.Connect(FTPServer, 990, Nothing, FtpSecurity.Implicit)
            ftp.Login("*******.*******.com|*******", "*******")
            ' set transfer type to binary
            ftp.TransferType = FtpTransferType.Ascii
            ' download file and display number of bytes transferred
            Dim bytes As Long = ftp.PutFile(fileString, FileName)
            myLog.WriteEntry("Transfered " + bytes.ToString + " bytes.")
            ' disconnect
            ftp.Disconnect()
            success = True
        Catch ex As Exception
            myLog.WriteEntry("FTPUploadFile failed!" + vbCrLf + ex.ToString, System.Diagnostics.EventLogEntryType.Error)
        End Try
        Return success
    End Function
    Public Sub setupWpot()
        Dim DAUpdateCmd As SqlCommand
        Try
            DAUpdateCmd = New SqlCommand("UPDATE WPOT SET DATE_SENT = @DATE_SENT, PONUM = @PONUM, STORENUM = @STORENUM, ORDERNUM = @ORDERNUM, DTREQUESTED = @DTREQUESTED, DTSHIPPED = @DTSHIPPED, DTPROMISED = @DTPROMISED, SHIP_TO_CODE = @SHIP_TO_CODE, ADDRESS1 = @ADDRESS1, " + _
                                         "ADDRESS2 = @ADDRESS2, CITY = @CITY, STATE = @STATE, CARRIER = @CARRIER, PRONUM = @PRONUM, WAYBILLNUM = @WAYBILLNUM, ALTITEMNUM = @ALTITEMNUM, ITEMNUM = @ITEMNUM, ALTITEMDESC = @ALTITEMDESC, " + _
                                         "QTY = @QTY, LINE_NUM = @LINE_NUM, PALLETID = @PALLETID, STATUS = @STATUS, SENT = @SENT, LABELS = @LABELS, BATCHID = @BATCHID, COMPANY = @COMPANY, COUNTRY = @COUNTRY, ZIP = @ZIP WHERE LINE_ID = @LINE_ID", WPOT_DA.SelectCommand.Connection)
            DAUpdateCmd.Parameters.Add("@LINE_ID", SqlDbType.Int, 4, "LINE_ID")
            DAUpdateCmd.Parameters("@LINE_ID").SourceVersion = DataRowVersion.Original
            DAUpdateCmd.Parameters.Add("@DATE_SENT", SqlDbType.DateTime, 8, "DATE_SENT")
            DAUpdateCmd.Parameters.Add("@PONUM", SqlDbType.VarChar, 30, "PONUM")
            DAUpdateCmd.Parameters.Add("@STORENUM", SqlDbType.VarChar, 10, "STORENUM")
            DAUpdateCmd.Parameters.Add("@ORDERNUM", SqlDbType.VarChar, 20, "ORDERNUM")
            DAUpdateCmd.Parameters.Add("@DTREQUESTED", SqlDbType.DateTime, 8, "DTREQUESTED")
            DAUpdateCmd.Parameters.Add("@DTSHIPPED", SqlDbType.DateTime, 8, "DTSHIPPED")
            DAUpdateCmd.Parameters.Add("@DTPROMISED", SqlDbType.DateTime, 8, "DTPROMISED")
            DAUpdateCmd.Parameters.Add("@SHIP_TO_CODE", SqlDbType.VarChar, 3, "SHIP_TO_CODE")
            DAUpdateCmd.Parameters.Add("@ADDRESS1", SqlDbType.VarChar, 45, "ADDRESS1")
            DAUpdateCmd.Parameters.Add("@ADDRESS2", SqlDbType.VarChar, 45, "ADDRESS2")
            DAUpdateCmd.Parameters.Add("@CITY", SqlDbType.VarChar, 30, "CITY")
            DAUpdateCmd.Parameters.Add("@STATE", SqlDbType.VarChar, 30, "STATE")
            DAUpdateCmd.Parameters.Add("@CARRIER", SqlDbType.VarChar, 5, "CARRIER")
            DAUpdateCmd.Parameters.Add("@PRONUM", SqlDbType.VarChar, 30, "PRONUM")
            DAUpdateCmd.Parameters.Add("@WAYBILLNUM", SqlDbType.VarChar, 30, "WAYBILLNUM")
            DAUpdateCmd.Parameters.Add("@ALTITEMNUM", SqlDbType.VarChar, 30, "ALTITEMNUM")
            DAUpdateCmd.Parameters.Add("@ITEMNUM", SqlDbType.VarChar, 30, "ITEMNUM")
            DAUpdateCmd.Parameters.Add("@ALTITEMDESC", SqlDbType.VarChar, 61, "ALTITEMDESC")
            DAUpdateCmd.Parameters.Add("@QTY", SqlDbType.VarChar, 15, "QTY")
            DAUpdateCmd.Parameters.Add("@SHIPQTY", SqlDbType.VarChar, 15, "SHIPQTY")
            DAUpdateCmd.Parameters.Add("@LINE_NUM", SqlDbType.VarChar, 20, "LINE_NUM")
            DAUpdateCmd.Parameters.Add("@PALLETID", SqlDbType.VarChar, 30, "PALLETID")
            DAUpdateCmd.Parameters.Add("@STATUS", SqlDbType.Bit, 1, "STATUS")
            DAUpdateCmd.Parameters.Add("@SENT", SqlDbType.Bit, 1, "SENT")
            DAUpdateCmd.Parameters.Add("@LABELS", SqlDbType.Bit, 1, "LABELS")
            DAUpdateCmd.Parameters.Add("@BATCHID", SqlDbType.VarChar, 30, "BATCHID")
            DAUpdateCmd.Parameters.Add("@COMPANY", SqlDbType.VarChar, 32, "COMPANY")
            DAUpdateCmd.Parameters.Add("@COUNTRY", SqlDbType.VarChar, 4, "COUNTRY")
            DAUpdateCmd.Parameters.Add("@ZIP", SqlDbType.VarChar, 12, "ZIP")
            WPOT_DA.UpdateCommand = DAUpdateCmd
            WPOT_DA.Fill(WPOT_DS, "WPOT")
            WPOT_DS.Tables("WPOT").Clear()
            WPOT_DS.AcceptChanges()
        Catch ex As Exception
            myLog.WriteEntry("setupWpot failed!" + vbCrLf + ex.ToString, System.Diagnostics.EventLogEntryType.Error)
        End Try
    End Sub
End Module


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