protected void btnGenerate_Click(object sender, EventArgs e)
    {
        //checking product selected or not
        if (checkproducts())
        {
            //insert into db

            //update order status in invoice master
            cls.ExecuteDA("Update_InvoiceOrderStatus", new SqlParameter("@InvoiceId", invoiceid),
                          new SqlParameter("@OrderStatus", drpStatus.SelectedItem.Text));

            //calculate

            CalcualtePrices();

            //insert into invoice dispatch

            id = (long)cls.ReturnScaler("Insert_InvoiceDispatch", new SqlParameter("@InvoiceId", Convert.ToInt32(invoiceid)),
                                        new SqlParameter("@InvoiceNumber", lblInvoiceNo.Text),
                                        new SqlParameter("@InvoiceNo", invno),
                                        new SqlParameter("@CourierName", drpCourier.SelectedItem.Text),
                                        new SqlParameter("@URL", drpCourier.SelectedValue.ToString()),
                                        new SqlParameter("@TrackingNumber", txtTrackingNo.Text),
                                        new SqlParameter("@InvoiceDate", cls.FormatDate_IND_US(txtDate.Text)),
                                        new SqlParameter("@Barcode", txtTrackingNo.Text),
                                        new SqlParameter("@OtherDetails", txtOtherDetails.Text),
                                        new SqlParameter("@InvoiceAmount", ViewState["InvoiceAmount"]),
                                        new SqlParameter("@InvoiceDiscountPer", ViewState["InvoiceDiscountPer"]),
                                        new SqlParameter("@InvoiceDiscountAmount", ViewState["InvoiceDiscountAmount"]),
                                        new SqlParameter("@InvoiceOriginalAmount", ViewState["InvoiceOriginalAmount"]));

            //insert into invoice dispatch product
            foreach (RepeaterItem ri in rptPendingproducts.Items)
            {
                CheckBox chk = (CheckBox)ri.FindControl("chk");
                if (chk != null)
                {
                    if (chk.Checked == true)
                    {
                        cls.ExecuteDA("Insert_InvoiceDispatchProduct", new SqlParameter("@InvoiceId", invoiceid),
                                      new SqlParameter("@InvoiceDispatchId", id),
                                      new SqlParameter("@ProductId", chk.ToolTip.ToString()));

                        //update isdispatch in invoice product
                        cls.ExecuteDA("Update_InvoiceProductIsDispatch", new SqlParameter("@InvoiceId", Convert.ToInt32(invoiceid)),
                                      new SqlParameter("@ProductId", chk.ToolTip.ToString()),
                                      new SqlParameter("@IsDispatched", 1));
                    }
                }
            }
            // create pdf and sending mail
            string invdisid = id.ToString();
            string inid     = Request.QueryString["ID"].ToString();

            setPdfandMail(invdisid, inid);
            Response.Redirect("Orders.aspx");
        }
        else
        {
            MsgBox("Please select product to generate invoice");
        }
    }