Как вытащить поля из записи в Apex Trigger

Я пытаюсь понять, как создать триггер Apex, который запускает разные классы в зависимости от типа возможности. Я добавил то, что, как я думал, будет работать ниже, но, похоже, это не тянет поля, как я думал. Может кто-нибудь показать мне, как вытащить значения из обновленной записи? Любая помощь приветствуется, так как я пытаюсь исправить это как можно скорее.

trigger OrderRollupSummaryTrigger on Order_Location_Package__c (after insert, after update, after delete, after undelete) {

if (Order_Location_Package__c.Order_Sheet__c.Opportunity__c.Type = 'NEW' || Order_Location_Package__c.Order_Sheet__c.Opportunity__c.Type = 'Renewal') {
    if (trigger.isAfter && (trigger.isInsert || trigger.isUpdate || trigger.isUndelete)) {
        OrderLocationRollupSummary.rollupOrderPackages(trigger.new);
    }
    else if (trigger.isAfter && trigger.isDelete) {
        OrderLocationRollupSummary.rollupOrderPackages(trigger.old);
    }
}

else if (Order_Location_Package__c.Order_Sheet__c.Opportunity__c.Type != 'NEW' || Order_Location_Package__c.Order_Sheet__c.Opportunity__c.Type != 'Renewal') {
    if (trigger.isAfter && (trigger.isInsert || trigger.isUpdate || trigger.isUndelete)) {
        OrderLocationRollupSummaryOther.rollupOrderPackages(trigger.new);
    }
    else if (trigger.isAfter && trigger.isDelete) {
        OrderLocationRollupSummaryOther.rollupOrderPackages(trigger.old);
    }
}
}

Благодаря!

1 ответ

Решение

После долгого чтения я нашел лучший способ сделать это. В частности, с полем формулы (чтобы избежать запросов SOQL в триггере).

trigger OrderLocationRollupSummaryTrigger on Order_Location_Package__c (after insert, after update, after delete, after undelete) {
    
    List<Order_Location_Package__c> orderLocationPackageRenewalList = new list<Order_Location_Package__c>();
    List<Order_Location_Package__c> orderLocationPackageOtherList = new list<Order_Location_Package__c>();

    //Check and add the records to list based on condition
    if (trigger.isAfter && (trigger.isInsert || trigger.isUpdate || trigger.isUndelete)) {
        for(Order_Location_Package__c olp: trigger.new)
            if(olp.Opportunity_Type__c == 'NEW' || olp.Opportunity_Type__c == 'Renewal')
                orderLocationPackageRenewalList.add(olp);
            else
                orderLocationPackageOtherList.add(olp);
    }
    else if (trigger.isAfter && trigger.isDelete) {
        for(Order_Location_Package__c olp: trigger.old)
            if(olp.Opportunity_Type__c == 'NEW' || olp.Opportunity_Type__c == 'Renewal')
                orderLocationPackageRenewalList.add(olp);
            else
                orderLocationPackageOtherList.add(olp);     
    }


    //Send the records for processing to RollupSummary class
    if(orderLocationPackageRenewalList!=null && !orderLocationPackageRenewalList.isEmpty())
        OrderLocationRollupSummary.rollupOrderPackages(orderLocationPackageRenewalList);

    //Send the records not meeting the criteria to other RollupSummary class
    if(orderLocationPackageOtherList!=null && !orderLocationPackageOtherList.isEmpty())
        OrderLocationRollupSummaryOther.rollupOrderPackages(orderLocationPackageOtherList);

}
Другие вопросы по тегам