我有一个自定义按钮“提交订单”,只需更改商机阶段。
但我想在更改Stage
之前添加一些验证检查这是我的顶级课程
global class SubmitOrder {
public SubmitOrder(ApexPages.StandardController controller)
{
}
Webservice static string Submit(string oppId)
{
string message = '';
try
{
List<Opportunity> listOpp = new List<Opportunity>();
Opportunity oppNew = [SELECT id, StageName, Destination_Zone__c, Sold__c FROM Opportunity WHERE Id = :oppId];
boolean flag = true;
if(oppNew.StageName!= 'To Be Searched' && oppNew.StageName != 'Search')
{
oppNew.StageName.addError('Stage should be \'To Be Searched\' or \'Presentation\' or \'Search');
flag = false;
}
if( oppNew.Destination_Zone__c == '')
{
oppNew.Destination_Zone__c.addError('Destination Zone is required');
flag = false;
}
if(oppNew.Sold__c < 0)
{
oppNew.Sold__c.addError('Sold is required');
flag = false;
}
if(flag)
{
oppNew.StageName = 'Ticketing';
listOpp.add(oppNew);
if (listOpp != null && !listOpp .isEmpty())
{
Database.update(listOpp);
}
message ='Saved Successfully';
}
catch(System.CalloutException e)
{
message = e.getMessage();
}
return message;
}
}
调用自定义按钮是
{!REQUIRESCRIPT("/soap/ajax/10.0/connection.js")}
{!REQUIRESCRIPT("/soap/ajax/10.0/apex.js")}
var oppId= "{!Opportunity.Id}";
var result = sforce.apex.execute("SubmitOrder","Submit",{oppId:oppId });
但得到以下错误
SObject行不允许出错
任何帮助将不胜感激
提前致谢
答案 0 :(得分:0)
问题在于您正在获取ID并将其传递给一个方法,该方法使用该数据库中已有的ID检索OLD行,并尝试对其使用addError()。它不起作用,因为addError()不适用于数据库中已有的行。
在不知道您的确切要求的情况下,我会提出这个建议 - 将验证规则放在Opportunity对象上。然后,您可以编写按钮,只需更新记录即可。验证规则将负责其余的工作。