2017-03-07 1 views
0

Mein Titel für diesen Beitrag ist vielleicht etwas verwirrend, aber ich werde versuchen, ihn so klar wie möglich zu machen. Ich stoße auf ein Problem mit Apex-Auslöser. Wir haben ein benutzerdefiniertes Objekt mit dem Namen Forderungen (Managed Packaged). Jede Opportunity bezieht sich auf einen oder mehrere Forderungen. Die Master-Detailbeziehung ist keine Option, da das Debitorenobjekt im Paket verwaltet wird.Salesforce Apex-Auslöser - Berechne die Summe der Betragsfeldwerte und aktualisiere das Opportunity-Feld

Hier ist meine Logik:

einen Trigger auf Gelegenheit erstellen (Einsatz und/oder Aktualisierung) > Schleifen alle Forderungen, die passende ID mit getriggerten Gelegenheit ID und Receivable Gelegenheit Feld-ID hat (Dies ist eine Blick Gelegenheit up Feld in Forderungen) > Verwenden Sie aggregiert, um den Betrag zu addieren> Auto Füllen Sie das gesamte Kommissionsfeld aus.

Trigger löst keinen Fehler aus, aber es wird auch nicht automatisch gefüllt.

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')); 
      } 
     } 
    } 
} 

Jede Hilfe wäre willkommen.

+0

'oppid' ist leer. Sie fügen keine Werte hinzu und fragen mit diesem Satz ab. – Reshma

+0

Hi Reshma, Danke für den Hinweis. Ich konnte es zum Laufen bringen. –

+0

Versuchen Sie, SOQL innerhalb der Schleife zu vermeiden – Reshma

Antwort

0

Ihr Auslöser sollte auf before insert, before update feuern.

Da Sie auf der trigger.new Enumeration arbeiten, wird das den richtigen Wert festlegen, wenn das Objekt entweder zuerst erstellt oder separat aktualisiert wird.

+0

Vielen Dank für den Vorschlag, aber es füllt immer noch nicht das Feld Total_Commission in Opportunity. –

Verwandte Themen