You need to sign in to do that
Don't have an account?
problem with trigger while trying to update record
Bid__c Object record values does not getting updated when I exectute this trigger. But I didn't receive any error in this trigger. The Bid__c object values alone not getting updated
trigger UpdateRFQBid on RFQ__c (after update)
{
List<Bid__c> lstBid = new List<Bid__c>();
for(RFQ__c r : Trigger.new)
{
if(r.Mode_s__c != null)
{
// split out the multi-select picklist using the semicolon delimiter
for(String modes: r.Mode_s__c.split(';'))
{
if (modes == 'Private Fleet' && r.Bid_Private_Fleet__c == true)
{
// Check for EXISTING Record:
Bid__c[] Old_Bid =
[ SELECT Id FROM Bid__c WHERE Modes__c='Private Fleet' AND RFQ__c=:r.id];
System.debug('Old_Bid.Size()=' + Old_Bid.Size());
if(Old_Bid.Size()==0) // If NONE then Add
{
{
Bid__c b = new Bid__c();
b.RFQ__C = r.id;
b.RecordTypeId = '012Z00000004XEsIAM';
b.Modes__c = 'Private Fleet';
b.Apex_trigger__c = true;
lstBid.add(b);
}
}
}
{
if (modes == 'Dry Van')
{
// Check for EXISTING Record:
Bid__c[] Old_Bid =
[ SELECT Id FROM Bid__c WHERE Modes__c='Dry Van' AND RFQ__c=:r.id];
System.debug('Old_Bid.Size()=' + Old_Bid.Size());
if(Old_Bid.Size()==0) // If NONE then Add
{
Bid__c b = new Bid__c();
b.RFQ__C = r.id;
b.RecordTypeId = '012Z00000004XExIAM';
b.Modes__c = 'Dry Van';
b.Apex_trigger__c = true;
lstBid.add(b);
}
}
}
{
if (modes == 'Flatbed')
{
// Check for EXISTING Record:
system.debug('&&&&&&');
Bid__c[] Old_Bid =
[ SELECT Id FROM Bid__c WHERE Modes__c='Flatbed' AND RFQ__c=:r.id];
System.debug('Old_Bid.Size()=' + Old_Bid.Size());
if(Old_Bid.Size()==0) // If NONE then Add
{
Bid__c b = new Bid__c();
b.RFQ__C = r.id;
b.RecordTypeId = '012Z00000004XFqIAM';
b.Modes__c = 'Flatbed';
b.Apex_trigger__c = true;
lstBid.add(b);
}
}
}
{
if (modes == 'IMDL')
{
// Check for EXISTING Record:
Bid__c[] Old_Bid =
[ SELECT Id FROM Bid__c WHERE Modes__c='IMDL' AND RFQ__c=:r.id];
System.debug('Old_Bid.Size()=' + Old_Bid.Size());
if(Old_Bid.Size()==0) // If NONE then Add
{
Bid__c b = new Bid__c();
b.RFQ__C = r.id;
b.RecordTypeId = '012Z00000004XG5IAM';
b.Modes__c = 'IMDL';
b.Apex_trigger__c = true;
lstBid.add(b);
}
}
}
{
if (modes == 'LTL')
{
// Check for EXISTING Record:
Bid__c[] Old_Bid =
[ SELECT Id FROM Bid__c WHERE Modes__c='LTL' AND RFQ__c=:r.id];
System.debug('Old_Bid.Size()=' + Old_Bid.Size());
if(Old_Bid.Size()==0) // If NONE then Add
{
Bid__c b = new Bid__c();
b.RFQ__C = r.id;
b.RecordTypeId = '012Z00000004XG0IAM';
b.Modes__c = 'LTL';
b.Apex_trigger__c = true;
lstBid.add(b);
}
}
}
{
if (modes == 'Reefer')
{
// Check for EXISTING Record:
Bid__c[] Old_Bid =
[ SELECT Id FROM Bid__c WHERE Modes__c='Reefer' AND RFQ__c=:r.id];
System.debug('Old_Bid.Size()=' + Old_Bid.Size());
if(Old_Bid.Size()==0) // If NONE then Add
{
Bid__c b = new Bid__c();
b.RFQ__C = r.id;
b.RecordTypeId = '012Z00000004XFlIAM';
b.Modes__c = 'Reefer';
b.Apex_trigger__c = true;
lstBid.add(b);
}
}
}
{
if (modes == 'RFI')
{
// Check for EXISTING Record:
Bid__c[] Old_Bid =
[ SELECT Id FROM Bid__c WHERE Modes__c='RFI' AND RFQ__c=:r.id];
System.debug('Old_Bid.Size()=' + Old_Bid.Size());
if(Old_Bid.Size()==0) // If NONE then Add
{
Bid__c b = new Bid__c();
b.RFQ__C = r.id;
b.RecordTypeId = '012Z00000004XFvIAM';
b.Modes__c = 'RFI';
b.Apex_trigger__c = true;
lstBid.add(b);
}
}
}
}
}
}
upsert lstBid;
}
Also why don't you break this down into smaller chunks. And try to make this query once instead of for each mode:
[ SELECT Id FROM Bid__c WHERE Modes__c='RFI' AND RFQ__c=:r.id];