function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Mukund ShrivastavaMukund Shrivastava 

Challenge Not yet complete... here's what's wrong: Ensure that the Visualforce page is displayed when a use clicks the New button on the Product object

I am not able to resolve this error of advanced apex specialist challenge #2. Can anyone help?
NagendraNagendra (Salesforce Developers) 
Hi Mukund,

Sorry for this issue you are encountering.

Please follow the below tips using which you can pass the step 2 of the advanced apex specialist superbadge.
  • Modify OrderTrigger for handling only after Update
  • Remove all the unnecessary code from the OrderTrigger and Call the AfterUpdate method in OrderHelper which takes Trigger.new and Trigger.old as input parameters
  • Extract all Order Ids by iterating the Trigger.new list, whose old status (fetch status from Trigger.old list)is Constants.DRAFT_ORDER_STATUS and new status after update ( fetch status from Trigger.new ) is Constants. ACTIVATED_ORDER_STATUS. Invoke RollUpOrderItems in OrderHelper by Passing filtered Ids.
In RollUpOrderItems method,
  • Declare a Map<Id,Product2> named product map 
  • Create a List named productIds to store the productIds which are included in the Orders (Order Ids passed as the method argument).
  • Select Id, Quantity_Ordered__c from Product2 based on the productIds list filter. Pass the Id and Product2 object into the productMap declared earlier
  • productMap = new Map<Id,Product2>([Select id,Quantity_Ordered__c from product2 where id in :productIds]);
Loop through a query that aggregates the OrderItems related to the Products in the productMap keyset
  • <AggregateResult[] groupedResult = [Select Product2Id,sum(Quantity) totalQuantity from OrderItem where product2Id in :productMap.keySet() group by product2Id];
  • for(AggregateResult result : groupedResult) {productMap.get((String)result.get(‘Product2Id’)).Quantity_Ordered__c= Integer.valueOf(result.get(‘totalQuantity’));}
Finally, update the productMap.values()

Still, if you have any queries please let us know.

Kindly mark this as solved if the reply was helpful.

Thanks,
Nagendra
GS Sundar 8GS Sundar 8
This solution looks to be for step 2. Challenge Not yet complete... here's what's wrong: Ensure that the Visualforce page is displayed when a use clicks the New button on the Product object, what is teh solution for this? Any help?