public with sharing class StageProgressBarExtension { public String targetId { get; set; } public String targetStageName { get; set; } public String recordTypeName { get; private set; } public List stages { get; set; } public StageProgressBarExtension(ApexPages.StandardController controller) { Opportunity opp = [select RecordTypeId, RecordType.DeveloperName from Opportunity where Id = :controller.getRecord().Id]; recordTypeName = opp.RecordType.DeveloperName; stages = SoapApi.getPicklistValueByRecordType('Opportunity', new String[]{opp.RecordTypeId}, 'StageName'); /* stages = new List(); PartnerSoapSforceCom.DescribeLayoutResult dlr = SoapApi.describeLayout('Opportunity', null, new String[]{opp.RecordTypeId}); for (Integer i = 0; i < dlr.layouts.size(); i++) { String recordTypeId = dlr.recordTypeMappings[i].recordTypeId; PartnerSoapSforceCom.PicklistForRecordType[] ptrList = dlr.recordTypeMappings[i].picklistsForRecordType; for (Integer j = 0; j < ptrList.size(); j++) { if (ptrList[j].picklistName == 'StageName') { PartnerSoapSforceCom.PicklistEntry[] pe = ptrList[j].picklistValues; for (Integer k = 0; k < pe.size(); k++) { stages.add(pe[k].label); } break; } } } */ } public void updateOpp() { Opportunity opp = new Opportunity( Id = targetId, StageName = targetStageName ); StaticParameter.StageProgressBarUpdate = True; update opp; } }