2017-03-07 7 views
0

この投稿の私のタイトルは少し混乱させるかもしれませんが、私は可能な限り明確にしようとします。私はApexトリガーの問題に遭遇しています。 Receivables(Managed Packaged)というカスタムオブジェクトがあります。各案件は、1つまたは複数の債権レコードに関連しています。マスタ詳細関係は、Receivableオブジェクトがパッケージ化されて管理されているため、オプションではありません。ここでSalesforce Apexのトリガ - 金額のフィールド値の合計を計算して機会のフィールドを更新してください

は私のロジックです:

、トリガー機会IDと債権機会フィールドIDと一致するIDを持つすべての債権は、(これは、機会を見ている機会(挿入および/または更新)>ループにトリガーを作成します。 > 総額を集計するには、[自動集計合計コミッション]フィールドを合計します。

トリガーはエラーをスローしませんが、自動入力されません。

trigger newRecaivables on Opportunity (after insert, after update) 
{ 
    set<Id> oppid = new set<id>(); 

    list<opportunity> opplist = [select id from opportunity where id in : oppid ]; 

    for(Opportunity Opp : trigger.new) 
    { 
     List<aggregateResult> results = [select Fees_Received_Category__c ,sum(McaApp__Amount__c) total from McaApp__Receivable__c Where McaApp__Opportunity__c in:oppid group by Fees_Received_Category__c]; 

     for(AggregateResult ar : results) 
     { 
      if (String.valueOf(ar.get('Fees_Received_Category__c'))=='Received') 
      { 
       Opp.Total_Commission__c = String.valueOf(ar.get('total')); 
      } 
     } 
    } 
} 

助けてください。

+0

「oppid」が空です。値を追加したり、そのセットを使用してクエリを実行したりすることはありません。 – Reshma

+0

こんにちはReshma、手がかりありがとうございました。私はそれを機能させることができました。 –

+0

ループ内のSOQLを避けるようにしてください – Reshma

答えて

0

トリガーはbefore insert, before updateに発射されます。

trigger.new列挙型で操作しているので、オブジェクトが最初に作成されたとき、または個別に更新されたときに適切な値が設定されます。

+0

提案ありがとうございますが、OpportunityのTotal_Commissionフィールドにはまだ値が設定されていません。 –

関連する問題