You need to sign in to do that
Don't have an account?
veeranjaneyulu kunchala 9
Advanced Apex Specialist Superbadge Step 7 (Pagination Methods error)
Hi All,
I am getting the following error on step 7 of AASS.
Any help, what was wrong with this code?. Thanks
Apex Class:
I am getting the following error on step 7 of AASS.
Any help, what was wrong with this code?. Thanks
Apex Class:
/** * @name OrderExtension * @description This class is provided for you to facilitate the Super Badge **/ public class OrderExtension { public Order orderRecord {get;set;} public List<OrderItem> orderItemList {get;set;} public String selectedFamily {get;set;} public List<chartHelper.chartData> pieData {get;set;} public Decimal total {get;set;} public Map<Id,OrderItem> orderItemMap; ApexPages.StandardSetController standardSetController; public OrderExtension(ApexPages.StandardController standardController){ orderRecord = (Order)standardController.getRecord(); orderItemMap = new Map<id,OrderItem>(); if ( orderRecord.Id != null ){ orderRecord = queryOrderRecord(orderRecord.Id); } orderItemList = new List<OrderItem>(); OrderItemList.addAll(orderRecord.OrderItems); set<Id> p2ids = new set<Id>(); for(OrderItem oitem : OrderItemList){ p2ids.add(oitem.PriceBookEntryId); } List<PriceBookEntry> p2List = new List<PriceBookEntry>(); if(p2Ids.size()>0){ p2List = [select id from PriceBookEntry where id IN: p2Ids]; } standardSetController = new ApexPages.StandardSetController(p2List); standardSetController.setPageSize(Constants.DEFAULT_ROWS); } public OrderExtension(ApexPages.StandardSetController standardSetController){ } public void resetSsc() { String query = 'SELECT Name, Product2.Family, Product2.Name, Product2Id, UnitPrice, Product2.Quantity_Remaining__c' + ' FROM PricebookEntry WHERE IsActive = TRUE'; if (selectedFamily != null && selectedFamily != Constants.SELECT_ONE) { query += ' AND Product2.Family = \'' + selectedFamily + '\''; } query += ' ORDER BY Name'; standardSetController = new ApexPages.StandardSetController(Database.getQueryLocator(query)); standardSetController.setPageSize(Constants.DEFAULT_ROWS); } //ToDo: Implement your own method to populate orderItemList // that you will call after pagination and/or family selection public void PopulateOrderItems() { orderItemList = new List<OrderItem>(); for (SObject obj : standardSetController.getRecords()) { PricebookEntry pbe = (PricebookEntry)obj; if (orderItemMap.containsKey(pbe.Product2Id)) { orderItemList.add(orderItemMap.get(pbe.Product2Id)); } else { orderItemList.add(new OrderItem( PricebookEntryId=pbe.Id, Product2Id=pbe.Product2Id, UnitPrice=pbe.UnitPrice, Quantity=0, Product2=pbe.Product2 )); } } } /** * @name OnFieldChange * @description **/ public void onFieldChange(){ //ToDo: Implement logic to store the values changed on the page for (OrderItem oi : orderItemList) { orderItemMap.put(oi.Product2Id, oi); } // and populate pieData pieData = null; total = 0; for (OrderItem oi : orderItemMap.values()) { if (oi.Quantity > 0) { if (null == pieData) { pieData = new List<chartHelper.ChartData>(); } pieData.add(new chartHelper.ChartData(oi.Product2.Name, oi.Quantity * oi.UnitPrice)); // and populate total total += oi.UnitPrice * oi.Quantity; } } } /** * @name SelectFamily * @description **/ public void selectFamily(){ //ToDo: Implement logic to filter based on the selected product family resetSsc(); PopulateOrderItems(); } /** * @name Save * @description **/ public void save(){ //ToDo: Implement logic to save the Order and populated OrderItems System.Savepoint sp = Database.setSavepoint(); try { if (null == orderRecord.Pricebook2Id) { orderRecord.Pricebook2Id = Constants.STANDARD_PRICEBOOK_ID; } upsert orderRecord; List<OrderItem> orderItemsToUpsert = new List<OrderItem>(); List<OrderItem> orderItemsToDelete = new List<OrderItem>(); system.debug('@@@@@@@@@@@@@@@#######'+orderItemMap.values()); for (OrderItem oi : orderItemMap.values()) { if (oi.Quantity > 0) { if (null == oi.OrderId) { oi.OrderId = orderRecord.Id; } orderItemsToUpsert.add(oi); } else if (oi.Id != null) { orderItemsToDelete.add(oi); } } if(orderItemsToUpsert.size()>0) upsert orderItemsToUpsert; if(orderItemsToDelete.size()>0) delete orderItemsToDelete; } catch (Exception e) { Database.rollback(sp); apexPages.addMessage(new ApexPages.message(ApexPages.Severity.INFO,Constants.ERROR_MESSAGE)); } } /** * @name First * @description **/ public void First(){ standardSetController.first(); PopulateOrderItems(); } /** * @name Next * @description **/ public void Next(){ standardSetController.next(); PopulateOrderItems(); } /** * @name Previous * @description **/ public void Previous(){ standardSetController.previous(); PopulateOrderItems(); } /** * @name Last * @description **/ public void Last(){ standardSetController.last(); PopulateOrderItems(); } /** * @name GetHasPrevious * @description **/ public Boolean GetHasPrevious(){ return standardSetController.GetHasPrevious(); } /** * @name GetHasNext * @description **/ public Boolean GetHasNext(){ return standardSetController.GetHasNext(); } /** * @name GetTotalPages * @description **/ public Integer GetTotalPages(){ return (Integer)Math.ceil(standardSetController.GetResultSize() / (Decimal)Constants.DEFAULT_ROWS); } /** * @name GetPageNumber * @description **/ public Integer GetPageNumber(){ return standardSetController.GetpageNumber(); } /** * @name GetFamilyOptions * @description **/ public List<SelectOption> GetFamilyOptions() { List<SelectOption> options = new List<SelectOption>{ new SelectOption(Constants.SELECT_ONE, Constants.SELECT_ONE) }; for (Schema.PicklistEntry ple : Constants.PRODUCT_FAMILY) { options.add(new SelectOption(ple.getValue(), ple.getLabel())); } return options; } public void updateOrderItemMap() { } /** * @name QueryOrderRecord * @description **/ public static Order QueryOrderRecord(Id orderId){ return [ SELECT Id, AccountId, EffectiveDate, Name, Status, Pricebook2Id, ( SELECT Id, OrderId, Quantity, UnitPrice, PricebookEntryId, Product2Id, Product2.Name, Product2.Family, Product2.Quantity_Remaining__c FROM OrderItems where PricebookEntry.isActive = true ) FROM Order WHERE Id = :orderId ]; } }Thanks,
May I suggest you please check with below link from the forums community with a similar discussion which might help you further with the above requirement.
- https://developer.salesforce.com/forums/?id=9060G0000005ODAQA2
Please let us know if this helps.Kindly mark this as solved if the information was helpful.
Thanks,
Nagendra