protected void saveButton_Click(object sender, EventArgs e)
        {
            string msg = string.Empty;

            SalesOrderBLL salesOrder = new SalesOrderBLL();
            DataTable dtPrdList = new DataTable();
            DataRow dr = null;
            decimal quantity = 0;
            double rate = 0;
            double amount = 0;
            TextBox orderQuantityTextBox;
            TextBox ratePerUnitTextBox;
            TextBox amountTextBox;
            int i = 0;

            dtPrdList.Columns.Add("ProductId");
            dtPrdList.Columns.Add("Available");
            dtPrdList.Columns.Add("Quantity");
            dtPrdList.Columns.Add("RatePerUnit");
            dtPrdList.Columns.Add("VATPercentage");
            dtPrdList.Columns.Add("Amount");
            //dtPrdList.Columns.Add("Height");
            //dtPrdList.Columns.Add("Width");

            try
            {

                if (totalAmountTextBox.Text.Trim() == "")
                {
                    msgbox.Visible = true; msgTitleLabel.Text = "Exception!!!"; msgDetailLabel.Text = "Total Amount field is required.";
                    return;
                }
                else if (vatTextBox.Text.Trim() == "")
                {
                    msgbox.Visible = true; msgTitleLabel.Text = "Exception!!!"; msgDetailLabel.Text = "VAT field is required.";
                    return;
                }

                else if (receivedAmountTextBox.Text.Trim() == "")
                {
                    msgbox.Visible = true; msgTitleLabel.Text = "Exception!!!"; msgDetailLabel.Text = "Received Amount field is required.";
                    return;
                }
                else if (customerIdDropDownList.SelectedValue == "")
                {
                    msgbox.Visible = true; msgTitleLabel.Text = "Exception!!!"; msgDetailLabel.Text = "Customer ID field is required.";
                    return;
                }
                else if (customerIdDropDownList.SelectedValue == "Retail" && customerNameTextBox.Text.Trim() == "")
                {
                    msgbox.Visible = true; msgTitleLabel.Text = "Exception!!!"; msgDetailLabel.Text = "Customer Name field is required.";
                    return;
                }
                else if (customerIdDropDownList.SelectedValue == "Retail" && customerContactNumberTextBox.Text.Trim() == "")
                {
                    msgbox.Visible = true; msgTitleLabel.Text = "Exception!!!"; msgDetailLabel.Text = "Customer Contact Number field is required.";
                    return;
                }
                else if (customerIdDropDownList.SelectedValue == "Retail" && customerAddressTextBox.Text.Trim() == "")
                {
                    msgbox.Visible = true; msgTitleLabel.Text = "Exception!!!"; msgDetailLabel.Text = "Customer Address field is required.";
                    return;
                }
                //else if (transportTypeDropDownList.SelectedValue == "")
                //{
                //    msgbox.Visible = true; msgTitleLabel.Text = "Exception!!!"; msgDetailLabel.Text = "Transport Type field is required.";
                //    return;
                //}

                if (paymentModeDropDownList.SelectedValue == "Cheque")
                {
                    if (chequeNumberTextBox.Text.Trim() == "")
                    {
                        msgbox.Visible = true; msgTitleLabel.Text = "Exception!!!"; msgDetailLabel.Text = "Cheque Number field is required.";
                        return;
                    }
                    else if (chequeDateTextBox.Text.Trim() == "" || LumexLibraryManager.ParseAppDate(chequeDateTextBox.Text.Trim()) == "False")
                    {
                        msgbox.Visible = true; msgTitleLabel.Text = "Exception!!!"; msgDetailLabel.Text = "Cheque Date field is required.";
                        return;
                    }
                    else if (bankDropDownList.Text == "")
                    {
                        msgbox.Visible = true; msgTitleLabel.Text = "Exception!!!"; msgDetailLabel.Text = "Bank Name field is required.";
                        return;
                    }
                    else if (bankBranchTextBox.Text.Trim() == "")
                    {
                        msgbox.Visible = true; msgTitleLabel.Text = "Exception!!!"; msgDetailLabel.Text = "Bank Branch Name field is required.";
                        return;
                    }
                }
                for (i = 0; i < selectedProductListGridView.Rows.Count; i++)
                {
                    orderQuantityTextBox = (TextBox)selectedProductListGridView.Rows[i].FindControl("orderQuantityTextBox");
                    ratePerUnitTextBox = (TextBox)selectedProductListGridView.Rows[i].FindControl("ratePerUnitTextBox");
                    amountTextBox = (TextBox)selectedProductListGridView.Rows[i].FindControl("amountTextBox");

                    if (string.IsNullOrEmpty(orderQuantityTextBox.Text.Trim()) || !decimal.TryParse(orderQuantityTextBox.Text.Trim(), out quantity))
                    {
                        msg = "Product ID [" + selectedProductListGridView.Rows[i].Cells[0].Text.ToString() + "] has no valid quantity.";
                        msgbox.Visible = true; msgTitleLabel.Text = "Exception!!!"; msgDetailLabel.Text = msg;
                        return;
                    }
                    else if (string.IsNullOrEmpty(ratePerUnitTextBox.Text.Trim()) || !double.TryParse(ratePerUnitTextBox.Text.Trim(), out rate))
                    {
                        msg = "Product ID [" + selectedProductListGridView.Rows[i].Cells[0].Text.ToString() + "] has no valid rate.";
                        msgbox.Visible = true; msgTitleLabel.Text = "Exception!!!"; msgDetailLabel.Text = msg;
                        return;
                    }
                    else if (string.IsNullOrEmpty(amountTextBox.Text.Trim()) || !double.TryParse(amountTextBox.Text.Trim(), out amount))
                    {
                        msg = "Product ID [" + selectedProductListGridView.Rows[i].Cells[0].Text.ToString() + "] has no valid amount.";
                        msgbox.Visible = true; msgTitleLabel.Text = "Exception!!!"; msgDetailLabel.Text = msg;
                        return;
                    }
                    else
                    {
                        dr = dtPrdList.NewRow();

                        dr["ProductId"] = selectedProductListGridView.Rows[i].Cells[1].Text.ToString();
                        dr["Available"] = selectedProductListGridView.Rows[i].Cells[4].Text.ToString();
                        dr["Quantity"] = quantity.ToString();
                        dr["RatePerUnit"] = rate.ToString();
                        dr["VATPercentage"] = selectedProductListGridView.Rows[i].Cells[7].Text.ToString();
                        dr["Amount"] = amount.ToString();
                        //dr["Height"] = "0.00";
                        //dr["Width"] = "0.00";
                        dtPrdList.Rows.Add(dr);
                    }
                }

                salesOrder.SalesCenterId = ddlSelectWareHouseOrSalesCenter.SelectedValue;
                salesOrder.CustomerId = customerIdDropDownList.SelectedValue.Trim();
                salesOrder.CustomerName = customerNameTextBox.Text.Trim();
                salesOrder.CustomerContactNumber = customerContactNumberTextBox.Text.Trim();
                salesOrder.CustomerAddress = customerAddressTextBox.Text.Trim();
                salesOrder.SalesCenterId = ddlSelectWareHouseOrSalesCenter.SelectedValue;
                salesOrder.SalesPersonId = LumexSessionManager.Get("ActiveUserId").ToString();
                salesOrder.DeliveryDate = LumexLibraryManager.ParseAppDate(deliveryDateTextBox.Text.Trim());
                salesOrder.Narration = txtNaration.Text.Trim();
                salesOrder.TransportType = transportTypeDropDownList.SelectedValue.Trim();
                salesOrder.PaymentMode = paymentModeDropDownList.SelectedValue;
                salesOrder.AccountId = accountHeadDropDownList.SelectedValue;
                salesOrder.Bank = bankDropDownList.Text.Trim();
                salesOrder.BankBranch = bankBranchTextBox.Text.Trim();
                salesOrder.ChequeNumber = chequeNumberTextBox.Text.Trim();
                salesOrder.ChequeDate = LumexLibraryManager.ParseAppDate(chequeDateTextBox.Text.Trim());
                salesOrder.LCNumber = lcNumberTextBox.Text.Trim();
                salesOrder.ShippingAddress = shippingAddressTextBox.Text.Trim();
                salesOrder.BillingAddress = billingAddressTextBox.Text.Trim();

                salesOrder.TotalAmount = totalAmountTextBox.Text.Trim();
                salesOrder.DiscountAmount = discountTextBox.Text.Trim();
                salesOrder.VAT = vatTextBox.Text.Trim();
                salesOrder.TotalReceivable = receivableAmountTextBox.Text.Trim();
                salesOrder.Due = DuesAmoutPayTextBox.Text;


                salesOrder.ReceivedAmount = receivedAmountTextBox.Text.Trim();
                salesOrder.ChangeAmount = (Convert.ToDecimal(salesOrder.ReceivedAmount) - Convert.ToDecimal(salesOrder.TotalReceivable)).ToString();

                // salesOrder.ChangeAmount = changeAmountTextBox.Text.Trim();
                //salesOrder.TotalVATAmount = CalculateTotalVATAmount().ToString();
                salesOrder.TotalVATAmount = totalVATAmountHiddenField.Value;

                if (dtPrdList.Rows.Count == selectedProductListGridView.Rows.Count)
                {
                    string salesRecordId = salesOrder.SaveSalesOrder(dtPrdList);




                    string message = "Product's <span class='actionTopic'>Sales</span> Successfully with Sale ID: <span class='actionTopic'>" +
                        salesRecordId + "</span>.";
                    MyAlertBox("var callbackOk = function () { MyOverlayStart(); window.location = \"/UI/SalesOrder/CreateSalesOrder.aspx\"; }; SuccessAlert(\"" +
                        "Process Succeed" + "\", \"" + message + "\", callbackOk);");
                }
                //MyAlertBox("alert(\"Retail Sales Created Successfully with Sales ID: " + salesRecordId.Trim() + " \"); window.location=\"/UI/Sales/RetailSalesList.aspx\"");
                //Response.Redirect("/UI/Sales/RetailSalesList.aspx", false);
                // }
            }
            catch (Exception ex)
            {
                string message = ex.Message;
                if (ex.InnerException != null) { message += " --> " + ex.InnerException.Message; }
                MyAlertBox("ErrorAlert(\"" + ex.GetType() + "\", \"" + message + "\", \"\");");
            }
            finally
            {
                salesOrder = null;
                dtPrdList = null;
            }
        }