• Karthik Sundara Raj
  • NEWBIE
  • 25 Points
  • Member since 2016

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 6
    Questions
  • 10
    Replies
Hi All,
I have written a Trigger which I have attached in below.It is working well when I give Direct Value as"'VIN__c='WAUZZZ8V3FA002049' ",But If I give dynamic Value as 'VIN__c=:setStrVINNumber" it is not working,Please have look the code in below:
String modelyear1;
String LMOI;
    // loop through all contacts to be updated 
  String setStrVINNumber;
    if(trigger.isBefore){
        if (trigger.isInsert || trigger.isUpdate){
               
            system.debug('-------333333-----1');
            for(Contact Objcont:Trigger.New){
               setStrVINNumber = Objcont.Id;
               LMOI=Objcont.Latest_Model_of_Interest__c;
            }
            system.debug('ID..........'+ setStrVINNumber);
           /*//////////////////////////////////////////////*/
           if(LMOI == null){
           system.debug('ID.......222222222222...'+ setStrVINNumber);
            for(Contact_Vehicle_Ownership__c objCVO : [SELECT Id,VIN__c,Name,Model_Display_Name__c FROM 
                            Contact_Vehicle_Ownership__c where VIN__c='WAUZZZ8V3FA002049' AND Customer_Vehicle_Relationship_Status__c='Active'])
             
               {  
                                       modelyear1=objCVO.Model_Display_Name__c;
                   
               }
               }
               else
               {
              modelyear1=LMOI;
              // Objcont.Current_Model__c=Objcont.Latest_Model_of_Interest__c;
               }
               for(Contact Objcont:Trigger.New){
               Objcont.Current_Model__c=modelyear1;
            }
Please let me know if any queries.
Thanks&Regards,
Karthik
Hi All,
Please help me to solve this trigger:

  for(Contact Objcont: Trigger.New)
        {
               setStrVINNumber.add(Objcont.Id);
            
            AggregateResult[] results = [select Count(Name)owned
                        from Contact_Vehicle_Ownership__c
                        where Contact_Name__c IN:setStrVINNumber
                        AND Customer_Vehicle_Relationship_Status__c='Active' ];
                        system.debug('------------2'+results);
for (AggregateResult ar : results) { 
  Objcont.Owned_Vehicles__c=ar.get('owned');
     system.debug('------------'+ar.get('owned'));
            
            }
                     
         }
    }

Thanks,

Karthik
Hi All,
What is the right solution for following the Trigger?
trigger TestSLTV on Service_Work_Order__c (after insert, after update)
{
    
    if (Trigger.isAfter && (Trigger.isInsert || Trigger.isUpdate))
    {
        Set<String> setStrVINNumber = new Set<String>();
        Set<String> setStrVINNumber1 = new Set<String>();
         Set<String> setStrVINNumber2 = new Set<String>();
        // Set<Date> setStrVINNumber3 = new Set<Date>();
        Map<String, Decimal> mapStrVINNumToTotal = new Map<String, Decimal>();
        List<Vehicle__c> lstVehicleToUpdate = new List<Vehicle__c>();
        List<Vehicle_Ownership__c> lstAVOToUpdate = new List<Vehicle_Ownership__c>();
        List<Contact_Vehicle_Ownership__c> lstCVOToUpdate = new List<Contact_Vehicle_Ownership__c>();
        // iterate over SWOs and collect VIN numbers
          if (trigger.isAfter && trigger.isUpdate) 
    {
       system.debug('------------1');
        for(Contact Objcont: Trigger.New)
        {
               setStrVINNumber.add(Objcont.Id);
            
           for( Contact_Vehicle_Ownership__c ObjCVO : [select VIN__c,Name,Contact_name__c,Relationship_Start_Date__c,
                                                       Relationship_End_Date__c
                                                       from Contact_Vehicle_Ownership__c
                                                       where Contact_name__c IN :setStrVINNumber  AND Relationship_End_Date__c=Null ])
            {
                 setStrVINNumber1.add(ObjCVO.VIN__c);
                            
               // for( Vehicle__c ObjVeh: [select Name from Contact_Vehicle_Ownership__c where Name IN:setStrVINNumber1 ])
                                   for( Service_Work_Order__c ObjSWO1 : [SELECT sum(Test_Total_Work_Order_Cost_ExGST__c)activesum
                                                                FROM Service_Work_Order__c 
                                                                WHERE Workorder_VIN_Number__c IN:setStrVINNumber1])
                                       
                                   {
                                       
                                       integer abc='activesum';
                                   }
            }                       
                
            
            
            
            
             for( Contact_Vehicle_Ownership__c ObjCVO : [select VIN__c,Name,Contact_name__c,Relationship_Start_Date__c,
                                                       Relationship_End_Date__c
                                                       from Contact_Vehicle_Ownership__c
                                                       where Contact_name__c IN :setStrVINNumber  AND Relationship_End_Date__c!=Null ])
            {
                
                mapStrVINNumToTotal.put((String)objCVO.get(VIN__c),(Date)objCVO.get(Relationship_Start_Date__c),(Date)objCVO.get(Relationship_End_Date__c));
                // setStrVINNumber4.add(ObjCVO.VIN__c);
                // setStrVINNumber2.add(ObjCVO.Relationship_Start_Date__c);
                 //setStrVINNumber3.add(ObjCVO.Relationship_Start_Date__c);
                
               // for( Vehicle__c ObjVeh: [select Name from Contact_Vehicle_Ownership__c where Name IN:setStrVINNumber1 ])
                                   for( Service_Work_Order__c ObjSWO1 : [SELECT SUM(Test_Total_Work_Order_Cost_ExGST__c)
                                        FROM Service_Work_Order__c 
                                        WHERE Workorder_VIN_Number__c IN:mapStrVINNumToTotal.get(ObjCVO.VIN__c) AND  Service_Date__cIN:mapStrVINNumToTotal.get(ObjCVO.Relationship_Start_Date__c) AND Service_Date__cIN:mapStrVINNumToTotal.get(ObjCVO.Relationship_End_Date__c)] )
                                       
                                   {
                                       
                                       integer xyz='activesum';
                                   }
            }  
            
            
        }
        Objcont.Service_life_time= abc + xyz;
        
        
    }}}
            

Please ask me for more detail about this operation.

Thanks,
Karthik
Hi All,
I would like to map same data Vehicle Object to Service work order Object which have master-details relationship.I tried that code but it not working,Please find the code and correct in below:It is in bold and italic:

trigger ServiceLifeTimeValue on Service_Work_Order__c (after insert, after update)
{
    
    if (Trigger.isAfter && (Trigger.isInsert || Trigger.isUpdate))
    {
        Set<String> setStrVINNumber = new Set<String>();
        Set<String> setStrVINNumber1 = new Set<String>();
        Map<String, Decimal> mapStrVINNumToTotal = new Map<String, Decimal>();
        List<Vehicle__c> lstVehicleToUpdate = new List<Vehicle__c>();
        
        // iterate over SWOs and collect VIN numbers
        for(Service_Work_Order__c objSWO : Trigger.New)
        {
            setStrVINNumber.add(objSWO.Workorder_VIN_Number__c);
        }
        
        // calculate sum
        for(AggregateResult objAR : [   SELECT SUM(Test_Total_Work_Order_Cost_ExGST__c) total,  Workorder_VIN_Number__c VIN
                                        FROM Service_Work_Order__c 
                                        WHERE Workorder_VIN_Number__c IN :setStrVINNumber GROUP BY Workorder_VIN_Number__c] )
        {
            mapStrVINNumToTotal.put((String)objAR.get('VIN'),(Decimal)objAR.get('total'));
        }
        
        // iterate over matching vehicles and update the total amount.
        for(Vehicle__c objVehicle : [   SELECT Id,Test_service_life_time_value__c ,Name
                                        FROM Vehicle__c 
                                        WHERE Name IN :setStrVINNumber])
        {
        
            if(mapStrVINNumToTotal.containsKey(objVehicle.Name))
            {
                objVehicle.Test_service_life_time_value__c =  mapStrVINNumToTotal.get(objVehicle.Name);
                lstVehicleToUpdate.add(objVehicle);
                
              /*/////////////////////////////////////////////////////////////*/
                       for(Vehicle__c objVehicle1 : [   SELECT Id,Test_service_life_time_value__c ,Name
                                        FROM Vehicle__c 
                                        WHERE Name IN :setStrVINNumber])
        {
        setStrVINNumber1.add(objVehicle1.Id);
       
              
              
              for(Vehicle_Ownership__c objAVO : [   SELECT Id,VIN__c,Test_Roll__c ,Name
                                        FROM Vehicle_Ownership__c 
                                        WHERE VIN__c IN :setStrVINNumber1 AND Customer_Vehicle_Relationship_Status__c='Active'])
             
                  {                      
                  objAVO.Test_Roll__c=objVehicle1.Test_service_life_time_value__c ;
                //lstVehicleToUpdate.add(objVehicle);       }                
                     }
                /*/////////////////////////////////////////////////////////////*/

                     }
        }
        
        // update vehicles - If any exception occurs, it throw an error - so passed 'true' 
        if(lstVehicleToUpdate.size() > 0 ) // check list size before DML
        {
            DataBase.Update(lstVehicleToUpdate, true);
        }                    
            
              
        }
    }
}
       Hi All,
I would like to find how many feb 29's between two randam dates.I found a solution and it working but some test cases dose not working.
        integer n =0;
        integer Sdate=2012;
        integer Edate1=Sdate;
        integer Edate=Edate1+2;//2014
        integer smonth=2;
        integer sday=2;
        integer Emonth=2;
        integer Eday=1;

        For(Integer i =0 ; i<=Edate- Sdate; i++){
             If (Math.mod(Sdate, 400) == 0 ||( Math.mod(Sdate, 4) == 0 && Math.mod(Sdate, 100) != 0)&&(Edate == Sdate)){
                n=n+1;
                Sdate=Sdate+1;
                i--;
                //system.debug('Counts of (n) = '+ n);
            }
            else{
                If (Math.mod(Sdate, 400) == 0 ||( Math.mod(Sdate, 4) == 0 && Math.mod(Sdate, 100) != 0)){
                    n=n+1;
                    Sdate=Sdate+1;
                    i--;
                }
                Else{
                    n=n+0;
                    Sdate=Sdate+1;
                    i--;
                }
            }
        }
        system.debug('Start Year = '+ Sdate);
        system.debug('End Year = '+ Edate);
           system.debug('Counts of (n) = '+ n);

Thanks,

Karthik

trigger ServiceLifeTimeValue on Service_Work_Order__c (after insert, after update){
   
    if (trigger.isAfter && (trigger.isInsert || trigger.isUpdate) ){
    string VINNumber;
        
    Vehicle__c objVehicle = new Vehicle__c();
        for(Service_Work_Order__c swo:trigger.new){
       VINNumber = swo.Workorder_VIN_Number__c;
   AggregateResult[] totalCost = [select SUM(Test_Total_Work_Order_Cost_ExGST__c) from Service_Work_Order__c where Workorder_VIN_Number__c=:VINNumber];

 objVehicle = [Select Id,Test_service_life_time_value__c From Vehicle__c Where Name=:VINNumber];
    objVehicle.Test_service_life_time_value__c =Integer.valueOf(totalCost);
    }
   
    Update objVehicle;  
    }
    }

I have recived Following Error meassage:

Error:Apex trigger ServiceLifeTimeValue caused an unexpected exception, contact your administrator: ServiceLifeTimeValue: execution of AfterUpdate caused by: System.QueryException: List has more than 1 row for assignment to SObject: Trigger.ServiceLifeTimeValue: line 11, column 1

Thanks,

Karthik
Hi All,
Please help me to solve this trigger:

  for(Contact Objcont: Trigger.New)
        {
               setStrVINNumber.add(Objcont.Id);
            
            AggregateResult[] results = [select Count(Name)owned
                        from Contact_Vehicle_Ownership__c
                        where Contact_Name__c IN:setStrVINNumber
                        AND Customer_Vehicle_Relationship_Status__c='Active' ];
                        system.debug('------------2'+results);
for (AggregateResult ar : results) { 
  Objcont.Owned_Vehicles__c=ar.get('owned');
     system.debug('------------'+ar.get('owned'));
            
            }
                     
         }
    }

