
Imports System.Data
Imports System.Data.SqlClient
Partial Class generate_supplier_invoce
    Inherits System.Web.UI.Page
    Dim con As New SqlConnection(System.Configuration.ConfigurationManager.AppSettings("ConnectionString"))
    Dim cmd As New SqlCommand
   

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Session("SupplierID") = Nothing Then
            Response.Redirect("supplier-transaction-login.aspx")
        End If
        Session("statename") = "Maharastra" ' this is static for tax calculation
        If Not IsPostBack Then
            lblAddress.Visible = True
            AtcoAdd()
            fillgrid()
            gvProductDetails.Columns(1).Visible = False
            gvProductDetails.Columns(2).Visible = False
            rowvat.Visible = False
            rowmsg.Visible = False
        End If
    End Sub
    Protected Sub btnGenerate_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnGenerate.Click
        Try
            
            con.Open()
            cmd.Connection = con
            cmd.CommandText = "SupplierInv_Proc"
            cmd.CommandType = CommandType.StoredProcedure
            Dim suppinvkid As String = RemoveLiterals(NewPrimaryKey(Me))
            cmd.Parameters.Add("@SupplierInv_Kid", Data.SqlDbType.NVarChar, 10).Value = suppinvkid.ToString.Trim
            cmd.Parameters.Add("@SupplierInv_code", Data.SqlDbType.NVarChar, 25).Value = Generate_Code("select count(*) from SupplierInv where SupplierInv_code='", "SPI")
            cmd.Parameters.Add("@SupplierInv_SupplierDispatchProdDetailId", Data.SqlDbType.NVarChar, 10).Value = gvProductDetails.SelectedRow.Cells(2).Text.Trim
            cmd.Parameters.Add("@SupplierInv_No", Data.SqlDbType.NVarChar, 25).Value = gvProductDetails.SelectedRow.Cells(8).Text.Trim
          
            Dim netamt As Decimal = Convert.ToDecimal((gvProductDetails.SelectedRow.Cells(6).Text)) + Convert.ToDecimal(ViewState("totalprice"))
            lblamt.Text = netamt
            cmd.Parameters.Add("@SupplierInv_ExciseDuty", Data.SqlDbType.Decimal, 18).Value = Convert.ToDecimal(ViewState("exdt"))
            cmd.Parameters.Add("@SupplierInv_EduCess", Data.SqlDbType.Decimal, 18).Value = Convert.ToDecimal(ViewState("educess"))
            cmd.Parameters.Add("@SupplierInv_VAT", Data.SqlDbType.Decimal, 18).Value = Convert.ToDecimal(ViewState("vat"))
            cmd.Parameters.Add("@SupplierInv_CST", Data.SqlDbType.Decimal, 18).Value = Convert.ToDecimal(ViewState("cst"))
            cmd.Parameters.Add("@SupplierInv_CSTAgainstC", Data.SqlDbType.Decimal, 18).Value = Convert.ToDecimal(ViewState("cstc"))
            cmd.Parameters.Add("@SupplierInv_NetAmount", Data.SqlDbType.Decimal, 18).Value = netamt
            cmd.Parameters.Add("@SupplierInv_Date", Data.SqlDbType.DateTime).Value = gvProductDetails.SelectedRow.Cells(7).Text.Trim

            cmd.Parameters.Add("@SupplierInv_GenrateDate", Data.SqlDbType.DateTime).Value = Convert.ToDateTime(Format(Date.Now.Date, "MM/dd/yyyy")).Date
            Dim d1 As DateTime = DateAdd(DateInterval.Month, 1, Date.Now.Date)
            Dim year, month As Integer
            year = DatePart(DateInterval.Year, d1)
            month = DatePart(DateInterval.Month, d1)
            Dim d2 As String = month & "/14/" & year


            cmd.Parameters.Add("@SupplierInv_DueDate", Data.SqlDbType.DateTime).Value = Convert.ToDateTime(d2).Date

            cmd.Parameters.Add("@SupplierInv_MemberId", Data.SqlDbType.NVarChar, 50).Value = ""
            cmd.Parameters.Add("@SupplierInv_CompanyId", Data.SqlDbType.NVarChar, 10).Value = Session("g_Company")
            cmd.Parameters.Add("@SupplierInv_UserId", Data.SqlDbType.NVarChar, 10).Value = Session("g_User")
            cmd.Parameters.Add("@FormName", Data.SqlDbType.NVarChar, 50).Value = Me.Title.ToString
            cmd.Parameters.Add("@Mode", Data.SqlDbType.Char, 15).Value = "Insert"
            cmd.ExecuteNonQuery()
            cmd.Parameters.Clear()
            cmd.Dispose()
            cmd = New SqlCommand
            cmd.Connection = con
            cmd.CommandType = CommandType.StoredProcedure

            cmd.CommandText = "SupplierProductInvoice_Proc"
            cmd.CommandType = CommandType.StoredProcedure
            cmd.Parameters.Add("@SupplierProductInvoice_Kid", Data.SqlDbType.NVarChar, 10).Value = RemoveLiterals(NewPrimaryKey(Me))
            cmd.Parameters.Add("@SupplierProductInvoice_No", Data.SqlDbType.NVarChar, 25).Value = gvProductDetails.SelectedRow.Cells(8).Text.Trim
            cmd.Parameters.Add("@SupplierProductInvoice_SupplierInvId", Data.SqlDbType.NVarChar, 10).Value = suppinvkid.Trim
            cmd.Parameters.Add("@SupplierProductInvoice_Date", Data.SqlDbType.DateTime).Value = gvProductDetails.SelectedRow.Cells(7).Text.Trim
            cmd.Parameters.Add("@SupplierProductInvoice_ProductId", Data.SqlDbType.NVarChar, 10).Value = gvProductDetails.SelectedRow.Cells(1).Text.Trim
            cmd.Parameters.Add("@SupplierProductInvoice_Quantity", Data.SqlDbType.Decimal, 20).Value = gvProductDetails.SelectedRow.Cells(5).Text.Trim
            cmd.Parameters.Add("@SupplierProductInvoice_UnitPrice", Data.SqlDbType.Decimal, 20).Value = gvProductDetails.SelectedRow.Cells(4).Text.Trim
            cmd.Parameters.Add("@SupplierProductInvoice_ShippingCharges", Data.SqlDbType.Decimal, 20).Value = 1
            cmd.Parameters.Add("@SupplierProductInvoice_TotalPrice", Data.SqlDbType.Decimal, 20).Value = netamt
            cmd.Parameters.Add("@SupplierProductInvoice_Status", Data.SqlDbType.NVarChar, 20).Value = "Pending"
            cmd.Parameters.Add("@SupplierProductInvoice_CompanyId", Data.SqlDbType.NVarChar, 10).Value = Session("g_Company")
            cmd.Parameters.Add("@SupplierProductInvoice_UserId", Data.SqlDbType.NVarChar, 10).Value = Session("g_User")
            cmd.Parameters.Add("@FormName", Data.SqlDbType.NVarChar, 50).Value = Me.Title.ToString
            cmd.Parameters.Add("@Mode", Data.SqlDbType.Char, 15).Value = "Insert"
            cmd.ExecuteNonQuery()
            'gvOrderDetails.Columns(7).Visible = False
            Dim str As String = "UPDATE SupplierDispatchProductDetails SET  SupplierDispatchProductDetails_InvoiceFlag ='Y' where SupplierDispatchProductDetails_Kid ='" & gvProductDetails.SelectedRow.Cells(2).Text.Trim & "'"
            cmd = New SqlCommand(str, con)
            cmd.ExecuteNonQuery()
            fillgrid()
            clearfields()
            rowvat.Visible = False
            rowmsg.Visible = True
        Catch ex As Exception
        Finally
            cmd.Dispose()
            con.Close()
            con.Dispose()
        End Try
    End Sub
    Private Sub AtcoAdd()
        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>")
        lblAddress.Text = strAdd.ToString()
    End Sub

    Protected Sub gvProductDetails_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles gvProductDetails.PageIndexChanging
        gvProductDetails.PageIndex = e.NewPageIndex
        fillgrid()
        rowvat.Visible = False
    End Sub

    Protected Sub gvProductDetails_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles gvProductDetails.SelectedIndexChanged
        rowvat.Visible = True
        clearfields()
    End Sub

    Protected Sub btncaltax_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btncaltax.Click
        Dim exdt As Decimal
        Dim educess As Decimal
        Dim vat As Decimal
        Dim cst As Decimal
        Dim cstc As Decimal
        Dim totalprice As Decimal
        exdt = (txtexciseduty.Text * Val(gvProductDetails.SelectedRow.Cells(4).Text)) / 100
        educess = (exdt * txtEduCss.Text) / 100
        vat = Val(gvProductDetails.SelectedRow.Cells(4).Text) + exdt + educess


        If Session("statename").ToString.Trim = "Gujarat" Then ' check for shipping addres is gujarat

            vat = FormatNumber(((vat * txtVAT.Text) / 100), 2)
            cst = 0
            totalprice = exdt + educess + vat
        Else

            If txtCST.Text <> "" Then
                cst = FormatNumber((Val(txtCST.Text) * vat), 2) / 100
                totalprice = exdt + educess + cst
            Else
                cstc = FormatNumber((txtCSTC.Text * vat), 2) / 100
                totalprice = exdt + educess + cstc
            End If
            vat = 0

        End If

        ViewState("exdt") = exdt
        ViewState("educess") = educess
        ViewState("vat") = vat
        ViewState("cst") = cst
        ViewState("cstc") = cstc
        ViewState("totalprice") = totalprice
        lbltax.Text = totalprice
        lblamt.Text = Val(gvProductDetails.SelectedRow.Cells(6).Text) + totalprice
    End Sub
    Function fillgrid()
        Dim str As String = "SELECT   Product_Master.Product_Name AS PName, Product_Master.Product_Kid AS ProductID, Product_Master.Product_TransferPrice AS price, SupplierDispatchProductDetails.SupplierDispatchProductDetails_Kid as sdpdkid, SupplierDispatchProductDetails.SupplierDispatchProductDetails_Quantity, SupplierDispatchProductDetails.SupplierDispatchProductDetails_Status, SupplierDispatchDetails.SupplierDispatchDetails_InvoiceNo, convert(nvarchar,SupplierDispatchDetails.SupplierDispatchDetails_Date,103) as SupplierDispatchDetails_Date,SupplierDispatchProductDetails.SupplierDispatchProductDetails_Quantity * Product_Master.Product_TransferPrice as netamt FROM SupplierDispatchProductDetails INNER JOIN Product_Master ON SupplierDispatchProductDetails.SupplierDispatchProductDetails_ProductId = Product_Master.Product_Kid INNER JOIN SupplierDispatchDetails ON  SupplierDispatchProductDetails.SupplierDispatchProductDetails_SupplierDispatchDetailsId = SupplierDispatchDetails.SupplierDispatchDetails_Kid WHERE SupplierDispatchProductDetails.SupplierDispatchProductDetails_IsDeleted = '0' AND SupplierDispatchProductDetails.SupplierDispatchProductDetails_Status = 'Dispatched' and SupplierDispatchProductDetails.SupplierDispatchProductDetails_InvoiceFlag='N' and  SupplierDispatchDetails.SupplierDispatchDetails_SupplierId='" & Session("SupplierID") & "'"
        gvProductDetails.Columns(1).Visible = True
        gvProductDetails.Columns(2).Visible = True
        If con.State = ConnectionState.Closed Then
            con.Open()
        End If
        Dim da As New SqlDataAdapter(str, con)
        Dim ds As New DataSet
        da.Fill(ds)
        gvProductDetails.DataSource = ds.Tables(0)
        gvProductDetails.DataBind()
        gvProductDetails.Columns(1).Visible = False
        gvProductDetails.Columns(2).Visible = False
        con.Close()
    End Function
    Function clearfields()
        txtCST.Text = ""
        txtEduCss.Text = ""
        txtCSTC.Text = ""
        txtexciseduty.Text = ""
        txtVAT.Text = ""

    End Function
End Class
