Imports System
Imports System.Data
Imports System.Data.SqlClient

Public Class SupplierStatus
    Dim j As Integer = 1
    Dim obj As New SupplierAcc()
    Public Sub SupPending(ByVal intSupId As Integer, ByVal strStatus As String, ByVal dgPending As DataGrid, ByVal lblmessage As Label)
        If Not ds.Tables("SupPendingOrder") Is Nothing Then
            ds.Tables("SupPendingOrder").Clear()
        End If
        cmd = New SqlCommand("OrderStatuss", con)
        cmd.CommandType = CommandType.StoredProcedure
        cmd.Parameters.Add("@sid", intSupId)
        cmd.Parameters.Add("@Status", strStatus.Trim)
        da = New SqlDataAdapter(cmd)
        da.Fill(ds, "SupPendingOrder")

        dgPending.Visible = True
        dgPending.DataSource = ds.Tables("SupPendingOrder")
        dgPending.DataBind()
        update(2, dgPending)
    End Sub

    Public Sub update(ByVal intval As Integer, ByVal DgOrderStatus As DataGrid)
        Dim dgitem As DataGridItem
        Dim flag As Boolean = False
        For Each dgitem In DgOrderStatus.Items
            Dim ddl As DropDownList = CType(dgitem.FindControl("ddlStatus"), DropDownList)
            Dim lbl As Label = CType(dgitem.FindControl("lblStatus"), Label)
            If intval = 2 Then
                If lbl.Text.Trim = "PD" Then
                    lbl.Text = "Pending"
                ElseIf lbl.Text = "DP" Then
                    lbl.Text = "Despatched"
                End If
            ElseIf intval = 0 Then
                DgOrderStatus.Columns(14).Visible = True
                lbl.Visible = False
                ddl.Visible = True
                ddl.Items.Add("Pending")
                ddl.Items.Add("Despatched")
            ElseIf intval = 1 Then
                lbl.Visible = True
                ddl.Visible = False
                lbl.Text = ddl.SelectedItem.Text
                If ddl.SelectedItem.Text <> "Despatched" Then
                    dgitem.Visible = False
                Else
                    flag = True
                End If
                If flag = True Then
                    DgOrderStatus.Columns(4).Visible = False
                    DgOrderStatus.Columns(5).Visible = False
                    DgOrderStatus.Columns(6).Visible = False
                    DgOrderStatus.Columns(7).Visible = False
                    DgOrderStatus.Columns(8).Visible = False
                    DgOrderStatus.Columns(9).Visible = True
                    DgOrderStatus.Columns(10).Visible = True
                    DgOrderStatus.Columns(11).Visible = True
                    DgOrderStatus.Columns(12).Visible = True
                    DgOrderStatus.Columns(13).Visible = True
                End If
            End If
        Next
    End Sub

    Public Function updatedata(ByVal intval As Integer, ByVal DgOrderStatus As DataGrid) As String
        Dim dgitem As DataGridItem
        Dim cname, courierdate, cno, contactno As String
        Dim drsearch As DataRow()
        For Each dgitem In DgOrderStatus.Items
            Dim txtcname As TextBox = CType(dgitem.FindControl("txtCName"), TextBox)
            Dim txtcdate As TextBox = CType(dgitem.FindControl("txtCDate"), TextBox)
            If IsDate(txtcdate.Text) = True Then
                If CDate(txtcdate.Text.Trim) > CDate(Format(Now, "MM/dd/yyyy")) Or CDate(txtcdate.Text.Trim) < CDate(dgitem.Cells(1).Text) Then
                    'Return "Courier Date should be less than Current Date"
                    Return "Courier date Invalid"
                    Exit Function
                End If
            End If
            Dim txtcno As TextBox = CType(dgitem.FindControl("txtCNo"), TextBox)
            Dim txtcontact As TextBox = CType(dgitem.FindControl("txtContact"), TextBox)
            Dim lblcname As Label = CType(dgitem.FindControl("lblCName"), Label)
            Dim lblcdate As Label = CType(dgitem.FindControl("lblCDate"), Label)
            Dim lblcno As Label = CType(dgitem.FindControl("lblCNo"), Label)
            Dim lblcontact As Label = CType(dgitem.FindControl("lblContact"), Label)
            lblcname.Text = txtcname.Text
            lblcdate.Text = txtcdate.Text
            lblcno.Text = txtcno.Text
            lblcontact.Text = txtcontact.Text
            cname = txtcname.Text
            courierdate = txtcdate.Text
            cno = txtcno.Text
            contactno = txtcontact.Text
            If intval = 3 Then
                lblcname.Visible = True
                lblcdate.Visible = True
                lblcno.Visible = True
                lblcontact.Visible = True
                txtcname.Visible = False
                txtcdate.Visible = False
                txtcno.Visible = False
                txtcontact.Visible = False
                DgOrderStatus.Columns(14).Visible = True
            Else
                If intval = 4 Then
                    drsearch = ds.Tables("SupPendingOrder").Select("OrderID='" & dgitem.Cells.Item(0).Text & "' and ShipAddId=" & dgitem.Cells.Item(15).Text & "")
                    If drsearch.Length > 0 Then
                        insertsupdispatch(drsearch(0), cname, courierdate, cno, contactno)
                    End If
                End If
            End If
        Next
        Return True
    End Function

    Public Sub insertsupdispatch(ByVal row As DataRow, ByVal couriername As String, ByVal courierdate As String, ByVal courierno As String, ByVal contactno As String)
        Try
            con.Open()
            sql = "select max(DDID) from DispatchDetails"
            cmd = New SqlCommand(sql, con)
            If IsDBNull(cmd.ExecuteScalar()) Then
                j = 0
            Else
                j = cmd.ExecuteScalar()
            End If
            j = j + 1
            con.Close()
            cmd = New SqlCommand("insertSupDispatch", con)
            cmd.CommandType = CommandType.StoredProcedure
            cmd.Parameters.Add("@orderid", row.Item("OrderID"))
            cmd.Parameters.Add("@ddid", j)
            cmd.Parameters.Add("@refid", row.Item("RowID"))
            cmd.Parameters.Add("@bno", row.Item("BillNo"))
            cmd.Parameters.Add("@supid", row.Item("SupplierID"))
            cmd.Parameters.Add("@uid", row.Item("UserID"))
            cmd.Parameters.Add("@shipid", row.Item("ShipAddID"))
            cmd.Parameters.Add("@pid", row.Item("ProdID"))
            cmd.Parameters.Add("@pqty", row.Item("ProdQty"))
            cmd.Parameters.Add("@prate", row.Item("ProdRate"))
            cmd.Parameters.Add("@pamt", row.Item("ProdAmt"))
            cmd.Parameters.Add("@cdate", Convert.ToDateTime(courierdate))
            cmd.Parameters.Add("@cname", couriername)
            cmd.Parameters.Add("@cno", courierno)
            cmd.Parameters.Add("@contact ", contactno)
            cmd.Parameters.Add("@status", "PD")
            If con.State = ConnectionState.Open Then
                con.Close()
            End If
            con.Open()
            cmd.ExecuteNonQuery()
            con.Close()
            'j = j + 1

        Catch ex As Exception
            ex.Message.ToString()
        Finally
            If con.State = ConnectionState.Open Then
                con.Close()
            End If
        End Try
    End Sub
End Class
