protected void createPotentialManul()
        {
            if (DropDownList_Level1.SelectedValue.Equals("_"))
            {
                Label_Status.Text      = "Please select one product category";
                Label_Status.ForeColor = System.Drawing.Color.Red;
                Label_Status.Visible   = true;

                Button_Submit_Pot.Enabled           = true;
                Button_Submit_Next.Enabled          = true;
                Button_Submit_Extra_Prd_Srv.Enabled = true;
            }
            else
            {
                BackEndObjects.RFQDetails rfqObj = new BackEndObjects.RFQDetails();
                BackEndObjects.Id         idGen  = new BackEndObjects.Id();
                String rfqId = "";
                if (Session[SessionFactory.CREATE_POTENTIAL_RFQ_ID] == null)
                {
                    rfqId = idGen.getNewId(BackEndObjects.Id.ID_TYPE_RFQ_STRING);
                    Session[SessionFactory.CREATE_POTENTIAL_RFQ_ID] = rfqId; //store the newly created RFQ id in the session
                }
                if (!TextBox_Spec.Text.Equals(""))
                {
                    getAddintionalProdSrvList();
                    TextBox_Spec.Text = "";
                }

                ArrayList rfqSpecObjList = (ArrayList)Session[SessionFactory.CREATE_POTENTIAL_SELECTED_POTN_SPEC_MAP];

                //Set the RFQ id for all the  spec objects
                if (rfqSpecObjList != null)
                {
                    for (int i = 0; i < rfqSpecObjList.Count; i++)
                    {
                        ((BackEndObjects.RFQProductServiceDetails)rfqSpecObjList[i]).setRFQId(rfqId);
                    }
                }

                rfqObj.setRFQProdServList(rfqSpecObjList);
                rfqObj.setRFQId(rfqId);
                rfqObj.setCreatedUsr(User.Identity.Name);
                rfqObj.setActiveStat(BackEndObjects.RFQDetails.RFQ_ACTIVE_STAT_ACTIVE);
                rfqObj.setDueDate(TextBox_Within_Date.Text);
                rfqObj.setEntityId(DropDownList_Contacts.SelectedValue);
                rfqObj.setCreatedEntity(Session[SessionFactory.MAIN_BUSINESS_ENTITY_ID_STRING].ToString());
                rfqObj.setCurrency(DropDownList_Curr.SelectedValue);
                //     FileUpload1=(FileUpload1 == null ? (FileUpload)Session[SessionFactory.CREATE_RFQ_NDA_FILE] : FileUpload1);

                /* if (FileUpload1 != null && FileUpload1.HasFile)
                 * {
                 *   rfqObj.setFileStream(FileUpload1);
                 *   rfqObj.setNDADocPathInFileStore(rfqObj.getEntityId());
                 *
                 * }
                 * else if ((FileUpload)Session[SessionFactory.CREATE_POTENTIAL_NDA_FILE] != null && ((FileUpload)Session[SessionFactory.CREATE_POTENTIAL_NDA_FILE]).HasFile)
                 * {
                 *   rfqObj.setFileStream((FileUpload)Session[SessionFactory.CREATE_POTENTIAL_NDA_FILE]);
                 *   rfqObj.setNDADocPathInFileStore(rfqObj.getEntityId());
                 * }*/
                String localId = (!DropDownList_Locality.SelectedValue.Equals("_") && !DropDownList_Locality.SelectedValue.Equals("") ?
                                  DropDownList_Locality.SelectedValue : (!DropDownList_City.SelectedValue.Equals("_") && !DropDownList_City.SelectedValue.Equals("") ?
                                                                         DropDownList_City.SelectedValue : (!DropDownList_State.SelectedValue.Equals("_") && !DropDownList_State.SelectedValue.Equals("") ?
                                                                                                            DropDownList_State.SelectedValue : (!DropDownList_Country.SelectedValue.Equals("_") && !DropDownList_Country.SelectedValue.Equals("") ?
                                                                                                                                                DropDownList_Country.SelectedValue : ""))));

                rfqObj.setLocalityId(localId);
                rfqObj.setSubmitDate(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                rfqObj.setTermsandConds(TextBox_TnC.Text);
                rfqObj.setRFQName(TextBox_Reqr_Name.Text);
                //RFQ creation mode is manual while manually creating lead/potential
                rfqObj.setCreateMode(RFQDetails.CREATION_MODE_MANUAL);

                BackEndObjects.RFQProdServQnty rfqPrdQnty = new BackEndObjects.RFQProdServQnty();
                rfqPrdQnty.setRFQId(rfqObj.getRFQId());
                rfqPrdQnty.setFromPrice(TextBox_Price_Range_From.Text);
                rfqPrdQnty.setToPrice(TextBox_Price_Range_To.Text);
                rfqPrdQnty.setFromQnty(float.Parse(TextBox_Prod_Qnty_From.Text));
                rfqPrdQnty.setToQnty(float.Parse(TextBox_Prod_Qnty_To.Text));
                rfqPrdQnty.setMsrmntUnit(DropDownList_Unit_Of_Msrmnt.SelectedValue);
                rfqPrdQnty.setProdCatId(Session[SessionFactory.CREATE_POTENTIAL_SELECTED_PRODUCT_CAT].ToString());
                //ArrayList rfqPrdQntyList = new ArrayList();
                //rfqPrdQntyList.Add(rfqPrdQnty);

                ArrayList prodSrvQntyList = (ArrayList)Session[SessionFactory.CREATE_POTENTIAL_PROD_SRV_QNTY_LIST];

                if (prodSrvQntyList == null)
                {
                    prodSrvQntyList = new ArrayList();
                }

                prodSrvQntyList.Add(rfqPrdQnty);

                //Ensure that all objects in the arraylist has an associated rfqid
                for (int i = 0; i < prodSrvQntyList.Count; i++)
                {
                    BackEndObjects.RFQProdServQnty temp = (RFQProdServQnty)prodSrvQntyList[i];
                    if (temp.getRFQId() == null || temp.getRFQId().Equals(""))
                    {
                        temp.setRFQId(rfqObj.getRFQId());
                    }
                }

                rfqObj.setRFQProdServQntyList(prodSrvQntyList);

                Dictionary <String, String> reqSpecUniqnessValidation = new Dictionary <string, string>();

                if (rfqSpecObjList != null)
                {
                    for (int i = 0; i < rfqSpecObjList.Count; i++)
                    {
                        BackEndObjects.RFQProductServiceDetails rfqSpecObj = (BackEndObjects.RFQProductServiceDetails)rfqSpecObjList[i];
                        if (reqSpecUniqnessValidation.ContainsKey(rfqSpecObj.getPrdCatId() + ":" + rfqSpecObj.getFeatId()))
                        {
                            rfqSpecObjList.RemoveAt(i);//Remove the current RFQ spec object from the list - otherwise it will cause exception at DB layer while inserting
                        }
                        else
                        {
                            reqSpecUniqnessValidation.Add(rfqSpecObj.getPrdCatId() + ":" + rfqSpecObj.getFeatId(), "");
                            if (rfqSpecObj.getFileStream() != null)
                            {
                                rfqSpecObj.setImgPathInFileStore(rfqObj.getEntityId());
                            }
                        }
                    }
                }

                BackEndObjects.RFQResponse leadRespObj = new RFQResponse();
                leadRespObj.setRespEntityId(Session[SessionFactory.MAIN_BUSINESS_ENTITY_ID_STRING].ToString());
                leadRespObj.setRFQId(Session[SessionFactory.CREATE_POTENTIAL_RFQ_ID].ToString());
                leadRespObj.setRespDate(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                leadRespObj.setAssignedTo(DropDownList_Users.SelectedValue);
                leadRespObj.setNextFollowupDate(TextBox_Fwp_Date.Text);

                //Load the document for the lead response
                if (FileUpload1 != null && FileUpload1.HasFile)
                {
                    leadRespObj.setFileStream(FileUpload1);
                    leadRespObj.setNDADocPathInFileStore(leadRespObj.getRespEntityId());
                }
                else if ((FileUpload)Session[SessionFactory.CREATE_POTENTIAL_NDA_FILE] != null && ((FileUpload)Session[SessionFactory.CREATE_POTENTIAL_NDA_FILE]).HasFile)
                {
                    leadRespObj.setFileStream((FileUpload)Session[SessionFactory.CREATE_POTENTIAL_NDA_FILE]);
                    leadRespObj.setNDADocPathInFileStore(leadRespObj.getRespEntityId());
                }

                ArrayList leadRespQuoteList = (ArrayList)Session[SessionFactory.CREATE_POTENTIAL_RESP_QUOTE_LIST];
                if (leadRespQuoteList == null)
                {
                    leadRespQuoteList = new ArrayList();
                }

                BackEndObjects.RFQResponseQuotes respQuoteObj = new RFQResponseQuotes();
                respQuoteObj.setPrdCatId(Session[SessionFactory.CREATE_POTENTIAL_SELECTED_PRODUCT_CAT].ToString());
                respQuoteObj.setQuote((TextBox_Quote_Amnt.Text.Equals("") ? "0" : TextBox_Quote_Amnt.Text));
                respQuoteObj.setResponseEntityId(Session[SessionFactory.MAIN_BUSINESS_ENTITY_ID_STRING].ToString());
                respQuoteObj.setResponseUsrId(User.Identity.Name);
                //respQuoteObj.setUnitName(Session[SessionFactory.CREATE_LEAD_QUOTE_UNIT].ToString());
                respQuoteObj.setUnitName(Label_Per_Unit.Text);
                respQuoteObj.setProductName((!TextBox_Prod_Name.Text.Equals("") ? TextBox_Prod_Name.Text.Trim() : DropDownList_Prod_List.SelectedItem.Text));

                leadRespQuoteList.Add(respQuoteObj);
                //Ensure that all objects in the arraylist has an associated rfqid
                for (int i = 0; i < leadRespQuoteList.Count; i++)
                {
                    BackEndObjects.RFQResponseQuotes temp = (RFQResponseQuotes)leadRespQuoteList[i];
                    if (temp.getRFQId() == null || temp.getRFQId().Equals(""))
                    {
                        temp.setRFQId(rfqObj.getRFQId());
                    }
                }

                leadRespObj.setResponseQuoteList(leadRespQuoteList);

                ActionLibrary.SalesActions._createLeads cL = new ActionLibrary.SalesActions._createLeads();

                LeadRecord leadObj = new LeadRecord();
                leadObj.setRFQProdServList(rfqObj.getRFQProdServList());
                leadObj.setRFQId(rfqObj.getRFQId());
                leadObj.setActiveStat(rfqObj.getActiveStat());
                leadObj.setApprovalStat(rfqObj.getApprovalStat());
                leadObj.setCreatedEntity(rfqObj.getCreatedEntity());
                leadObj.setCreatedUsr(rfqObj.getCreatedUsr());
                leadObj.setCreateMode(rfqObj.getCreateMode());
                leadObj.setDueDate(rfqObj.getDueDate());
                leadObj.setEntityId(rfqObj.getEntityId());
                leadObj.setFileStream(rfqObj.getFileStream());
                leadObj.setLocalityId(rfqObj.getLocalityId());
                leadObj.setNDADocPath(rfqObj.getNDADocPath());
                leadObj.setReqId(rfqObj.getReqId());
                leadObj.setRFQName(rfqObj.getRFQName());
                leadObj.setRFQProdServQntyList(rfqObj.getRFQProdServQntyList());
                leadObj.setSubmitDate(rfqObj.getSubmitDate());
                leadObj.setTermsandConds(rfqObj.getTermsandConds());
                leadObj.setCurrency(rfqObj.getCurrency());

                leadObj.setLeadResp(leadRespObj);

                BackEndObjects.RFQShortlisted potObj = new RFQShortlisted();

                potObj.setRFQId(rfqObj.getRFQId());
                potObj.setRespEntityId(rfqObj.getCreatedEntity());
                potObj.setPotStat(DropDownList_Pot_Stage.SelectedValue);
                potObj.setPotentialId(new Id().getNewId(BackEndObjects.Id.ID_TYPE_POTENTIAL_ID_STRING));
                potObj.setPotenAmnt(calculatePotAmnt(leadRespQuoteList, prodSrvQntyList));
                potObj.setPotActStat(DropDownList_Pot_State.SelectedValue);
                potObj.setFinlSupFlag("N");
                potObj.setFinlCustFlag("N");
                potObj.setCreateMode(rfqObj.getCreateMode());
                potObj.setCreatedDate(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                //potObj.setConfMatPathInFileStore(potObj.getRespEntityId());

                /* if (FileUpload2 != null && FileUpload2.HasFile)
                 * {
                 *   potObj.setFileStream(FileUpload2);
                 *   potObj.setConfMatPathInFileStore(potObj.getRespEntityId());
                 *
                 * }*/
                /*else if ((FileUpload)Session[SessionFactory.CREATE_POTENTIAL_CONF_MAT] != null &&
                 *  ((FileUpload)Session[SessionFactory.CREATE_POTENTIAL_CONF_MAT]).HasFile)
                 * {
                 *  potObj.setFileStream((FileUpload)Session[SessionFactory.CREATE_POTENTIAL_CONF_MAT]);
                 *  potObj.setConfMatPathInFileStore(potObj.getRespEntityId());
                 * }*/


                try
                {
                    cL.createNewLead(leadObj, Session[SessionFactory.MAIN_BUSINESS_ENTITY_ID_STRING].ToString(), User.Identity.Name);
                    BackEndObjects.RFQShortlisted.insertRFQShorListedEntryDB(potObj);
                    Label_Status.Text      = "Potential created successfully";
                    Label_Status.ForeColor = System.Drawing.Color.Green;
                    Label_Status.Visible   = true;

                    DataTable dt = (DataTable)Session[SessionFactory.ALL_SALE_ALL_POTENTIAL_GRID_DATA];
                    Dictionary <String, Currency> allCurrList = (Dictionary <String, Currency>)Session[SessionFactory.CURRENCY_LIST];
                    //DateUtility dU = new DateUtility();


                    dt.Rows.Add();
                    int count = dt.Rows.Count - 1;

                    dt.Rows[count]["RFQNo"]   = leadObj.getRFQId();
                    dt.Rows[count]["RFQName"] = leadObj.getRFQName();
                    dt.Rows[count]["curr"]    = allCurrList.ContainsKey(leadObj.getCurrency()) ?
                                                allCurrList[leadObj.getCurrency()].getCurrencyName() : "";

                    String alertRequired = "true";
                    for (int j = 0; j < leadRespQuoteList.Count; j++)
                    {
                        RFQResponseQuotes QuoteObj = (RFQResponseQuotes)leadRespQuoteList[j];
                        if (!QuoteObj.getQuote().Equals("0"))
                        {
                            alertRequired = "false"; break;
                        }
                    }

                    DateUtility dU = new DateUtility();

                    dt.Rows[count]["PotId"] = potObj.getPotentialId();
                    dt.Rows[count]["Potn_Alert_Required"] = alertRequired;
                    dt.Rows[count]["DateCreated"]         = potObj.getCreatedDate();
                    dt.Rows[count]["DateCreatedTicks"]    = Convert.ToDateTime(potObj.getCreatedDate()).Ticks;
                    dt.Rows[count]["CustName"]            = DropDownList_Contacts.SelectedItem.Text;
                    dt.Rows[count]["CustId"]          = leadObj.getEntityId();
                    dt.Rows[count]["PotAmnt"]         = potObj.getPotenAmnt();
                    dt.Rows[count]["Due Date"]        = dU.getConvertedDateWoTime(leadObj.getDueDate());
                    dt.Rows[count]["Due Date Ticks"]  = !leadObj.getDueDate().Equals("")?Convert.ToDateTime(leadObj.getDueDate()).Ticks:0;
                    dt.Rows[count]["Next Date"]       = dU.getConvertedDateWoTime(TextBox_Fwp_Date.Text.Trim());
                    dt.Rows[count]["Next Date Ticks"] = (!TextBox_Fwp_Date.Text.Equals("") ? Convert.ToDateTime(TextBox_Fwp_Date.Text).Ticks : 0);
                    dt.Rows[count]["Assgn To"]        = (!DropDownList_Users.SelectedValue.Equals("") ? DropDownList_Users.SelectedValue : "");
                    dt.Rows[count]["PotStage"]        = potObj.getPotStat();
                    dt.Rows[count]["ActiveStat"]      = potObj.getPotActStat();
                    dt.Rows[count]["Mode"]            = potObj.getCreateMode();
                    dt.Rows[count]["PO_Id"]           = "N/A";


                    dt.DefaultView.Sort = "DateCreatedTicks" + " " + "DESC";
                    Session[SessionFactory.ALL_SALE_ALL_POTENTIAL_GRID_DATA] = dt.DefaultView.ToTable();

                    ScriptManager.RegisterStartupScript(this, typeof(string), "RefreshPotnGrid", "RefreshParent();", true);
                }
                catch (Exception ex)
                {
                    Label_Status.Text      = "Potential creation failed";
                    Label_Status.ForeColor = System.Drawing.Color.Red;
                    Label_Status.Visible   = true;
                }
                finally
                {
                    Session.Remove(SessionFactory.CREATE_POTENTIAL_SELECTED_POTN_SPEC_MAP);
                    Session.Remove(SessionFactory.CREATE_POTENTIAL_RFQ_ID);
                    Session.Remove(SessionFactory.CREATE_POTENTIAL_PROD_SRV_QNTY_LIST);
                    Session.Remove(SessionFactory.CREATE_POTENTIAL_NDA_FILE);
                    Session.Remove(SessionFactory.CREATE_POTENTIAL_RESP_QUOTE_LIST);
                }
            }
        }