function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Gaurav Agnihotri 11Gaurav Agnihotri 11 

Unable to update the value from a lookup field in VF page

I am unable to update the value of the custom lookup field on a VF page. 
the desired feature is to add the opportunity to the Service Request custom object by clicking "Associate Opportunity" Button
public class ServiceDeskCreateOpp
{

	public string oppRecordType { get; set; }
	public string oppName { get; set; }
	public date OppCloseDate { get; set; }
	public Id serviceDeskId;
	public Id OppAccountId;
	public List<account> SDAccount;
	public Id existingOpp;
	//private final ServiceDesk__c serviceDesk;
	public ServiceDeskCreateOpp(ApexPages.StandardController stdController)
	{
		//this.serviceDesk = (ServiceDesk__c) stdController.getRecord();


		serviceDeskId = apexpages.currentpage().getparameters().get('id');
		System.debug('serviceDeskId=' + serviceDeskId);
		List<ServiceDesk__c> newServiceDesk = [select Client_Company_Name_Organization__c, Opportunity__c from ServiceDesk__c where Id = :serviceDeskId];
		if (newServiceDesk.size() > 0)
		{
			OppAccountId = newServiceDesk[0].Client_Company_Name_Organization__c;
			existingOpp = newServiceDesk[0].Opportunity__c;
		}
		SDAccount = [select id, name from Account where id = :OppAccountId];
		if (SDAccount.size() > 0)
		{
			oppName = SDAccount[0].Name;
		}

		System.debug('OppAccountId=' + OppAccountId);
		System.debug('newServiceDesk=' + newServiceDesk);
		System.debug('oppName=' + oppName);

	}

	public PageReference OppAssociate()
	{
	 System.debug('test');
	 serviceDeskId = apexpages.currentpage().getparameters().get('id');
	 List<ServiceDesk__c> newServiceDesk = [select Client_Company_Name_Organization__c, Opportunity__c from ServiceDesk__c where Id = :serviceDeskId];
	 Id newPageOppId = newServiceDesk[0].Opportunity__c ;
     System.debug (newServiceDesk);
	 
	 if (newServiceDesk.size() > 0)
		{
			OppAccountId = newServiceDesk[0].Client_Company_Name_Organization__c;
			existingOpp = newServiceDesk[0].Opportunity__c;
		    System.debug('existingOpp ='+existingOpp );
		}
		if (existingOpp != null)
		{
			
			newpageOppId = existingOpp;
			
			opportunity newOppySD = new Opportunity();
			
			newOppySD.Id=newPageOppId;
			newOppySD.Service_Desk_Requests__c = serviceDeskId;

			update newOppySD;
		}
		
		ServiceDesk__c newServiceDesk1 = new ServiceDesk__c();
		System.debug('serviceDeskId=' + serviceDeskId + ' op.Id=' + newPageOppId);

		newServiceDesk1.Id = serviceDeskId;
		newServiceDesk1.Opportunity__c = newPageOppId;
		update newServiceDesk1;

				System.debug(System.Label.Opportunity_URL);
		PageReference pageRef = new PageReference(System.Label.Opportunity_URL + '?id=' + newPageOppId+'&sfdc.override=1');

		System.debug(pageRef);
		 return pageRef;
		 
	}

