function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
JAckerman09JAckerman09 

Required Field Missing, (Only When Running Test) But I Can't Figure Out Why...

I am running a test on a trigger that creates a new 'Distribution Destination' record whenever a Case is saved with a picklist set to 'Create New Distribution Destination'.

 

Here's the trigger, which works when I manually test it by saving a case with the picklist set to 'Create New Distribution Destination':

 

I also put a note in the middle starting with DEBUG LOGS SHOW, which points out another confusing point.

 

Here's the error I'm getting when I run the test: 

 

System.DmlException: Insert failed. First exception on row 0; first error: CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY, CreateNewDistributionDestination: execution of AfterInsert caused by: System.DmlException: Insert failed. First exception on row 0; first error: REQUIRED_FIELD_MISSING, Required fields are missing: [Relationship__c]: [Relationship__c] Trigger.CreateNewDistributionDestination: line 126, column 1: []

 

Stack Trace:

Class.TestCreateNewDistributionDestination.testUpdateCaseToCreateNew: line 209, column 1

 

The line that is referenced is when the new Distribution Lists are inserted in the trigger. Again, this seems to work when I run it manually, so I am assuming that the error is in the test class' handling of the account id.

 

The test code is below the trigger, thanks for any assistance that could be offered!!

 

trigger CreateNewDistributionDestination on Case (after insert, after update) {
    
    List<Disbursement_Destination__c> DDList = new List<Disbursement_Destination__c> ();
    Id DDRT;
    
    List<Case> CasesToActOn = [
        SELECT 
            c.Receiving_Account_s_Number_Case__c,
            c.Receiving_Account_s_Name_Case__c,
            c.Payee_s_Name_Case__c, 
            c.Payee_s_Street_Case__c, 
            c.Payee_s_City_Case__c, 
            c.Payee_s_State_Case__c, 
            c.Payee_s_Zip_Code_Case__c,
            c.Payee_s_Country_Case__c,
            c.Receiving_Bank_s_Name_Case__c,
            c.Receiving_Bank_s_ABA_ACH_Case__c,
            c.Receiving_Bank_s_ABA_Wire_Case__c,
            c.Receiving_Bank_s_Street_Case__c, 
            c.Receiving_Bank_s_City_Case__c, 
            c.Receiving_Bank_s_State_Case__c, 
            c.Receiving_Bank_s_Zip_Code_Case__c, 
            c.Receiving_Bank_s_Country_Case__c,
            c.Account.Id, 
            c.RecordType.name,
            c.RecordType.developername,
            c.Existing_or_New_Disbursement_Destination__c
        FROM Case c
        WHERE Existing_or_New_Disbursement_Destination__c = 'Use/Create a New Disbursement Destination'
            AND c.id IN :Trigger.new
        FOR UPDATE
    ];
    
///// DEBUG LOGS SHOW CasesToActOn.size()=1, YET IT DOES NOT RUN THE SYSTEM.DEBUG CODE WITHIN THE IF STATEMENT, ANY IDEA WHY??? When I ran it without the If statement, I got an error that the reference was out of range. Very confused on this point. /////
system.debug('Account ID: ' + CasesToActOn.size()); if(CasesToActOn.size()>0){ system.debug('Account ID: ' + CasesToActOn.get(0).account.id); } Map<String,Id> DDRTMap = new Map<String,Id>{}; List<RecordType> DDRTList = [ SELECT r.DeveloperName, r.Id, r.Name FROM RecordType r WHERE sObjectType = 'Disbursement_Destination__c']; system.debug('LIST OF ALL DD RECORD TYPES:' + DDRTList); for(RecordType RT: DDRTList){ DDRTMap.put(RT.DeveloperName,RT.Id); } system.debug('MAPPED RECORD TYPES' + DDRTMap); for (Case ac: CasesToActOn){ system.debug('Now Im in the FOR LOOP'); IF(ac.Recordtype.developerName == 'Fund_Transfer_Wire'){ DDRT = DDRTMap.get('Disbursement_Destination_Wire'); system.debug('Wire Case RT:' + ac.recordtype.developername + ' -- DD RT:' + DDRTMap.get('Disbursement_Destination_Wire')); } Else IF(ac.Recordtype.developerName == 'Fund_Transfer_ACH'){ DDRT = DDRTMap.get('Disbursement_Destination_ACH'); system.debug('ACH Case RT:' + ac.recordtype.developername + ' -- DD RT:' + DDRTMap.get('Disbursement_Destination_ACH')); } Else IF(ac.Recordtype.developerName == 'Fund_Transfer_Check'){ DDRT = DDRTMap.get('Disbursement_Destination_Check'); system.debug('Check Case RT:' + ac.recordtype.developername + ' -- DD RT:' + DDRTMap.get('Disbursement_Destination_Check')); } if(Trigger.isUpdate){ if(ac.Existing_or_New_Disbursement_Destination__c != trigger.oldMap.get(ac.Id).Existing_or_New_Disbursement_Destination__c){ system.debug('Now Im in the ISUPDATE'); DDList.add(new Disbursement_Destination__c( Name = ac.Receiving_Account_s_Number_Case__c, Receiving_Account_s_Name__c = ac.Receiving_Account_s_Name_Case__c, Payee_s_Name__c = ac.Payee_s_Name_Case__c, Payee_s_Street__c = ac.Payee_s_Street_Case__c, Payee_s_City__c = ac.Payee_s_Street_Case__c, Payee_s_State__c = ac.Payee_s_State_Case__c, Payee_s_Zip_Code__c = ac.Payee_s_Zip_Code_Case__c, Payee_s_Country__c = ac.Payee_s_Country_Case__c, Receiving_Bank_s_Name__c = ac.Receiving_Bank_s_Name_Case__c, Receiving_Bank_s_ABA_Wire__c = ac.Receiving_Bank_s_ABA_Wire_Case__c, Receiving_Bank_s_ABA_ACH__c = ac.Receiving_Bank_s_ABA_ACH_Case__c, Receiving_Bank_s_Street__c = ac.Receiving_Bank_s_Street_Case__c, Receiving_Bank_s_City__c = ac.Receiving_Bank_s_City_Case__c, Receiving_Bank_s_State__c = ac.Receiving_Bank_s_State_Case__c, Receiving_Bank_s_Zip_Code__c = ac.Receiving_Bank_s_Zip_Code_Case__c, Receiving_Bank_s_Country__c = ac.Receiving_Bank_s_Country_Case__c, Relationship__c = ac.Account.Id, RecordTypeId = DDRT )); } ac.Existing_or_New_Disbursement_Destination__c = 'Disbursement Destination Already Populated'; } if(Trigger.isInsert){ system.debug('Now Im in the ISINSERT'); DDList.add(new Disbursement_Destination__c( Name = ac.Receiving_Account_s_Number_Case__c, Receiving_Account_s_Name__c = ac.Receiving_Account_s_Name_Case__c, Payee_s_Name__c = ac.Payee_s_Name_Case__c, Payee_s_Street__c = ac.Payee_s_Street_Case__c, Payee_s_City__c = ac.Payee_s_Street_Case__c, Payee_s_State__c = ac.Payee_s_State_Case__c, Payee_s_Zip_Code__c = ac.Payee_s_Zip_Code_Case__c, Payee_s_Country__c = ac.Payee_s_Country_Case__c, Receiving_Bank_s_Name__c = ac.Receiving_Bank_s_Name_Case__c, Receiving_Bank_s_ABA_Wire__c = ac.Receiving_Bank_s_ABA_Wire_Case__c, Receiving_Bank_s_ABA_ACH__c = ac.Receiving_Bank_s_ABA_ACH_Case__c, Receiving_Bank_s_Street__c = ac.Receiving_Bank_s_Street_Case__c, Receiving_Bank_s_City__c = ac.Receiving_Bank_s_City_Case__c, Receiving_Bank_s_State__c = ac.Receiving_Bank_s_State_Case__c, Receiving_Bank_s_Zip_Code__c = ac.Receiving_Bank_s_Zip_Code_Case__c, Receiving_Bank_s_Country__c = ac.Receiving_Bank_s_Country_Case__c, Relationship__c = ac.Account.Id, RecordTypeId = DDRT )); ac.Existing_or_New_Disbursement_Destination__c = 'Disbursement Destination Already Populated'; } } if(DDList.size()>0){ system.debug('Inserting DDList'); insert DDList; } integer i = 0; system.debug(DDList.size()); if(DDList.size()>0){ for(Case ac: CasesToActOn){ ac.Disbursement_Destination__c = DDList.get(i).id; i += 1; } system.debug('Updating CasesToActOn'); update CasesToActOn; } }

 

 

