• Eswar Varma Mudunuri
  • NEWBIE
  • 10 Points
  • Member since 2018

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 3
    Questions
  • 2
    Replies
I have create one custom object (tracking_histery__c)  then Dynamic Object record update tracking history on trigger in salesforce
public class EventImportTriggerHandler {
    public static Boolean blnSkipEventUpdateTrigger = false;
    private boolean isExecuting = false;
    private integer BatchSize = 0;
    
    public EventImportTriggerHandler(boolean isExecuting, integer size){
        isExecuting = isExecuting;
        BatchSize = size;    
    }
    
    public void OnAfterInsert(EventbriteSync__EventbriteEventImport__c[] newEvent, Map<ID, EventbriteSync__EventbriteEventImport__c> newEventMap){ 
        if(!system.isBatch()){
            UpdateEventBatchClass upe = new UpdateEventBatchClass(newEvent[0].EventbriteSync__EventbriteId__c);
            Database.executeBatch(upe, 1);
        }
     }
     
     public void OnAfterUpdate(EventbriteSync__EventbriteEventImport__c[] oldEvent, EventbriteSync__EventbriteEventImport__c[] updatedEvent, Map<ID, EventbriteSync__EventbriteEventImport__c> eventMap, Map<Id, EventbriteSync__EventbriteEventImport__c> oldEventMap){
        if(!system.isBatch()){
            UpdateEventBatchClass upe = new UpdateEventBatchClass(oldEvent[0].EventbriteSync__EventbriteId__c);
            Database.executeBatch(upe, 1);
        }
        blnSkipEventUpdateTrigger = false;
        
     }
}
My class

