private void CopyFile(string iInvoiceID)
        {
            string sFname   = "";
            string strFname = "";

            try
            {
                sFname   = Session["InvoiceDoc"].ToString();
                strFname = sFname;
            }
            catch { }

            if (sFname.Trim() != "")
            {
                FileInfo fi = new FileInfo(Server.MapPath(ConfigurationManager.AppSettings["TempInvoicePath"]) + sFname);

                string[] strFileNameArray = sFname.Split('^');

                sFname = strFileNameArray[0];

                if (fi.Exists)
                {
                    fi.CopyTo(Server.MapPath(ConfigurationManager.AppSettings["InvoiceDocPath"]) + "\\" + iInvoiceID + "_" + sFname, true);
                    CBSolutions.ETH.Web.Invoice objInvoice = new CBSolutions.ETH.Web.Invoice();
                    objInvoice.UpdateInvoiceDocument(Convert.ToInt32(iInvoiceID.Trim()), iInvoiceID + "_" + sFname);
                    fi = null;
                    FileInfo fInfo = new FileInfo(Server.MapPath(ConfigurationManager.AppSettings["TempInvoicePath"]) + strFname.Trim());
                    if (fInfo.Exists)
                    {
                        fInfo.Delete();
                        fInfo = null;
                    }
                }
            }
        }
        private void btnConfirmInvoice_Click(object sender, System.EventArgs e)
        {
            CBSolutions.ETH.Web.Invoice invoice = new CBSolutions.ETH.Web.Invoice();
            //save the invoice head and detail data in a single transaction context
            DataAccess da = new DataAccess(CBSAppUtils.PrimaryConnectionString);

            da.BeginTransaction();

            int invoicePKID = 0;

            //save invoice head data
            rsInvoiceHead["SupplierCompanyID"] = Convert.ToInt32(Session["CompanyID"]);

            if (rsInvoiceHead["StatusID"] == DBNull.Value)
            {
                rsInvoiceHead["StatusID"] = 20;
            }

            invoicePKID = invoice.InsertInvoiceHeadData(rsInvoiceHead, da);
            if (da.SPReturnValue == 2)
            {
                Session.Add("DuplicateInvoice", "1");
                da.RollbackTransaction();
                rsInvoiceHead["StatusID"] = null;
                Response.Redirect("InvoiceOtherInfo.aspx");
            }

            if (invoicePKID > 0)
            {
                invoice.InsertInvoiceDetailData(invoicePKID, rsInvoiceDetail, da);
            }

            if (da.ErrorCode != DataAccessErrors.Successful)
            {
                da.RollbackTransaction();
                rsInvoiceHead["StatusID"] = null;
                Response.Write(da.ErrorMessage);
            }
            else //else commit transaction
            {
                // CHECKING IF CURRENCY CODE IS NOT GBP.
                if (Convert.ToInt32(rsInvoiceHead["CurrencyTypeID"]) != 22 && ViewState["BuyerVATPrefix"].ToString().ToUpper().Trim() == "GB" && ViewState["SupplierVATPrefix"].ToString().ToUpper().Trim() == "GB")
                {
                    if (txtSterlingEquivalent.Text.Trim() == "")
                    {
                        lblMessage.Text = "Please enter the sterling equivalent vat amount because the currency code is not GBP.";
                        da.RollbackTransaction();
                        rsInvoiceHead["StatusID"] = null;
                        return;
                    }
                    else
                    {
                        if (IsNumericValue(txtSterlingEquivalent.Text.Trim()))
                        {
                            Session["StrVATAmt"] = txtSterlingEquivalent.Text.Trim();
                            da.CommitTransaction();
                        }
                        else
                        {
                            lblMessage.Text           = "Please enter a numeric value for sterling equivalent vat amount.";
                            rsInvoiceHead["StatusID"] = null;
                            da.RollbackTransaction();
                            return;
                        }
                    }
                }
                else
                {
                    try
                    {
                        Session["StrVATAmt"] = null;
                        da.CommitTransaction();
                    }
                    catch { }
                }


                if (Session["StrVATAmt"] != null)
                {
                    if (Utility.IsNumeric(Session["StrVATAmt"].ToString().Trim()))
                    {
                        Session["StrVATAmt"] = Convert.ToString(Math.Round(Convert.ToDouble(Session["StrVATAmt"].ToString().Trim()), 2));
                    }
                    invoice.UpdateSterlingAmoutnIfCurrencyNotGBP(invoicePKID, Convert.ToDecimal(Session["StrVATAmt"]));
                }

                if (txtVATAmt.Text.Trim() != null)
                {
                    invoice.UpdateVATAmount(invoicePKID, Convert.ToDecimal(txtVATAmt.Text.Trim()));
                }
                //rsInvoiceHead["VATAmt"] = txtVATAmt.Text.Trim();

                CopyFile(invoicePKID.ToString());
                Session["InvoiceID"] = invoicePKID;
                hdSaveFlag.Value     = "1";
                //Response.Redirect("InvoiceConfirmation.aspx",true);
                hdHideBack.Value = "1";

                if (invoicePKID > 0)
                {
                    invoice.GetUpdateStockWithDepartmentANDNominalCode(invoicePKID, Convert.ToDecimal(lblTotal.Text));
                }

                #region RECONCILIATION REPORT
                try
                {
                    invoice.UpdateReconciliationReport(System.Convert.ToInt32(rsInvoiceHead["SupplierCompanyID"]), System.Convert.ToInt32(rsInvoiceHead["BuyerCompanyID"]), "b_E_Docs");
                }
                catch { }
                #endregion
            }
        }
        public void PopulateData()
        {
            SalesOrder objSalesOrder = new SalesOrder();

            CBSolutions.ETH.Web.NewBuyer.Invoice.Invoice objInvoice1 = new CBSolutions.ETH.Web.NewBuyer.Invoice.Invoice();
            this.grdInvoiceDetails.DataSource = rsInvoiceDetail.ParentTable;
            this.grdInvoiceDetails.DataBind();
            lblRefernce.Text = lblRefernce.Text + rsInvoiceHead["PurchaseOrderNo"].ToString();
            if (rsInvoiceHead["Document"] != DBNull.Value)
            {
                strInvoiceDocument = rsInvoiceHead["Document"].ToString();
            }

            if (rsInvoiceHead["New_ActivityCode"] != DBNull.Value)
            {
                lblActivityCode.Text = Convert.ToString(rsInvoiceHead["New_ActivityCode"]);
            }
            else
            {
                lblActivityCode.Text = "";
            }

            if (rsInvoiceHead["New_AccountCategory"] != DBNull.Value)
            {
                lblAccountCat.Text = Convert.ToString(rsInvoiceHead["New_AccountCategory"]);
            }
            else
            {
                lblAccountCat.Text = "";
            }

            if (rsInvoiceHead["PaymentDueDate"] != DBNull.Value)
            {
                lblPaymentDueDAte.Text = Convert.ToDateTime(rsInvoiceHead["PaymentDueDate"]).ToString("dd/MM/yyyy");
            }
            else
            {
                lblPaymentDueDAte.Text = "";
            }
            if (rsInvoiceHead["DiscountPercent"] != DBNull.Value)
            {
                lblTermsDiscount.Text = Convert.ToDouble(rsInvoiceHead["DiscountPercent"]).ToString("#0.00");
            }
            else
            {
                lblTermsDiscount.Text = "0";
            }

            if (rsInvoiceHead["New_SettlementPercent2"] != DBNull.Value)
            {
                lblSecondSettlementDiscount.Text = Convert.ToDouble(rsInvoiceHead["New_SettlementPercent2"]).ToString("#0.00");
            }
            else
            {
                lblSecondSettlementDiscount.Text = "0";
            }

            if (rsInvoiceHead["CustomerAccNo"] != DBNull.Value)
            {
                lblCustomerAccNo.Text = rsInvoiceHead["CustomerAccNo"].ToString();
            }

            if (rsInvoiceHead["OrderContact"] != DBNull.Value)
            {
                lblCustomerContactName.Text = rsInvoiceHead["OrderContact"].ToString();
            }

            if (rsInvoiceHead["New_SettlementDays1"] != DBNull.Value)
            {
                lblSettlementDays.Text = rsInvoiceHead["New_SettlementDays1"].ToString();
            }
            if (rsInvoiceHead["New_SettlementDays2"] != DBNull.Value)
            {
                lblSecondSettlementDays.Text = rsInvoiceHead["New_SettlementDays2"].ToString();
            }

            if (rsInvoiceHead["OrderName"] != DBNull.Value)
            {
                lblInvoiceName.Text = rsInvoiceHead["OrderName"].ToString();
            }

            try
            {
                if (rsInvoiceHead["CurrencyTypeID"] != DBNull.Value)
                {
                    lblCurrency.Text = objInvoice1.GetCurrencyName(Convert.ToInt32(rsInvoiceHead["CurrencyTypeID"]));
                }
            }
            catch { }

            lblVATRegNo.Text = rsInvoiceHead["SellerVATNo"].ToString();

            if (rsInvoiceHead["OrderDate"] != DBNull.Value)
            {
                lblInvoiceDate.Text = Convert.ToDateTime(rsInvoiceHead["OrderDate"]).ToString("dd/MM/yyyy");
            }
            else
            {
                lblInvoiceDate.Text = "";
            }

            lblPaymentTerms.Text   = rsInvoiceHead["PaymentTerm"].ToString();
            lblDespatchNoteNo.Text = rsInvoiceHead["DespatchNoteNo"].ToString();

            if (rsInvoiceHead["DeliveryDate"] != DBNull.Value)
            {
                lblDespatchDate.Text = Convert.ToDateTime(rsInvoiceHead["DeliveryDate"]).ToString("dd/MM/yyyy");
            }
            else
            {
                lblDespatchDate.Text = "";
            }

            if (rsInvoiceHead["TaxPointDate"] != DBNull.Value)
            {
                lblTaxPointDate.Text = Convert.ToDateTime(rsInvoiceHead["TaxPointDate"]).ToString("dd/MM/yyyy");
            }
            else
            {
                lblTaxPointDate.Text = "";
            }

            lblNetTotal.Text = System.Convert.ToDouble(rsInvoiceHead["NetTotal"]).ToString("#0.00");
            lblTotal.Text    = System.Convert.ToDouble(rsInvoiceHead["TotalAmt"]).ToString("#0.00");
            txtVATAmt.Text   = System.Convert.ToDouble(rsInvoiceHead["VATAmt"]).ToString("#0.00");
            lblVAT.Text      = System.Convert.ToDouble(rsInvoiceHead["VATAmt"]).ToString("#0.00");

            string s = "";

            s  = GetAddressLine(rsInvoiceHead["DeliveryAddress1"].ToString());
            s += GetAddressLine(rsInvoiceHead["DeliveryAddress2"].ToString());
            s += GetAddressLine(rsInvoiceHead["DeliveryAddress3"].ToString());
            s += GetAddressLine(rsInvoiceHead["DeliveryAddress4"].ToString());
            s += GetAddressLine(rsInvoiceHead["DeliveryAddress5"].ToString());
            s += GetAddressLine(rsInvoiceHead["DeliveryCountry"].ToString());
            s += GetAddressLine(rsInvoiceHead["DeliveryZIP"].ToString());
            try
            {
                s = s.Substring(0, s.Length - 3);
            }
            catch { }

            if (s == "" && Request.QueryString["PurchaseOrderID"] == null)
            {
                s = Convert.ToString(Session["SuppAddForInvHead"]);
            }

            lblDeliveryAddress.Text = s;

            if (rsInvoiceHead["New_OverallDiscountPercent"] != DBNull.Value)
            {
                lblOverAllDiscount.Text = rsInvoiceHead["New_OverallDiscountPercent"].ToString().Trim();
            }


            s  = GetAddressLine(rsInvoiceHead["OrderAddress1"].ToString());
            s += GetAddressLine(rsInvoiceHead["OrderAddress2"].ToString());
            s += GetAddressLine(rsInvoiceHead["OrderAddress3"].ToString());
            s += GetAddressLine(rsInvoiceHead["OrderAddress4"].ToString());
            s += GetAddressLine(rsInvoiceHead["OrderAddress5"].ToString());
            s += GetAddressLine(rsInvoiceHead["OrderCountry"].ToString());
            s += GetAddressLine(rsInvoiceHead["OrderZIP"].ToString());
            try
            {
                s = s.Substring(0, s.Length - 3);
            }
            catch { }

            if (s == "" && Request.QueryString["PurchaseOrderID"] == null)
            {
                s = Convert.ToString(Session["SuppAddForInvHead"]);
            }

            lblInvoiceAddress.Text = s;

            if (rsInvoiceHead["New_PaymentDate"] != DBNull.Value)
            {
                lblpaymentdate.Text = System.Convert.ToDateTime(rsInvoiceHead["New_PaymentDate"]).ToString("dd/MM/yyyy");//Amitava 301007
            }
            else
            {
                lblpaymentdate.Text = "";
            }
            if (rsInvoiceHead["New_DiscountGiven"] != DBNull.Value)
            {
                lblDiscount.Text = System.Convert.ToString(rsInvoiceHead["New_DiscountGiven"].ToString());
            }
            else
            {
                lblDiscount.Text = "";
            }
            if (rsInvoiceHead["New_PaymentMethod"] != DBNull.Value)
            {
                lblPaymentMethod.Text = System.Convert.ToString(rsInvoiceHead["New_PaymentMethod"].ToString());
            }
            else
            {
                lblPaymentMethod.Text = "";
            }


            if (rsInvoiceHead["SupplierAccNo"] != DBNull.Value)
            {
                lblSupplierAccNo.Text = Convert.ToString(rsInvoiceHead["SupplierAccNo"]);
            }
            else
            {
                lblSupplierAccNo.Text = "";
            }
            if (rsInvoiceHead["SupplierContact"] != DBNull.Value)
            {
                lblSuppContName.Text = Convert.ToString(rsInvoiceHead["SupplierContact"]);
            }
            else
            {
                lblSuppContName.Text = "";
            }
            if (rsInvoiceHead["Notes"] != DBNull.Value)
            {
                lblNotes.Text = Convert.ToString(rsInvoiceHead["Notes"]);
            }
            else
            {
                lblNotes.Text = "";
            }
            if (rsInvoiceHead["OrderTerms"] != DBNull.Value)
            {
                lblTerms.Text = Convert.ToString(rsInvoiceHead["OrderTerms"]);
            }
            else
            {
                lblTerms.Text = "";
            }

            s  = GetAddressLine(rsInvoiceHead["SupplierAddress1"].ToString());
            s += GetAddressLine(rsInvoiceHead["SupplierAddress2"].ToString());
            s += GetAddressLine(rsInvoiceHead["SupplierAddress3"].ToString());
            s += GetAddressLine(rsInvoiceHead["SupplierAddress4"].ToString());
            s += GetAddressLine(rsInvoiceHead["SupplierAddress5"].ToString());
            s += GetAddressLine(rsInvoiceHead["SupplierCountry"].ToString());
            s += GetAddressLine(rsInvoiceHead["SupplierZIP"].ToString());
            try
            {
                s = s.Substring(0, s.Length - 3);
            }
            catch { }

            if (s == "")
            {
                if (Session["CompanyID"] != null)
                {
                    int iCompanyID = 0;
                    iCompanyID = Convert.ToInt32(Session["CompanyID"]);
                    CBSolutions.ETH.Web.Invoice oInvoice = new CBSolutions.ETH.Web.Invoice();
                    DataTable dtbl = null;
                    dtbl = oInvoice.GetSupplierAddressofCompany(iCompanyID);
                    s    = Convert.ToString(dtbl.Rows[0]["SupplierAddress"]);
                }
            }
            lblSupplierAddress.Text = s;

            RecordSet rs = Company.GetCompanyData(System.Convert.ToInt32(rsInvoiceHead["SupplierCompanyID"]));

            lblSupplier.Text = rs["CompanyName"].ToString();


            string[] arrSupplierVATPrefix = rs["VATRegNo"].ToString().Split('-');
            strSupplierVATPrefix           = arrSupplierVATPrefix[0].ToString().Trim();
            ViewState["SupplierVATPrefix"] = strSupplierVATPrefix;


            rs            = Company.GetCompanyData(System.Convert.ToInt32(rsInvoiceHead["BuyerCompanyID"]));
            lblBuyer.Text = rs["CompanyName"].ToString();


            string[] arrBuyerVATPrefix = rs["VATRegNo"].ToString().Split('-');
            strBuyerVATPrefix           = arrBuyerVATPrefix[0].ToString().Trim();
            ViewState["BuyerVATPrefix"] = strBuyerVATPrefix;


            if (rsInvoiceHead["StatusId"] != DBNull.Value)
            {
                lblStatus.Text = CBSolutions.ETH.Web.Invoice.GetStatus((int)rsInvoiceHead["StatusId"]);
            }
            else
            {
                lblStatus.Text = "Pending";
            }

            if (ViewState["INID"] != null)
            {
                Double dGBPEquivalentAmount = 0;
                dGBPEquivalentAmount = objInvoice1.GetGBPEquivalentAmount(Convert.ToInt32(ViewState["INID"]));
                if (dGBPEquivalentAmount != 0)
                {
                    lblGBPEquiAmt.Visible = true;
                    hdGBPEquiFlag.Value   = "1";
                    lblGBPEquiAmt.Text    = dGBPEquivalentAmount.ToString();
                }
                txtVATAmt.Visible = false;
                lblVAT.Visible    = true;
            }
            if (Session["StrVATAmt"] != null)
            {
                lblGBPEquiAmt.Visible         = true;
                hdGBPEquiFlag.Value           = "1";
                lblGBPEquiAmt.Text            = Session["StrVATAmt"].ToString();
                txtSterlingEquivalent.Visible = false;
            }
            if (Convert.ToInt32(rsInvoiceHead["CurrencyTypeID"]) != 22 && Session["StrVATAmt"] == null && ViewState["INID"] == null)
            {
                if (strBuyerVATPrefix.ToUpper().Trim() == "GB" && strSupplierVATPrefix.ToUpper().Trim() == "GB")
                {
                    txtSterlingEquivalent.Visible  = true;
                    trInputSterlingEquiAmt.Visible = true;
                }
                else
                {
                    trInputSterlingEquiAmt.Visible = false;
                }
            }
            else
            {
                trInputSterlingEquiAmt.Visible = false;
            }
        }