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
kevin.chileskevin.chiles 

Error with On Click JavaScript

Hello,

 

I am currently running into an error with my Java script.  The funny thing is a few days ago this worked perfectly, now it seems to fail.  Can anyone help me or tell me where I went wrong?  This is a custom button on Cases that creates an Opportunity.

 

{!REQUIRESCRIPT("/soap/ajax/19.0/connection.js")}

var opptyObj = new sforce.SObject("Opportunity");
var caseObj = new sforce.SObject("Case");
var today = new Date();
var sOpptyId = "{!Case.Opportunity__c}";

if( sOpptyId != "")
{
alert("This case is already tied to an opportunity!");
}
else
{
opptyObj.AccountId = "{!Case.AccountId}";
opptyObj.CloseDate = sforce.internal.dateTimeToString(today);
opptyObj.Description="{!Case.Description}";
opptyObj.Case__c = "{!Case.Id}";
opptyObj.Name = "{!Case.Subject}";
opptyObj.StageName = "Estimate in Progress";
opptyObj.Created_from_Case__c = "Y";
opptyObj.Type = "New Business";
opptyObj.Amount = .01;

var opptyresult = sforce.connection.create([opptyObj]);

if (opptyresult[0].success=='false')
{
alert("Opportunity creation failed: " + opptyresult[0].errors.message);
}
else
{
caseObj.Id = '{!Case.Id}';
caseObj.Opportunity__c = opptyresult[0].id;
caseObj.Status = "Estimate in Progress";

var caseResult = sforce.connection.update([caseObj]);

if(caseResult[0].success == 'false')
{
alert("Case update failed: " + caseResult[0].errors.message);
}
else
{
alert("An opportunity has been created and linked to this case.");
location.reload(true);
}
}
}

 

Best Answer chosen by Admin (Salesforce Developers) 
kevin.chileskevin.chiles

So the code above had an issue calling on multiple lines within the Description field.  Anytime there was a line break the code would fail.  So to fix it I re wrote the description portion as such.

 

{!REQUIRESCRIPT("/soap/ajax/28.0/connection.js")};


var opptyObj = new sforce.SObject("Opportunity");
var caseObj = new sforce.SObject("Case");
var today = new Date();
var sOpptyId = "{!Case.Opportunity__c}";

if( sOpptyId != "")
{
alert("This case is already tied to an opportunity!");
}
else
{
opptyObj.AccountId = "{!Case.AccountId}";
opptyObj.CloseDate = sforce.internal.dateTimeToString(today);
opptyObj.Description="{!JSENCODE(Case.Description)}";
opptyObj.Case__c = "{!Case.Id}";
opptyObj.Name = "{!Case.Subject}";
opptyObj.StageName = "Estimate in Progress";
opptyObj.Created_from_Case__c = "Y";
opptyObj.Type = "New Business";
opptyObj.Amount = ".01";

var opptyresult = sforce.connection.create([opptyObj]);

if (opptyresult[0].success=='false')
{
alert("Opportunity creation failed: " + opptyresult[0].errors.message);
}
else
{
caseObj.Id = '{!Case.Id}';
caseObj.Opportunity__c = opptyresult[0].id;
caseObj.Status = "Estimate in Progress";

var caseResult = sforce.connection.update([caseObj]);

if(caseResult[0].success == 'false')
{
alert("Case update failed:" + caseResult[0].errors.message);
}
else
{
alert("An opportunity has been created and linked to this case.");
location.reload(true);
}
}
}

 

The use of the JSENCODE function resolved this.  Just wanted to make sure my post was updated for all of the users.

All Answers

Avidev9Avidev9
Are you getting any error ?
Can you specify the error from the console ?
kevin.chileskevin.chiles

Hello @Avi, 

 

The error that I am experiencing states that A problem with the OnClick JavaScript for this button or link wan encountered.

 

Syntax error

kevin.chileskevin.chiles

Here is the code with a small update to be supported by Summer 13

 

{!REQUIRESCRIPT("/soap/ajax/28.0/connection.js")}

var opptyObj = new sforce.SObject("Opportunity");
var caseObj = new sforce.SObject("Case");
var today = new Date();
var sOpptyId = "{!Case.Opportunity__c}";

if( sOpptyId != "")
{
alert("This case is already tied to an opportunity!");
}
else
{
opptyObj.AccountId = "{!Case.AccountId}";
opptyObj.CloseDate = sforce.internal.dateTimeToString(today);
opptyObj.Description="{!Case.Description}";
opptyObj.Case__c = "{!Case.Id}";
opptyObj.Name = "{!Case.Subject}";
opptyObj.StageName = "Estimate in Progress";
opptyObj.Created_from_Case__c = "Y";
opptyObj.Type = "New Business";
opptyObj.Amount = ".01";

var opptyresult = sforce.connection.create([opptyObj]);

if (opptyresult[0].success=='false')
{
alert("Opportunity creation failed: " + opptyresult[0].errors.message);
}
else
{
caseObj.Id = '{!Case.Id}';
caseObj.Opportunity__c = opptyresult[0].id;
caseObj.Status = "Estimate in Progress";

var caseResult = sforce.connection.update([caseObj]);

if(caseResult[0].success == 'false')
{
alert("Case update failed: " + caseResult[0].errors.message);
}
else
{
alert("An opportunity has been created and linked to this case.");
location.reload(true);
}
}
}

 

 

However this still fails.  Current Error message is

 

A problem with the OnClick JavaScript for this button or link was encountered:

unterminated string literal

 

kevin.chileskevin.chiles

It seems that the best way to make sure your not crazy, is to delete your old work and start again.  I Deleted my old button and readded a new one with my new code, and voila!  Worked like a champ.  

 

Kevin Chiles

kevin.chileskevin.chiles

So the code above had an issue calling on multiple lines within the Description field.  Anytime there was a line break the code would fail.  So to fix it I re wrote the description portion as such.

 

{!REQUIRESCRIPT("/soap/ajax/28.0/connection.js")};


var opptyObj = new sforce.SObject("Opportunity");
var caseObj = new sforce.SObject("Case");
var today = new Date();
var sOpptyId = "{!Case.Opportunity__c}";

if( sOpptyId != "")
{
alert("This case is already tied to an opportunity!");
}
else
{
opptyObj.AccountId = "{!Case.AccountId}";
opptyObj.CloseDate = sforce.internal.dateTimeToString(today);
opptyObj.Description="{!JSENCODE(Case.Description)}";
opptyObj.Case__c = "{!Case.Id}";
opptyObj.Name = "{!Case.Subject}";
opptyObj.StageName = "Estimate in Progress";
opptyObj.Created_from_Case__c = "Y";
opptyObj.Type = "New Business";
opptyObj.Amount = ".01";

var opptyresult = sforce.connection.create([opptyObj]);

if (opptyresult[0].success=='false')
{
alert("Opportunity creation failed: " + opptyresult[0].errors.message);
}
else
{
caseObj.Id = '{!Case.Id}';
caseObj.Opportunity__c = opptyresult[0].id;
caseObj.Status = "Estimate in Progress";

var caseResult = sforce.connection.update([caseObj]);

if(caseResult[0].success == 'false')
{
alert("Case update failed:" + caseResult[0].errors.message);
}
else
{
alert("An opportunity has been created and linked to this case.");
location.reload(true);
}
}
}

 

The use of the JSENCODE function resolved this.  Just wanted to make sure my post was updated for all of the users.

This was selected as the best answer