Thanks,

Karthik
Hi All,
I would like to map same data Vehicle Object to Service work order Object which have master-details relationship.I tried that code but it not working,Please find the code and correct in below:It is in bold and italic:

trigger ServiceLifeTimeValue on Service_Work_Order__c (after insert, after update)
{
    
    if (Trigger.isAfter && (Trigger.isInsert || Trigger.isUpdate))
    {
        Set<String> setStrVINNumber = new Set<String>();
        Set<String> setStrVINNumber1 = new Set<String>();
        Map<String, Decimal> mapStrVINNumToTotal = new Map<String, Decimal>();
        List<Vehicle__c> lstVehicleToUpdate = new List<Vehicle__c>();
        
        // iterate over SWOs and collect VIN numbers
        for(Service_Work_Order__c objSWO : Trigger.New)
        {
            setStrVINNumber.add(objSWO.Workorder_VIN_Number__c);
        }
        
        // calculate sum
        for(AggregateResult objAR : [   SELECT SUM(Test_Total_Work_Order_Cost_ExGST__c) total,  Workorder_VIN_Number__c VIN
                                        FROM Service_Work_Order__c 
                                        WHERE Workorder_VIN_Number__c IN :setStrVINNumber GROUP BY Workorder_VIN_Number__c] )
        {
            mapStrVINNumToTotal.put((String)objAR.get('VIN'),(Decimal)objAR.get('total'));
        }
        
        // iterate over matching vehicles and update the total amount.
        for(Vehicle__c objVehicle : [   SELECT Id,Test_service_life_time_value__c ,Name
                                        FROM Vehicle__c 
                                        WHERE Name IN :setStrVINNumber])
        {
        
            if(mapStrVINNumToTotal.containsKey(objVehicle.Name))
            {
                objVehicle.Test_service_life_time_value__c =  mapStrVINNumToTotal.get(objVehicle.Name);
                lstVehicleToUpdate.add(objVehicle);
                
              /*/////////////////////////////////////////////////////////////*/
                       for(Vehicle__c objVehicle1 : [   SELECT Id,Test_service_life_time_value__c ,Name
                                        FROM Vehicle__c 
                                        WHERE Name IN :setStrVINNumber])
        {
        setStrVINNumber1.add(objVehicle1.Id);
       
              
              
              for(Vehicle_Ownership__c objAVO : [   SELECT Id,VIN__c,Test_Roll__c ,Name
                                        FROM Vehicle_Ownership__c 
                                        WHERE VIN__c IN :setStrVINNumber1 AND Customer_Vehicle_Relationship_Status__c='Active'])
             
                  {                      
                  objAVO.Test_Roll__c=objVehicle1.Test_service_life_time_value__c ;
                //lstVehicleToUpdate.add(objVehicle);       }                
                     }
                /*/////////////////////////////////////////////////////////////*/

                     }
        }
        
        // update vehicles - If any exception occurs, it throw an error - so passed 'true' 
        if(lstVehicleToUpdate.size() > 0 ) // check list size before DML
        {
            DataBase.Update(lstVehicleToUpdate, true);
        }                    
            
              
        }
    }
}
       Hi All,