	Public PageReference OppCreate()
	{
		System.debug('in function');
		Opportunity op = new opportunity();
		Id newPageOppId = existingOpp;
		System.debug ('In the function'+newPageOppId);

		if (oppName != null && OppCloseDate != null && OppCloseDate != null)
		{


			//user ServiceDeskOwner = [select id from user where FirstName = 	'Jessica' and LastName ='	Jessica'];
			op.Name = oppName;
			System.debug(oppName);
			op.z_Date_Last_non_USD_Hist_Rate_Check__c = System.today();
			op.StageName = 'Suspect';
			op.CloseDate = OppCloseDate;
			System.debug(OppCloseDate);
			System.debug(SDAccount[0].Id);
			op.AccountId = SDAccount[0].Id;
			op.recordTypeId = [SELECT Id, Name, SobjectType FROM RecordType WHERE SobjectType = 'Opportunity' AND Name = :oppRecordType].Id;
			op.Service_Desk_Requests__c = serviceDeskId;
			op.OwnerId = UserInfo.getUserId();

			insert op;
			newPageOppId = op.Id;
		}
		else
		{
		 ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING,'Please enter value'));
		}
		ServiceDesk__c newServiceDesk = new ServiceDesk__c();
		System.debug('serviceDeskId=' + serviceDeskId + ' op.Id=' + newPageOppId);

		newServiceDesk.Id = serviceDeskId;
		newServiceDesk.Opportunity__c = newPageOppId;
		update newServiceDesk;


		//update newServiceDesk;

		System.debug(System.Label.Opportunity_URL);
		PageReference pageRef = new PageReference(System.Label.Opportunity_URL + '?id=' + newPageOppId+'&sfdc.override=1');

		System.debug(pageRef);
		 return pageRef;
	}

	public List<SelectOption> getSelectOpptyRecordType()
	{
		List<SelectOption> options = new List<SelectOption> ();


		options.add(new SelectOption('', ''));
		options.add(new SelectOption('Default', 'Default'));
		options.add(new SelectOption('Partner Services', 'Partner Services'));
		options.add(new SelectOption('SMB', 'SMB'));
		options.add(new SelectOption('SMB Client Renewal', 'SMB Client Renewal'));
		options.add(new SelectOption('Sub-Contracted Services', 'Sub-Contracted Services'));
		options.add(new SelectOption('Technical Project', 'Technical Project'));

		return options;
	}
	public ServiceDesk__c getOpportunity()
	{
		return[select Opportunity__r.name from ServiceDesk__c limit 1];
	}
}
and here's VF page:
<apex:page standardcontroller="ServiceDesk__c" extensions="ServiceDeskCreateOpp" doctype="html-5.0">
    <apex:form>

        <apex:pageblock id="AssociateOpty">
            <apex:pageMessages ></apex:pageMessages>
            <br /><br />
             <br /><br />
                <apex:commandbutton value="Associate Opportunity" action="{!OppAssociate}"> </apex:commandbutton>

           Choose an existing Opportunity Name :&nbsp;&nbsp; <apex:inputField value="{!ServiceDesk__c.Opportunity__c}"/>
            <br /><br />
            </apex:pageblock>
         <br /><br />
            <b>OR</b>
            <br /><br />
            <apex:pageblock id ="CreateOpty">
                <apex:pageMessages ></apex:pageMessages>
                <br /><br />
                <apex:commandbutton value="Create Opportunity" action="{!OppCreate}"> </apex:commandbutton>
                <br /><br />
            Create a new Opportunity:&nbsp;&nbsp; <apex:input value="{!oppName}" />
            <br /><br />
            Closed Date :&nbsp;&nbsp; <apex:input value="{!OppCloseDate}" type="date" />
            <br /><br />
            <apex:selectlist id="Best2" value="{!oppRecordType}" size="1" required="true">
            Opportunity Type:<apex:selectoptions value="{!SelectOpptyRecordType}" />
            </apex:selectlist>
            <br /><br />
            <br /><br />
            <br /><br />
            <br /><br />
            <br /><br />
            <br /><br />

            <table style="width:100%" border="1">
                <tr>
                    <th>Record Type Name</th>
                    <th>Description</th>
                </tr>
                <tr>
                    <td>Client Renewal</td>
                    <td>Use for all Client Renewal Opportunities including Baseline, Upsell, Cross-sell, or Uptick</td>

                </tr>
                <tr>
                    <td>Default</td>
                    <td>Use for Enterprise, Business Edition, CFS, and sales to Existing Clients. Do NOT use this for PiiQ.</td>
                </tr>

                <tr>
                    <td>Partner Services</td>
                    <td>
                        Use for partners bidding and winning services into CSOD without revenue.
                    </td>
                </tr>
                <tr>
                    <td>SMB</td>
                    <td>Use for SMB Opportunities only (SMB team-owned)</td>
                </tr>
                <tr>
                    <td>
                        SMB Client Renewal
                    </td>
                    <td>Renewal to be used by PiiQ and CFS sales teams</td>
                </tr>
                <tr>
                    <td>Sub-Contracted Services</td>
                    <td>Use for Partners Services sub-contracted back to CSOD</td>

                </tr>
                <tr>
                    <td>Technical Project</td>
                    <td>Used for Technical Projects and additional services</td>
                </tr>




            </table>
        </apex:pageblock>
    </apex:form>
</apex:page>

Any suggestions?