Imports System.Data
Imports System.Text
Imports System.Data.SqlClient
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared
Imports System.Web.Mail

Public MustInherit Class GetSupplierTax
    Inherits getCommonData

    Public Sub getChk(ByVal dg As DataGrid, ByVal str As String)
        Dim i As Integer = 0
        Dim dgitm As DataGridItem
        For Each dgitm In dg.Items
            Dim rdb As RadioButton = CType(dgitm.FindControl(str.Trim), RadioButton)
            If rdb.Checked = True Then
                rdb.Checked = False
                i += 1
            End If
        Next
    End Sub

    Public Sub updateData(ByVal dg As DataGrid)
        Dim dgitm As DataGridItem
        Dim ddl As DropDownList
        For Each dgitm In dg.Items
            ddl = CType(dgitm.FindControl("ddl"), DropDownList)
            If ddl.SelectedItem.Value = 1 Then
                Dim strbillno As String = dgitm.Cells(0).Text.Trim
                UpdateStatus(strbillno.Trim, "CR")
               
            End If
        Next
    End Sub

    Protected Function OrderID() As Int32
        Dim intOID As Int32
        cmd = New SqlCommand("getOrderID", con)
        cmd.CommandType = CommandType.StoredProcedure
        If con.State = ConnectionState.Open Then
            con.Close()
        End If
        con.Open()
        dr = cmd.ExecuteReader(CommandBehavior.SingleResult)
        If dr.Read = True Then
            intOID = dr.Item("OrderID")
        Else
            intOID = 0
        End If
        con.Close()
        Return intOID
    End Function

    Public MustOverride Function InsertSOrder(ByVal dg As DataGrid, ByVal dgitem As DataGridItem, ByVal strBE As String) As Boolean
    Public MustOverride Function BillNo(ByVal dg As DataGrid, ByVal strName As String) As String
    Public MustOverride Sub getSupplier(ByVal strBillNo As String, ByVal dg As DataGrid)
    Public MustOverride Sub getDespAdd(ByVal strBillNo As String, ByVal intPID As Int32, _
                                       ByVal dg As DataGrid, ByVal ddl As DropDownList, ByVal lbl As Label)
    Public MustOverride Sub UpdateStatus(ByVal strBillNo As String, ByVal strStatus As String)
    Public MustOverride Sub getStatus(ByVal dg As DataGrid, ByVal list As SortedList)
    Public MustOverride Sub BillDetails(ByVal strBNo As String, ByVal dg As DataGrid)
    Public MustOverride Sub getPayments(ByVal strBNo As String, ByVal strStatus As String, _
                                     ByVal strPara As String, ByVal dg As DataGrid)
    Protected MustOverride Sub getlblData(ByVal lbl As Label)
    Public MustOverride Function GenerateReport(ByVal strEmail As String, ByVal strtype As String, _
                        ByVal strBNo As String, ByVal SID As Integer, ByVal ProdID As Integer) As String

End Class