I would like to find how many feb 29's between two randam dates.I found a solution and it working but some test cases dose not working.
        integer n =0;
        integer Sdate=2012;
        integer Edate1=Sdate;
        integer Edate=Edate1+2;//2014
        integer smonth=2;
        integer sday=2;
        integer Emonth=2;
        integer Eday=1;

        For(Integer i =0 ; i<=Edate- Sdate; i++){
             If (Math.mod(Sdate, 400) == 0 ||( Math.mod(Sdate, 4) == 0 && Math.mod(Sdate, 100) != 0)&&(Edate == Sdate)){
                n=n+1;
                Sdate=Sdate+1;
                i--;
                //system.debug('Counts of (n) = '+ n);
            }
            else{
                If (Math.mod(Sdate, 400) == 0 ||( Math.mod(Sdate, 4) == 0 && Math.mod(Sdate, 100) != 0)){
                    n=n+1;
                    Sdate=Sdate+1;
                    i--;
                }
                Else{
                    n=n+0;
                    Sdate=Sdate+1;
                    i--;
                }
            }
        }
        system.debug('Start Year = '+ Sdate);
        system.debug('End Year = '+ Edate);
           system.debug('Counts of (n) = '+ n);

Thanks,

Karthik

trigger ServiceLifeTimeValue on Service_Work_Order__c (after insert, after update){
   
    if (trigger.isAfter && (trigger.isInsert || trigger.isUpdate) ){
    string VINNumber;
        
    Vehicle__c objVehicle = new Vehicle__c();
        for(Service_Work_Order__c swo:trigger.new){
       VINNumber = swo.Workorder_VIN_Number__c;
   AggregateResult[] totalCost = [select SUM(Test_Total_Work_Order_Cost_ExGST__c) from Service_Work_Order__c where Workorder_VIN_Number__c=:VINNumber];

 objVehicle = [Select Id,Test_service_life_time_value__c From Vehicle__c Where Name=:VINNumber];
    objVehicle.Test_service_life_time_value__c =Integer.valueOf(totalCost);
    }
   
    Update objVehicle;  
    }
    }

I have recived Following Error meassage:

Error:Apex trigger ServiceLifeTimeValue caused an unexpected exception, contact your administrator: ServiceLifeTimeValue: execution of AfterUpdate caused by: System.QueryException: List has more than 1 row for assignment to SObject: Trigger.ServiceLifeTimeValue: line 11, column 1

Thanks,

Karthik