You need to sign in to do that
Don't have an account?
Shannon Andreas 1
URL list button hack...not bringing over Account Name and Opportunity Name from Quote to Contract
Trying to create a custom list button, "Generate Contract" that will pre-populate fields from the Quote object to the Contract object through URL. I can get everything to pass except for the lookup fields: Opportunity Name and Account Name.
I have tried this 100 different ways! Here is what I have now for the custom button created on the contract and placed on a related list in the quote::
/800/e?ctrc7={!Opportunity.AccountId}&
CF00NS0000001SGhG={!Opportunity.Id}&
retURL={!Quote.Id}
Here is the result:
https://cs1.salesforce.com/800/e?ctrc7=&CF00NS0000001SGhG=&retURL=0Q0S0000000Dw8F
Just in case anyone is wondering, I did not use the account name and opportunity listed on the Quote because I cannot find the field names when I "view source". I think that I read somewhere that is because those fields are pulled from the opportunity. So I have tried both the Opportunity and Account IDs, Names, etc.
Please help! I have been working on this for weeks and no one seems to be able to help.
Thanks in advance,
Shannon
I have tried this 100 different ways! Here is what I have now for the custom button created on the contract and placed on a related list in the quote::
/800/e?ctrc7={!Opportunity.AccountId}&
CF00NS0000001SGhG={!Opportunity.Id}&
retURL={!Quote.Id}
Here is the result:
https://cs1.salesforce.com/800/e?ctrc7=&CF00NS0000001SGhG=&retURL=0Q0S0000000Dw8F
Just in case anyone is wondering, I did not use the account name and opportunity listed on the Quote because I cannot find the field names when I "view source". I think that I read somewhere that is because those fields are pulled from the opportunity. So I have tried both the Opportunity and Account IDs, Names, etc.
Please help! I have been working on this for weeks and no one seems to be able to help.
Thanks in advance,
Shannon
{!REQUIRESCRIPT("/soap/ajax/33.0/connection.js")}
var url = '/800/e?'
var myquery = "Select Id, Account.Id, Account.Name, Opportunity.Id, Opportunity.Name, Service_Effective_Date__c, Contract_Term__c, Total_Contract_Value__c from Quote WHERE Id = '{!Quote.Id}' limit 1";
result = sforce.connection.query(myquery);
records = result.getArray("records");
if(records[0]){
var quoteOpportunity = records[0];
url += 'ctrc7=' + quoteOpportunity.Account.Name;
url += '&CF00NS0000001SGhG=' + quoteOpportunity.Opportunity.Name;
url += '&ctrc5=' + quoteOpportunity.Service_Effective_Date__c;
url += '&ctrc40=' + quoteOpportunity.Contract_Term__c;
url += '&00N3000000B9WLE=' + quoteOpportunity.Total_Contract_Value__c;
}
url += '&retURL={!Quote.Id}';
window.parent.open(url, "_self");
There was something in the "var myquery" verbiage that it didn't like. Maybe an extra "hidden" character or something. So I just copied and pasted the original verbiage and added each field manually as I added them to the code. Also had to change some of the CF id's to the standard id's ctrc 5 and ctrc 40. Also, I had the wrong id from the last one.
Only problem now is the service effective date is copying over in the wrong format: 2015-08-15 vs 08/15/2015. Really strange as it appears on the form correctly on the Quote. The data types are the same as well.
Thanks Neetu. I appreciate you sticking with me on this!! I will use this code for future scripts and hopefully learn how to create them on my own!
Shannon
All Answers
Please change the behaviour of custom button and select 'Exceute Javascript'. Paste the below code and it will work:
{!REQUIRESCRIPT("/soap/ajax/33.0/connection.js")}
var url = '/800/e?'
var myquery = "Select Id, Account.Id, Account.Name, Opportunity.Id from Quote WHERE Id = '{!Quote.Id}' limit 1";
result = sforce.connection.query(myquery);
records = result.getArray("records");
if(records[0]){
var quoteOpportunity = records[0];
url += 'ctrc7=' + quoteOpportunity.Account.Name;
url += '&CF00NS0000001SGhG=' + quoteOpportunity.Opportunity.Id;
}
url += '&retURL={!Quote.Id}';
window.parent.open(url, "_self");
Please mark this as answer if it helps, so it will help others also.
Thanks,
Neetu
Thanks so much for responding!
It works, however, it is pasting the Opportunity Id as is and not the actual name of the opportunity:
https://cs1.salesforce.com/800/e?ctrc7=Test%20phone%20number%20acct%202&CF00NS0000001SGhG=006S0000008zmQLIAY&retURL=0Q0S0000000Dw8F
I tried changing the oppty line on the code to:
url += '&CF00NS0000001SGhG=' + quoteOpportunity.Opportunity.Name;
Also tried:
but it came back with an entry "undefined".
url += '&CF00NS0000001SGhG_lkid=' + quoteOpportunity.Opportunity.Id;
but nothing appeared.
Thanks again for your response!
BTW, I knew I needed javascript and went down that road on another post. I kind of understand it when I see it, but to create it always seems a challenge! I would like to know how to do this as I don't like working with complex URL hacks.
Shannon
Please use this:
{!REQUIRESCRIPT("/soap/ajax/33.0/connection.js")}
var url = '/800/e?'
var myquery = "Select Id, Account.Id, Account.Name, Opportunity.Id, Opportunity.Name from Quote WHERE Id = '{!Quote.Id}' limit 1";
result = sforce.connection.query(myquery);
records = result.getArray("records");
if(records[0]){
var quoteOpportunity = records[0];
url += 'ctrc7=' + quoteOpportunity.Account.Name;
url += '&CF00NS0000001SGhG=' + quoteOpportunity.Opportunity.Name;
}
url += '&retURL={!Quote.Id}';
window.parent.open(url, "_self");
Please mark this as answer if it helps, so it will help others also.
Thanks,
Neetu
I want to add some other fields to the code...all are custom fields on Quote to custom and standard fields on Contract.
Quote field: Service_Effective_Date__c to Contract field: StartDate
Quote field: Contract_Term__c to Contract field: ContractTerm
Quote field: Total_Contract_Value__c to Contract field: Total_Contract_Value__c
Thanks!
Shannon
For populating these fields by default, I will need the id of these fields as for Account and Opportunity, you already provided.
Thanks,
Neetu
Quote field: Service_Effective_Date__c to Contract field: StartDate
CF00N3000000B8gqG to Contract.StartDate or ctrc5
Quote field: Contract_Term__c to Contract field: ContractTerm
CF00N3000000B8gr4 to Contract.ContractTerm or ctrc15
Quote field: Total_Contract_Value__c to Contract field: Total_Contract_Value__c
CF00NS0000001SDl5 to Contract field: CF00N3000000B9WLE
Use this piece of code:
{!REQUIRESCRIPT("/soap/ajax/33.0/connection.js")}
var url = '/800/e?'
var myquery = "Select Id, Account.Id, Account.Name, Opportunity.Id, Opportunity.Name,
Service_Effective_Date__c, Contract_Term__c, Total_Contract_Value__c from Quote WHERE Id = '{!Quote.Id}' limit 1";
result = sforce.connection.query(myquery);
records = result.getArray("records");
if(records[0]){
var quoteOpportunity = records[0];
url += 'ctrc7=' + quoteOpportunity.Account.Name;
url += '&CF00NS0000001SGhG=' + quoteOpportunity.Opportunity.Name;
url += '&CF00N3000000B8gqG=' + quoteOpportunity.Service_Effective_Date__c;
url += '&CF00N3000000B8gr4=' + quoteOpportunity.Contract_Term__c;
url += '&CF00NS0000001SDl5=' + quoteOpportunity.Total_Contract_Value__c;
}
url += '&retURL={!Quote.Id}';
window.parent.open(url, "_self");
Please mark this as answer if it helps, so it will help others also.
Thanks,
Neetu
Getting an "unterminated string literal" error.
There is some javascript error, I might need the data to check the issue.
No I have just use the varible name as 'quoteOpportunity'. You can rename it as 'quoteRec' or anything. And yes, I'm pulling the information from Quote.
Thanks,
Neetu
Will advise.
Thanks,
Shannon
"Unexpected token ILLEGAL"
Just put one alert of url, before window.open like:
{!REQUIRESCRIPT("/soap/ajax/33.0/connection.js")}
var url = '/800/e?'
var myquery = "Select Id, Account.Id, Account.Name, Opportunity.Id, Opportunity.Name,
Service_Effective_Date__c, Contract_Term__c, Total_Contract_Value__c from Quote WHERE Id = '{!Quote.Id}' limit 1";
result = sforce.connection.query(myquery);
records = result.getArray("records");
if(records[0]){
var quoteOpportunity = records[0];
url += 'ctrc7=' + quoteOpportunity.Account.Name;
url += '&CF00NS0000001SGhG=' + quoteOpportunity.Opportunity.Name;
url += '&CF00N3000000B8gqG=' + quoteOpportunity.Service_Effective_Date__c;
url += '&CF00N3000000B8gr4=' + quoteOpportunity.Contract_Term__c;
url += '&CF00NS0000001SDl5=' + quoteOpportunity.Total_Contract_Value__c;
}
url += '&retURL={!Quote.Id}';
alert( url);
window.parent.open(url, "_self");
Give me the url which you get then we can debug the issue.
Thanks,
Neetu
{!REQUIRESCRIPT("/soap/ajax/33.0/connection.js")}
var url = '/800/e?'
var myquery = "Select Id, Account.Id, Account.Name, Opportunity.Id, Opportunity.Name, Service_Effective_Date__c, Contract_Term__c, Total_Contract_Value__c from Quote WHERE Id = '{!Quote.Id}' limit 1";
result = sforce.connection.query(myquery);
records = result.getArray("records");
if(records[0]){
var quoteOpportunity = records[0];
url += 'ctrc7=' + quoteOpportunity.Account.Name;
url += '&CF00NS0000001SGhG=' + quoteOpportunity.Opportunity.Name;
url += '&ctrc5=' + quoteOpportunity.Service_Effective_Date__c;
url += '&ctrc40=' + quoteOpportunity.Contract_Term__c;
url += '&00N3000000B9WLE=' + quoteOpportunity.Total_Contract_Value__c;
}
url += '&retURL={!Quote.Id}';
window.parent.open(url, "_self");
There was something in the "var myquery" verbiage that it didn't like. Maybe an extra "hidden" character or something. So I just copied and pasted the original verbiage and added each field manually as I added them to the code. Also had to change some of the CF id's to the standard id's ctrc 5 and ctrc 40. Also, I had the wrong id from the last one.
Only problem now is the service effective date is copying over in the wrong format: 2015-08-15 vs 08/15/2015. Really strange as it appears on the form correctly on the Quote. The data types are the same as well.
Thanks Neetu. I appreciate you sticking with me on this!! I will use this code for future scripts and hopefully learn how to create them on my own!
Shannon