+ Start a Discussion
Nagarjun TNagarjun T 

Trigger to create every customer should have maximum two payment child records

two objects

1) Customer__c
2) Payment__c

Fields for Customer__c
1) FirstName__c
2) LastName__c
3) Phone__c
4) Email__c
5) Amount__c

Fields for Payment__c
1) Mode__c
2) Amount__c
3) Customer__c  : Lookup(customer)
Khan AnasKhan Anas (Salesforce Developers) 
Hi Nagarjun,

Greetings to you!

You can write a trigger for this. Please try the below code, I have tested in my org and it is working fine. Kindly modify the code as per your requirement.
 
trigger MaxTwoChild on Payment__c (before insert) {
    
    List<Id> cusId = new List<Id>();
    for(Payment__c p : trigger.new){
        if(p.Customer__c != null){
            cusId.add(p.Customer__c);    
        }
    }
    
    List<Payment__c> pList = new List<Payment__c> ();
    
    List<Customer__c> cusLst = [SELECT Id,(SELECT Id FROM Payments__r) FROM Customer__c WHERE Id IN : cusId] ;  // Payments__r is child relationship name, you can check it on Customer__c lookup field on payment object
    for(Customer__c cusObj : cusLst ){
        for(Payment__c pyt : cusObj.Payments__r){     
            pList.add(pyt);
        }
    }
    
    for(Payment__c per : trigger.new){ 
        if(pList.size() > 1 ) {  
            per.addError('You can not add more than two Payments for this Customer'); 
            
        }
    }
}

I hope it helps you.

Kindly let me know if it helps you and close your query by marking it as solved so that it can help others in the future. It will help to keep this community clean.

Thanks and Regards,
Khan Anas