I have a Custom Object called "Opportunity_carset"Opportunity_carset
.the related list of Opportunity CarsetOpportunity Carset
Object is "Service"Service
.
The "Opportunity Carset"Opportunity Carse
Object has two fields.
1)Model
2)Version
The Service object has some Picklist Field called 1)"CodeLabel"
- Model
- Version
Model and Version values from "Opportunity Carset" are sent as parameter to webservice class to retrieve the "service" Object Custom Picklist values.
The Service object has some Picklist Field called
CodeLabel
Model and Version values from "Opportunity Carset" are sent as parameter to webservice class to retrieve the "service" Object Custom Picklist values.
My scenario:
My scenario:
Apex code public class Rfleet_DZC2GOptionDetails_CLS { public String strJSON {get;set;} public String strGeturl {get;set;} public String strGetcountrycode {get;set;} public String strGetCurrency {get;set;} public String strModelCode {get;set;} public String strVersionCode {get;set;} public String strVersionDocUrl {get;set;} public String strMarketingModelURL {get;set;} public String strPriceListURL {get;set;} public String strReferenceValue {get;set;} public string strOptionCode; public string strOptionLabel; public String strConcatOptionCodeLabel; public List<service__c> lstServiceRecord= new List<service__c>(); //to insert records in service object public List lstModelcalOut = new List(); //to get list of model code public List lstDoCcalOut = new List(); //to get list of docurls public List lstFinalContactOptionCodeLabel = new List(); //List of Option codes with Label public Map<String,String> mVersion = new map<String,String>(); //Contains model code+doc url public Map<String,String> mVersionVal = new map<String,String>(); //contains specific version doc url public Map<String, String> mapOptionCodeLabel = new Map<String,String>(); //Option code and label from Marketing URL public Map<String, Double> mapOptionCodePrice = new Map<String, Double>(); //Option code and Price from Price URL Rfleet_JSON2ApexC2G_CLS obj = null;
//Constructor used to get the modelcode and version code
public Rfleet_DZC2GOptionDetails_CLS() { Rfleet_CountryInfo__c cs = Rfleet_CountryInfo__c.getInstance('Algeria'); strGeturl = cs.Rfleet_C2GURL__c; } public Rfleet_DZC2GOptionDetails_CLS(String strOppid) { system.debug('strOppid >>>>'+ strOppid); Rfleet_CountryInfo__c cs = Rfleet_CountryInfo__c.getInstance('Algeria'); strGeturl = cs.Rfleet_C2GURL__c; }
public Rfleet_DZC2GOptionDetails_CLS(String strModelName, String strVersionName) {
Rfleet_CountryInfo__c cs = Rfleet_CountryInfo__c.getInstance('Algeria');
strGeturl = cs.Rfleet_C2GURL__c;
strGetcountrycode = cs.Rfleet_CountryCode__c;
strGetCurrency = cs.Rfleet_Currency__c;
Opportunity_car_set__c opp=[SELECT Model__r.ProductCode,Version__r.Rfleet_C2G_version_code__c FROM Opportunity_car_set__c where Model__r.name =: strModelName and Version__r.name =: strVersionName];
strModelCode = opp.Model__r.ProductCode;
strVersionCode = opp.Version__r.Rfleet_C2G_version_code__c;
system.debug('strModelCode >>>>'+ strModelCode);
system.debug('strVersionCode >>>>'+ strVersionCode);
} //Common method to Parse the JSON public String init(String strVersionURL) {
system.debug('## Inside init :: strVersionURL is..::'+ strVersionURL);
try {
Http http = new Http();
HttpRequest httpReq = new HttpRequest();
httpReq.setEndpoint(strVersionURL);
httpReq.setHeader('Accept','application/JSON');
httpReq.setMethod('GET');
HttpResponse response = http.send(httpReq);
strJSON= response.getBody();
} catch (Exception ex) {
system.debug('<<Method: init Exception ::'+ ex);
}
return strJSON;
}
//Used for Getting ModelCode and Doc URL in Map public Map<String, String> getJSONFromREST() {
system.debug('## Inside getJSONFromREST ##');
strJSON = init(strGeturl);
JSONParser parser = JSON.createParser(strJSON);
while(parser.nextToken() !=null) {
if (parser.getCurrentToken() == JSONToken.FIELD_NAME) {
String fieldName = parser.getText();
if(fieldName == 'modelSpecCode') {
parser.nextToken();
lstModelcalOut.add(parser.getText());
}
if(fieldName == 'doc') {
parser.nextToken();
lstDoCcalOut.add(parser.getText());
}
}
}
for(integer i=0;i<lstModelcalOut.size();i++) {
mVersion.put(lstModelcalOut.get(i),lstDoCcalOut.get(i));
}
system.debug('mVersion===>'+mVersion);
return mVersion;
} //Used to return the OptionCode and Label after getting the Price and Marketing URL for the Version
public Map<String, String> fetchModelSpecCodeandPricListURL( String strModelCode, String strVersionCode) {
system.debug('## Inside fetchModelSpecCodeandPricListURL method ##'); mVersionVal=getJSONFromREST();
system.debug('## mVersionVal is..::'+ mVersionVal);
system.debug('## strModelCode is..::'+ strModelCode);
if(mVersionVal.containsKey(strModelCode.trim())) {
system.debug('## Inside if condition ##' + strModelCode);
strVersionDocUrl= mVersionVal.get(strModelCode.trim());
}
system.debug('## strVersionDocUrl is..::'+ strVersionDocUrl);
strJSON = init(strVersionDocUrl);
system.debug('## fetchModelSpecCodeandPricListURL :: strJSON..::' +strJSON );
JSONParser parser = JSON.createParser(strJSON);
while (parser.nextToken() != null) {
if (parser.getCurrentToken() == JSONToken.FIELD_NAME) {
String fieldName = parser.getText();
if(fieldName == 'pricesList') {
parser.nextToken();
strPriceListURL=parser.getText();
system.debug('strPriceListURL>>>>'+strPriceListURL);
}
if (fieldName == 'marketingModelPresentation') {
parser.nextToken();
strMarketingModelURL = parser.getText();
system.debug('## strMarketingModelURL :: >>>>'+strMarketingModelURL);
}
}
}
if (strMarketingModelURL !=null && strMarketingModelURL.length()>0) {
mapOptionCodeLabel = getOptionCodelabel(strMarketingModelURL);
}
return mapOptionCodeLabel;
}
//Used to get the OptionCode and Label from MarketModel URL
public Map<String, String> getOptionCodelabel(String strMarketingModelURL) {
strJSON = init(strMarketingModelURL);
JSONParser parser = JSON.createParser(strJSON);
while (parser.nextToken() != null) {
if (parser.getCurrentToken() == JSONToken.FIELD_NAME){
String fieldName = parser.getText();
if(fieldName == 'map') {
while(parser.nextToken() != null) {
if(parser.getCurrentToken() == JSONToken.FIELD_NAME) {
String mapName = parser.getText();
if(mapName == 'presentationItem'){
Integer i=0;
while(parser.nextToken() != null){
if(parser.getCurrentToken() == JSONToken.FIELD_NAME){
String Oppname = parser.getText();
if(Oppname == 'null' || Oppname == 'fr'){
parser.nextToken();
strOptionLabel=parser.getText();
i=i+1;
}
if(Oppname == 'key'){
parser.nextToken();
strOptionCode=parser.getText();
i=i+1;
}
if(i==2) break;
}
}
if(strOptionCode!=null || strOptionCode!='')
mapOptionCodeLabel.put(strOptionCode,strOptionLabel);
system.debug('mapOptionCodeLabel>>>>'+mapOptionCodeLabel);
}
}
}
}
}
}
system.debug('mapOptionCodeLabel===>'+mapOptionCodeLabel);
return mapOptionCodeLabel;
}
//Used to Get the final OptionCode and Label public List getPriceListbasedOnReference(String strModelCode, String strVersionCode) {Apex code
public class Rfleet_DZC2GOptionDetails_CLS {
public String strJSON {get;set;}
public String strGeturl {get;set;}
public String strGetcountrycode {get;set;}
public String strGetCurrency {get;set;}
public String strModelCode {get;set;}
public String strVersionCode {get;set;}
public String strVersionDocUrl {get;set;}
public String strMarketingModelURL {get;set;}
public String strPriceListURL {get;set;}
public String strReferenceValue {get;set;}
public string strOptionCode;
public string strOptionLabel;
public String strConcatOptionCodeLabel;
public List<service__c> lstServiceRecord= new List<service__c>(); //to insert records in service object
public List<String> lstModelcalOut = new List<String>(); //to get list of model code
public List<String> lstDoCcalOut = new List<String>(); //to get list of docurls
public List<String> lstFinalContactOptionCodeLabel = new List<String>(); //List of Option codes with Label
public Map<String,String> mVersion = new map<String,String>(); //Contains model code+doc url
public Map<String,String> mVersionVal = new map<String,String>(); //contains specific version doc url
public Map<String, String> mapOptionCodeLabel = new Map<String,String>(); //Option code and label from Marketing URL
public Map<String, Double> mapOptionCodePrice = new Map<String, Double>(); //Option code and Price from Price URL
Rfleet_JSON2ApexC2G_CLS obj = null;
//Constructor used to get the modelcode and version code
public Rfleet_DZC2GOptionDetails_CLS() {
Rfleet_CountryInfo__c cs = Rfleet_CountryInfo__c.getInstance('Algeria');
strGeturl = cs.Rfleet_C2GURL__c;
}
public Rfleet_DZC2GOptionDetails_CLS(String strOppid) {
system.debug('##'strOppid Inside>>>>'+ getPriceListbasedOnReferencestrOppid);
:: strModelCode Rfleet_CountryInfo__c cs = Rfleet_CountryInfo__c.getInstance('Algeria');
strGeturl = cs.Rfleet_C2GURL__c;
}
public Rfleet_DZC2GOptionDetails_CLS(String strModelName, String strVersionName) {
Rfleet_CountryInfo__c cs = Rfleet_CountryInfo__c.getInstance('Algeria');
strGeturl = cs.Rfleet_C2GURL__c;
strGetcountrycode = cs.Rfleet_CountryCode__c;
strGetCurrency = cs.Rfleet_Currency__c;
Opportunity_car_set__c opp=[SELECT Model__r.ProductCode,Version__r.Rfleet_C2G_version_code__c FROM Opportunity_car_set__c where Model__r.name =: strModelName and Version__r.name =:'+ strVersionName];
strModelCode +'\t strVersionCode >>::'+strVersionCode); = opp.Model__r.ProductCode;
mapOptionCodeLabelstrVersionCode = fetchModelSpecCodeandPricListURLopp.Version__r.Rfleet_C2G_version_code__c;
system.debug('strModelCode >>>>'+ strModelCode,);
system.debug('strVersionCode >>>>'+ strVersionCode);
}
//Common method to Parse the JSON
public String init(String strVersionURL) {
//system.debug('## ParsingInside theinit strPriceListURL:: tostrVersionURL retrieveis..::'+ PriceTypestrVersionURL);
- reference ="PVCHT" andtry and{
its map values Http http = new Http();
String strJSON HttpRequest httpReq = initnew HttpRequest(strPriceListURL);
httpReq.setEndpoint(strVersionURL);
httpReq.setHeader('Accept','application/JSON');
httpReq.setMethod('GET');
HttpResponse response = http.send(httpReq);
strJSON= response.getBody();
} catch (Exception ex) {
system.debug('<<Method: init Exception ::'+ ex);
}
return strJSON;
}
//Used for Getting ModelCode and Doc URL in Map
public Map<String, String> getJSONFromREST() {
obj = Rfleet_JSON2ApexC2G_CLSsystem.parsedebug(strJSON);
// To iterate the PriceList values
'## StringInside str =getJSONFromREST obj.requestedURI;##');
List<Rfleet_JSON2ApexC2G_CLS.PriceList> listPriceList strJSON = obj.PriceList;
// codition to check when the PriceList is returning empty
if (listPriceList !=null && listPriceList.sizeinit()>0strGeturl); {
for(Rfleet_JSON2ApexC2G_CLS.PriceList priceList : listPriceList) {
StringJSONParser strPriceTypeReferenceparser = JSON.createParser(StringstrJSON)priceList.priceType.reference;;
List<Rfleet_JSON2ApexC2G_CLSwhile(parser.VersionPriceList> listVersionPriceList;
ifnextToken(strPriceTypeReference) =='PVCHT'!=null) {
listVersionPriceList = newif List<Rfleet_JSON2ApexC2G_CLS.VersionPriceList>();
listVersionPriceList = priceListparser.versionPriceList;
forgetCurrentToken(integer i=0;) i<== listVersionPriceListJSONToken.size(); i++FIELD_NAME) {
String strversionIdSpecCodefieldName = listVersionPriceListparser.getgetText(i).versionIdSpecCode;;
double strversionPrice = listVersionPriceList.getif(i).price;
fieldName if== (strversionIdSpecCode==strVersionCode'modelSpecCode') {
Rfleet_JSON2ApexC2G_CLS.OptionsPrices optionPrice = (Rfleet_JSON2ApexC2G_CLS.OptionsPrices )listVersionPriceList.get(i).OptionsPrices ;
Rfleet_JSON2ApexC2G_CLSparser.MapRepresentation mapRepresentaion = nextToken(Rfleet_JSON2ApexC2G_CLS.MapRepresentation)optionPrice.MapRepresentation ;
Rfleet_JSON2ApexC2G_CLSlstModelcalOut.Map_Z mapValues= add(Rfleet_JSON2ApexC2G_CLSparser.Map_ZgetText()mapRepresentaion.Map_Z );
mapOptionCodePrice = mapValues.mapZ;
}
}
}
}
if(fieldName == 'doc') {
Set<String> setOptionID = mapOptionCodeLabel.keySet();
for(String strIds:setOptionID){
if(mapOptionCodePriceparser.containsKeynextToken(strIds)) { ;
String OptionCode=strIds;
String OptionLabel=mapOptionCodeLabellstDoCcalOut.getadd(OptionCodeparser.getText());
strConcatOptionCodeLabel= OptionCode+'-'+ OptionLabel;
} lstFinalContactOptionCodeLabel.add(strConcatOptionCodeLabel);
}
}
for(integer i=0;i<lstModelcalOut.size();i++) {
mVersion.put(lstModelcalOut.get(i),lstDoCcalOut.get(i));
}
system.debug('mVersion===>'+mVersion);
return mVersion;
}
//Used to return the OptionCode and Label after getting the Price and Marketing URL for the Version
public Map<String, String> fetchModelSpecCodeandPricListURL( String strModelCode, String strVersionCode) {
system.debug('## Inside fetchModelSpecCodeandPricListURL method ##');
mVersionVal=getJSONFromREST();
system.debug('## mVersionVal is..::'+ mVersionVal);
system.debug('## strModelCode is..::'+ strModelCode);
if(mVersionVal.containsKey(strModelCode.trim())) {
system.debug('## Inside if condition ##' + strModelCode);
strVersionDocUrl= mVersionVal.get(strModelCode.trim());
}
system.debug('## strVersionDocUrl is..::'+ strVersionDocUrl);
strJSON = init(strVersionDocUrl);
system.debug('## fetchModelSpecCodeandPricListURL :: strJSON..::' +strJSON );
JSONParser parser = JSON.createParser(strJSON);
while (parser.nextToken() != null) {
if (parser.getCurrentToken() == JSONToken.FIELD_NAME) {
String fieldName = parser.getText();
if(fieldName == 'pricesList') {
parser.nextToken();
strPriceListURL=parser.getText();
system.debug('strPriceListURL>>>>'+strPriceListURL);
}
if (fieldName == 'marketingModelPresentation') {
parser.nextToken();
strMarketingModelURL = parser.getText();
system.debug('## strMarketingModelURL :: >>>>'+strMarketingModelURL);
}
}
}
if (strMarketingModelURL !=null && strMarketingModelURL.length()>0) {
mapOptionCodeLabel = getOptionCodelabel(strMarketingModelURL);
}
return mapOptionCodeLabel;
}
//Used to get the OptionCode and Label from MarketModel URL
public Map<String, String> getOptionCodelabel(String strMarketingModelURL) {
strJSON = init(strMarketingModelURL);
JSONParser parser = JSON.createParser(strJSON);
while (parser.nextToken() != null) {
if (parser.getCurrentToken() == JSONToken.FIELD_NAME){
String fieldName = parser.getText();
if(fieldName == 'map') {
while(parser.nextToken() != null) {
if(parser.getCurrentToken() == JSONToken.FIELD_NAME) {
String mapName = parser.getText();
if(mapName == 'presentationItem'){
Integer i=0;
while(parser.nextToken() != null){
if(parser.getCurrentToken() == JSONToken.FIELD_NAME){
String Oppname = parser.getText();
if(Oppname == 'null' || Oppname == 'fr'){
parser.nextToken();
strOptionLabel=parser.getText();
i=i+1;
}
if(Oppname == 'key'){
parser.nextToken();
strOptionCode=parser.getText();
i=i+1;
}
if(i==2) break;
}
}
if(strOptionCode!=null || strOptionCode!='')
mapOptionCodeLabel.put(strOptionCode,strOptionLabel);
system.debug('mapOptionCodeLabel>>>>'+mapOptionCodeLabel);
}
}
}
}
}
}
system.debug('mapOptionCodeLabel===>'+mapOptionCodeLabel);
return mapOptionCodeLabel;
}
//Used to Get the final OptionCode and Label
public List<string> getPriceListbasedOnReference(String strModelCode, String strVersionCode) {
system.debug('## Inside getPriceListbasedOnReference :: strModelCode::'+ strModelCode +'\t strVersionCode >>::'+strVersionCode);
mapOptionCodeLabel = fetchModelSpecCodeandPricListURL(strModelCode, strVersionCode);
// Parsing the strPriceListURL to retrieve PriceType - reference ="PVCHT" and and its map values
String strJSON = init(strPriceListURL);
obj = Rfleet_JSON2ApexC2G_CLS.parse(strJSON);
// To iterate the PriceList values
String str = obj.requestedURI;
List<Rfleet_JSON2ApexC2G_CLS.PriceList> listPriceList = obj.PriceList;
// codition to check when the PriceList is returning empty
if (listPriceList !=null && listPriceList.size()>0) {
for(Rfleet_JSON2ApexC2G_CLS.PriceList priceList : listPriceList) {
String strPriceTypeReference = (String)priceList.priceType.reference;
List<Rfleet_JSON2ApexC2G_CLS.VersionPriceList> listVersionPriceList;
if(strPriceTypeReference =='PVCHT') {
listVersionPriceList = new List<Rfleet_JSON2ApexC2G_CLS.VersionPriceList>();
listVersionPriceList = priceList.versionPriceList;
for(integer i=0; i< listVersionPriceList.size(); i++) {
String strversionIdSpecCode = listVersionPriceList.get(i).versionIdSpecCode;
double strversionPrice = listVersionPriceList.get(i).price;
if (strversionIdSpecCode==strVersionCode) {
Rfleet_JSON2ApexC2G_CLS.OptionsPrices optionPrice = (Rfleet_JSON2ApexC2G_CLS.OptionsPrices )listVersionPriceList.get(i).OptionsPrices ;
Rfleet_JSON2ApexC2G_CLS.MapRepresentation mapRepresentaion = (Rfleet_JSON2ApexC2G_CLS.MapRepresentation)optionPrice.MapRepresentation ;
Rfleet_JSON2ApexC2G_CLS.Map_Z mapValues= (Rfleet_JSON2ApexC2G_CLS.Map_Z)mapRepresentaion.Map_Z ;
mapOptionCodePrice = mapValues.mapZ;
}
}
}
}
Set<String> setOptionID = mapOptionCodeLabel.keySet();
for(String strIds:setOptionID){
if(mapOptionCodePrice.containsKey(strIds)) {
String OptionCode=strIds;
String OptionLabel=mapOptionCodeLabel.get(OptionCode);
strConcatOptionCodeLabel= OptionCode+'-'+ OptionLabel;
lstFinalContactOptionCodeLabel.add(strConcatOptionCodeLabel);
}
}
}// end of if loop for PriceList is not empty
return lstFinalContactOptionCodeLabel;//return the Picklist values
}
}
}
}