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
Harshal Khadke 1Harshal Khadke 1 

Write a trigger on Maintenance object, If the amount paid checkbox is checked then update maintenance amount field of member object Amount paid else Amount upaid.

I have written the following trigger for the above question but it didn't work.
what is wrong in this trigger.
Member__c (Master Object)  
Maintenance_Amount__c(TextField)

Maintenance__c(Detail Object)
Amount_Paid__c(CheckBox)

trigger UpdateMaintenance on Maintenance__c (After insert, After Update) {
Map<id, Member__c> MapList=new Map<id, Member__c>();
    For(Maintenance__c M: Trigger.new)
    {
        if(M.Member__r.id != Null)
        {
            if(M.Amount_Paid__c = True)
            {  
            MapList.put(M.Member__r.id,new Member__c(id=M.Member__r.id, Maintenance_Amount__c='Amount Paid'));
            }
        }
        else
        {
            MapList.put(M.Member__r.id,new Member__c(id=M.Member__r.id, Maintenance_Amount__c='Amount Unpaid'));
        }
        if(MapList.size()>0)
        {
            try{
            Update MapList.values();
            }
            catch(DmlException e)
            {
                System.debug(e.getMessage());
            }
        }
    }
}
Best Answer chosen by Harshal Khadke 1
Maharajan CMaharajan C
Hi Harshal,

Please try the below code:
 
trigger UpdateMaintenance on Maintenance__c (After insert, After Update) {
Map<id, Member__c> MapList=new Map<id, Member__c>();
    for(Maintenance__c M: Trigger.new)
    {
		if(Trigger.isInsert && M.Member__c != null){
			if(M.Amount_Paid__c){
				MapList.put(M.Member__c,new Member__c(id=M.Member__c, Maintenance_Amount__c='Amount Paid'));
			}
			else{
				MapList.put(M.Member__c,new Member__c(id=M.Member__c, Maintenance_Amount__c='Amount Unpaid'));
			}
		}
		else if(Trigger.isUpdate && M.Member__c != null){
			if(M.Amount_Paid__c != Trigger.OldMap.get(M.Id).Amount_Paid__c || M.Member__c != Trigger.OldMap.get(M.Id).Member__c){
				if(M.Amount_Paid__c){
					MapList.put(M.Member__c,new Member__c(id=M.Member__c, Maintenance_Amount__c='Amount Paid'));
				}
				else{
					MapList.put(M.Member__c,new Member__c(id=M.Member__c, Maintenance_Amount__c='Amount Unpaid'));
				}
			}
		}
        
    }
	if(!MapList.isEmpty())
	{
		try{
			Update MapList.values();
		}
		catch(DmlException e)
		{
			System.debug(e.getMessage());
		}
	}
}

Thanks,
Maharajan.C

All Answers

Maharajan CMaharajan C
Hi Harshal,

Please try the below code:
 
trigger UpdateMaintenance on Maintenance__c (After insert, After Update) {
Map<id, Member__c> MapList=new Map<id, Member__c>();
    for(Maintenance__c M: Trigger.new)
    {
		if(Trigger.isInsert && M.Member__c != null){
			if(M.Amount_Paid__c){
				MapList.put(M.Member__c,new Member__c(id=M.Member__c, Maintenance_Amount__c='Amount Paid'));
			}
			else{
				MapList.put(M.Member__c,new Member__c(id=M.Member__c, Maintenance_Amount__c='Amount Unpaid'));
			}
		}
		else if(Trigger.isUpdate && M.Member__c != null){
			if(M.Amount_Paid__c != Trigger.OldMap.get(M.Id).Amount_Paid__c || M.Member__c != Trigger.OldMap.get(M.Id).Member__c){
				if(M.Amount_Paid__c){
					MapList.put(M.Member__c,new Member__c(id=M.Member__c, Maintenance_Amount__c='Amount Paid'));
				}
				else{
					MapList.put(M.Member__c,new Member__c(id=M.Member__c, Maintenance_Amount__c='Amount Unpaid'));
				}
			}
		}
        
    }
	if(!MapList.isEmpty())
	{
		try{
			Update MapList.values();
		}
		catch(DmlException e)
		{
			System.debug(e.getMessage());
		}
	}
}

Thanks,
Maharajan.C
This was selected as the best answer
Harshal Khadke 1Harshal Khadke 1
Hi Maharajan,
Thank you for your response.
It works!!