Here's the test code. I think that the account id is getting lost somewhere in the handoff from Case to Distribution Destination, but because it works when I run it manually, I am completely stumped as to what's causing the error.

 

Test class:

@isTest
private class TestCreateNewDistributionDestination{
    static testMethod void testUpdateCaseToCreateNew(){
        ////Query RecordType Id to Create PersonAccounts for Test////
        Id RecId = [
            SELECT r.Id, r.Name, r.DeveloperName, r.IsPersonType 
            FROM RecordType r 
            WHERE sObjectType = 'Account' AND IsPersonType=True AND DeveloperName='Individual'
        ].Id;

        system.debug('RecordId:' + RecId);
        
        //NEWWWWWW
        Id pmId = [
            SELECT u.Id, u.Name
            FROM User u
            WHERE name = 'Jason Ackerman'
        ].Id;
        
        account[] accs = new account[]{
            new account (
                salutation = 'Mr.',
                firstname = 'John',
                lastname = 'Sandbox1',
                Portfolio_Manager_Lookup__c=pmId ,
                recordtypeid = RecId
            ),
            new account(
                salutation = 'Mr.',
                firstname = 'John',
                lastname = 'Sandbox2',
                Portfolio_Manager_Lookup__c=pmId ,
                recordtypeid = RecId
            )};
        
        insert accs;
        //End NEWWWWWW
        
        system.debug('Accounts Have Been Created' + accs.get(0).id + ', ' + accs.get(1).id);
        
        Map<String,Id> DDRTMap = new Map<String,Id>{};
        
        ////Generate a List of Disbursement Destination Record Types////
        List<RecordType> DDRTList = [
            SELECT r.DeveloperName, r.Id, r.Name
            FROM RecordType r
            WHERE sObjectType = 'Case'];
        
        ////Put the List into a Map////
        for(RecordType RT: DDRTList){
            DDRTMap.put(RT.DeveloperName,RT.Id);
        }        

        system.debug('<<<<ABOUT TO INSERT CASES>>>>');
        
        ////Create 6 Cases for the Test; 2 of each of 3 record types; 1 insert, 1 update of each////
        Case[] Css = new Case[]{
            new Case(
                Account = accs.get(0), 
                Type = 'Wire Request', 
                RecordTypeId = DDRTMap.get('Fund_Transfer_Wire'),
                Existing_or_New_Disbursement_Destination__c = 'Use/Create a New Disbursement Destination',
                Receiving_Account_s_Number_Case__c = '135792468',
                Receiving_Account_s_Name_Case__c = 'TEST Receiving Account',
                Payee_s_Name_Case__c = accs.get(0).name, 
                Payee_s_Street_Case__c = '1 Test Lane', 
                Payee_s_City_Case__c = 'Testville', 
                Payee_s_State_Case__c = 'NJ', 
                Payee_s_Zip_Code_Case__c = '12345',
                Receiving_Bank_s_Name_Case__c = 'TEST BANK',
                Receiving_Bank_s_ABA_ACH_Case__c = '123456789',
                Receiving_Bank_s_ABA_Wire_Case__c= '123456789',
                Receiving_Bank_s_Street_Case__c = '1 Bank Street', 
                Receiving_Bank_s_City_Case__c = 'Bankstown', 
                Receiving_Bank_s_State_Case__c = 'NJ', 
                Receiving_Bank_s_Zip_Code_Case__c = '98765'
            ),
            
            new Case(
                Account = accs.get(1), 
                Type = 'Wire Request', 
                RecordTypeId = DDRTMap.get('Fund_Transfer_Wire'),
                Existing_or_New_Disbursement_Destination__c = 'Leave Disbursement Destination Blank',
                Receiving_Account_s_Number_Case__c = '135792468',
                Receiving_Account_s_Name_Case__c = 'TEST Receiving Account',
                Payee_s_Name_Case__c = accs.get(1).name, 
                Payee_s_Street_Case__c = '1 Test Lane', 
                Payee_s_City_Case__c = 'Testville', 
                Payee_s_State_Case__c = 'NJ', 
                Payee_s_Zip_Code_Case__c = '12345',
                Receiving_Bank_s_Name_Case__c = 'TEST BANK',
                Receiving_Bank_s_ABA_ACH_Case__c = '123456789',
                Receiving_Bank_s_ABA_Wire_Case__c= '123456789',
                Receiving_Bank_s_Street_Case__c = '1 Bank Street', 
                Receiving_Bank_s_City_Case__c = 'Bankstown', 
                Receiving_Bank_s_State_Case__c = 'NJ', 
                Receiving_Bank_s_Zip_Code_Case__c = '98765'
            ),
            /*new Case(
                Account = accs.get(0), 
                Type = 'Wire Request', 
                RecordTypeId = DDRTMap.get('Fund_Transfer_ACH'),
                Existing_or_New_Disbursement_Destination__c = 'Use/Create a New Disbursement Destination',
                Receiving_Account_s_Number_Case__c = '135792468',
                Receiving_Account_s_Name_Case__c = 'TEST Receiving Account',
                Payee_s_Name_Case__c = accs.get(0).name, 
                Payee_s_Street_Case__c = '1 Test Lane', 
                Payee_s_City_Case__c = 'Testville', 
                Payee_s_State_Case__c = 'NJ', 
                Payee_s_Zip_Code_Case__c = '12345',
                Receiving_Bank_s_Name_Case__c = 'TEST BANK',
                Receiving_Bank_s_ABA_ACH_Case__c = '123456789',
                Receiving_Bank_s_ABA_Wire_Case__c= '123456789',
                Receiving_Bank_s_Street_Case__c = '1 Bank Street', 
                Receiving_Bank_s_City_Case__c = 'Bankstown', 
                Receiving_Bank_s_State_Case__c = 'NJ', 
                Receiving_Bank_s_Zip_Code_Case__c = '98765'
            ),
            
            new Case(
                Account = accs.get(1), 
                Type = 'Wire Request', 
                RecordTypeId = DDRTMap.get('Fund_Transfer_ACH'),
                Existing_or_New_Disbursement_Destination__c = 'Leave Disbursement Destination Blank',
                Receiving_Account_s_Number_Case__c = '135792468',
                Receiving_Account_s_Name_Case__c = 'TEST Receiving Account',
                Payee_s_Name_Case__c = accs.get(1).name, 
                Payee_s_Street_Case__c = '1 Test Lane', 
                Payee_s_City_Case__c = 'Testville', 
                Payee_s_State_Case__c = 'NJ', 
                Payee_s_Zip_Code_Case__c = '12345',
                Receiving_Bank_s_Name_Case__c = 'TEST BANK',
                Receiving_Bank_s_ABA_ACH_Case__c = '123456789',
                Receiving_Bank_s_ABA_Wire_Case__c= '123456789',
                Receiving_Bank_s_Street_Case__c = '1 Bank Street', 
                Receiving_Bank_s_City_Case__c = 'Bankstown', 
                Receiving_Bank_s_State_Case__c = 'NJ', 
                Receiving_Bank_s_Zip_Code_Case__c = '98765'
            ),*/
            new Case(
                Account = accs.get(0), 
                Type = 'Wire Request', 
                RecordTypeId = DDRTMap.get('Fund_Transfer_Check'),
                Existing_or_New_Disbursement_Destination__c = 'Use/Create a New Disbursement Destination',
                Receiving_Account_s_Number_Case__c = '135792468',
                Receiving_Account_s_Name_Case__c = 'TEST Receiving Account',
                Payee_s_Name_Case__c = accs.get(0).name, 
                Payee_s_Street_Case__c = '1 Test Lane', 
                Payee_s_City_Case__c = 'Testville', 
                Payee_s_State_Case__c = 'NJ', 
                Payee_s_Zip_Code_Case__c = '12345',
                Receiving_Bank_s_Name_Case__c = 'TEST BANK',
                Receiving_Bank_s_ABA_ACH_Case__c = '123456789',
                Receiving_Bank_s_ABA_Wire_Case__c= '123456789',
                Receiving_Bank_s_Street_Case__c = '1 Bank Street', 
                Receiving_Bank_s_City_Case__c = 'Bankstown', 
                Receiving_Bank_s_State_Case__c = 'NJ', 
                Receiving_Bank_s_Zip_Code_Case__c = '98765'
            ),
            
            new Case(
                Account = accs.get(1), 
                Type = 'Wire Request', 
                RecordTypeId = DDRTMap.get('Fund_Transfer_Check'),
                Existing_or_New_Disbursement_Destination__c = 'Leave Disbursement Destination Blank',
                Receiving_Account_s_Number_Case__c = '135792468',
                Receiving_Account_s_Name_Case__c = 'TEST Receiving Account',
                Payee_s_Name_Case__c = accs.get(1).name, 
                Payee_s_Street_Case__c = '1 Test Lane', 
                Payee_s_City_Case__c = 'Testville', 
                Payee_s_State_Case__c = 'NJ', 
                Payee_s_Zip_Code_Case__c = '12345',
                Receiving_Bank_s_Name_Case__c = 'TEST BANK',
                Receiving_Bank_s_ABA_ACH_Case__c = '123456789',
                Receiving_Bank_s_ABA_Wire_Case__c= '123456789',
                Receiving_Bank_s_Street_Case__c = '1 Bank Street', 
                Receiving_Bank_s_City_Case__c = 'Bankstown', 
                Receiving_Bank_s_State_Case__c = 'NJ', 
                Receiving_Bank_s_Zip_Code_Case__c = '98765'
            )
        };
        system.debug('Check:' + DDRTMap.get('Fund_Transfer_Check') + ', Wire:' + DDRTMap.get('Fund_Transfer_Wire') + ', APH:' + DDRTMap.get('Fund_Transfer_ACH'));
        system.debug('Case 1 Account Get: ' + css.get(0).account);
        system.debug('Cases Have Been Created, But Not Inserted');
        
        ////Insert the cases, update the cases needed
        test.starttest();
        insert Css;
        system.debug('Inserted Css');
        Css[1].Existing_or_New_Disbursement_Destination__c = 'Use/Create a New Disbursement Destination';
        Css[3].Existing_or_New_Disbursement_Destination__c = 'Use/Create a New Disbursement Destination';
        //Css[5].Existing_or_New_Disbursement_Destination__c = 'Use/Create a New Disbursement Destination';
        update Css;
        system.debug('Updated Css');
        test.stoptest();
        
        List<Case> insertedCases = [
            SELECT Type, RecordTypeId
            FROM Case
            WHERE Id IN :Css];
        
        system.debug(insertedCases.size() + ' Cases Have Been Created');
        system.debug(insertedCases);
        System.AssertEquals(insertedCases.size(),6);
        
        for(Case Cs : insertedCases ){
            System.AssertEquals('Disbursement Destination Already Populated',Cs.Existing_or_New_Disbursement_Destination__c);
            System.AssertNotEquals('',Cs.Disbursement_Destination__c);
        }
        
        List<Disbursement_Destination__c> TestDDs = [
            SELECT name
            FROM Disbursement_Destination__c];
        system.debug(TestDDs);
        //System.Assert(TestDDs.size(),2);
    }
}

 

 