Public Class AdminSupplier : Inherits GetSupplierTax

    Public Overrides Function InsertSOrder(ByVal dg As DataGrid, ByVal dgitem As DataGridItem, ByVal strBE As String) As Boolean
        Dim intOrderID, intOAmt, intPer, i As Int32

        intOrderID = OrderID() + 1
        Dim dgitm As DataGridItem
        Dim ddl As DropDownList
        For Each dgitm In dg.Items
            ddl = CType(dgitm.FindControl("ddlExemp1"), DropDownList)

            'calculation for octroi
            intPer = getOctroi(dgitem.Cells(10).Text, dgitm.Cells(8).Text, _
                                "AB")
            cmd = New SqlCommand("insertSupOctra", con)
            cmd.CommandType = CommandType.StoredProcedure
            cmd.Parameters.AddWithValue("@OrderID", intOrderID)
            cmd.Parameters.AddWithValue("@RowID", (dgitm.ItemIndex + 1))
            cmd.Parameters.AddWithValue("@BillNo", dgitm.Cells(0).Text)
            cmd.Parameters.AddWithValue("@SupplierId", dgitem.Cells(9).Text)
            cmd.Parameters.AddWithValue("@ShipAddId", dgitm.Cells(8).Text)
            cmd.Parameters.AddWithValue("@ProdID", dgitem.Cells(8).Text)
            cmd.Parameters.AddWithValue("@ProdQty", dgitm.Cells(9).Text)
            cmd.Parameters.AddWithValue("@ProdRate", dgitem.Cells(12).Text)
            i = Val(dgitm.Cells(9).Text) * Val(dgitem.Cells(12).Text)
            cmd.Parameters.AddWithValue("@ProdAmt", i)
            cmd.Parameters.AddWithValue("@OCtraRate", intPer)
            cmd.Parameters.AddWithValue("@OctraAmt", i * intPer / 100)
            cmd.Parameters.AddWithValue("@Status", "PD")
            intOAmt += (i * intPer / 100)
            If con.State = ConnectionState.Open Then
                con.Close()
            End If
            con.Open()
            cmd.ExecuteNonQuery()
            con.Close()
        Next
        intPer = getTax(dgitem.Cells(9).Text, dgitem.Cells(8).Text, "S", strBE.Trim)
        cmd = New SqlCommand("insertSupplier", con)
        cmd.CommandType = CommandType.StoredProcedure
        cmd.Parameters.AddWithValue("@OrderID", intOrderID)
        cmd.Parameters.AddWithValue("@OrderDate", DateTime.Now())
        cmd.Parameters.AddWithValue("@BillNo", dg.Items(0).Cells(0).Text)
        cmd.Parameters.AddWithValue("@SupplierID", dgitem.Cells(9).Text)
        cmd.Parameters.AddWithValue("@UserID", dgitem.Cells(10).Text)
        cmd.Parameters.AddWithValue("@ProdID", dgitem.Cells(8).Text)
        cmd.Parameters.AddWithValue("@ProdQty", dgitem.Cells(4).Text)
        cmd.Parameters.AddWithValue("@ProdRate", dgitem.Cells(12).Text)
        i = Val(dgitem.Cells(4).Text) * Val(dgitem.Cells(12).Text)
        cmd.Parameters.AddWithValue("@ProdAmt", i)
        cmd.Parameters.AddWithValue("@PFCharge", i * 5 / 100)
        cmd.Parameters.AddWithValue("@TaxRate", intPer)
        cmd.Parameters.AddWithValue("@TaxAmt", (i + (i * 5 / 100)) * intPer / 100)
        cmd.Parameters.AddWithValue("@OctroiAmount", intOAmt)
        cmd.Parameters.AddWithValue("@Freight", i * 5 / 100)
        cmd.Parameters.AddWithValue("@Status", "PD")
        If con.State = ConnectionState.Open Then
            con.Close()
        End If
        con.Open()
        cmd.ExecuteNonQuery()
        con.Close()
        GenerateReport(dgitem.Cells(11).Text, dg.Items(0).Cells(10).Text, dg.Items(0).Cells(0).Text, dgitem.Cells(9).Text, dgitem.Cells(8).Text)
        Dim chk As RadioButton = CType(dgitem.FindControl("rdbSID"), RadioButton)
        chk.Checked = False
        chk.Visible = False
        Dim lbl As Label = CType(dgitem.FindControl("lblStatus"), Label)
        lbl.Text = "Processed"
    End Function

    Public Overrides Sub getDespAdd(ByVal strBillNo As String, ByVal intPID As Int32, _
                                    ByVal dg As DataGrid, ByVal ddl As DropDownList, ByVal lbl As Label)
        cmd = New SqlCommand("DespatchAddress", con)
        cmd.CommandType = CommandType.StoredProcedure
        cmd.Parameters.AddWithValue("@BillNo", strBillNo.Trim)
        cmd.Parameters.AddWithValue("@ProdID", intPID)
        If con.State = ConnectionState.Open Then
            con.Close()
        End If
        con.Open()
        dr = cmd.ExecuteReader(CommandBehavior.CloseConnection)
        dg.DataSource = dr
        dg.DataBind()
        con.Close()
        ddl.Items.Clear()
        getexemp(ddl)
        Dim dgitm As DataGridItem
        Dim ddlE As DropDownList
        For Each dgitm In dg.Items
            ddlE = CType(dgitm.FindControl("ddlExemp1"), DropDownList)
            ddlE.Items.Clear()
            ddlE.DataSource = ddl.Items
            ddlE.DataTextField = "Text"
            ddlE.DataValueField = "Value"
            ddlE.DataBind()
        Next
        getlblData(lbl)
    End Sub

    Public Overrides Function BillNo(ByVal dg As DataGrid, ByVal strName As String) As String
        Dim dgitm As DataGridItem
        For Each dgitm In dg.Items
            Dim chk As RadioButton = CType(dgitm.FindControl(strName.Trim), RadioButton)
            If chk.Checked = True Then
                If dg.ID.Trim = "dgpDetails" Then
                    Dim lbtn As LinkButton = CType(dgitm.FindControl("lbtnBillNo"), LinkButton)
                    Return lbtn.CommandArgument.Trim
                    Exit For
                ElseIf dg.ID.Trim = "dgSupplier" Then
                    Return dgitm.ItemIndex.ToString
                    Exit For
                End If
            End If
        Next
        Return "<script language='javascript'>" & Environment.NewLine & _
                "window.alert('Check the RadioButtion for Processing of Order')</script>"
    End Function

    Public Overrides Sub getSupplier(ByVal strBillNo As String, ByVal dg As DataGrid)
        cmd = New SqlCommand("SupplierData", con)
        cmd.CommandType = CommandType.StoredProcedure
        cmd.Parameters.AddWithValue("@BillNo", strBillNo.Trim)
        If con.State = ConnectionState.Open Then
            con.Close()
        End If
        con.Open()
        dr = cmd.ExecuteReader(CommandBehavior.CloseConnection)
        dg.DataSource = dr
        dg.DataBind()
        con.Close()
    End Sub

    Public Overrides Sub getStatus(ByVal dg As DataGrid, ByVal list As SortedList)
        Dim dgitm As DataGridItem
        Dim i As Int32
        For Each dgitm In dg.Items
            Dim lbl As Label = CType(dgitm.FindControl("lbl"), Label)
            Dim ddl As DropDownList = CType(dgitm.FindControl("ddl"), DropDownList)
            lbl.Visible = False
            ddl.Visible = True
            ddl.DataSource = list
            ddl.DataTextField = "Value"
            ddl.DataValueField = "Key"
            ddl.DataBind()
        Next
    End Sub

    Public Overrides Sub UpdateStatus(ByVal strBillNo As String, ByVal strStatus As String)
        cmd = New SqlCommand("UpdatePayStatus", con)
        cmd.CommandType = CommandType.StoredProcedure
        cmd.Parameters.AddWithValue("@BNo", strBillNo.Trim)
        cmd.Parameters.AddWithValue("@Status", strStatus.Trim)
        If con.State = ConnectionState.Open Then
            con.Close()
        End If
        con.Open()
        cmd.ExecuteNonQuery()
        con.Close()
    End Sub

    Public Overrides Sub getPayments(ByVal strBNo As String, ByVal strStatus As String, _
                                     ByVal strPara As String, ByVal dg As DataGrid)
        cmd = New SqlCommand("payments", con)
        cmd.CommandType = CommandType.StoredProcedure
        cmd.Parameters.AddWithValue("@BNo", strBNo.Trim)
        cmd.Parameters.AddWithValue("@Status", strStatus.Trim)
        cmd.Parameters.AddWithValue("@Para", strPara.Trim)
        If con.State = ConnectionState.Open Then
            con.Close()
        End If
        con.Open()
        dr = cmd.ExecuteReader(CommandBehavior.CloseConnection)
        dg.DataSource = dr
        dg.DataBind()
        dr.Close()
        con.Close()
        If dg.ID.Trim = "dgpDetails" Then
            Dim dgitm As DataGridItem
            For Each dgitm In dg.Items
                Dim lbls As Label = CType(dgitm.FindControl("lbl"), Label)
                If lbls.Text.Trim = "PD" Then
                    lbls.Text = "Pending"
                ElseIf lbls.Text.Trim = "CR" Then
                    lbls.Text = "Credited"
                ElseIf lbls.Text.Trim = "PR" Then
                    lbls.Text = "Processed"
                End If
                Dim lbtn As LinkButton = CType(dgitm.FindControl("lbtnMode"), LinkButton)
                If lbtn.Text.Trim = "CK" Then
                    lbtn.Text = "Cheque"
                ElseIf lbtn.Text.Trim = "DD" Then
                    lbtn.Text = "Demand Draft"
                End If

                If strStatus.Trim = "CR" Then
                    Dim rdb As RadioButton = CType(dgitm.FindControl("chkprocess"), RadioButton)
                    rdb.Visible = True
                End If
            Next
        End If
    End Sub

    Public Overrides Sub BillDetails(ByVal strBNo As String, ByVal dg As DataGrid)
        cmd = New SqlCommand("getBillDetails", con)
        cmd.CommandType = CommandType.StoredProcedure
        cmd.Parameters.AddWithValue("@billno", strBNo.Trim)
        If con.State = ConnectionState.Open Then
            con.Close()
        End If
        con.Open()
        dr = cmd.ExecuteReader(CommandBehavior.CloseConnection)
        dg.DataSource = dr
        dg.DataBind()
        dr.Close()
        con.Close()
    End Sub

    Protected Overrides Sub getlblData(ByVal lbl As Label)
        Dim strAdd As New StringBuilder()
        strAdd.Append("<b>Billing Address : " & "</b>" & "<br><br>")
        strAdd.Append("ATCOMAART LIMITED" & "," & "<br>")
        strAdd.Append("3-A, Lalwani Industrial Estate" & "," & " " & "<br>")
        strAdd.Append("14-G.D. Ambedkar Road" & "," & " " & "<br>")
        strAdd.Append("Wadala (West)" & "," & " " & "<br>")
        strAdd.Append("Mumbai - 400 0531." & "<br>")
        strAdd.Append("India." & "<br><br>")
        strAdd.Append("<b>TelePhone No. : " & "</b> " & "91 22 24192400" & "<br>")
        strAdd.Append("<b>Email ID: " & "</b>")
        strAdd.Append("<a href=mailto:" & "webmaster@atcomart.com" & " > " & "webmaster@atcomart.com" & "</a>")
        lbl.Text = strAdd.ToString()
    End Sub

    Public Overrides Function GenerateReport(ByVal strEmail As String, ByVal strtype As String, ByVal strBNo As String, ByVal SID As Integer, ByVal ProdID As Integer) As String
        'Dim myReport As ReportDocument
        'If strtype.Trim = "S" Then
        '    myReport = New CrystalReport1()
        '    ' myReport = New SupplierSingleShipping()
        '    myReport.RecordSelectionFormula = "{SupplierOrder.SupplierID}=" & SID & " and {BillingAddress.ProdID}=" & ProdID & " and {SupOctra.BillNo}='" & strBNo.Trim & "'"
        '    'myReport.RecordSelectionFormula = "{SupplierOrder.SupplierID}=" & SID & " and {BillDespatch.ProdID}=" & ProdID & " and {SupOctra.BillNo}='" & strBNo.Trim & "'"
        'ElseIf strtype.Trim = "M" Then
        '    myReport = New CrystalReport2()
        '    myReport.RecordSelectionFormula = "{SupplierOrder.SupplierID}=" & SID & " and {SupplierOrder.ProdID}=" & ProdID & " and {SupOctra.BillNo}='" & strBNo.Trim & "'"
        'End If
        'Dim objConInfo As New ConnectionInfo()
        'Dim objTabLogOnInfo As New TableLogOnInfo()
        'Dim objDatabase As Database
        'Dim objTables As Tables
        'Dim objTable As Table
        'objConInfo.ServerName = ConfigurationSettings.AppSettings("myServer")
        'objConInfo.UserID = ConfigurationSettings.AppSettings("myUser")
        'objConInfo.Password = ConfigurationSettings.AppSettings("myPassword")
        'objDatabase = myReport.Database
        'objTables = objDatabase.Tables
        'For Each objTable In objTables
        '    objTabLogOnInfo = objTable.LogOnInfo
        '    objTabLogOnInfo.ConnectionInfo = objConInfo
        '    objTable.ApplyLogOnInfo(objTabLogOnInfo)
        'Next
        'Dim exportOpts As New ExportOptions()
        'Dim diskOpts As New DiskFileDestinationOptions()
        'Dim FileName As String = "D:\Web sites\AtcomartIn\Reports\" & "OrderDetails" & ".pdf"
        ''Dim FileName As String = "C:\Reports\" & "OrderDetails" & ".pdf"
        'exportOpts = myReport.ExportOptions
        'exportOpts.ExportFormatType = ExportFormatType.PortableDocFormat
        'exportOpts.ExportDestinationType = ExportDestinationType.DiskFile
        'diskOpts.DiskFileName = FileName
        'exportOpts.DestinationOptions = diskOpts
        'myReport.Export()
        'email(strEmail.Trim, FileName.Trim)
        'System.IO.File.Delete(FileName)
    End Function

    Private Function email(ByVal emailaddress As String, ByVal strFileName As String)
        'Dim StrMail As String = ""
        'Dim objmessage As New MailMessage()
        'Dim sr As SmtpMail
        'StrMail = "<!DOCTYPE HTML PUBLIC ""-//IETF//DTD HTML//EN"">"
        'StrMail = StrMail & "<html>" & "<head>" & "<meta http-equiv=""Content-Type"""
        'StrMail = StrMail & "<content=""text/html""; charset=""iso-8859-1"">"
        'StrMail = StrMail & "<title>Contact Us</title>" & "</head><body><P align=left>"
        'StrMail = StrMail & "<table width='739' border='0' cellspacing='0' cellpadding='0' align='left' >"
        'StrMail = StrMail & "<tr>" & "<td>"
        'StrMail = StrMail & "<br>"
        'StrMail = StrMail & "<br>"
        'StrMail = StrMail & "<B>" & "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" & "Order Details are" & "</B>"
        'StrMail = StrMail & "<br>" & "<br>"
        'Dim attachfile As New MailAttachment(strFileName)
        'objmessage.Attachments.Add(attachfile)
        'objmessage.From = "durga@atcomart.com"
        'objmessage.Subject = "Your order Details are as follows"
        'objmessage.Body = StrMail
        ''objmessage.To = emailaddress
        'objmessage.To = "sandhya@atcomart.com"
        ''objmessage.Cc = "durga@atcomart.com"
        'objmessage.BodyFormat = MailFormat.Html
        'sr.SmtpServer = "atcoex02"
        'sr.Send(objmessage)
    End Function
End Class