public class CLDLY_InvoiceLineItemTriggerHandler {
    public static void beforeInsertEventHandler(List < Apttus_Billing__InvoiceLineItem__c > listInvoiceLines) {
        
        if (listInvoiceLines != null && !listInvoiceLines.isEmpty()) {
            //Apttus_Config2__AssetLineItem__c MAP GENERATION TO GET DATA
            Set < ID > assetsIDs = new Set < ID > ();
            Map < ID, Apttus_Config2__AssetLineItem__c > assetsMap = new Map < ID, Apttus_Config2__AssetLineItem__c > ();
            for (Apttus_Billing__InvoiceLineItem__c a: listInvoiceLines) {
                assetsIDs.add(a.Apttus_Billing__AssetLineItemId__c);
            }
            List < Apttus_Config2__AssetLineItem__c > listOfAsset = [select ID, CLDLY_Consortium_Relationship__c,
                CLDLY_Invoice_Grouping_Key__c,
                CLDLY_Quote_Account__c,CLDLY_Quote_Opportunity__c,CLDLY_Quote_Vendor_Account__c                                                    
                from Apttus_Config2__AssetLineItem__c where ID in: assetsIDs
            ];

            for (Apttus_Config2__AssetLineItem__c asset: listOfAsset) {
                assetsMap.put(asset.ID, asset);
            }
            //Apttus_Billing__InvoiceLineItem__c LOOP TO POPULATE THE VALUES
            for (Apttus_Billing__InvoiceLineItem__c invoiceLineItemSO: listInvoiceLines) {
                system.debug('Before INSERT CLDLY_InvoiceLineItemTriggerHandler 0 *************************');
                if (invoiceLineItemSO.Apttus_Billing__BillingScheduleId__c != NULL && invoiceLineItemSO.Apttus_Billing__AssetLineItemId__c != NULL) {
                    system.debug('Before INSERT CLDLY_InvoiceLineItemTriggerHandler 1 *************************');

                    if (assetsMap.containsKey(invoiceLineItemSO.Apttus_Billing__AssetLineItemId__c) &&
                        assetsMap.get(invoiceLineItemSO.Apttus_Billing__AssetLineItemId__c).CLDLY_Invoice_Grouping_Key__c != NULL &&
                        assetsMap.get(invoiceLineItemSO.Apttus_Billing__AssetLineItemId__c).CLDLY_Quote_Account__c != NULL &&
                        assetsMap.get(invoiceLineItemSO.Apttus_Billing__AssetLineItemId__c).CLDLY_Quote_Opportunity__c != NULL &&
                        assetsMap.get(invoiceLineItemSO.Apttus_Billing__AssetLineItemId__c).CLDLY_Quote_Vendor_Account__c != NULL
                    ) {
                        system.debug('Before INSERT CLDLY_InvoiceLineItemTriggerHandler 2 COPIED VALUES FROM Assets *************************');

                        // SET FROM  ASSETS
                        invoiceLineItemSO.CLDLY_Invoice_Grouping_Key__c = assetsMap.get(invoiceLineItemSO.Apttus_Billing__AssetLineItemId__c).CLDLY_Invoice_Grouping_Key__c;
                        invoiceLineItemSO.CLDLY_Quote_Account__c = assetsMap.get(invoiceLineItemSO.Apttus_Billing__AssetLineItemId__c).CLDLY_Quote_Account__c;
                        invoiceLineItemSO.CLDLY_Quote_Opportunity__c = assetsMap.get(invoiceLineItemSO.Apttus_Billing__AssetLineItemId__c).CLDLY_Quote_Opportunity__c;
                        invoiceLineItemSO.CLDLY_Quote_Vendor_Account__c = assetsMap.get(invoiceLineItemSO.Apttus_Billing__AssetLineItemId__c).CLDLY_Quote_Vendor_Account__c;
                        
                        if(assetsMap.get(invoiceLineItemSO.Apttus_Billing__AssetLineItemId__c).CLDLY_Consortium_Relationship__c != NULL){
                          invoiceLineItemSO.CLDLY_Consortium_Relationship__c = assetsMap.get(invoiceLineItemSO.Apttus_Billing__AssetLineItemId__c).CLDLY_Consortium_Relationship__c;
                        }

                    }
                }
            }


        }
    }
    public static void beforeUpdateEventHandler(Map < Id, Apttus_Billing__InvoiceLineItem__c > mapInvoiceLineItem, Map < Id, Apttus_Billing__InvoiceLineItem__c > mapInvoiceLineItemOld) {
        if (mapInvoiceLineItem != null && !mapInvoiceLineItem.isEmpty()) {
            for (Apttus_Billing__InvoiceLineItem__c invoiceLineItemSO: mapInvoiceLineItem.values()) {

                system.debug('before Update beforeUpdateEventHandler CLDLY_InvoiceLineItemTriggerHandler 2 Populated all formulaaasss *************************');

            }

        }
    }
    //To update Invoices
    //
    public static void updateInvoiceEventHandler(List < Apttus_Billing__InvoiceLineItem__c > listInvoiceLines) {
        
        if (listInvoiceLines != null && !listInvoiceLines.isEmpty()) {
        system.debug('$$%% 1 updateInvoiceEventHandler => '+listInvoiceLines.size());
              Map<ID, Apttus_Billing__Invoice__c> parentOpps = new Map<ID, Apttus_Billing__Invoice__c>(); //Making it a map instead of list for easier lookup
              List<Id> listIds = new List<Id>();
            
              for (Apttus_Billing__InvoiceLineItem__c childObj : listInvoiceLines) {
                listIds.add(childObj.Apttus_Billing__InvoiceId__c);
              }
            
              //Populate the map. Also make sure you select the field you want to update
              parentOpps = new Map<Id, Apttus_Billing__Invoice__c>([SELECT id,Name, CLDLY_Invoice_Grouping_Key__c, CLDLY_Quote_Account__c,CLDLY_Quote_Opportunity__c,CLDLY_Quote_Vendor_Account__c, (SELECT ID, CLDLY_Invoice_Grouping_Key__c, CLDLY_Quote_Account__c,CLDLY_Quote_Opportunity__c, CLDLY_Quote_Vendor_Account__c FROM Apttus_Billing__InvoiceLineItems__r) FROM Apttus_Billing__Invoice__c WHERE ID IN :listIds]);
            
              for (Apttus_Billing__InvoiceLineItem__c quote: listInvoiceLines){
                 system.debug('$$%% 2 updateInvoiceEventHandler  => quote.ID => '+quote.ID); 
                 if(quote.CLDLY_Invoice_Grouping_Key__c != NULL){
                     Apttus_Billing__Invoice__c myParentOpp = parentOpps.get(quote.Apttus_Billing__InvoiceId__c);
                     myParentOpp.CLDLY_Invoice_Grouping_Key__c = quote.CLDLY_Invoice_Grouping_Key__c;
                     myParentOpp.CLDLY_Quote_Account__c = quote.CLDLY_Quote_Account__c; 
                     myParentOpp.CLDLY_Quote_Opportunity__c = quote.CLDLY_Quote_Opportunity__c;
                     myParentOpp.CLDLY_Quote_Vendor_Account__c = quote.CLDLY_Quote_Vendor_Account__c;
                     system.debug('$$%% 3 updateInvoiceEventHandler  => myParentOpp.ID => '+myParentOpp.ID); 
                 } 
              }
            
            if(parentOpps.values().size() > 0){
                system.debug('$$%% 4 updateInvoiceEventHandler  => parentOpps.values().size() => '+parentOpps.values().size()); 
                update parentOpps.values();
            }else{
                system.debug('$$%% 5 parentOpps.values().size() => '+parentOpps.values().size());
            }
        }
    }
}
public class EventImportTriggerHandler {
    public static Boolean blnSkipEventUpdateTrigger = false;
    private boolean isExecuting = false;
    private integer BatchSize = 0;
    
    public EventImportTriggerHandler(boolean isExecuting, integer size){
        isExecuting = isExecuting;
        BatchSize = size;    
    }
    
    public void OnAfterInsert(EventbriteSync__EventbriteEventImport__c[] newEvent, Map<ID, EventbriteSync__EventbriteEventImport__c> newEventMap){ 
        if(!system.isBatch()){
            UpdateEventBatchClass upe = new UpdateEventBatchClass(newEvent[0].EventbriteSync__EventbriteId__c);
            Database.executeBatch(upe, 1);
        }
     }
     
     public void OnAfterUpdate(EventbriteSync__EventbriteEventImport__c[] oldEvent, EventbriteSync__EventbriteEventImport__c[] updatedEvent, Map<ID, EventbriteSync__EventbriteEventImport__c> eventMap, Map<Id, EventbriteSync__EventbriteEventImport__c> oldEventMap){
        if(!system.isBatch()){
            UpdateEventBatchClass upe = new UpdateEventBatchClass(oldEvent[0].EventbriteSync__EventbriteId__c);
            Database.executeBatch(upe, 1);
        }
        blnSkipEventUpdateTrigger = false;
        
     }
}
I'm unable to check step 2: Automate Accounts because I'm receiving this error: Challenge Not yet complete... here's what's wrong: 
There was an unexpected error while verifying this challenge. Usually this is due to some pre-existing configuration or code in the challenge Org. We recommend using a new Developer Edition (DE) to check this challenge. If you're using a new DE and seeing this error, please post to the developer forums and reference error id: ZKCVFIZH