You need to sign in to do that
Don't have an account?
SObject row was retrieved via SOQL without querying field:OpportunityLineItem.CurrencyIsoCode.
Hi,
I'm Getting below error :-
Error Message System.SObjectException: SObject row was retrieved via SOQL without querying the requested field: OpportunityLineItem.CurrencyIsoCode
Class.SearchOpptyPageController.cOpportunity.<init>: line 530, column 1 Class.SearchOpptyPageController.getOpportunities: line 509, column 1 Class.SearchOpptyPageTest.opptyTest1: line 182, column 1
<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Controller Method due to which i'm getting error is :-
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.
public List<cOpportunity> getOpportunities(){
opportunityList = new List<cOpportunity>();
for(Opportunity o : (List<Opportunity>)con.getRecords()) {
if(ModalityString != null || PortfolioString != null){
if(o.OpportunityLineItems.size() > 0){
opportunityList.add(new cOpportunity(o));
}
}
else{
opportunityList.add(new cOpportunity(o)); <<<<<<<<<<ERROR-1 Line 509>>>>>>>>>>>>>>>>>
}
}
return opportunityList;
}
public Class cOpportunity{
public Product2 opppr1 {get;set;}
public Opportunity opp {get;set;}
public Account acc1 {get;set;} public Boolean selected{get;set;}
public String convertPrice {get;set;}
//public Decimal convertPrice {get;set;}
List<OpportunityLineItem> oppLineLst;
cOpportunity(Opportunity o){
convertPrice = '';
opp=o;
selected=false;
oppLineLst = [Select convertCurrency(TotalPrice),id,CurrencyIsoCode From OpportunityLineItem where OpportunityId =: o.Id];
oppLineLst = new List<OpportunityLineItem>();
For(OpportunityLineItem ol :o.OpportunityLineItems){
Double conversionRate = [SELECT conversionrate,isocode FROM currencytype WHERE isocode =:ol.CurrencyIsoCode LIMIT 1].conversionRate; <<<<<<<<<<<<<<ERROR -2 Line 530>>>>>>>>>>>>> >>>>>>>>>>>>
// if(!convertPrice.contains(String.ValueOf(ol.TotalPrice * conversionRate)))
if(ol.CurrencyIsoCode != 'USD')
convertPrice += '\n\r'+ (ol.TotalPrice * (1/conversionRate)).setscale(2)+'\n\r';
else convertPrice += '\n\r'+ (ol.TotalPrice).setscale(2) +'\n\r';
}
}
}