Naidu PothiniNaidu Pothini
trigger CreateNewDistributionDestination on Case (after insert, after update) {
    
    List<Disbursement_Destination__c> DDList = new List<Disbursement_Destination__c> ();
    Id DDRT;
    
    List<Case> CasesToActOn = [
        SELECT 
            c.Receiving_Account_s_Number_Case__c,
            c.Receiving_Account_s_Name_Case__c,
            c.Payee_s_Name_Case__c, 
            c.Payee_s_Street_Case__c, 
            c.Payee_s_City_Case__c, 
            c.Payee_s_State_Case__c, 
            c.Payee_s_Zip_Code_Case__c,
            c.Payee_s_Country_Case__c,
            c.Receiving_Bank_s_Name_Case__c,
            c.Receiving_Bank_s_ABA_ACH_Case__c,
            c.Receiving_Bank_s_ABA_Wire_Case__c,
            c.Receiving_Bank_s_Street_Case__c, 
            c.Receiving_Bank_s_City_Case__c, 
            c.Receiving_Bank_s_State_Case__c, 
            c.Receiving_Bank_s_Zip_Code_Case__c, 
            c.Receiving_Bank_s_Country_Case__c,
            c.Account.Id, 
            c.RecordType.name,
            c.RecordType.developername,
            c.Existing_or_New_Disbursement_Destination__c
        FROM Case c
        WHERE Existing_or_New_Disbursement_Destination__c = 'Use/Create a New Disbursement Destination'
            AND c.id IN :Trigger.new
        FOR UPDATE
    ];
    
///// DEBUG LOGS SHOW CasesToActOn.size()=1, YET IT DOES NOT RUN THE SYSTEM.DEBUG CODE WITHIN THE IF STATEMENT, ANY IDEA WHY??? When I ran it without the If statement, I got an error that the reference was out of range. Very confused on this point. /////

    system.debug('Account ID: ' + CasesToActOn.size());
    if(CasesToActOn.size()>0){
        system.debug('Account ID: ' + CasesToActOn.get(0).account.id);
    }
    
    Map<String,Id> DDRTMap = new Map<String,Id>{};
    
    List<RecordType> DDRTList = [
        SELECT r.DeveloperName, r.Id, r.Name
        FROM RecordType r
        WHERE sObjectType = 'Disbursement_Destination__c'];
    
    system.debug('LIST OF ALL DD RECORD TYPES:' + DDRTList);
    
    for(RecordType RT: DDRTList){
        DDRTMap.put(RT.DeveloperName,RT.Id);
    }
    system.debug('MAPPED RECORD TYPES' + DDRTMap);
    
    for (Case ac: CasesToActOn){
        system.debug('Now Im in the FOR LOOP');
        IF(ac.Recordtype.developerName == 'Fund_Transfer_Wire'){
            DDRT = DDRTMap.get('Disbursement_Destination_Wire');
            system.debug('Wire Case RT:' + ac.recordtype.developername + ' -- DD RT:' + DDRTMap.get('Disbursement_Destination_Wire'));
        }
        Else IF(ac.Recordtype.developerName == 'Fund_Transfer_ACH'){
            DDRT = DDRTMap.get('Disbursement_Destination_ACH');
            system.debug('ACH Case RT:' + ac.recordtype.developername + ' -- DD RT:' + DDRTMap.get('Disbursement_Destination_ACH'));
        }
        Else IF(ac.Recordtype.developerName == 'Fund_Transfer_Check'){
            DDRT = DDRTMap.get('Disbursement_Destination_Check');
            system.debug('Check Case RT:' + ac.recordtype.developername + ' -- DD RT:' + DDRTMap.get('Disbursement_Destination_Check'));
        }
        
        if(Trigger.isUpdate){
            if(ac.Existing_or_New_Disbursement_Destination__c != trigger.oldMap.get(ac.Id).Existing_or_New_Disbursement_Destination__c){
                system.debug('Now Im in the ISUPDATE');
                DDList.add(new Disbursement_Destination__c(
                    Name = ac.Receiving_Account_s_Number_Case__c,
                    Receiving_Account_s_Name__c = ac.Receiving_Account_s_Name_Case__c,
                    
                    Payee_s_Name__c = ac.Payee_s_Name_Case__c,
                    Payee_s_Street__c = ac.Payee_s_Street_Case__c,
                    Payee_s_City__c = ac.Payee_s_Street_Case__c,
                    Payee_s_State__c = ac.Payee_s_State_Case__c,
                    Payee_s_Zip_Code__c = ac.Payee_s_Zip_Code_Case__c,
                    Payee_s_Country__c = ac.Payee_s_Country_Case__c,
                    
                    Receiving_Bank_s_Name__c = ac.Receiving_Bank_s_Name_Case__c,
                    Receiving_Bank_s_ABA_Wire__c = ac.Receiving_Bank_s_ABA_Wire_Case__c,
                    Receiving_Bank_s_ABA_ACH__c = ac.Receiving_Bank_s_ABA_ACH_Case__c,
                    
                    Receiving_Bank_s_Street__c = ac.Receiving_Bank_s_Street_Case__c,
                    Receiving_Bank_s_City__c = ac.Receiving_Bank_s_City_Case__c,
                    Receiving_Bank_s_State__c = ac.Receiving_Bank_s_State_Case__c,
                    Receiving_Bank_s_Zip_Code__c = ac.Receiving_Bank_s_Zip_Code_Case__c,
                    Receiving_Bank_s_Country__c = ac.Receiving_Bank_s_Country_Case__c,
                    
                    Relationship__c = ac.Account.Id,
                    RecordTypeId = DDRT
                ));
            }
            ac.Existing_or_New_Disbursement_Destination__c = 'Disbursement Destination Already Populated';
        }
        if(Trigger.isInsert){
            system.debug('Now Im in the ISINSERT');
            System.debug('-------------------- AccountId----------------'+ac.AccountId);
            DDList.add(new Disbursement_Destination__c(
                Name = ac.Receiving_Account_s_Number_Case__c,
                Receiving_Account_s_Name__c = ac.Receiving_Account_s_Name_Case__c,
                
                Payee_s_Name__c = ac.Payee_s_Name_Case__c,
                Payee_s_Street__c = ac.Payee_s_Street_Case__c,
                Payee_s_City__c = ac.Payee_s_Street_Case__c,
                Payee_s_State__c = ac.Payee_s_State_Case__c,
                Payee_s_Zip_Code__c = ac.Payee_s_Zip_Code_Case__c,
                Payee_s_Country__c = ac.Payee_s_Country_Case__c,
                
                Receiving_Bank_s_Name__c = ac.Receiving_Bank_s_Name_Case__c,
                Receiving_Bank_s_ABA_Wire__c = ac.Receiving_Bank_s_ABA_Wire_Case__c,
                Receiving_Bank_s_ABA_ACH__c = ac.Receiving_Bank_s_ABA_ACH_Case__c,
                
                Receiving_Bank_s_Street__c = ac.Receiving_Bank_s_Street_Case__c,
                Receiving_Bank_s_City__c = ac.Receiving_Bank_s_City_Case__c,
                Receiving_Bank_s_State__c = ac.Receiving_Bank_s_State_Case__c,
                Receiving_Bank_s_Zip_Code__c = ac.Receiving_Bank_s_Zip_Code_Case__c,
                Receiving_Bank_s_Country__c = ac.Receiving_Bank_s_Country_Case__c,
                
                Relationship__c = ac.AccountId,
                
                RecordTypeId = DDRT
            ));
            ac.Existing_or_New_Disbursement_Destination__c = 'Disbursement Destination Already Populated';
        }
    }
    if(DDList.size()>0){
        system.debug('Inserting DDList');
        insert DDList;
    }
    integer i = 0;
    system.debug(DDList.size());
    if(DDList.size()>0){
        for(Case ac: CasesToActOn){
            ac.Disbursement_Destination__c = DDList.get(i).id;
            i += 1;
        }
        system.debug('Updating CasesToActOn');
        update CasesToActOn;
    }
}
 

 

