Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports System.Text
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports Microsoft.VisualBasic

Public Class Admin

    Dim daPD As SqlClient.SqlDataAdapter
    Dim con As SqlClient.SqlConnection
    Dim da As SqlClient.SqlDataAdapter
    Dim dr As SqlDataReader
    Dim cmd As SqlCommand
    Dim ds As New DataSet()
    Dim sql, strUserId As String
    Dim cmdBuilder As SqlCommandBuilder
    Dim daCol As New Collection()
    Dim dgitm As DataGridItem
    Dim strBNo, strsql As String



    ' ********************************  Protected Functions and Subroutines ******************************************


    Protected Function getGridDisplay(ByVal dg As DataGrid) As Boolean
        Dim boolfind As Boolean
        Dim dgitm As DataGridItem
        For Each dgitm In dg.Items
            Dim rdb As RadioButton = CType(dgitm.FindControl("rdbSID"), RadioButton)
            If rdb.Checked = True Then
                Dim lbl As Label = CType(dgitm.FindControl("lblPStatus"), Label)
                lbl.Text = "Processed"
                rdb.Checked = False
                rdb.Visible = False
                boolfind = True
                Exit For
            End If
        Next
        dg.Visible = True
        For Each dgitm In dg.Items
            Dim rdb As RadioButton = CType(dgitm.FindControl("rdbSID"), RadioButton)
            If rdb.Visible = True Then
                boolfind = True
                Exit For
            Else
                boolfind = False
            End If
        Next
        Return boolfind
    End Function
    Protected Function MessageBox(ByVal str As String) As Label
        Dim lbl As New Label()
        Dim str1 As String = ""
        If str.Trim = "S" Then
            str1 = "Check the RadioButtion for further Processing of Order"
        ElseIf str.Trim = "P" Then
            str1 = "Check the RadioButtion for Processing of Order"
        End If
        lbl.Text = "<script language='javascript'>" & Environment.NewLine & _
               "window.alert('" + str1 + "')</script>"
        Return lbl
    End Function
    Protected Sub BindData(ByVal con As SqlConnection, ByVal intvalue As Integer, ByVal dg As DataGrid, ByVal strvalue As String, ByVal str As String)
        ' getPTable(con)
        Dim view As DataView
        If strvalue.Trim = "" Then
            view = ds.Tables("PD").DefaultView
            If intvalue = 0 Then
                view.RowFilter = "Status like'" & "%Pending%" & "'"
            ElseIf intvalue = 1 Then
                view.RowFilter = "Status like'" & "%Credited%" & "'"
            ElseIf intvalue = 2 Then
                view.RowFilter = "Status like'" & "%Processed%" & "'"
            End If
        ElseIf str.Trim = "D" Then

            view = ds.Tables("Details").DefaultView
            view.RowFilter = "BillNo='" & strvalue.Trim & "'"
        ElseIf str.Trim = "P" Then
            view = ds.Tables("PD").DefaultView
            view.RowFilter = "BillNo='" & strvalue.Trim & "'"
        End If
        dg.Visible = True
        view.RowStateFilter = DataViewRowState.CurrentRows
        dg.DataSource = view
        dg.DataBind()
        If str.Trim = "P" Then
            If view.Item(0).Item(4).TOUPPER = "CHQ" Then
                HideColumns(True, dg)
            ElseIf view.Item(0).Item(4).TOUPPER = "DD" Then
                HideColumns(False, dg)
            End If
        End If
        getvalue(intvalue, dg)
    End Sub



    Protected Function insertsuporder(ByVal dg As DataGrid, ByVal strE As String, ByVal strBNo As String, ByVal State As Integer, ByVal City As Integer, ByVal PID As Integer, ByVal PRate As Integer, ByVal PQty As Integer, ByVal SID As Integer, ByVal UID As Integer, ByVal Email As String, ByVal con As SqlConnection)
        '***************************** Insert Data into Supplier Order table from Bill Details ***************************
        Dim intPF, intTRate, intNetAmt, intOrderID As Integer
        Dim strExemp As String
        sql = "Select top 1 OrderID from SupplierOrder order by orderID Desc"
        cmd = New SqlClient.SqlCommand(sql, con)
        con.Open()
        dr = cmd.ExecuteReader(CommandBehavior.CloseConnection)
        If dr.Read = True Then
            intOrderID = dr.Item(0) + 1
        Else
            intOrderID = 0
        End If
        dr.Close()
        con.Close()
        Dim p0 As New SqlParameter("@OID", intOrderID)
        Dim p1 As New SqlParameter("@odate", DateTime.Now)
        Dim p2 As New SqlParameter("@billno", strBNo.Trim)
        Dim p3 As New SqlParameter("@suppid", SID)
        Dim p4 As New SqlParameter("@uid", UID)
        Dim p5 As New SqlParameter("@pid", PID)
        Dim p6 As New SqlParameter("@qty", PQty)
        Dim p7 As New SqlParameter("@prodrate", PRate)
        Dim p8 As New SqlParameter("@amt", Val(PRate * PQty))
        intPF = Val(PRate * PQty) * 5 / 100
        Dim p11 As New SqlParameter("@pfcharge", intPF)
        Dim p12 As New SqlParameter("@frieght", Val(PRate * PQty) * 5 / 100)
        If strE.Trim = "No Exemption" Then
            strExemp = "TaxRate"
        Else
            strExemp = strE.Trim
        End If
        ' intTRate = getTaxRate(State, City, strExemp, PID, con)
        Dim p9 As New SqlParameter("@trate", intTRate)
        Dim p10 As New SqlParameter("@tamt", (Val(PRate * PQty) + intPF) * intTRate / 100)
        intNetAmt = Val(PRate * PQty) + intPF + intPF + Val((Val(PRate * PQty) + intPF) * intTRate / 100)
        Dim p13 As New SqlParameter("@namt", intNetAmt)
        Dim p14 As New SqlParameter("@status", "Pending")

        p0.Direction = ParameterDirection.Input
        p1.Direction = ParameterDirection.Input
        p2.Direction = ParameterDirection.Input
        p3.Direction = ParameterDirection.Input
        p4.Direction = ParameterDirection.Input
        p5.Direction = ParameterDirection.Input
        p6.Direction = ParameterDirection.Input
        p7.Direction = ParameterDirection.Input
        p8.Direction = ParameterDirection.Input
        p9.Direction = ParameterDirection.Input
        p10.Direction = ParameterDirection.Input
        p11.Direction = ParameterDirection.Input
        p12.Direction = ParameterDirection.Input
        p13.Direction = ParameterDirection.Input
        p14.Direction = ParameterDirection.Input

        cmd = New SqlCommand("InsertSupplierOrder", con)
        cmd.CommandType = CommandType.StoredProcedure

        cmd.Parameters.Add(p0)
        cmd.Parameters.Add(p1)
        cmd.Parameters.Add(p2)
        cmd.Parameters.Add(p3)
        cmd.Parameters.Add(p4)
        cmd.Parameters.Add(p5)
        cmd.Parameters.Add(p6)
        cmd.Parameters.Add(p7)
        cmd.Parameters.Add(p8)
        cmd.Parameters.Add(p9)
        cmd.Parameters.Add(p10)
        cmd.Parameters.Add(p11)
        cmd.Parameters.Add(p12)
        cmd.Parameters.Add(p13)
        cmd.Parameters.Add(p14)

        con.Open()
        cmd.ExecuteNonQuery()
        con.Close()
        ' octra(dg, strBNo.Trim, intOrderID, SID, PQty, PRate, con)
    End Function
    Protected Function getBillNo(ByVal dg As DataGrid, ByVal dg1 As DataGrid, ByVal con As SqlConnection) As String
        strBNo = ""
        For Each dgitm In dg1.Items
            Dim chk As RadioButton = CType(dgitm.FindControl("chkprocess"), RadioButton)
            If chk.Checked = True Then
                Dim lbtn As LinkButton = CType(dgitm.FindControl("lbtnBillNo"), LinkButton)
                strBNo = lbtn.Text.Trim
                Exit For
            End If
        Next
        If strBNo.Trim = "" Then
            Return "False"
        Else
            Return strBNo
        End If
    End Function
    Protected Sub getcmb(ByVal intvalue As Integer, ByVal dg As DataGrid, ByVal con As SqlConnection)
        If intvalue = 2 Then
            updateData(dg, con)
            Exit Sub
        Else
            Dim dgitm As DataGridItem
            For Each dgitm In dg.Items
                Dim ddl As DropDownList = CType(dgitm.FindControl("ddlStatus"), DropDownList)
                Dim lbl As Label = CType(dgitm.FindControl("lblStatus"), Label)
                If intvalue = 0 Then
                    lbl.Visible = False
                    ddl.Visible = True
                    ddl.Items.Add("Pending")
                    ddl.Items.Add("Credited")

                End If
            Next
        End If
    End Sub

    ' *****************************  Private Functions and Subroutines *****************************************

    Private Sub getvalue(ByVal intstatus As Int16, ByVal dg As DataGrid)
        If intstatus > 1 Then
            Exit Sub
        End If
        Dim dgitm As DataGridItem
        For Each dgitm In dg.Items
            Dim lbtn As LinkButton = CType(dgitm.FindControl("lbtnMode"), LinkButton)
            If lbtn.Text.Trim = "Chq" Then
                lbtn.Text = "Cheque"
            ElseIf lbtn.Text.Trim = "DD" Then
                lbtn.Text = "Demand Draft"
            End If
            If intstatus = 1 Then
                Dim rdb As RadioButton = CType(dgitm.FindControl("chkprocess"), RadioButton)
                rdb.Visible = True
            End If
        Next
    End Sub

    Private Sub updateData(ByVal dg As DataGrid, ByVal con As SqlConnection)

        Dim dgitm As DataGridItem
        Dim drsearch As DataRow()

        '************************************** Update Status in BillDetails Table  ************************************
        For Each dgitm In dg.Items
            Dim lbl As Label = CType(dgitm.FindControl("lblStatus"), Label)
            Dim strbillno As String = CType(dgitm.FindControl("lbtnBillNo"), LinkButton).Text
            drsearch = ds.Tables("PD").Select("BillNo='" & strbillno.Trim & "'")
            If drsearch.Length > 0 Then
                drsearch(0).Item("Status") = lbl.Text.Trim
            End If
        Next
        updatestatus(daPD, ds.Tables("PD"), con)
    End Sub
    Private Sub updatestatus(ByVal da As SqlClient.SqlDataAdapter, ByVal dt As DataTable, ByVal con As SqlConnection)
        da.SelectCommand.CommandText = "Select * from PaymentDetails"
        cmdBuilder = New SqlClient.SqlCommandBuilder(da)
        da.InsertCommand = cmdBuilder.GetInsertCommand
        da.UpdateCommand = cmdBuilder.GetUpdateCommand
        da.DeleteCommand = cmdBuilder.GetDeleteCommand
        da.Update(dt)
    End Sub


    Private Sub HideColumns(ByVal bool As Boolean, ByVal dgPayDetails As DataGrid)
        dgPayDetails.Columns(5).Visible = bool
        dgPayDetails.Columns(6).Visible = bool
        dgPayDetails.Columns(7).Visible = bool
        dgPayDetails.Columns(8).Visible = Not bool
        dgPayDetails.Columns(9).Visible = Not bool
        dgPayDetails.Columns(10).Visible = Not bool
    End Sub

    Private Function updateProcessData(ByVal dg As DataGrid, ByVal con As SqlConnection) As String

        Dim dgitm As DataGridItem
        Dim drSearch As DataRow()
        Dim strBillNo As String
        For Each dgitm In dg.Items
            strBillNo = dgitm.Cells(0).Text.Trim
            drSearch = ds.Tables("PD").Select("Billno='" & strBillNo.Trim & "'")
            If drSearch.Length > 0 Then
                drSearch(0).Item("Status") = "Processed"
            End If
        Next
        updatestatus(daPD, ds.Tables("PD"), con)
    End Function
End Class
