You need to sign in to do that
Don't have an account?
Deepak Sharma 184
updating child object field with the parent object field.
Hi Expert,
There r two objects "project member" and "resource" in which under "project member" object i have to update the field "hour rate" with "resource" object field "hour cost", when something is written in "hour cost" field, otherwise "hour rate" field not update and able to enter something and save it.
my code is-
public class updateHourlyRate
{
public static List<CloudbyzITPM__Team_Member__c> affectedProd= new
List<CloudbyzITPM__Team_Member__c>();
public static List<CloudbyzITPM__Team_Member__c> affectedProd_final=
new List<CloudbyzITPM__Team_Member__c>();
public static set<ID> afc2 = new set<ID>();
public static void processAfterUpdateOrInsertHourlyCost(){
affectedProd = (List<CloudbyzITPM__Team_Member__c>)Trigger.New;
if(affectedProd.size()>0){
for(CloudbyzITPM__Team_Member__c affc : affectedProd){
afc2.add(affc.CloudbyzITPM__Team_Member__c);
}
}
CloudbyzITPM__Resource__c fn = [Select id,
CloudbyzITPM__Hourly_Cost__c from CloudbyzITPM__Resource__c where id
IN :afc2 limit 1];
List<CloudbyzITPM__Team_Member__c> affectedProd1 = [Select
id,name,CloudbyzITPM__Hourly_Rate__c from CloudbyzITPM__Team_Member__c
where CloudbyzITPM__Resource__c = :fn.id];
// Decimal i =0 ;
if(affectedProd1.size()>0){
for(CloudbyzITPM__Team_Member__c affc : affectedProd1){
affc.CloudbyzITPM__Hourly_Rate__c = fn.CloudbyzITPM__Hourly_Cost__c;
affectedProd_final.add(affc);
}
}
update affectedProd_final;
}
}
trigger- trigger HourRate on CloudbyzITPM__Resource__c (before insert, before update, before delete, after insert, after update, after delete)
{
if((Trigger.isInsert || Trigger.isUpdate) && Trigger.isAfter)
{
updateHourlyRate.processAfterUpdateOrInsertHourlyCost();
}
}
when i change the field "hourly cost" , it gives an error.
"Error: Invalid Data.
Review all error messages below to correct your data.
Apex trigger HourRate caused an unexpected exception, contact your administrator: HourRate: execution of AfterUpdate caused by: System.TypeException: Invalid conversion from runtime type List to List: Class.updateHourlyRate.processAfterUpdateOrInsertHourlyCost: line 10, column 1"
There r two objects "project member" and "resource" in which under "project member" object i have to update the field "hour rate" with "resource" object field "hour cost", when something is written in "hour cost" field, otherwise "hour rate" field not update and able to enter something and save it.
my code is-
public class updateHourlyRate
{
public static List<CloudbyzITPM__Team_Member__c> affectedProd= new
List<CloudbyzITPM__Team_Member__c>();
public static List<CloudbyzITPM__Team_Member__c> affectedProd_final=
new List<CloudbyzITPM__Team_Member__c>();
public static set<ID> afc2 = new set<ID>();
public static void processAfterUpdateOrInsertHourlyCost(){
affectedProd = (List<CloudbyzITPM__Team_Member__c>)Trigger.New;
if(affectedProd.size()>0){
for(CloudbyzITPM__Team_Member__c affc : affectedProd){
afc2.add(affc.CloudbyzITPM__Team_Member__c);
}
}
CloudbyzITPM__Resource__c fn = [Select id,
CloudbyzITPM__Hourly_Cost__c from CloudbyzITPM__Resource__c where id
IN :afc2 limit 1];
List<CloudbyzITPM__Team_Member__c> affectedProd1 = [Select
id,name,CloudbyzITPM__Hourly_Rate__c from CloudbyzITPM__Team_Member__c
where CloudbyzITPM__Resource__c = :fn.id];
// Decimal i =0 ;
if(affectedProd1.size()>0){
for(CloudbyzITPM__Team_Member__c affc : affectedProd1){
affc.CloudbyzITPM__Hourly_Rate__c = fn.CloudbyzITPM__Hourly_Cost__c;
affectedProd_final.add(affc);
}
}
update affectedProd_final;
}
}
trigger- trigger HourRate on CloudbyzITPM__Resource__c (before insert, before update, before delete, after insert, after update, after delete)
{
if((Trigger.isInsert || Trigger.isUpdate) && Trigger.isAfter)
{
updateHourlyRate.processAfterUpdateOrInsertHourlyCost();
}
}
when i change the field "hourly cost" , it gives an error.
"Error: Invalid Data.
Review all error messages below to correct your data.
Apex trigger HourRate caused an unexpected exception, contact your administrator: HourRate: execution of AfterUpdate caused by: System.TypeException: Invalid conversion from runtime type List to List: Class.updateHourlyRate.processAfterUpdateOrInsertHourlyCost: line 10, column 1"
and your trigger
is based on CloudbyzITPM__Resource__c object. So that, you cannot create a List of CloudbyzITPM__Team_Member__c elements. It shoudl be list of CloudbyzITPM__Resource__c
In any case, I'm not sure how this line compile because Trigger.New and all Trigger context are only valid on trigger files rather than classes.
Hope this helps
Agustina
Thanks for reply.
I modified the code.
public class updateHourlyRate2
{
public static List<CloudbyzITPM__Resource__c> affectedProd= new
List<CloudbyzITPM__Resource__c>();
public static List<CloudbyzITPM__Team_Member__c> affectedProd_final=
new List<CloudbyzITPM__Team_Member__c>();
public static set<ID> afc2 = new set<ID>();
public static void processAfterUpdateOrInsertHourlyCost(){
affectedProd = (List<CloudbyzITPM__Resource__c>)Trigger.New;
if(affectedProd.size()>0){
for(CloudbyzITPM__Resource__c affc : affectedProd){
afc2.add(affc.Cloudbyz__Hourly_cost__c);
}
}
CloudbyzITPM__Resource__c fn = [Select id,
CloudbyzITPM__Hourly_Cost__c from CloudbyzITPM__Resource__c where id
IN :afc2 limit 1];
List<CloudbyzITPM__Resource__c> affectedProd1 = [Select
id,name,CloudbyzITPM__Hourly_Cost__c from CloudbyzITPM__Resource__c
where id in: fn];
// Decimal i =0 ;
if(affectedProd1.size()>0){
for(CloudbyzITPM__Team_Member__c affc : affectedProd1){
affc.CloudbyzITPM__Hourly_Rate__c = fn.CloudbyzITPM__Hourly_Cost__c;
affectedProd_final.add(affc);
}
}
update affectedProd_final;
}
}
Can u plz tell where iam wrong here.
error-
Invalid field Cloudbyz__Hourly_cost__c for SObject CloudbyzITPM__Resource__c
Can u plz tell where iam wrong here.
How to do it with process builder. can u plz give the logic, because it needs to be updated when some value would be there in "hour cost" field.
The idea is that:
1. Process Builder is based on your Resource object. When a record is created or updated
2. The action to fire is that Resource.HourCost field is not null (someone has written a value there)
3. The action after the fire is to set ProjectMember.HourRate field with the value you need
Hope this helps
Thanks for the Help, I will look into this.
Regards,
Deepak