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
Harvey JethroHarvey Jethro 

Update parent picklist field with Child (managed package) text field based of order of preference of Child's text field.

I have a Parent object (Contact) and a Child object (Customer__c). The Child object's text field (Corp__c) values in order of weight are: "Very Viable",  "Averagely Viable", "Somewhat Viable", "Not Viable" and "Indifferent". If a parent record has two Child records so that Corp__c for the two records are "Averagely Viable" and "Not Viable", then I want a picklist field on the parent to update as "Averagely Viable" (since "Averagely Viable" has more weight than "Not Viable").
My first question is :
Can I write a trigger on a managed package (The Custom Object Definition is managed)?

Secondly, I've written a trigger for newly created Customer records for a start but it is just not working. 

trigger CorpUpdate on Customer__c (after insert) {
    if(Trigger.isInsert){
                          try {
                     
                    for (Customer__c co : Trigger.new){
                        Contact po = [SELECT Id, picklist__c FROM Contact WHERE Id = :co.npe5__Contact__c];               
                      List<Customer__c> l_co = [SELECT Id,Corp__c ,npe5__Contact__c FROM Customer__c
                       WHERE npe5__Contact__c = :po.Id];
                        for(Customer__c am_co : l_co) {
                            if(am_co.Corp__c  == 'Very Viable' || am_co.Corp__c  == 'Averagely Viable') {
 
                            am_co.Corp__c   = 'Very Viable';
                        }
     
                        else if (am_co.Corp__c  == 'Very Viable' || am_co.Corp__c  == 'Somewhat Viable') {
                         am_co.Corp__c   = 'Very Viable';      
                       }
                      else if(am_co.Corp__c  == 'Very Viable' || am_co.Corp__c == 'Not Viable' )
                        {
                        am_co.Corp__c   = 'Very Viable';
                        }       
                    else if(am_co.Corp__c  == 'Very Viable' || am_co.Corp__c  == 'Indifferent' )
                     {
                        am_co.Corp__c   = 'Very Viable';
                    }
                    else if(am_co.Corp__c  == 'Averagely Viable' || am_co.Corp__c  == 'Somewhat Viable' )
                    {
                        am_co.Corp__c   = 'Averagely Viable';
                    }
                    else if(am_co.Corp__c  == 'Averagely Viable' || am_co.Corp__c  == 'Not Viable' )
                    {
                        am_co.Corp__c   = 'Averagely Viable';
                    }
                    else if(am_co.Corp__c  == 'Averagely Viable' || am_co.Corp__c  == 'Indifferent' )
                    {
                        am_co.Corp__c   = 'Averagely Viable';
                    }
                    else if(am_co.Corp__c  == 'Somewhat Viable' || am_co.Corp__c  == 'Not Viable' )
                    {
                    am_co.Corp__c   = 'Somewhat Viable';
                    }
                    else if(am_co.Corp__c  == 'Somewhat Viable' || am_co.Corp__c  == 'Indifferent' )
                    {
                    am_co.Corp__c   = 'Somewhat Viable';
                     }
                    else if(am_co.Corp__c  == 'Not Viable' || am_co.Corp__c  == 'Indifferent' )
                    {
                     am_co.Corp__c   = 'Not Viable';
                    }
                    else {
                  am_co.Corp__c = 'Indifferent' ;
                  }
                 po.picklist__c = l_co.Corp__c;
           }             
           update po;         
      }
      
            } catch (Exception e) {
                System.debug(e);
            }
        }
   
  
}


     

I'm a newbie when it comes to Triggers any help would be greatly appreciated!
Raj VakatiRaj Vakati
You can able to write the trigger on managed package object 
Raj VakatiRaj Vakati
trigger CorpUpdate on <NAMESPACE__Customer__c (after insert) {
    if(Trigger.isInsert){
                          try {
                     
                    for (Customer__c co : Trigger.new){
                        Contact po = [SELECT Id, picklist__c FROM Contact WHERE Id = :co.npe5__Contact__c];               
                      List<Customer__c> l_co = [SELECT Id,Corp__c ,npe5__Contact__c FROM Customer__c
                       WHERE npe5__Contact__c = :po.Id];
                        for(Customer__c am_co : l_co) {
                            if(am_co.Corp__c  == 'Very Viable' || am_co.Corp__c  == 'Averagely Viable') {
 
                            am_co.Corp__c   = 'Very Viable';
                        }
     
                        else if (am_co.Corp__c  == 'Very Viable' || am_co.Corp__c  == 'Somewhat Viable') {
                         am_co.Corp__c   = 'Very Viable';      
                       }
                      else if(am_co.Corp__c  == 'Very Viable' || am_co.Corp__c == 'Not Viable' )
                        {
                        am_co.Corp__c   = 'Very Viable';
                        }       
                    else if(am_co.Corp__c  == 'Very Viable' || am_co.Corp__c  == 'Indifferent' )
                     {
                        am_co.Corp__c   = 'Very Viable';
                    }
                    else if(am_co.Corp__c  == 'Averagely Viable' || am_co.Corp__c  == 'Somewhat Viable' )
                    {
                        am_co.Corp__c   = 'Averagely Viable';
                    }
                    else if(am_co.Corp__c  == 'Averagely Viable' || am_co.Corp__c  == 'Not Viable' )
                    {
                        am_co.Corp__c   = 'Averagely Viable';
                    }
                    else if(am_co.Corp__c  == 'Averagely Viable' || am_co.Corp__c  == 'Indifferent' )
                    {
                        am_co.Corp__c   = 'Averagely Viable';
                    }
                    else if(am_co.Corp__c  == 'Somewhat Viable' || am_co.Corp__c  == 'Not Viable' )
                    {
                    am_co.Corp__c   = 'Somewhat Viable';
                    }
                    else if(am_co.Corp__c  == 'Somewhat Viable' || am_co.Corp__c  == 'Indifferent' )
                    {
                    am_co.Corp__c   = 'Somewhat Viable';
                     }
                    else if(am_co.Corp__c  == 'Not Viable' || am_co.Corp__c  == 'Indifferent' )
                    {
                     am_co.Corp__c   = 'Not Viable';
                    }
                    else {
                  am_co.Corp__c = 'Indifferent' ;
                  }
                 po.picklist__c = l_co.Corp__c;
           }             
           update po;         
      }
      
            } catch (Exception e) {
                System.debug(e);
            }
        }
   
  
}