protected void saveButton_Click(object sender, EventArgs e)
        {
            PurchaseToWHBLL purchaseRecord = new PurchaseToWHBLL();

            string msg = string.Empty;
            TextBox quantityTextBox;
            TextBox ratePerUnitTextBox;
            TextBox amountTextBox;
            TextBox unitPriceTextBox;
            float fnum;
            float uprice;
            double num;
            int pNDCount = 0;

            DataTable dt = new DataTable();
            DataRow dr = null;

            dt.Columns.Add("ProductId");
            dt.Columns.Add("Quantity");
            dt.Columns.Add("Amount");
            dt.Columns.Add("RatePerUnit");
            dt.Columns.Add("UnitPrice");
            dt.Columns.Add("Status");
            dt.Columns.Add("Narration");

            try
            {
                //if (vendorOrderDateTextBox.Text.Trim() == "" || LumexLibraryManager.ParseAppDate(vendorOrderDateTextBox.Text.Trim()) == "False")
                //{
                //    msgbox.Visible = true; msgTitleLabel.Text = "Exception!!!"; msgDetailLabel.Text = "Vendor Order Date field is required.";
                //    return;
                //}
                //else if (vendorOrderNumberTextBox.Text.Trim() == "")
                //{
                //    msgbox.Visible = true; msgTitleLabel.Text = "Exception!!!"; msgDetailLabel.Text = "Vendor Order Number field is required.";
                //    return;
                //}
                //else
                if (vendorInvoiceNumberTextBox.Text.Trim() == "")
                {
                    msgbox.Visible = true; msgTitleLabel.Text = "Exception!!!"; msgDetailLabel.Text = "Vendor Invoice Number field is required.";
                    return;
                }
                //else if (receivedDateTextBox.Text.Trim() == "" || LumexLibraryManager.ParseAppDate(receivedDateTextBox.Text.Trim()) == "False")
                //{
                //    msgbox.Visible = true; msgTitleLabel.Text = "Exception!!!"; msgDetailLabel.Text = "Received Date 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;
                    //}
                }

                UnitPriceCalculation();

                for (int i = 0; i < purchaseProductListGridView.Rows.Count; i++)
                {
                    quantityTextBox = (TextBox)purchaseProductListGridView.Rows[i].FindControl("quantityTextBox");
                    ratePerUnitTextBox = (TextBox)purchaseProductListGridView.Rows[i].FindControl("ratePerUnitTextBox");
                    amountTextBox = (TextBox)purchaseProductListGridView.Rows[i].FindControl("amountTextBox");
                    unitPriceTextBox = (TextBox)purchaseProductListGridView.Rows[i].FindControl("unitPriceTextBox");

                    if (!double.TryParse(quantityTextBox.Text.Trim(), out num))
                    {
                        msg = "Product ID [" + purchaseProductListGridView.Rows[i].Cells[0].Text.ToString() + "] has no valid Quantity.";
                        msgbox.Visible = true; msgTitleLabel.Text = "Exception!!!"; msgDetailLabel.Text = msg;
                        return;
                    }
                    else if (!float.TryParse(ratePerUnitTextBox.Text.Trim(), out fnum))
                    {
                        msg = "Product ID [" + purchaseProductListGridView.Rows[i].Cells[0].Text.ToString() + "] has no valid Rate Per Unit.";
                        msgbox.Visible = true; msgTitleLabel.Text = "Exception!!!"; msgDetailLabel.Text = msg;
                        return;
                    }
                    else if (!float.TryParse(amountTextBox.Text.Trim(), out fnum))
                    {
                        msg = "Product ID [" + purchaseProductListGridView.Rows[i].Cells[0].Text.ToString() + "] has no valid Amount.";
                        msgbox.Visible = true; msgTitleLabel.Text = "Exception!!!"; msgDetailLabel.Text = msg;
                        return;
                    }
                    else if (!float.TryParse(unitPriceTextBox.Text.Trim(), out uprice))
                    {
                        msg = "Product ID [" + purchaseProductListGridView.Rows[i].Cells[0].Text.ToString() + "] has no valid Unit Price.";
                        msgbox.Visible = true; msgTitleLabel.Text = "Exception!!!"; msgDetailLabel.Text = msg;
                        return;
                    }
                    else
                    {
                        dr = dt.NewRow();

                        dr["ProductId"] = purchaseProductListGridView.Rows[i].Cells[0].Text.ToString();
                        dr["Quantity"] = quantityTextBox.Text.Trim();
                        dr["Amount"] = amountTextBox.Text.Trim();
                        dr["RatePerUnit"] = ratePerUnitTextBox.Text.Trim();
                        dr["UnitPrice"] = unitPriceTextBox.Text.Trim();
                        dr["Status"] = "D";
                        dr["Narration"] = "";

                        //string[] oQty = purchaseProductListGridView.Rows[i].Cells[2].Text.ToString().Split(' ');

                        //if (int.Parse(quantityTextBox.Text.Trim()) == 0)
                        //{
                        //    dr["Status"] = "ND"; pNDCount++;
                        //}
                        //else if (oQty[0].ToString().Trim() == quantityTextBox.Text.Trim())
                        //{
                        //    dr["Status"] = "D";
                        //}
                        //else
                        //{
                        //    dr["Status"] = "PD";
                        //}

                        dt.Rows.Add(dr);
                    }
                }

                if (dt.Rows.Count == purchaseProductListGridView.Rows.Count)
                {
                    purchaseRecord.AccountId = accountHeadDropDownList.SelectedValue.Trim();
                    purchaseRecord.WarehouseId = warehouseDropDownList.SelectedValue;
                    purchaseRecord.PurchaseRequisitionId = "";
                    purchaseRecord.PurchaseOrderId = "";
                    purchaseRecord.VendorId = vendorDropDownList.SelectedValue;
                    purchaseRecord.VendorOrderDate = LumexLibraryManager.ParseAppDate(vendorOrderDateTextBox.Text.Trim());
                    purchaseRecord.VendorOrderNumber = vendorOrderNumberTextBox.Text.Trim();
                    purchaseRecord.VendorInvoiceNumber = vendorInvoiceNumberTextBox.Text.Trim();
                    purchaseRecord.ReceivedDate = LumexLibraryManager.ParseAppDate(receivedDateTextBox.Text.Trim());
                    purchaseRecord.TotalAmount = totalAmountTextBox.Text.Trim();
                    //purchaseRecord.VAT = vatTextBox.Text.Trim();
                    purchaseRecord.DiscountAmount = discountTextBox.Text.Trim();
                    purchaseRecord.TotalPayable = totalPayableTextBox.Text.Trim();
                    purchaseRecord.PaidAmount = paidAmountTextBox.Text.Trim();
                    purchaseRecord.TransportCost = transportCostTextBox.Text.Trim();
                    purchaseRecord.Narration = narrationTextBox.Text.Trim();
                    purchaseRecord.LCNumber = "";//lcNumberTextBox.Text.Trim();
                    purchaseRecord.TransportType = "";//transportTypeDropDownList.SelectedValue.Trim();
                    purchaseRecord.ShippingAddress = "";//shippingAddressTextBox.Text.Trim();
                    purchaseRecord.BillingAddress = "";//billingAddressTextBox.Text.Trim();
                    purchaseRecord.PaymentMode = paymentModeDropDownList.SelectedValue.Trim();
                    purchaseRecord.Bank = bankDropDownList.Text;
                    purchaseRecord.BankBranch = bankBranchTextBox.Text.Trim();
                    purchaseRecord.ChequeNumber = chequeNumberTextBox.Text.Trim();
                    purchaseRecord.ChequeDate = LumexLibraryManager.ParseAppDate(chequeDateTextBox.Text.Trim());

                    purchaseRecord.Status = "D";

                    //if (pNDCount > 0)
                    //{
                    //    purchaseRecord.Status = "PD";
                    //}
                    //else
                    //{
                    //    purchaseRecord.Status = "D";
                    //}

                    string id = purchaseRecord.SavePurchaseRecord(dt);

                    if (!string.IsNullOrEmpty(id))
                    {
                        string message = "Purchase Record <span class='actionTopic'>Created</span> Successfully with Purchase Record ID: <span class='actionTopic'>" + id + "</span>.";
                        MyAlertBox("var callbackOk = function () { MyOverlayStart(); window.location = \"/UI/PurchaseToWH/PurchaseList.aspx\"; }; SuccessAlert(\"" + "Process Succeed" + "\", \"" + message + "\", callbackOk);");

                        // MyAlertBox("alert(\"Purchase Record Created Successfully with Purchase Record ID: " + id + " \"); window.location=\"/UI/PurchaseToWH/PurchaseList.aspx\"");
                    }
                    else
                    {
                        string message = "Purchase Record <span class='actionTopic'>Created</span> Is Faild </span>.";
                        MyAlertBox("var callbackOk = function () { MyOverlayStart(); window.location = \"/UI/PurchaseToWH/PurchaseList.aspx\"; }; ErrorAlert(\"" + "Process Succeed" + "\", \"" + message + "\", callbackOk);");

                        //  msgbox.Visible = true; msgTitleLabel.Text = "Failed to Create Purchase Record!!!"; msgDetailLabel.Text = "";
                    }
                }
            }
            catch (Exception ex)
            {
                string message = ex.Message;
                if (ex.InnerException != null) { message += " --> " + ex.InnerException.Message; }
                MyAlertBox("ErrorAlert(\"" + ex.GetType() + "\", \"" + message + "\", \"\");");

            }
            finally
            {
                //  purchaseRecord = null;
            }
        }