JAckerman09JAckerman09

Hey Naidu,

 

Thanks for the response. I tried making those two changes, and then in turn made a few more just to test, but I am still getting the same error.

 

I also tried separating the trigger into 2 for-loops so that I can requery the CasesToActOn in case the account.id was blank b/c the Cases hadn't been inserted yet the first time, and that still did not work. Here's my updated code, followed by the portion of the debug log that might help.

 

Again, I am very stuck, so any help would be very appreciated!

 

Trigger:

trigger CreateNewDistributionDestination on Case (after insert, after update) {
    
    List<Disbursement_Destination__c> DDList = new List<Disbursement_Destination__c> ();
    Id DDRT;
    
    List<Case> CasesToActOn = [
        SELECT 
            c.Receiving_Account_s_Number_Case__c,
            c.Receiving_Account_s_Name_Case__c,
            c.Payee_s_Name_Case__c, 
            c.Payee_s_Street_Case__c, 
            c.Payee_s_City_Case__c, 
            c.Payee_s_State_Case__c, 
            c.Payee_s_Zip_Code_Case__c,
            c.Payee_s_Country_Case__c,
            c.Receiving_Bank_s_Name_Case__c,
            c.Receiving_Bank_s_ABA_ACH_Case__c,
            c.Receiving_Bank_s_ABA_Wire_Case__c,
            c.Receiving_Bank_s_Street_Case__c, 
            c.Receiving_Bank_s_City_Case__c, 
            c.Receiving_Bank_s_State_Case__c, 
            c.Receiving_Bank_s_Zip_Code_Case__c, 
            c.Receiving_Bank_s_Country_Case__c,
            c.Account.Id, 
            c.AccountId,
            c.RecordType.name,
            c.RecordType.developername,
            c.Existing_or_New_Disbursement_Destination__c
        FROM Case c
        WHERE Existing_or_New_Disbursement_Destination__c = 'Use/Create a New Disbursement Destination'
            AND c.id IN :Trigger.new
        FOR UPDATE
    ];
    
    system.debug('# of Cases to Act on: ' + CasesToActOn.size());
    if(CasesToActOn.size()>0){
        system.debug('Account 0: ' + CasesToActOn.get(0).account);
        system.debug('Account 1: ' + CasesToActOn.get(1).account);
        system.debug('Account 2: ' + CasesToActOn.get(2).account);
        
        system.debug('Account.ID 0: ' + CasesToActOn.get(0).account.id);
        system.debug('Account.ID 1: ' + CasesToActOn.get(1).account.id);
        system.debug('Account.ID 2: ' + CasesToActOn.get(2).account.id);
        
        system.debug('Account ID 0: ' + CasesToActOn.get(0).accountid);
        system.debug('Account ID 1: ' + CasesToActOn.get(1).accountid);
        system.debug('Account ID 2: ' + CasesToActOn.get(2).accountid);
    }
    
    Map<String,Id> DDRTMap = new Map<String,Id>{};
    
    List<RecordType> DDRTList = [
        SELECT r.DeveloperName, r.Id, r.Name
        FROM RecordType r
        WHERE sObjectType = 'Disbursement_Destination__c'];
    
    system.debug('LIST OF ALL DD RECORD TYPES:' + DDRTList);
    
    for(RecordType RT: DDRTList){
        DDRTMap.put(RT.DeveloperName,RT.Id);
    }
    system.debug('MAPPED RECORD TYPES' + DDRTMap);
    
    
    ////Start Going Through Inserts////
    for (Case ac: CasesToActOn){
        system.debug('Now Im in the FOR LOOP');
        IF(ac.Recordtype.developerName == 'Fund_Transfer_Wire'){
            DDRT = DDRTMap.get('Disbursement_Destination_Wire');
            system.debug('Wire Case RT:' + ac.recordtype.developername + ' -- DD RT:' + DDRTMap.get('Disbursement_Destination_Wire'));
        }
        Else IF(ac.Recordtype.developerName == 'Fund_Transfer_ACH'){
            DDRT = DDRTMap.get('Disbursement_Destination_ACH');
            system.debug('ACH Case RT:' + ac.recordtype.developername + ' -- DD RT:' + DDRTMap.get('Disbursement_Destination_ACH'));
        }
        Else IF(ac.Recordtype.developerName == 'Fund_Transfer_Check'){
            DDRT = DDRTMap.get('Disbursement_Destination_Check');
            system.debug('Check Case RT:' + ac.recordtype.developername + ' -- DD RT:' + DDRTMap.get('Disbursement_Destination_Check'));
        }
        
        if(Trigger.isUpdate){
            if(ac.Existing_or_New_Disbursement_Destination__c != trigger.oldMap.get(ac.Id).Existing_or_New_Disbursement_Destination__c){
                system.debug('Now Im in the ISUPDATE');
                system.debug('-------------------- AccountId----------------'+ac.AccountId);
                system.debug('-------------------- Account.Id----------------'+ac.Account.Id);                
                DDList.add(new Disbursement_Destination__c(
                    Name = ac.Receiving_Account_s_Number_Case__c,
                    Receiving_Account_s_Name__c = ac.Receiving_Account_s_Name_Case__c,
                    
                    Payee_s_Name__c = ac.Payee_s_Name_Case__c,
                    Payee_s_Street__c = ac.Payee_s_Street_Case__c,
                    Payee_s_City__c = ac.Payee_s_Street_Case__c,
                    Payee_s_State__c = ac.Payee_s_State_Case__c,
                    Payee_s_Zip_Code__c = ac.Payee_s_Zip_Code_Case__c,
                    Payee_s_Country__c = ac.Payee_s_Country_Case__c,
                    
                    Receiving_Bank_s_Name__c = ac.Receiving_Bank_s_Name_Case__c,
                    Receiving_Bank_s_ABA_Wire__c = ac.Receiving_Bank_s_ABA_Wire_Case__c,
                    Receiving_Bank_s_ABA_ACH__c = ac.Receiving_Bank_s_ABA_ACH_Case__c,
                    
                    Receiving_Bank_s_Street__c = ac.Receiving_Bank_s_Street_Case__c,
                    Receiving_Bank_s_City__c = ac.Receiving_Bank_s_City_Case__c,
                    Receiving_Bank_s_State__c = ac.Receiving_Bank_s_State_Case__c,
                    Receiving_Bank_s_Zip_Code__c = ac.Receiving_Bank_s_Zip_Code_Case__c,
                    Receiving_Bank_s_Country__c = ac.Receiving_Bank_s_Country_Case__c,
                    
                    Relationship__c = ac.AccountId,
                    //Relationship__c = ac.Account.Id,
                    RecordTypeId = DDRT
                ));
            }
            ac.Existing_or_New_Disbursement_Destination__c = 'Disbursement Destination Already Populated';
        }
    }
    
    ////Refresh CasesToActOn After Insert////
    CasesToActOn = [
        SELECT 
            c.Receiving_Account_s_Number_Case__c,
            c.Receiving_Account_s_Name_Case__c,
            c.Payee_s_Name_Case__c, 
            c.Payee_s_Street_Case__c, 
            c.Payee_s_City_Case__c, 
            c.Payee_s_State_Case__c, 
            c.Payee_s_Zip_Code_Case__c,
            c.Payee_s_Country_Case__c,
            c.Receiving_Bank_s_Name_Case__c,
            c.Receiving_Bank_s_ABA_ACH_Case__c,
            c.Receiving_Bank_s_ABA_Wire_Case__c,
            c.Receiving_Bank_s_Street_Case__c, 
            c.Receiving_Bank_s_City_Case__c, 
            c.Receiving_Bank_s_State_Case__c, 
            c.Receiving_Bank_s_Zip_Code_Case__c, 
            c.Receiving_Bank_s_Country_Case__c,
            c.Account.Id, 
            c.AccountId,
            c.RecordType.name,
            c.RecordType.developername,
            c.Existing_or_New_Disbursement_Destination__c
        FROM Case c
        WHERE Existing_or_New_Disbursement_Destination__c = 'Use/Create a New Disbursement Destination'
            AND c.id IN :Trigger.new
        FOR UPDATE
    ];
    
    system.debug('# of Cases to Act on: ' + CasesToActOn.size());
    if(CasesToActOn.size()>0){
        system.debug('Account 0: ' + CasesToActOn.get(0).account);
        system.debug('Account 1: ' + CasesToActOn.get(1).account);
        system.debug('Account 2: ' + CasesToActOn.get(2).account);
        
        system.debug('Account.ID 0: ' + CasesToActOn.get(0).account.id);
        system.debug('Account.ID 1: ' + CasesToActOn.get(1).account.id);
        system.debug('Account.ID 2: ' + CasesToActOn.get(2).account.id);
        
        system.debug('Account ID 0: ' + CasesToActOn.get(0).accountid);
        system.debug('Account ID 1: ' + CasesToActOn.get(1).accountid);
        system.debug('Account ID 2: ' + CasesToActOn.get(2).accountid);
    }
    
    ////Start Going Through Updates////
    for (Case ac: CasesToActOn){
        system.debug('Now Im in the FOR LOOP');
        IF(ac.Recordtype.developerName == 'Fund_Transfer_Wire'){
            DDRT = DDRTMap.get('Disbursement_Destination_Wire');
            system.debug('Wire Case RT:' + ac.recordtype.developername + ' -- DD RT:' + DDRTMap.get('Disbursement_Destination_Wire'));
        }
        Else IF(ac.Recordtype.developerName == 'Fund_Transfer_ACH'){
            DDRT = DDRTMap.get('Disbursement_Destination_ACH');
            system.debug('ACH Case RT:' + ac.recordtype.developername + ' -- DD RT:' + DDRTMap.get('Disbursement_Destination_ACH'));
        }
        Else IF(ac.Recordtype.developerName == 'Fund_Transfer_Check'){
            DDRT = DDRTMap.get('Disbursement_Destination_Check');
            system.debug('Check Case RT:' + ac.recordtype.developername + ' -- DD RT:' + DDRTMap.get('Disbursement_Destination_Check'));
        }
        if(Trigger.isInsert){
            system.debug('Now Im in the ISINSERT');
            system.debug('-------------------- AccountId----------------'+ac.AccountId);
            system.debug('-------------------- Account.Id----------------'+ac.Account.Id);            
            DDList.add(new Disbursement_Destination__c(
                Name = ac.Receiving_Account_s_Number_Case__c,
                Receiving_Account_s_Name__c = ac.Receiving_Account_s_Name_Case__c,
                
                Payee_s_Name__c = ac.Payee_s_Name_Case__c,
                Payee_s_Street__c = ac.Payee_s_Street_Case__c,
                Payee_s_City__c = ac.Payee_s_Street_Case__c,
                Payee_s_State__c = ac.Payee_s_State_Case__c,
                Payee_s_Zip_Code__c = ac.Payee_s_Zip_Code_Case__c,
                Payee_s_Country__c = ac.Payee_s_Country_Case__c,
                
                Receiving_Bank_s_Name__c = ac.Receiving_Bank_s_Name_Case__c,
                Receiving_Bank_s_ABA_Wire__c = ac.Receiving_Bank_s_ABA_Wire_Case__c,
                Receiving_Bank_s_ABA_ACH__c = ac.Receiving_Bank_s_ABA_ACH_Case__c,
                
                Receiving_Bank_s_Street__c = ac.Receiving_Bank_s_Street_Case__c,
                Receiving_Bank_s_City__c = ac.Receiving_Bank_s_City_Case__c,
                Receiving_Bank_s_State__c = ac.Receiving_Bank_s_State_Case__c,
                Receiving_Bank_s_Zip_Code__c = ac.Receiving_Bank_s_Zip_Code_Case__c,
                Receiving_Bank_s_Country__c = ac.Receiving_Bank_s_Country_Case__c,
                
                //Relationship__c = ac.Account.Id,
                Relationship__c = ac.AccountId,
                RecordTypeId = DDRT
            ));
            ac.Existing_or_New_Disbursement_Destination__c = 'Disbursement Destination Already Populated';
        }
    }
    if(DDList.size()>0){
        system.debug('Inserting DDList');
        insert DDList;
    }
    integer i = 0;
    system.debug(DDList.size());
    if(DDList.size()>0){
        for(Case ac: CasesToActOn){
            ac.Disbursement_Destination__c = DDList.get(i).id;
            i += 1;
        }
        system.debug('Updating CasesToActOn');
        update CasesToActOn;
    }
}

 

