Skip to main content

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"

  1. Model
  2. 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
} 

}

}

}

I have a Custom Object called "Opportunity_carset".the related list of Opportunity Carset Object is "Service".

The "Opportunity Carset" Object has two fields. 1)Model 2)Version

The Service object has some Picklist Field called 1)"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:

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) {

    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

}

}

I have a Custom Object called Opportunity_carset.the related list of Opportunity Carset Object is Service.

The Opportunity Carse Object has two fields.

  1. Model
  2. Version
  • 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:

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 >>>>'+ 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<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
} 

}
Source Link
uma451
  • 141
  • 2
  • 6
  • 18

How to update the child custom Object Picklist field values while creating the child record from Parent Object related list?

I have a Custom Object called "Opportunity_carset".the related list of Opportunity Carset Object is "Service".

The "Opportunity Carset" Object has two fields. 1)Model 2)Version

The Service object has some Picklist Field called 1)"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:

Whenever am creating the "Service" record by clicking "New Service" from realted list of "Opportunity carset" Object,the Custom Picklist values should be displayed in Service Object.

Here,

I have created a apex class which take the Model and Version values and will give the custom Picklist values.

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) {

    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

}

}

This class will return the Picklist Options.Using MetaDataApi I can update the picklist field values in"Service" object.But this all to be happen while creating a record from Relatedlist.Give me some Idea!!!