You need to sign in to do that
Don't have an account?
In my trigger Account have two child (GF_Order_Summary__c,GF_Outlet__c),GF_Outlet__c have a child GF_Outlet_Monthly_Order_Summary__c ,on the basis of transction year,transction months i want to bulkify my trigger
if GF_Order_Summary__c have matching recod(yr,month) then update the matching recod else ceate the new recod.below my code
thanks in advance.
Trigger UpdateOutletMOrderSummaryToAccmOrders on GF_Outlet_Monthly_Order_Summary__c (after insert,after Update,before delete){
Map<Id,String> AccIdMap=new Map<Id,String>();
Map<Id,GF_Order_Summary__c> AccToOrdSumMap=new Map<Id,GF_Order_Summary__c>();
List<GF_Order_Summary__c> updateOrdSumList = new List<GF_Order_Summary__c>();
List<GF_Order_Summary__c> listAccountMonOrder = new List<GF_Order_Summary__c>();
List<GF_Order_Summary__c> deleteOrdSumList = new List<GF_Order_Summary__c>();
if(trigger.isInsert || trigger.isUpdate){
List<GF_Outlet_Monthly_Order_Summary__c> OrdSumList = [Select Id,Name,GF_Total_No_of_Orders__c,CurrencyIsoCode,GF_Total_Revenue__c,
GF_Transaction_Month__c,GF_Transaction_Year__c,GF_Outlet__r.GFID_Account__c
from GF_Outlet_Monthly_Order_Summary__c
where GF_Outlet__r.GFID_Account__c!=NULL AND Id IN :Trigger.new];
system.debug('===>OrdSumList'+OrdSumList);
if(OrdSumList.size()>0){
for(GF_Outlet_Monthly_Order_Summary__c outMonSum : OrdSumList){
AccIdMap.put(outMonSum.GF_Outlet__r.GFID_Account__c,null);
AccToOrdSumMap.put(outMonSum.GF_Outlet__r.GFID_Account__c,null);
}
}
if(AccIdMap.keySet().size() > 0){
for(GF_Order_Summary__c ordSum : [SELECT Id,Name,GF_Total_No_of_Orders__c,GF_Total_Revenue__c,GF_Transaction_Year__c,GF_Transaction_Month__c,GF_Account__c FROM GF_Order_Summary__c WHERE GF_Account__c IN :AccIdMap.keySet()]){
AccIdMap.put(ordSum.GF_Account__c,String.valueOf(ordSum.GF_Transaction_Month__c +'@@'+ordSum.GF_Transaction_Year__c));
system.debug('===>ragh'+ordSum);
AccToOrdSumMap.put(ordSum.GF_Account__c,ordSum);
System.debug('AccIdMap>>>>>>'+AccIdMap);
System.debug('AccToOrdSumMap>>>>>>'+AccToOrdSumMap);
}
for(GF_Outlet_Monthly_Order_Summary__c outMontOrdSum : OrdSumList){
system.debug('-->'+AccIdMap.get(outMontOrdSum.GF_Outlet__r.GFID_Account__c));
system.debug('-->'+ String.valueOf(outMontOrdSum.GF_Transaction_Month__c+'@@'+outMontOrdSum.GF_Transaction_Year__c));
if(AccToOrdSumMap.containsKey(outMontOrdSum.GF_Outlet__r.GFID_Account__c) &&
AccIdMap.containsKey(outMontOrdSum.GF_Outlet__r.GFID_Account__c) &&
String.valueOf(outMontOrdSum.GF_Transaction_Month__c+'@@'+outMontOrdSum.GF_Transaction_Year__c) ==
AccIdMap.get(outMontOrdSum.GF_Outlet__r.GFID_Account__c)){
GF_Order_Summary__c orsu=new GF_Order_Summary__c();
orsu = AccToOrdSumMap.get(outMontOrdSum.GF_Outlet__r.GFID_Account__c);
orsu.GF_Total_Revenue__c +=outMontOrdSum.GF_Total_Revenue__c;
orsu.GF_Total_No_of_Orders__c += outMontOrdSum.GF_Total_No_of_Orders__c;
updateOrdSumList.add(orsu);
System.debug('>>>>>updateOrdSumList '+updateOrdSumList);
}
else{
GF_Order_Summary__c orsu=new GF_Order_Summary__c();
orsu.CurrencyIsoCode=outMontOrdSum.CurrencyIsoCode ;
orsu.GF_Total_Revenue__c=outMontOrdSum.GF_Total_Revenue__c!=null?outMontOrdSum.GF_Total_Revenue__c:0;
orsu.GF_Total_No_of_Orders__c = outMontOrdSum.GF_Total_No_of_Orders__c!=null?outMontOrdSum.GF_Total_No_of_Orders__c:0;
orsu.GF_Transaction_Month__c=outMontOrdSum.GF_Transaction_Month__c!=null?outMontOrdSum.GF_Transaction_Month__c:'';
orsu.GF_Transaction_Year__c=outMontOrdSum.GF_Transaction_Year__c!=null?outMontOrdSum.GF_Transaction_Year__c:'';
orsu.GF_Account__c=outMontOrdSum.GF_Outlet__r.GFID_Account__c;
listAccountMonOrder.add(orsu);
}
}
}
}
if(trigger.isDelete){
List<GF_Outlet_Monthly_Order_Summary__c> OrdSumList = [Select Id,Name,GF_Total_No_of_Orders__c,CurrencyIsoCode,GF_Total_Revenue__c,
GF_Outlet__r.GFID_Account__c,GF_Transaction_Month__c,GF_Transaction_Year__c
from GF_Outlet_Monthly_Order_Summary__c
where GF_Outlet__r.GFID_Account__c !=NULL AND Id IN :Trigger.old];
system.debug('===>'+OrdSumList);
if(OrdSumList.size()>0){
for(GF_Outlet_Monthly_Order_Summary__c outMonSum : OrdSumList) {
AccIdMap.put(outMonSum.GF_Outlet__r.GFID_Account__c,null);
AccToOrdSumMap.put(outMonSum.GF_Outlet__r.GFID_Account__c,null);
}
}
if(AccIdMap.keySet().size() > 0){
for(GF_Order_Summary__c ordSum : [SELECT Id,Name,GF_Total_No_of_Orders__c,GF_Total_Revenue__c,GF_Transaction_Year__c,
GF_Transaction_Month__c,GF_Account__c
FROM GF_Order_Summary__c
WHERE GF_Account__c IN :AccIdMap.keySet()]){
AccIdMap.put(ordSum.GF_Account__c,String.valueOf(ordSum.GF_Transaction_Month__c +'@@'+ordSum.GF_Transaction_Year__c));
AccToOrdSumMap.put(ordSum.GF_Account__c,ordSum);
System.debug('AccIdMap>>>>>>'+AccIdMap);
System.debug('AccToOrdSumMap>>>>>>'+AccToOrdSumMap);
system.debug('===>'+ordSum);
}
for(GF_Outlet_Monthly_Order_Summary__c outMontOrdSum : OrdSumList){
system.debug('-->'+AccIdMap.get(outMontOrdSum.GF_Outlet__r.GFID_Account__c));
system.debug('-->'+ String.valueOf(outMontOrdSum.GF_Transaction_Month__c+'@@'+outMontOrdSum.GF_Transaction_Year__c));
if(AccToOrdSumMap.containsKey(outMontOrdSum.GF_Outlet__r.GFID_Account__c) &&
AccIdMap.containsKey(outMontOrdSum.GF_Outlet__r.GFID_Account__c) &&
String.valueOf(outMontOrdSum.GF_Transaction_Month__c+'@@'+outMontOrdSum.GF_Transaction_Year__c) ==
AccIdMap.get(outMontOrdSum.GF_Outlet__r.GFID_Account__c)){
system.debug('--->Raghav');
GF_Order_Summary__c orsu=new GF_Order_Summary__c();
orsu = AccToOrdSumMap.get(outMontOrdSum.GF_Outlet__r.GFID_Account__c);
system.debug('===>orsu.GF_Total_Revenue__c'+orsu.GF_Total_Revenue__c);
system.debug('===>orsu.GF_Total_Revenue__c'+outMontOrdSum.GF_Total_Revenue__c);
system.debug('==fgndhfghg');
if(orsu.GF_Total_No_of_Orders__c == outMontOrdSum.GF_Total_No_of_Orders__c){
system.debug('===Raghav');
deleteOrdSumList.add(orsu);
break;
}
else{
orsu.GF_Total_Revenue__c -=outMontOrdSum.GF_Total_Revenue__c;
orsu.GF_Total_No_of_Orders__c-= outMontOrdSum.GF_Total_No_of_Orders__c;
updateOrdSumList.add(orsu);
break;
}
}
}
}
}
if(listAccountMonOrder.size() > 0)
insert listAccountMonOrder;
system.debug('==listAccountMonOrder'+listAccountMonOrder);
if(updateOrdSumList.size()> 0)
update updateOrdSumList;
system.debug('==updateOrdSumList'+updateOrdSumList);
if(deleteOrdSumList.size() > 0)
delete deleteOrdSumList;
system.debug('==deleteOrdSumList'+deleteOrdSumList);
}
thanks in advance.
Trigger UpdateOutletMOrderSummaryToAccmOrders on GF_Outlet_Monthly_Order_Summary__c (after insert,after Update,before delete){
Map<Id,String> AccIdMap=new Map<Id,String>();
Map<Id,GF_Order_Summary__c> AccToOrdSumMap=new Map<Id,GF_Order_Summary__c>();
List<GF_Order_Summary__c> updateOrdSumList = new List<GF_Order_Summary__c>();
List<GF_Order_Summary__c> listAccountMonOrder = new List<GF_Order_Summary__c>();
List<GF_Order_Summary__c> deleteOrdSumList = new List<GF_Order_Summary__c>();
if(trigger.isInsert || trigger.isUpdate){
List<GF_Outlet_Monthly_Order_Summary__c> OrdSumList = [Select Id,Name,GF_Total_No_of_Orders__c,CurrencyIsoCode,GF_Total_Revenue__c,
GF_Transaction_Month__c,GF_Transaction_Year__c,GF_Outlet__r.GFID_Account__c
from GF_Outlet_Monthly_Order_Summary__c
where GF_Outlet__r.GFID_Account__c!=NULL AND Id IN :Trigger.new];
system.debug('===>OrdSumList'+OrdSumList);
if(OrdSumList.size()>0){
for(GF_Outlet_Monthly_Order_Summary__c outMonSum : OrdSumList){
AccIdMap.put(outMonSum.GF_Outlet__r.GFID_Account__c,null);
AccToOrdSumMap.put(outMonSum.GF_Outlet__r.GFID_Account__c,null);
}
}
if(AccIdMap.keySet().size() > 0){
for(GF_Order_Summary__c ordSum : [SELECT Id,Name,GF_Total_No_of_Orders__c,GF_Total_Revenue__c,GF_Transaction_Year__c,GF_Transaction_Month__c,GF_Account__c FROM GF_Order_Summary__c WHERE GF_Account__c IN :AccIdMap.keySet()]){
AccIdMap.put(ordSum.GF_Account__c,String.valueOf(ordSum.GF_Transaction_Month__c +'@@'+ordSum.GF_Transaction_Year__c));
system.debug('===>ragh'+ordSum);
AccToOrdSumMap.put(ordSum.GF_Account__c,ordSum);
System.debug('AccIdMap>>>>>>'+AccIdMap);
System.debug('AccToOrdSumMap>>>>>>'+AccToOrdSumMap);
}
for(GF_Outlet_Monthly_Order_Summary__c outMontOrdSum : OrdSumList){
system.debug('-->'+AccIdMap.get(outMontOrdSum.GF_Outlet__r.GFID_Account__c));
system.debug('-->'+ String.valueOf(outMontOrdSum.GF_Transaction_Month__c+'@@'+outMontOrdSum.GF_Transaction_Year__c));
if(AccToOrdSumMap.containsKey(outMontOrdSum.GF_Outlet__r.GFID_Account__c) &&
AccIdMap.containsKey(outMontOrdSum.GF_Outlet__r.GFID_Account__c) &&
String.valueOf(outMontOrdSum.GF_Transaction_Month__c+'@@'+outMontOrdSum.GF_Transaction_Year__c) ==
AccIdMap.get(outMontOrdSum.GF_Outlet__r.GFID_Account__c)){
GF_Order_Summary__c orsu=new GF_Order_Summary__c();
orsu = AccToOrdSumMap.get(outMontOrdSum.GF_Outlet__r.GFID_Account__c);
orsu.GF_Total_Revenue__c +=outMontOrdSum.GF_Total_Revenue__c;
orsu.GF_Total_No_of_Orders__c += outMontOrdSum.GF_Total_No_of_Orders__c;
updateOrdSumList.add(orsu);
System.debug('>>>>>updateOrdSumList '+updateOrdSumList);
}
else{
GF_Order_Summary__c orsu=new GF_Order_Summary__c();
orsu.CurrencyIsoCode=outMontOrdSum.CurrencyIsoCode ;
orsu.GF_Total_Revenue__c=outMontOrdSum.GF_Total_Revenue__c!=null?outMontOrdSum.GF_Total_Revenue__c:0;
orsu.GF_Total_No_of_Orders__c = outMontOrdSum.GF_Total_No_of_Orders__c!=null?outMontOrdSum.GF_Total_No_of_Orders__c:0;
orsu.GF_Transaction_Month__c=outMontOrdSum.GF_Transaction_Month__c!=null?outMontOrdSum.GF_Transaction_Month__c:'';
orsu.GF_Transaction_Year__c=outMontOrdSum.GF_Transaction_Year__c!=null?outMontOrdSum.GF_Transaction_Year__c:'';
orsu.GF_Account__c=outMontOrdSum.GF_Outlet__r.GFID_Account__c;
listAccountMonOrder.add(orsu);
}
}
}
}
if(trigger.isDelete){
List<GF_Outlet_Monthly_Order_Summary__c> OrdSumList = [Select Id,Name,GF_Total_No_of_Orders__c,CurrencyIsoCode,GF_Total_Revenue__c,
GF_Outlet__r.GFID_Account__c,GF_Transaction_Month__c,GF_Transaction_Year__c
from GF_Outlet_Monthly_Order_Summary__c
where GF_Outlet__r.GFID_Account__c !=NULL AND Id IN :Trigger.old];
system.debug('===>'+OrdSumList);
if(OrdSumList.size()>0){
for(GF_Outlet_Monthly_Order_Summary__c outMonSum : OrdSumList) {
AccIdMap.put(outMonSum.GF_Outlet__r.GFID_Account__c,null);
AccToOrdSumMap.put(outMonSum.GF_Outlet__r.GFID_Account__c,null);
}
}
if(AccIdMap.keySet().size() > 0){
for(GF_Order_Summary__c ordSum : [SELECT Id,Name,GF_Total_No_of_Orders__c,GF_Total_Revenue__c,GF_Transaction_Year__c,
GF_Transaction_Month__c,GF_Account__c
FROM GF_Order_Summary__c
WHERE GF_Account__c IN :AccIdMap.keySet()]){
AccIdMap.put(ordSum.GF_Account__c,String.valueOf(ordSum.GF_Transaction_Month__c +'@@'+ordSum.GF_Transaction_Year__c));
AccToOrdSumMap.put(ordSum.GF_Account__c,ordSum);
System.debug('AccIdMap>>>>>>'+AccIdMap);
System.debug('AccToOrdSumMap>>>>>>'+AccToOrdSumMap);
system.debug('===>'+ordSum);
}
for(GF_Outlet_Monthly_Order_Summary__c outMontOrdSum : OrdSumList){
system.debug('-->'+AccIdMap.get(outMontOrdSum.GF_Outlet__r.GFID_Account__c));
system.debug('-->'+ String.valueOf(outMontOrdSum.GF_Transaction_Month__c+'@@'+outMontOrdSum.GF_Transaction_Year__c));
if(AccToOrdSumMap.containsKey(outMontOrdSum.GF_Outlet__r.GFID_Account__c) &&
AccIdMap.containsKey(outMontOrdSum.GF_Outlet__r.GFID_Account__c) &&
String.valueOf(outMontOrdSum.GF_Transaction_Month__c+'@@'+outMontOrdSum.GF_Transaction_Year__c) ==
AccIdMap.get(outMontOrdSum.GF_Outlet__r.GFID_Account__c)){
system.debug('--->Raghav');
GF_Order_Summary__c orsu=new GF_Order_Summary__c();
orsu = AccToOrdSumMap.get(outMontOrdSum.GF_Outlet__r.GFID_Account__c);
system.debug('===>orsu.GF_Total_Revenue__c'+orsu.GF_Total_Revenue__c);
system.debug('===>orsu.GF_Total_Revenue__c'+outMontOrdSum.GF_Total_Revenue__c);
system.debug('==fgndhfghg');
if(orsu.GF_Total_No_of_Orders__c == outMontOrdSum.GF_Total_No_of_Orders__c){
system.debug('===Raghav');
deleteOrdSumList.add(orsu);
break;
}
else{
orsu.GF_Total_Revenue__c -=outMontOrdSum.GF_Total_Revenue__c;
orsu.GF_Total_No_of_Orders__c-= outMontOrdSum.GF_Total_No_of_Orders__c;
updateOrdSumList.add(orsu);
break;
}
}
}
}
}
if(listAccountMonOrder.size() > 0)
insert listAccountMonOrder;
system.debug('==listAccountMonOrder'+listAccountMonOrder);
if(updateOrdSumList.size()> 0)
update updateOrdSumList;
system.debug('==updateOrdSumList'+updateOrdSumList);
if(deleteOrdSumList.size() > 0)
delete deleteOrdSumList;
system.debug('==deleteOrdSumList'+deleteOrdSumList);
}
<pre>
trigger UpdateOutletMOrderSummaryToAccmOrders on GF_Outlet_Monthly_Order_Summary__c
( after insert
, after update
, before delete
)
{
// this lets us consolidate all trigger events
List<GF_Outlet_Monthly_Order_Summary__c> records = Trigger.isDelete ? Trigger.old : Trigger.new;
Map<Id,String> accIdMap = new Map<Id,String>();
Map<Id,GF_Order_Summary__c> accToOrdSumMap = new Map<Id,GF_Order_Summary__c>();
List<GF_Outlet_Monthly_Order_Summary__c> ordSumList =
( [ SELECT Id, Name, GF_Total_No_of_Orders__c, CurrencyIsoCode, GF_Total_Revenue__c,
GF_Transaction_Month__c, GF_Transaction_Year__c, GF_Outlet__r.GFID_Account__c
FROM GF_Outlet_Monthly_Order_Summary__c
WHERE ( GF_Outlet__r.GFID_Account__c != null
AND Id IN :records
)
]
);
// if no query results, there's nothing else to do...
if ( ordSumList.isEmpty() ) return;
for ( GF_Outlet_Monthly_Order_Summary__c outMonSum : ordSumList )
{
accIdMap.put( outMonSum.GF_Outlet__r.GFID_Account__c, null );
accToOrdSumMap.put( outMonSum.GF_Outlet__r.GFID_Account__c, null );
}
for ( GF_Order_Summary__c ordSum :
[ SELECT Id, Name, GF_Total_No_of_Orders__c, GF_Total_Revenue__c,
GF_Transaction_Year__c, GF_Transaction_Month__c, GF_Account__c
FROM GF_Order_Summary__c
WHERE GF_Account__c IN :accIdMap.keySet()
]
)
{
String monthYear =
( outMontOrdSum.GF_Transaction_Month__c
+ '@@'
+ outMontOrdSum.GF_Transaction_Year__c
);
accIdMap.put( ordSum.GF_Account__c, monthYear );
accToOrdSumMap.put( ordSum.GF_Account__c, ordSum );
}
List<GF_Order_Summary__c> listAccountMonOrder = new List<GF_Order_Summary__c>();
List<GF_Order_Summary__c> updateOrdSumList = new List<GF_Order_Summary__c>();
List<GF_Order_Summary__c> deleteOrdSumList = new List<GF_Order_Summary__c>();
for ( GF_Outlet_Monthly_Order_Summary__c outMontOrdSum : ordSumList )
{
String monthYear =
( outMontOrdSum.GF_Transaction_Month__c
+ '@@'
+ outMontOrdSum.GF_Transaction_Year__c
);
if ( accToOrdSumMap.containsKey( outMontOrdSum.GF_Outlet__r.GFID_Account__c )
&& monthYear == accIdMap.get( outMontOrdSum.GF_Outlet__r.GFID_Account__c )
)
{
GF_Order_Summary__c orsu = accToOrdSumMap.get( outMontOrdSum.GF_Outlet__r.GFID_Account__c );
if ( !Trigger.isDelete )
{
orsu.GF_Total_Revenue__c += outMontOrdSum.GF_Total_Revenue__c;
orsu.GF_Total_No_of_Orders__c += outMontOrdSum.GF_Total_No_of_Orders__c;
updateOrdSumList.add( orsu );
}
else if ( orsu.GF_Total_No_of_Orders__c == outMontOrdSum.GF_Total_No_of_Orders__c )
{
deleteOrdSumList.add( orsu );
// I don't understand why we want to break here...
break;
}
else
{
orsu.GF_Total_Revenue__c -= outMontOrdSum.GF_Total_Revenue__c;
orsu.GF_Total_No_of_Orders__c -= outMontOrdSum.GF_Total_No_of_Orders__c;
updateOrdSumList.add( orsu );
// I don't understand why we want to break here...
break;
}
}
else if ( !Trigger.isDelete )
{
listAccountMonOrder.add
( new GF_Order_Summary__c
( CurrencyIsoCode = outMontOrdSum.CurrencyIsoCode
, GF_Account__c = outMontOrdSum.GF_Outlet__r.GFID_Account__c
// if these fields are defined to have a default
// value of 0, then we don't need these tests
, GF_Total_Revenue__c =
( outMontOrdSum.GF_Total_Revenue__c != null
? outMontOrdSum.GF_Total_Revenue__c
: 0
)
, GF_Total_No_of_Orders__c =
( outMontOrdSum.GF_Total_No_of_Orders__c != null
? outMontOrdSum.GF_Total_No_of_Orders__c
: 0
)
// I don't think these next two can ever be null, or
// we would have already thrown an exception.
, GF_Transaction_Month__c =
( outMontOrdSum.GF_Transaction_Month__c != null
? outMontOrdSum.GF_Transaction_Month__c
: ''
)
, GF_Transaction_Year__c =
( outMontOrdSum.GF_Transaction_Year__c != null
? outMontOrdSum.GF_Transaction_Year__c
: ''
)
)
);
}
}
// no need to test for empty lists. DML on empty lists does
// not throw an error and does not count against DML limits.
insert listAccountMonOrder;
update updateOrdSumList;
delete deleteOrdSumList;
}
</pre>