And here's the relevant portion of the debug log:

14:53:53.416 (1416412000)|CODE_UNIT_STARTED|[EXTERNAL]|01qc00000004F2X|CreateNewDistributionDestination on Case trigger event AfterUpdate for [500c0000000vc8D, 500c0000000vc8E, 500c0000000vc8F]
14:53:53.416 (1416644000)|SYSTEM_CONSTRUCTOR_ENTRY|[3]|<init>()
14:53:53.416 (1416658000)|SYSTEM_CONSTRUCTOR_EXIT|[3]|<init>()
14:53:53.417 (1417575000)|SOQL_EXECUTE_BEGIN|[6]|Aggregations:0|select c.Receiving_Account_s_Number_Case__c, c.Receiving_Account_s_Name_Case__c, c.Payee_s_Name_Case__c, c.Payee_s_Street_Case__c, c.Payee_s_City_Case__c, c.Payee_s_State_Case__c, c.Payee_s_Zip_Code_Case__c, c.Payee_s_Country_Case__c, c.Receiving_Bank_s_Name_Case__c, c.Receiving_Bank_s_ABA_ACH_Case__c, c.Receiving_Bank_s_ABA_Wire_Case__c, c.Receiving_Bank_s_Street_Case__c, c.Receiving_Bank_s_City_Case__c, c.Receiving_Bank_s_State_Case__c, c.Receiving_Bank_s_Zip_Code_Case__c, c.Receiving_Bank_s_Country_Case__c, Account.Id, AccountId, c.RecordType.name, c.RecordType.developername, c.Existing_or_New_Disbursement_Destination__c from Case c where (Existing_or_New_Disbursement_Destination__c = 'Use/Create a New Disbursement Destination' and c.id IN :tmpVar1) for update
14:53:53.426 (1426686000)|SOQL_EXECUTE_END|[6]|Rows:3
14:53:53.426 (1426857000)|USER_DEBUG|[35]|DEBUG|# of Cases to Act on: 3
14:53:53.427 (1427027000)|USER_DEBUG|[37]|DEBUG|Account 0: null
14:53:53.427 (1427150000)|USER_DEBUG|[38]|DEBUG|Account 1: null
14:53:53.427 (1427274000)|USER_DEBUG|[39]|DEBUG|Account 2: null
14:53:53.427 (1427385000)|USER_DEBUG|[41]|DEBUG|Account.ID 0: null
14:53:53.427 (1427493000)|USER_DEBUG|[42]|DEBUG|Account.ID 1: null
14:53:53.427 (1427607000)|USER_DEBUG|[43]|DEBUG|Account.ID 2: null
14:53:53.427 (1427715000)|USER_DEBUG|[45]|DEBUG|Account ID 0: null
14:53:53.427 (1427820000)|USER_DEBUG|[46]|DEBUG|Account ID 1: null
14:53:53.427 (1427925000)|USER_DEBUG|[47]|DEBUG|Account ID 2: null
14:53:53.428 (1428169000)|SOQL_EXECUTE_BEGIN|[52]|Aggregations:0|select r.DeveloperName, r.Id, r.Name from RecordType r where sObjectType = 'Disbursement_Destination__c'
14:53:53.431 (1431001000)|SOQL_EXECUTE_END|[52]|Rows:3
14:53:53.431 (1431207000)|USER_DEBUG|[57]|DEBUG|LIST OF ALL DD RECORD TYPES:(RecordType:{Name=Disbursement Destination - Wire, DeveloperName=Disbursement_Destination_Wire, Id=012C0000000BqFyIAK}, RecordType:{Name=Disbursement Destination - Check, DeveloperName=Disbursement_Destination_Check, Id=012C0000000BqG8IAK}, RecordType:{Name=Disbursement Destination - ACH, DeveloperName=Disbursement_Destination_ACH, Id=012C0000000BqG3IAK})
14:53:53.431 (1431530000)|USER_DEBUG|[62]|DEBUG|MAPPED RECORD TYPES{Disbursement_Destination_ACH=012C0000000BqG3IAK, Disbursement_Destination_Check=012C0000000BqG8IAK, Disbursement_Destination_Wire=012C0000000BqFyIAK}
14:53:53.431 (1431640000)|USER_DEBUG|[67]|DEBUG|Now Im in the FOR LOOP
14:53:53.431 (1431925000)|USER_DEBUG|[70]|DEBUG|Wire Case RT:Fund_Transfer_Wire -- DD RT:012C0000000BqFyIAK
14:53:53.432 (1432167000)|USER_DEBUG|[83]|DEBUG|Now Im in the ISUPDATE
14:53:53.432 (1432226000)|USER_DEBUG|[84]|DEBUG|-------------------- AccountId----------------null
14:53:53.432 (1432288000)|USER_DEBUG|[85]|DEBUG|-------------------- Account.Id----------------null
14:53:53.432 (1432998000)|USER_DEBUG|[67]|DEBUG|Now Im in the FOR LOOP
14:53:53.433 (1433244000)|USER_DEBUG|[74]|DEBUG|ACH Case RT:Fund_Transfer_ACH -- DD RT:012C0000000BqG3IAK
14:53:53.433 (1433349000)|USER_DEBUG|[83]|DEBUG|Now Im in the ISUPDATE
14:53:53.433 (1433388000)|USER_DEBUG|[84]|DEBUG|-------------------- AccountId----------------null
14:53:53.433 (1433422000)|USER_DEBUG|[85]|DEBUG|-------------------- Account.Id----------------null
14:53:53.433 (1433855000)|USER_DEBUG|[67]|DEBUG|Now Im in the FOR LOOP
14:53:53.434 (1434113000)|USER_DEBUG|[78]|DEBUG|Check Case RT:Fund_Transfer_Check -- DD RT:012C0000000BqG8IAK
14:53:53.434 (1434211000)|USER_DEBUG|[83]|DEBUG|Now Im in the ISUPDATE
14:53:53.434 (1434249000)|USER_DEBUG|[84]|DEBUG|-------------------- AccountId----------------null
14:53:53.434 (1434291000)|USER_DEBUG|[85]|DEBUG|-------------------- Account.Id----------------null
14:53:53.435 (1435487000)|SOQL_EXECUTE_BEGIN|[117]|Aggregations:0|select c.Receiving_Account_s_Number_Case__c, c.Receiving_Account_s_Name_Case__c, c.Payee_s_Name_Case__c, c.Payee_s_Street_Case__c, c.Payee_s_City_Case__c, c.Payee_s_State_Case__c, c.Payee_s_Zip_Code_Case__c, c.Payee_s_Country_Case__c, c.Receiving_Bank_s_Name_Case__c, c.Receiving_Bank_s_ABA_ACH_Case__c, c.Receiving_Bank_s_ABA_Wire_Case__c, c.Receiving_Bank_s_Street_Case__c, c.Receiving_Bank_s_City_Case__c, c.Receiving_Bank_s_State_Case__c, c.Receiving_Bank_s_Zip_Code_Case__c, c.Receiving_Bank_s_Country_Case__c, Account.Id, AccountId, c.RecordType.name, c.RecordType.developername, c.Existing_or_New_Disbursement_Destination__c from Case c where (Existing_or_New_Disbursement_Destination__c = 'Use/Create a New Disbursement Destination' and c.id IN :tmpVar1) for update
14:53:53.443 (1443714000)|SOQL_EXECUTE_END|[117]|Rows:3
14:53:53.443 (1443867000)|USER_DEBUG|[146]|DEBUG|# of Cases to Act on: 3
14:53:53.444 (1444015000)|USER_DEBUG|[148]|DEBUG|Account 0: null
14:53:53.444 (1444136000)|USER_DEBUG|[149]|DEBUG|Account 1: null
14:53:53.444 (1444253000)|USER_DEBUG|[150]|DEBUG|Account 2: null
14:53:53.444 (1444366000)|USER_DEBUG|[152]|DEBUG|Account.ID 0: null
14:53:53.444 (1444469000)|USER_DEBUG|[153]|DEBUG|Account.ID 1: null
14:53:53.444 (1444586000)|USER_DEBUG|[154]|DEBUG|Account.ID 2: null
14:53:53.444 (1444690000)|USER_DEBUG|[156]|DEBUG|Account ID 0: null
14:53:53.444 (1444793000)|USER_DEBUG|[157]|DEBUG|Account ID 1: null
14:53:53.444 (1444895000)|USER_DEBUG|[158]|DEBUG|Account ID 2: null
14:53:53.444 (1444991000)|USER_DEBUG|[163]|DEBUG|Now Im in the FOR LOOP
14:53:53.445 (1445224000)|USER_DEBUG|[166]|DEBUG|Wire Case RT:Fund_Transfer_Wire -- DD RT:012C0000000BqFyIAK
14:53:53.445 (1445297000)|USER_DEBUG|[163]|DEBUG|Now Im in the FOR LOOP
14:53:53.445 (1445530000)|USER_DEBUG|[170]|DEBUG|ACH Case RT:Fund_Transfer_ACH -- DD RT:012C0000000BqG3IAK
14:53:53.445 (1445597000)|USER_DEBUG|[163]|DEBUG|Now Im in the FOR LOOP
14:53:53.445 (1445843000)|USER_DEBUG|[174]|DEBUG|Check Case RT:Fund_Transfer_Check -- DD RT:012C0000000BqG8IAK
14:53:53.445 (1445932000)|USER_DEBUG|[209]|DEBUG|Inserting DDList
14:53:53.446 (1446016000)|DML_BEGIN|[210]|Op:Insert|Type:Disbursement_Destination__c|Rows:3
14:53:53.454 (1454293000)|DML_END|[210]
14:53:53.454 (1454964000)|VF_PAGE_MESSAGE|Required fields are missing: [Relationship__c]
14:53:53.455 (1455304000)|EXCEPTION_THROWN|[210]|System.DmlException: Insert failed. First exception on row 0; first error: REQUIRED_FIELD_MISSING, Required fields are missing: [Relationship__c]: [Relationship__c]
14:53:53.456 (1456318000)|FATAL_ERROR|System.DmlException: Insert failed. First exception on row 0; first error: REQUIRED_FIELD_MISSING, Required fields are missing: [Relationship__c]: [Relationship__c]

 

