Object 1 : Parent__c
Fields : Phone__c
Object 2 : Parent_Clone__c
Fields : Parent_Id__c,Phone_Clone__c
Trigger on parent object:
ParentCloneHelper.dmlMethod(trigger.New,trigger.Newmap,trigger.Old,trigger.Oldmap,trigger.isBefore,trigger.isInsert,trigger.isAfter,trigger.isUpdate,trigger.isDelete);
}
Helper class : ParentCloneHelper
public static boolean controlveriable = true;
public static void dmlMethod(list<Parent__c > triggerNew,map<Id,Parent__c > triggerNewMap,list<Parent__c> triggerOld,map<Id,Parent__c> triggerOldMap,boolean isBefore,boolean isInsert,boolean isAfter,boolean isUpdate,boolean isDelete)
{
if(isInsert || isupdate){
if(controlveriable == true){
set<ID> ParentIds = new set<ID>();
for (Parent__c a : triggerNew) {
ParentIds.add(a.Id);
}
if (ParentIds.size() > 0) {
List<Parent_Clone__c> PCList = new list<Parent_Clone__c>();
Map<string,Id> Parentclonemap = New Map<string,Id>();
for(Parent_Clone__c PC : [select Id,Name,Parent_Id__c,Phone_Clone__c from Parent_Clone__c]){
Parentclonemap.put(PC.Parent_Id__c,PC.Id);
}
for(Parent__c P: triggerNew){
if(Parentclonemap.containsKey(P.Id)){
for(String ParentcloneId : Parentclonemap.keyset()){
if(P.Id==ParentcloneId){
Parent_Clone__c PCR = new Parent_Clone__c(Id = Parentclonemap.get(ParentcloneId));
PCR.Name = P.Name;
PCR.Phone_Clone__c = P.Phone__c;
PCList.add(PCR);
}
}
}
else{
Parent_Clone__c PCR = new Parent_Clone__c();
PCR.Parent_Id__c = P.Id;
PCR.Name = P.Name;
PCR.Phone_Clone__c = P.Phone__c;
PCList.add(PCR);
}
}
controlveriable = false;
Upsert PCList;
}
}
}
if(isdelete){
for(Parent__c Pdel:triggerOld){
Parent_Clone__c PCdel = [select id,Parent_Id__c from Parent_Clone__c where Parent_Id__c =:Pdel.Id];
delete PCdel;
}
}
}
}
Trigger on parent clone object:
trigger Parent on Parent_Clone__c (after update) {
Map<string,string> parentCloneMap = new Map<string,string>();
for (Parent_Clone__c PC : Trigger.new) {
parentCloneMap.Put(PC.Parent_Id__c,PC.Id);
}
system.debug('parentCloneMap : '+parentCloneMap.keyset());
if(parentCloneMap.size()>0){
list<Parent__c> P = [select id,Phone__c from Parent__c where Id =:parentCloneMap.keyset()];
system.debug('p : '+P);
for (Parent_Clone__c PC : Trigger.new) {
for(Parent__c eachP :P){
if(PC.Parent_Id__c == eachP.Id){
Parent__c updateP = new Parent__c(Id =PC.Parent_Id__c);
updateP.Phone__c = PC.Phone_Clone__c;
update updateP;
}
}
}
}
}
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.