2012-04-18 4 views
0

私は、簡単な変更のオポチュニティーステージであるカスタムボタン "Submit Order"を持っています。CustomforceボタンからSalesforce Opportunityのバリデーション

は、しかし、私はステージ

ここ

を変更する前に、いくつかの検証チェックを追加したい私の頂点クラス

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行はエラーを許可しません

すべてのヘルプは、問題はあなたがIDを取得し、データベースにすでにあるそのIDとOLD行を取得するメソッドにそれを渡しているということである事前

答えて

0

おかげでいただければ幸いですaddError()を使用しようとしています。 addError()はすでにデータベースにある行では機能しないため、動作しません。

あなたの正確な要件を知らないと、私はこの提案をするでしょう - Opportunityオブジェクトに検証ルールを入れてください。次に、レコードを更新するだけでボタンをコーディングすることができます。バリデーションルールは残りの部分を処理します。

+0

naomi、新しいOpportunityオブジェクトを取得し、そのオブジェクトにバリデーションを追加すると、古いレコードをどのように更新するのですか? –

+0

これは私が言っていることです。 YourName-> Setup-> Customise-> Opportunities-> ValidationRulesに行き、いくつかのバリデーションルールを作成します。更新がルールに従わない限り、更新が先に進まないようにします。あなたのボタンが行う必要があるのはプレーンなアップデートであり、そのアップデートが実際に起こるかどうかはバリデーションルールによって決まります。 – naomi

+0

妥当性検査のルールを追加すると、それらも標準の「保存」ボタンにも適用されます。カスタムボタンの妥当性確認は –

関連する問題