Thanks again!

 

Naidu PothiniNaidu Pothini
@isTest
private class TestCreateNewDistributionDestination{
    static testMethod void testUpdateCaseToCreateNew(){
        ////Query RecordType Id to Create PersonAccounts for Test////
        Id RecId = [
            SELECT r.Id, r.Name, r.DeveloperName, r.IsPersonType 
            FROM RecordType r 
            WHERE sObjectType = 'Account' AND IsPersonType=True AND DeveloperName='Individual'
        ].Id;

        system.debug('RecordId:' + RecId);
        
        //NEWWWWWW
        Id pmId = [
            SELECT u.Id, u.Name
            FROM User u
            WHERE name = 'Jason Ackerman'
        ].Id;
        
        Account acc1 = new account( salutation = 'Mr.', firstname = 'John', lastname = 'Sandbox1', Portfolio_Manager_Lookup__c=pmId , recordtypeid = RecId );
		
		Account acc2 = new account( salutation = 'Mr.', firstname = 'John', lastname = 'Sandbox2', Portfolio_Manager_Lookup__c=pmId , recordtypeid = RecId );
        
        insert acc1;
		insert acc2;
        //End NEWWWWWW
        
        system.debug('Accounts Have Been Created' + acc1.id + ', ' + acc2.id);
        
        Map<String,Id> DDRTMap = new Map<String,Id>{};
        
        ////Generate a List of Disbursement Destination Record Types////
        List<RecordType> DDRTList = [
            SELECT r.DeveloperName, r.Id, r.Name
            FROM RecordType r
            WHERE sObjectType = 'Case'];
        
        ////Put the List into a Map////
        for(RecordType RT: DDRTList){
            DDRTMap.put(RT.DeveloperName,RT.Id);
        }        

        system.debug('<<<<ABOUT TO INSERT CASES>>>>');
        
        ////Create 6 Cases for the Test; 2 of each of 3 record types; 1 insert, 1 update of each////
        Case[] Css = new Case[]{
            new Case(
                AccountId = acc1.Id, 
                Type = 'Wire Request', 
                RecordTypeId = DDRTMap.get('Fund_Transfer_Wire'),
                Existing_or_New_Disbursement_Destination__c = 'Use/Create a New Disbursement Destination',
                Receiving_Account_s_Number_Case__c = '135792468',
                Receiving_Account_s_Name_Case__c = 'TEST Receiving Account',
                Payee_s_Name_Case__c = accs.get(0).name, 
                Payee_s_Street_Case__c = '1 Test Lane', 
                Payee_s_City_Case__c = 'Testville', 
                Payee_s_State_Case__c = 'NJ', 
                Payee_s_Zip_Code_Case__c = '12345',
                Receiving_Bank_s_Name_Case__c = 'TEST BANK',
                Receiving_Bank_s_ABA_ACH_Case__c = '123456789',
                Receiving_Bank_s_ABA_Wire_Case__c= '123456789',
                Receiving_Bank_s_Street_Case__c = '1 Bank Street', 
                Receiving_Bank_s_City_Case__c = 'Bankstown', 
                Receiving_Bank_s_State_Case__c = 'NJ', 
                Receiving_Bank_s_Zip_Code_Case__c = '98765'
            ),
            
            new Case(
                AccountId = acc2.Id,
                Type = 'Wire Request', 
                RecordTypeId = DDRTMap.get('Fund_Transfer_Wire'),
                Existing_or_New_Disbursement_Destination__c = 'Leave Disbursement Destination Blank',
                Receiving_Account_s_Number_Case__c = '135792468',
                Receiving_Account_s_Name_Case__c = 'TEST Receiving Account',
                Payee_s_Name_Case__c = accs.get(1).name, 
                Payee_s_Street_Case__c = '1 Test Lane', 
                Payee_s_City_Case__c = 'Testville', 
                Payee_s_State_Case__c = 'NJ', 
                Payee_s_Zip_Code_Case__c = '12345',
                Receiving_Bank_s_Name_Case__c = 'TEST BANK',
                Receiving_Bank_s_ABA_ACH_Case__c = '123456789',
                Receiving_Bank_s_ABA_Wire_Case__c= '123456789',
                Receiving_Bank_s_Street_Case__c = '1 Bank Street', 
                Receiving_Bank_s_City_Case__c = 'Bankstown', 
                Receiving_Bank_s_State_Case__c = 'NJ', 
                Receiving_Bank_s_Zip_Code_Case__c = '98765'
            ),
            /*new Case(
                AccountId = acc1.Id, 
                Type = 'Wire Request', 
                RecordTypeId = DDRTMap.get('Fund_Transfer_ACH'),
                Existing_or_New_Disbursement_Destination__c = 'Use/Create a New Disbursement Destination',
                Receiving_Account_s_Number_Case__c = '135792468',
                Receiving_Account_s_Name_Case__c = 'TEST Receiving Account',
                Payee_s_Name_Case__c = accs.get(0).name, 
                Payee_s_Street_Case__c = '1 Test Lane', 
                Payee_s_City_Case__c = 'Testville', 
                Payee_s_State_Case__c = 'NJ', 
                Payee_s_Zip_Code_Case__c = '12345',
                Receiving_Bank_s_Name_Case__c = 'TEST BANK',
                Receiving_Bank_s_ABA_ACH_Case__c = '123456789',
                Receiving_Bank_s_ABA_Wire_Case__c= '123456789',
                Receiving_Bank_s_Street_Case__c = '1 Bank Street', 
                Receiving_Bank_s_City_Case__c = 'Bankstown', 
                Receiving_Bank_s_State_Case__c = 'NJ', 
                Receiving_Bank_s_Zip_Code_Case__c = '98765'
            ),
            
            new Case(
                AccountId = acc2.Id, 
                Type = 'Wire Request', 
                RecordTypeId = DDRTMap.get('Fund_Transfer_ACH'),
                Existing_or_New_Disbursement_Destination__c = 'Leave Disbursement Destination Blank',
                Receiving_Account_s_Number_Case__c = '135792468',
                Receiving_Account_s_Name_Case__c = 'TEST Receiving Account',
                Payee_s_Name_Case__c = accs.get(1).name, 
                Payee_s_Street_Case__c = '1 Test Lane', 
                Payee_s_City_Case__c = 'Testville', 
                Payee_s_State_Case__c = 'NJ', 
                Payee_s_Zip_Code_Case__c = '12345',
                Receiving_Bank_s_Name_Case__c = 'TEST BANK',
                Receiving_Bank_s_ABA_ACH_Case__c = '123456789',
                Receiving_Bank_s_ABA_Wire_Case__c= '123456789',
                Receiving_Bank_s_Street_Case__c = '1 Bank Street', 
                Receiving_Bank_s_City_Case__c = 'Bankstown', 
                Receiving_Bank_s_State_Case__c = 'NJ', 
                Receiving_Bank_s_Zip_Code_Case__c = '98765'
            ),*/
            new Case(
                AccountId = acc1.Id, 
                Type = 'Wire Request', 
                RecordTypeId = DDRTMap.get('Fund_Transfer_Check'),
                Existing_or_New_Disbursement_Destination__c = 'Use/Create a New Disbursement Destination',
                Receiving_Account_s_Number_Case__c = '135792468',
                Receiving_Account_s_Name_Case__c = 'TEST Receiving Account',
                Payee_s_Name_Case__c = accs.get(0).name, 
                Payee_s_Street_Case__c = '1 Test Lane', 
                Payee_s_City_Case__c = 'Testville', 
                Payee_s_State_Case__c = 'NJ', 
                Payee_s_Zip_Code_Case__c = '12345',
                Receiving_Bank_s_Name_Case__c = 'TEST BANK',
                Receiving_Bank_s_ABA_ACH_Case__c = '123456789',
                Receiving_Bank_s_ABA_Wire_Case__c= '123456789',
                Receiving_Bank_s_Street_Case__c = '1 Bank Street', 
                Receiving_Bank_s_City_Case__c = 'Bankstown', 
                Receiving_Bank_s_State_Case__c = 'NJ', 
                Receiving_Bank_s_Zip_Code_Case__c = '98765'
            ),
            
            new Case(
                AccountId = acc2.Id, 
                Type = 'Wire Request', 
                RecordTypeId = DDRTMap.get('Fund_Transfer_Check'),
                Existing_or_New_Disbursement_Destination__c = 'Leave Disbursement Destination Blank',
                Receiving_Account_s_Number_Case__c = '135792468',
                Receiving_Account_s_Name_Case__c = 'TEST Receiving Account',
                Payee_s_Name_Case__c = accs.get(1).name, 
                Payee_s_Street_Case__c = '1 Test Lane', 
                Payee_s_City_Case__c = 'Testville', 
                Payee_s_State_Case__c = 'NJ', 
                Payee_s_Zip_Code_Case__c = '12345',
                Receiving_Bank_s_Name_Case__c = 'TEST BANK',
                Receiving_Bank_s_ABA_ACH_Case__c = '123456789',
                Receiving_Bank_s_ABA_Wire_Case__c= '123456789',
                Receiving_Bank_s_Street_Case__c = '1 Bank Street', 
                Receiving_Bank_s_City_Case__c = 'Bankstown', 
                Receiving_Bank_s_State_Case__c = 'NJ', 
                Receiving_Bank_s_Zip_Code_Case__c = '98765'
            )
        };
        system.debug('Check:' + DDRTMap.get('Fund_Transfer_Check') + ', Wire:' + DDRTMap.get('Fund_Transfer_Wire') + ', APH:' + DDRTMap.get('Fund_Transfer_ACH'));
        system.debug('Case 1 Account Get: ' + css.get(0).account);
        system.debug('Cases Have Been Created, But Not Inserted');
        
        ////Insert the cases, update the cases needed
        test.starttest();
        insert Css;
        system.debug('Inserted Css');
        Css[1].Existing_or_New_Disbursement_Destination__c = 'Use/Create a New Disbursement Destination';
        Css[3].Existing_or_New_Disbursement_Destination__c = 'Use/Create a New Disbursement Destination';
        //Css[5].Existing_or_New_Disbursement_Destination__c = 'Use/Create a New Disbursement Destination';
        update Css;
        system.debug('Updated Css');
        test.stoptest();
        
        List<Case> insertedCases = [
            SELECT Type, RecordTypeId
            FROM Case
            WHERE Id IN :Css];
        
        system.debug(insertedCases.size() + ' Cases Have Been Created');
        system.debug(insertedCases);
        System.AssertEquals(insertedCases.size(),6);
        
        for(Case Cs : insertedCases ){
            System.AssertEquals('Disbursement Destination Already Populated',Cs.Existing_or_New_Disbursement_Destination__c);
            System.AssertNotEquals('',Cs.Disbursement_Destination__c);
        }
        
        List<Disbursement_Destination__c> TestDDs = [
            SELECT name
            FROM Disbursement_Destination__c];
        system.debug(TestDDs);
        //System.Assert(TestDDs.size(),2);
    }
}

 Try this test class. let me know if it doesnt work.

 

-Naidu

JAckerman09JAckerman09

Thanks again! The account Ids are populating now, but I am getting this error:

 

System.DmlException: Update failed. First exception on row 0 with id 500c0000000vcAMAAY; first error: FIELD_CUSTOM_VALIDATION_EXCEPTION, If 'Existing or New Disbursement Destination' is set to 'Leave Disbursement Destination Blank' or 'Use/Create a New Disbursement Destination' then the 'Disbursement Destination' field must be blank.: [Disbursement_Destination__c]

 

Thanks again!