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
BeautifulDrifterBeautifulDrifter 

Need help with Wrapper Class for Nested Aggregate Classes

I am trying to wrap two aggregate classes into a Wrapper class so I can access both as needed.  

I am getting the following error:  Unknown property 'psqSummaryExt.pmWrap.mSum'

It also appears the pSum isn't returning anything either.  I am guessing I have something wrong in my constructor.  I tried using a map as well.  Code for that at the bottom.  

Any help would be amazing.  Thanks in advance.

Current Apex:
public class psqSummaryExt {
    
    Public PSQ_Header__c Header {get;set;}
    Private Map<Id,List<ModuleSum>> ProdModMap = New Map<Id,List<ModuleSum>>();
    public List<pmWrap> pmWrapout {get; set;}
    private ApexPages.StandardController stdCtrl {get; set;}
    public psqSummaryExt(ApexPages.StandardController std)
        
        
    {
        Header=[select Id from PSQ_Header__c where Id = 'a0541000008gjcm'];
        //Header =(PSQ_Header__c)std.getrecord();
        stdCtrl=std;
        
    }
    
    public psqSummaryExt(){
       pmWrapout = new List<pmWrap>();
    } 
    
    Public Class pmWrap{
        ProductSum pSum {get; set;}
        List<moduleSum> mSum {get; set;}
        
        
    }
    
    public class ProductSum{
        Public String ProdId {get;set;}
        public String ProductName {get; set;}
        public String phc1 {get; set;}
        public String phc2 {get; set;}
        public String phc3 {get; set;}
        public String phc4 {get; set;}
        public String pvariableHours {get; set;}
        Public String phcTotal {get;set;}
        Public ProductSum(string pi, string p,string p1, string p2, string p3, string p4, string pv, string pt){
            this.ProdId = pi;
            this.ProductName = p;
            this.phc1 = p1;
            this.phc2 = p2;
            this.phc3 = p3;
            this.phc4 = p4;
            this.pvariableHours = pv;
            this.phcTotal = pt;
        }
        public List<ModuleSum> ModSumList = new List<ModuleSum>();
        
        
    }
    public class ModuleSum{
        Public List<PSQ_Product__c> Prod {get; set;}
        public String pId {get; set;}
        public String ModuleName {get; set;}
        public String ProductName {get; set;}
        public String mhc1 {get; set;}
        public String mhc2 {get; set;}
        public String mhc3 {get; set;}
        public String mhc4 {get; set;}
        public String mvariableHours {get; set;}
        Public String mhcTotal {get;set;}
        Public ModuleSum(string pId,
            string p,string m,string m1, string m2, string m3, string m4, string mv, string mt){
                this.pId = pId;
                this.ProductName = p;
                this.ModuleName = m;
                this.mhc1 = m1;
                this.mhc2 = m2;
                this.mhc3 = m3;
                this.mhc4 = m4;
                this.mvariableHours = mv;
                this.mhcTotal = mt;
            }
        
    }
    //public List<pmWrap> pmWrapout = New List<pmWrap>();
    
    
    public List<ProductSum> ProductSumList = new List<ProductSum>();
    
    public List<ProductSum> getProductSumOut(){
        
        
        AggregateResult[] productAR = [SELECT PSQ_Application__r.PSQ_Product__r.Id Id
                                       ,PSQ_Application__r.PSQ_Product__r.Name Product
                                       ,SUM(Class_1_Total__c) pc1
                                       ,SUM(Class_2_Total__c) pc2
                                       ,SUM(Class_3_Total__c) pc3
                                       ,SUM(Class_4_Total__c) pc4
                                       ,SUM(Variable_hours__c) pv
                                       ,SUM(Total_Hours__c) pth
                                       FROM PSQ_App_Detail__c WHERE PSQ_Header__c=:Header.Id //and PSQ_Application__r.PSQ_Product__r.Id = :pp.Id
                                       GROUP BY PSQ_Application__r.PSQ_Product__r.Id
                                       ,PSQ_Application__r.PSQ_Product__r.Name]; 
        for (AggregateResult prodList : productAR) { 
            ProductSumList.add(new ProductSum(String.valueOf(prodList.get('Id')),
                                              String.valueOf(prodList.get('Product')),
                                              String.valueOf(prodList.get('pc1'))
                                              , String.valueOf(prodList.get('pc2'))
                                              , String.valueOf(prodList.get('pc3'))
                                              , String.valueOf(prodList.get('pc4'))
                                              , String.valueOf(prodList.get('pv'))
                                              , String.valueOf(prodList.get('pth'))
                                             ));
            
        }
        
        return ProductSumList;
        
    }
    
    public List<ModuleSum> ModuleSumList = new List<ModuleSum>();
    
    
    List<pmWrap> pmWrapper = New List<pmWrap>();
    
    
    public List<ModuleSum> getModuleSumOut(){
        
        
        List<PSQ_Product__c> prods = [select Id from PSQ_Product__c];
        
            For (ProductSum p : ProductSumList){    
            pmWrap pW = New pmWrap();
                
            
            AggregateResult[] moduleAR = [SELECT PSQ_Application__r.PSQ_Product__c prodId
                                          ,PSQ_Application__r.PSQ_Product__r.Name Product
                                          ,PSQ_Application__r.PSQ_Module__r.Name Module
                                          ,SUM(Class_1_Total__c) c1
                                          ,SUM(Class_2_Total__c) c2
                                          ,SUM(Class_3_Total__c) c3
                                          ,SUM(Class_4_Total__c) c4
                                          ,SUM(Variable_hours__c) vh
                                          ,SUM(Total_Hours__c) th
                                          FROM PSQ_App_Detail__c WHERE PSQ_Header__c=:Header.Id and PSQ_Application__r.PSQ_Product__c = :p.prodId
                                          GROUP BY PSQ_Application__r.PSQ_Product__c
                                          ,PSQ_Application__r.PSQ_Product__r.Name 
                                          ,PSQ_Application__r.PSQ_Module__r.Name]; 
            for (AggregateResult modList : moduleAR) {
                //PSQ_Product__c prod = [select Id from PSQ_Product__c where Id = :modList.get('prodId')];
                
                //List<ModuleSum> msList = New List<ModuleSum>();
                ModuleSumList.add(new ModuleSum(String.valueOf(modList.get('prodId')),
                    String.valueOf(modList.get('Product'))
                    ,String.valueOf(modList.get('Module'))
                    , String.valueOf(modList.get('c1'))
                    , String.valueOf(modList.get('c2'))
                    , String.valueOf(modList.get('c3'))
                    , String.valueOf(modList.get('c4'))
                    , String.valueOf(modList.get('vh'))
                    , String.valueOf(modList.get('th'))
                ));
                //ModuleSumList.addall(msList);
            
                
                
            }
             pW.pSum = p;
             pW.mSum=ModuleSumList;   
            return ModuleSumList;
            
          pmWrapout.add(pW);     
          system.debug(pmWrapout);      
            ProdModMap.put(p.prodId, ModuleSumList);
            system.debug('Add p.Id and msList to Map.  Product ID:'+p.ProdId + ' msList size: '+ModuleSumList.size());
           
            
            
        }
        
        return Null;
    }

        
}

VF:
<apex:pageblock title="Wrapper Summary">
        <apex:repeat value="{!pmWrapout}" var="pw" >
            <apex:pageBlockSection title="pw.pSum.Name">
                <apex:pageblocktable value="{!pw.mSum}" var="mSum">
                    <apex:column value="{!mSum.ModuleName}" headervalue="Module" />
                    <apex:column value="{!mSum.mhc1}" headervalue="Consulting Hours" />
                    <apex:column value="{!mSum.mhc2}" headervalue="Development Hours" />
                    <apex:column value="{!mSum.mhc3}" headervalue="QA Hours" />
                    <apex:column value="{!mSum.mhc4}" headervalue="Hours Class 4" rendered="false"/>
                    <apex:column value="{!mSum.mvariableHours}" headervalue="Variable Hours" rendered="True"/>
                    <apex:column value="{!mSum.mhcTotal}" headervalue="Total Hours" rendered="True"/>
                </apex:pageblocktable>
            </apex:pageBlockSection>
        </apex:repeat>     
    </apex:pageblock>

Map Apex (removed):
List<pmWrap> pmWrapper= New List<pmWrap>();
    
    public List<pmWrap> getpmWrapout(){
        for (ProductSum ps : ProductSumList ){ 
            pmWrap pW = New pmWrap();
            pW.pSum = ps;
            //system.debug('ProductSum to add: '+ps);
           List <ModuleSum> modSum = New List <ModuleSum>();
            for (ModuleSum ms : ProdModMap.get(ps.ProdId)){
                modSum.add(ms);
            }
            pW.mSum=modSum;
          pmWrapper.add(pW);  
        }
       return pmWrapper;     
    }

 
Best Answer chosen by BeautifulDrifter
Nayana KNayana K
Public Class pmWrap{
        public ProductSum pSum {get; set;}
        public List<moduleSum> mSum {get; set;}
        
        
    }

public keyword is missing
 

All Answers

Nayana KNayana K
Public Class pmWrap{
        public ProductSum pSum {get; set;}
        public List<moduleSum> mSum {get; set;}
        
        
    }

public keyword is missing
 
This was selected as the best answer
BeautifulDrifterBeautifulDrifter
Nayana,  thanks for the help.  So that fixed it, but still nothing was showing on the VF page.  I now have just moved the ModuleSum up under the ProductSum Class.  See below.  Still nothing is showing on the VF page for the moduleSum.  Any help would be amazing and thanks in advance.
    <apex:pageblock title="Product Summary">
        
        <apex:repeat value="{!ProductSumOut}" var="ps">
            <apex:pageBlockSection title="{!ps.productName}">
                <apex:pageblocktable value="{!ps.ModSumList}" var="msl">
                    <apex:column value="{!msl.ModuleName}" headervalue="Module" />
                    <apex:column value="{!msl.mhc1}" headervalue="Consulting Hours" />
                    <apex:column value="{!msl.mhc2}" headervalue="Development Hours" />
                    <apex:column value="{!msl.mhc3}" headervalue="QA Hours" />
                    <apex:column value="{!msl.mhc4}" headervalue="Hours Class 4" rendered="false"/>
                    <apex:column value="{!msl.mvariableHours}" headervalue="Variable Hours" rendered="True"/>
                    <apex:column value="{!msl.mhcTotal}" headervalue="Total Hours" rendered="True"/>
                </apex:pageblocktable>
            </apex:pageBlockSection>
        </apex:repeat> 
        
    </apex:pageblock>
    <apex:pageBlock>
        <apex:pageblocktable value="{!ModuleSumOut}" var="msum">
            <apex:column value="{!msum.ModuleName}" headervalue="Module" />
            <apex:column value="{!msum.mhc1}" headervalue="Consulting Hours" />
            <apex:column value="{!msum.mhc2}" headervalue="Development Hours" />
            <apex:column value="{!msum.mhc3}" headervalue="QA Hours" />
            <apex:column value="{!msum.mhc4}" headervalue="Hours Class 4" rendered="false"/>
            <apex:column value="{!msum.mvariableHours}" headervalue="Variable Hours" rendered="True"/>
            <apex:column value="{!msum.mhcTotal}" headervalue="Total Hours" rendered="True"/>
        </apex:pageblocktable>
    </apex:pageBlock>
</apex:page>

User-added image
 
public class ProductSum{
        Public String ProdId {get;set;}
        public String ProductName {get; set;}
        public String phc1 {get; set;}
        public String phc2 {get; set;}
        public String phc3 {get; set;}
        public String phc4 {get; set;}
        public String pvariableHours {get; set;}
        Public String phcTotal {get;set;}
        Public ProductSum(string pi, string p,string p1, string p2, string p3, string p4, string pv, string pt){
            this.ProdId = pi;
            this.ProductName = p;
            this.phc1 = p1;
            this.phc2 = p2;
            this.phc3 = p3;
            this.phc4 = p4;
            this.pvariableHours = pv;
            this.phcTotal = pt;
        }
        public List<ModuleSum> ModSumList {get; set;}
        
    }
    public class ModuleSum{
        //Public List<PSQ_Product__c> Prod {get; set;}
        public String pId {get; set;}
        public String ModuleName {get; set;}
        public String ProductName {get; set;}
        public String mhc1 {get; set;}
        public String mhc2 {get; set;}
        public String mhc3 {get; set;}
        public String mhc4 {get; set;}
        public String mvariableHours {get; set;}
        Public String mhcTotal {get;set;}
        Public ModuleSum(string pId,
                         string p,string m,string m1, string m2, string m3, string m4, string mv, string mt){
                             this.pId = pId;
                             this.ProductName = p;
                             this.ModuleName = m;
                             this.mhc1 = m1;
                             this.mhc2 = m2;
                             this.mhc3 = m3;
                             this.mhc4 = m4;
                             this.mvariableHours = mv;
                             this.mhcTotal = mt;
                         }
        
    }
   
    public List<ModuleSum> ModuleSumList = new List<ModuleSum>();
    public List<ModuleSum> getModuleSumOut(){

        For (ProductSum p : ProductSumList){    
            pmWrap pW = New pmWrap();
            
           AggregateResult[] moduleAR = [SELECT PSQ_Application__r.PSQ_Product__c prodId
                                          ,PSQ_Application__r.PSQ_Product__r.Name Product
                                          ,PSQ_Application__r.PSQ_Module__r.Name Module
                                          ,SUM(Class_1_Total__c) c1
                                          ,SUM(Class_2_Total__c) c2
                                          ,SUM(Class_3_Total__c) c3
                                          ,SUM(Class_4_Total__c) c4
                                          ,SUM(Variable_hours__c) vh
                                          ,SUM(Total_Hours__c) th
                                          FROM PSQ_App_Detail__c WHERE PSQ_Header__c=:Header.Id and PSQ_Application__r.PSQ_Product__c = :p.prodId
                                          GROUP BY PSQ_Application__r.PSQ_Product__c
                                          ,PSQ_Application__r.PSQ_Product__r.Name 
                                          ,PSQ_Application__r.PSQ_Module__r.Name]; 
            for (AggregateResult modList : moduleAR) {
                //PSQ_Product__c prod = [select Id from PSQ_Product__c where Id = :modList.get('prodId')];
                
                //List<ModuleSum> msList = New List<ModuleSum>();
                ModuleSumList.add(new ModuleSum(String.valueOf(modList.get('prodId')),
                                                String.valueOf(modList.get('Product'))
                                                ,String.valueOf(modList.get('Module'))
                                                , String.valueOf(modList.get('c1'))
                                                , String.valueOf(modList.get('c2'))
                                                , String.valueOf(modList.get('c3'))
                                                , String.valueOf(modList.get('c4'))
                                                , String.valueOf(modList.get('vh'))
                                                , String.valueOf(modList.get('th'))
                                               ));
         
            }
            p.ModSumList = ModuleSumList;
            system.debug(p.ModSumList);
            Return ModuleSumList;

            //system.debug(pmWrapout);      
            //ProdModMap.put(p.prodId, ModuleSumList);
            //system.debug('Add p.Id and msList to Map.  Product ID:'+p.ProdId + ' msList size: '+ModuleSumList.size());
            
        }
        return Null;
    }
  public List<ProductSum> ProductSumList = new List<ProductSum>();
    
    public List<ProductSum> getProductSumOut(){
        
        
        AggregateResult[] productAR = [SELECT PSQ_Application__r.PSQ_Product__r.Id Id
                                       ,PSQ_Application__r.PSQ_Product__r.Name Product
                                       ,SUM(Class_1_Total__c) pc1
                                       ,SUM(Class_2_Total__c) pc2
                                       ,SUM(Class_3_Total__c) pc3
                                       ,SUM(Class_4_Total__c) pc4
                                       ,SUM(Variable_hours__c) pv
                                       ,SUM(Total_Hours__c) pth
                                       FROM PSQ_App_Detail__c WHERE PSQ_Header__c=:Header.Id //and PSQ_Application__r.PSQ_Product__r.Id = :pp.Id
                                       GROUP BY PSQ_Application__r.PSQ_Product__r.Id
                                       ,PSQ_Application__r.PSQ_Product__r.Name]; 
        for (AggregateResult prodList : productAR) { 
            ProductSumList.add(new ProductSum(String.valueOf(prodList.get('Id')),
                                              String.valueOf(prodList.get('Product')),
                                              String.valueOf(prodList.get('pc1'))
                                              , String.valueOf(prodList.get('pc2'))
                                              , String.valueOf(prodList.get('pc3'))
                                              , String.valueOf(prodList.get('pc4'))
                                              , String.valueOf(prodList.get('pv'))
                                              , String.valueOf(prodList.get('pth'))
                                             ));
            
        }
        
        return ProductSumList;
        
    }

 
Nayana KNayana K
public class ProductSum{
        Public Id ProdId {get;set;}
        public String ProductName {get; set;}
        public String phc1 {get; set;}
        public String phc2 {get; set;}
        public String phc3 {get; set;}
        public String phc4 {get; set;}
        public String pvariableHours {get; set;}
        Public String phcTotal {get;set;}
        Public ProductSum(Id pi,string p1, string p2, string p3, string p4, string pv, string pt){
            this.ProdId = pi;
            this.phc1 = p1;
            this.phc2 = p2;
            this.phc3 = p3;
            this.phc4 = p4;
            this.pvariableHours = pv;
            this.phcTotal = pt;
        }
        public List<ModuleSum> ModSumList {get; set;}
        
    }
    public class ModuleSum{
        public Id pId {get; set;}
        public String ModuleName {get; set;}
        public String ProductName {get; set;}
        public String mhc1 {get; set;}
        public String mhc2 {get; set;}
        public String mhc3 {get; set;}
        public String mhc4 {get; set;}
        public String mvariableHours {get; set;}
        Public String mhcTotal {get;set;}
        Public ModuleSum(Id pId,
                         string m,string m1, string m2, string m3, string m4, string mv, string mt){
                             this.pId = pId;
                             this.ModuleName = m;
                             this.mhc1 = m1;
                             this.mhc2 = m2;
                             this.mhc3 = m3;
                             this.mhc4 = m4;
                             this.mvariableHours = mv;
                             this.mhcTotal = mt;
                         }
        
    }
   
    public List<ProductSum> getProductSumOut()
	{
			List<ProductSum> ProductSumList = new List<ProductSum>();
			Set<Id> setProdId = new Set<Id>();
			Map<Id, List<ModuleSum>> mapProdIdToModuleSum = new Map<Id, List<ModuleSum>>();
			Id idProd;
			String strModule;
			Map<Id, String> mapProductName = new Map<Id,String>();
			
            for (AggregateResult modList : [SELECT PSQ_Application__r.PSQ_Product__c prodId
                                          ,PSQ_Application__r.PSQ_Module__r.Name Module
                                          ,SUM(Class_1_Total__c) c1
                                          ,SUM(Class_2_Total__c) c2
                                          ,SUM(Class_3_Total__c) c3
                                          ,SUM(Class_4_Total__c) c4
                                          ,SUM(Variable_hours__c) vh
                                          ,SUM(Total_Hours__c) th
                                          FROM PSQ_App_Detail__c WHERE PSQ_Header__c=:Header.Id
                                          GROUP BY ROLLUP(PSQ_Application__r.PSQ_Product__c
                                          ,PSQ_Application__r.PSQ_Module__r.Name)]) 
			{
				idProd = Id.valueOf(modList.get('prodId'));
				strModule = String.valueOf(modList.get('Module');
				//level wise total
				if(idProd != NULL && String.isNotBlank(strModule))
				{
					if(mapProdIdToModuleSum.containsKey(idProd))
					{
						mapProdIdToModuleSum.get(idProd).add(new ModuleSum(idProd,
                                                strModule
                                                , String.valueOf(modList.get('c1'))
                                                , String.valueOf(modList.get('c2'))
                                                , String.valueOf(modList.get('c3'))
                                                , String.valueOf(modList.get('c4'))
                                                , String.valueOf(modList.get('vh'))
                                                , String.valueOf(modList.get('th'))
                                               ));
					}
					else
					{
						mapProdIdToModuleSum.put(idProd, new List<ModuleSum>{new ModuleSum(idProd,
                                                strModule
                                                , String.valueOf(modList.get('c1'))
                                                , String.valueOf(modList.get('c2'))
                                                , String.valueOf(modList.get('c3'))
                                                , String.valueOf(modList.get('c4'))
                                                , String.valueOf(modList.get('vh'))
                                                , String.valueOf(modList.get('th'))
                                               )})
					}
				}
				// sub total
				else if(idProd != NULL)
				{
					setProdId.add(idProd);
					ProductSumList.add(new ProductSum(strModule,
                                              String.valueOf(modList.get('c1'))
                                              , String.valueOf(modList.get('c2'))
                                              , String.valueOf(modList.get('c3'))
                                              , String.valueOf(modList.get('c4'))
                                              , String.valueOf(modList.get('vh'))
                                              , String.valueOf(modList.get('th'))
                                             ));
				}
            }
			
			if(!setProdId.isEmpty())
			for(Product2 objProduct : [SELECT Id, Name FROM Product2 WHERE Id IN: setProdId])
			{
				mapProductName.put(objProduct.Id, objProduct.Name)
			}
			
			for(ProductSum objPSL : ProductSumList)
			{
				objPSL.ProductName = mapProductName.get(objPSL.pId);
				if(mapProdIdToModuleSum.containsKey(objPSL.pId))
				{
					objPSL.ModSumList = mapProdIdToModuleSum.get(objPSL.pId);
				}
				else
				{
					objPSL.ModSumList = new List<ModuleSum>();
				}
			}
            
    }

No need of getModuleSumOut()
Also, SOQL inside for loop is BIG NO - Always avoid it. Use collections wisely to achieve your goal as a work around for soql inside loop.
https://developer.salesforce.com/blogs/developer-relations/2015/01/apex-best-practices-15-apex-commandments.html
<apex:pageblock title="Product Summary">
        
        <apex:repeat value="{!ProductSumOut}" var="ps">
            <apex:pageBlockSection title="{!ps.productName}">
                <apex:pageblocktable value="{!ps.ModSumList}" var="msl">
                    <apex:column value="{!msl.ModuleName}" headervalue="Module" />
                    <apex:column value="{!msl.mhc1}" headervalue="Consulting Hours" />
                    <apex:column value="{!msl.mhc2}" headervalue="Development Hours" />
                    <apex:column value="{!msl.mhc3}" headervalue="QA Hours" />
                    <apex:column value="{!msl.mhc4}" headervalue="Hours Class 4" rendered="false"/>
                    <apex:column value="{!msl.mvariableHours}" headervalue="Variable Hours" rendered="True"/>
                    <apex:column value="{!msl.mhcTotal}" headervalue="Total Hours" rendered="True"/>
                </apex:pageblocktable>
            </apex:pageBlockSection>
        </apex:repeat> 
        
    </apex:pageblock>


 
BeautifulDrifterBeautifulDrifter
Nayana, thanks for the help!  I tried your code but was still receiving a blank screen.  Ran some debugs and I the Product was not getting populated.  I blended the two to get my final result.  I took your advice though and tossed the second sumOut.  I will keep the loops and queries in mind as I continue to work with Apex.  Thanks again for your help.
Nayana KNayana K
public class ProductSum{
        Public Id ProdId {get;set;}
        public String ProductName {get; set;}
        public String phc1 {get; set;}
        public String phc2 {get; set;}
        public String phc3 {get; set;}
        public String phc4 {get; set;}
        public String pvariableHours {get; set;}
        Public String phcTotal {get;set;}
        Public ProductSum(Id pi,string p1, string p2, string p3, string p4, string pv, string pt){
            this.ProdId = pi;
            this.phc1 = p1;
            this.phc2 = p2;
            this.phc3 = p3;
            this.phc4 = p4;
            this.pvariableHours = pv;
            this.phcTotal = pt;
        }
        public List<ModuleSum> ModSumList {get; set;}
        
    }
    public class ModuleSum{
        public Id pId {get; set;}
        public String ModuleName {get; set;}
        public String ProductName {get; set;}
        public String mhc1 {get; set;}
        public String mhc2 {get; set;}
        public String mhc3 {get; set;}
        public String mhc4 {get; set;}
        public String mvariableHours {get; set;}
        Public String mhcTotal {get;set;}
        Public ModuleSum(Id pId,
                         string m,string m1, string m2, string m3, string m4, string mv, string mt){
                             this.pId = pId;
                             this.ModuleName = m;
                             this.mhc1 = m1;
                             this.mhc2 = m2;
                             this.mhc3 = m3;
                             this.mhc4 = m4;
                             this.mvariableHours = mv;
                             this.mhcTotal = mt;
                         }
        
    }
   
    public List<ProductSum> getProductSumOut()
	{
			List<ProductSum> ProductSumList = new List<ProductSum>();
			Set<Id> setProdId = new Set<Id>();
			Map<Id, List<ModuleSum>> mapProdIdToModuleSum = new Map<Id, List<ModuleSum>>();
			Id idProd;
			String strModule;
			Map<Id, String> mapProductName = new Map<Id,String>();
			
            for (AggregateResult modList : [SELECT PSQ_Application__r.PSQ_Product__c prodId
                                          ,PSQ_Application__r.PSQ_Module__r.Name Module
                                          ,SUM(Class_1_Total__c) c1
                                          ,SUM(Class_2_Total__c) c2
                                          ,SUM(Class_3_Total__c) c3
                                          ,SUM(Class_4_Total__c) c4
                                          ,SUM(Variable_hours__c) vh
                                          ,SUM(Total_Hours__c) th
                                          FROM PSQ_App_Detail__c WHERE PSQ_Header__c=:Header.Id
                                          GROUP BY ROLLUP(PSQ_Application__r.PSQ_Product__c
                                          ,PSQ_Application__r.PSQ_Module__r.Name)]) 
			{
				system.debug('==modList=='+modList);
				idProd = Id.valueOf(String.valueOf(modList.get('prodId')));
				strModule = String.valueOf(modList.get('Module');
				//level wise total
				if(idProd != NULL && String.isNotBlank(strModule))
				{
					system.debug('==LEVEL WISE=strModule='+strModule);
					if(mapProdIdToModuleSum.containsKey(idProd))
					{
						mapProdIdToModuleSum.get(idProd).add(new ModuleSum(idProd,
                                                strModule
                                                , String.valueOf(modList.get('c1'))
                                                , String.valueOf(modList.get('c2'))
                                                , String.valueOf(modList.get('c3'))
                                                , String.valueOf(modList.get('c4'))
                                                , String.valueOf(modList.get('vh'))
                                                , String.valueOf(modList.get('th'))
                                               ));
					}
					else
					{
						mapProdIdToModuleSum.put(idProd, new List<ModuleSum>{new ModuleSum(idProd,
                                                strModule
                                                , String.valueOf(modList.get('c1'))
                                                , String.valueOf(modList.get('c2'))
                                                , String.valueOf(modList.get('c3'))
                                                , String.valueOf(modList.get('c4'))
                                                , String.valueOf(modList.get('vh'))
                                                , String.valueOf(modList.get('th'))
                                               )})
					}
					system.debug('==LEVEL WISE=mapProdIdToModuleSum='+mapProdIdToModuleSum);
				}
				// sub total
				else if(idProd != NULL)
				{
					setProdId.add(idProd);
					ProductSumList.add(new ProductSum(strModule,
                                              String.valueOf(modList.get('c1'))
                                              , String.valueOf(modList.get('c2'))
                                              , String.valueOf(modList.get('c3'))
                                              , String.valueOf(modList.get('c4'))
                                              , String.valueOf(modList.get('vh'))
                                              , String.valueOf(modList.get('th'))
                                             ));
					system.debug('==SUB TOTAL=mapProdIdToModuleSum='+ProductSumList);
				}
            }
			
			system.debug('==setProdId='+setProdId);
			if(!setProdId.isEmpty())
			for(Product2 objProduct : [SELECT Id, Name FROM Product2 WHERE Id IN: setProdId])
			{
				mapProductName.put(objProduct.Id, objProduct.Name)
			}
			
			system.debug('==ProductSumList=1=='+ProductSumList);
			for(ProductSum objPSL : ProductSumList)
			{
				objPSL.ProductName = mapProductName.get(objPSL.pId);
				if(mapProdIdToModuleSum.containsKey(objPSL.pId))
				{
					objPSL.ModSumList = mapProdIdToModuleSum.get(objPSL.pId);
				}
				else
				{
					objPSL.ModSumList = new List<ModuleSum>();
				}
			}
            system.debug('==ProductSumList=1=='+ProductSumList);
    }

Can you please update the code and post debug log here? I want to know what I am missing
 
BeautifulDrifterBeautifulDrifter
Below are the changes I had to make to get it to run and I got the following error:

Argument cannot be null. 
An unexpected error has occurred. Your development organization has been notified.

 
public class psqProdModS {
    
    Public PSQ_Header__c Header {get;set;}
    
    private ApexPages.StandardController stdCtrl {get; set;}
    public psqProdModS(ApexPages.StandardController std)
        
        
    {
        Header=[select Id from PSQ_Header__c where Id = 'a0541000008gjcm'];
        //Header =(PSQ_Header__c)std.getrecord();
        stdCtrl=std;
        
    }

    public class ProductSum{
        Public Id ProdId {get;set;}
        public String ProductName {get; set;}
        public String phc1 {get; set;}
        public String phc2 {get; set;}
        public String phc3 {get; set;}
        public String phc4 {get; set;}
        public String pvariableHours {get; set;}
        Public String phcTotal {get;set;}
        Public ProductSum(Id pi,string p1, string p2, string p3, string p4, string pv, string pt){
            this.ProdId = pi;
            this.phc1 = p1;
            this.phc2 = p2;
            this.phc3 = p3;
            this.phc4 = p4;
            this.pvariableHours = pv;
            this.phcTotal = pt;
        }
        public List<ModuleSum> ModSumList {get; set;}
        
    }
    public class ModuleSum{
        public Id pId {get; set;}
        public String ModuleName {get; set;}
        public String ProductName {get; set;}
        public String mhc1 {get; set;}
        public String mhc2 {get; set;}
        public String mhc3 {get; set;}
        public String mhc4 {get; set;}
        public String mvariableHours {get; set;}
        Public String mhcTotal {get;set;}
        Public ModuleSum(Id pId,
                         string m,string m1, string m2, string m3, string m4, string mv, string mt){
                             this.pId = pId;
                             this.ModuleName = m;
                             this.mhc1 = m1;
                             this.mhc2 = m2;
                             this.mhc3 = m3;
                             this.mhc4 = m4;
                             this.mvariableHours = mv;
                             this.mhcTotal = mt;
                         }
        
    }
   
    public List<ProductSum> getProductSumOut()
	{
			List<ProductSum> ProductSumList = new List<ProductSum>();
			Set<Id> setProdId = new Set<Id>();
			Map<Id, List<ModuleSum>> mapProdIdToModuleSum = new Map<Id, List<ModuleSum>>();
			Id idProd;
			String strModule;
			Map<Id, String> mapProductName = new Map<Id,String>();
			
            for (AggregateResult modList : [SELECT PSQ_Application__r.PSQ_Product__c prodId
                                          ,PSQ_Application__r.PSQ_Module__r.Name Module
                                          ,SUM(Class_1_Total__c) c1
                                          ,SUM(Class_2_Total__c) c2
                                          ,SUM(Class_3_Total__c) c3
                                          ,SUM(Class_4_Total__c) c4
                                          ,SUM(Variable_hours__c) vh
                                          ,SUM(Total_Hours__c) th
                                          FROM PSQ_App_Detail__c WHERE PSQ_Header__c=:Header.Id
                                          GROUP BY ROLLUP(PSQ_Application__r.PSQ_Product__c
                                          ,PSQ_Application__r.PSQ_Module__r.Name)]) 
			{
				system.debug('==modList=='+modList);
				idProd = Id.valueOf(String.valueOf(modList.get('prodId')));
				strModule = String.valueOf(modList.get('Module'));/////////////////////////Missing Right Parentheses
				//level wise total
				if(idProd != NULL && String.isNotBlank(strModule))
				{
					system.debug('==LEVEL WISE=strModule='+strModule);
					if(mapProdIdToModuleSum.containsKey(idProd))
					{
						mapProdIdToModuleSum.get(idProd).add(new ModuleSum(idProd,
                                                strModule
                                                , String.valueOf(modList.get('c1'))
                                                , String.valueOf(modList.get('c2'))
                                                , String.valueOf(modList.get('c3'))
                                                , String.valueOf(modList.get('c4'))
                                                , String.valueOf(modList.get('vh'))
                                                , String.valueOf(modList.get('th'))
                                               ));
					}
					else
					{
						mapProdIdToModuleSum.put(idProd, new List<ModuleSum>{new ModuleSum(idProd,
                                                strModule
                                                , String.valueOf(modList.get('c1'))
                                                , String.valueOf(modList.get('c2'))
                                                , String.valueOf(modList.get('c3'))
                                                , String.valueOf(modList.get('c4'))
                                                , String.valueOf(modList.get('vh'))
                                                , String.valueOf(modList.get('th'))
                                               )});//////////////////////////////////Missing Semicolon
					}
					system.debug('==LEVEL WISE=mapProdIdToModuleSum='+mapProdIdToModuleSum);
				}
				// sub total
				else if(idProd != NULL)
				{
					setProdId.add(idProd);
					ProductSumList.add(new ProductSum(strModule,
                                              String.valueOf(modList.get('c1'))
                                              , String.valueOf(modList.get('c2'))
                                              , String.valueOf(modList.get('c3'))
                                              , String.valueOf(modList.get('c4'))
                                              , String.valueOf(modList.get('vh'))
                                              , String.valueOf(modList.get('th'))
                                             ));
					system.debug('==SUB TOTAL=mapProdIdToModuleSum='+ProductSumList);
				}
            }
			
			system.debug('==setProdId='+setProdId);
			if(!setProdId.isEmpty())
			for(Product2 objProduct : [SELECT Id, Name FROM Product2 WHERE Id IN: setProdId])
			{
				mapProductName.put(objProduct.Id, objProduct.Name);////////////////////////////////////Missing Semicolon
			}
			
			system.debug('==ProductSumList=1=='+ProductSumList);
			for(ProductSum objPSL : ProductSumList)
			{
				objPSL.ProductName = mapProductName.get(objPSL.ProdId);/////////////////////////Variable does not exist: pId :: Changed to ProdId
				if(mapProdIdToModuleSum.containsKey(objPSL.ProdId))/////////////////////////Variable does not exist: pId :: Changed to ProdId
				{
					objPSL.ModSumList = mapProdIdToModuleSum.get(objPSL.ProdId);/////////////////////////Variable does not exist: pId :: Changed to ProdId
				}
				else
				{
					objPSL.ModSumList = new List<ModuleSum>();
				}
			}
            system.debug('==ProductSumList=1=='+ProductSumList);
        Return ProductSumList;//////////////////////////Added "Return ProductSumList;"
    }
}


 
BeautifulDrifterBeautifulDrifter
06:28:58.0 (34285251)|USER_DEBUG|[82]|DEBUG|==modList==AggregateResult:{prodId=a034100000GXwb0AAD, Module=Picking, c1=12.0, c2=0.0, c3=23.0, c4=12.0, vh=0.0, th=48.0}
06:28:58.0 (35034674)|USER_DEBUG|[88]|DEBUG|==LEVEL WISE=strModule=Picking
06:28:58.0 (38746049)|USER_DEBUG|[113]|DEBUG|==LEVEL WISE=mapProdIdToModuleSum={a034100000GXwb0AAD=(ModuleSum:[ModuleName=Picking, ProductName=null, mhc1=12.0, mhc2=0.0, mhc3=23.0, mhc4=12.0, mhcTotal=48.0, mvariableHours=0.0, pId=a034100000GXwb0AAD])}
06:28:58.0 (39134988)|USER_DEBUG|[82]|DEBUG|==modList==AggregateResult:{prodId=a034100000GXwb0AAD, Module=Inventory, c1=0.5, c2=0.0, c3=1.0, c4=4.0, vh=0.0, th=6.0}
06:28:58.0 (39625054)|USER_DEBUG|[88]|DEBUG|==LEVEL WISE=strModule=Inventory
06:28:58.0 (42926023)|USER_DEBUG|[113]|DEBUG|==LEVEL WISE=mapProdIdToModuleSum={a034100000GXwb0AAD=(ModuleSum:[ModuleName=Picking, ProductName=null, mhc1=12.0, mhc2=0.0, mhc3=23.0, mhc4=12.0, mhcTotal=48.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Inventory, ProductName=null, mhc1=0.5, mhc2=0.0, mhc3=1.0, mhc4=4.0, mhcTotal=6.0, mvariableHours=0.0, pId=a034100000GXwb0AAD])}
06:28:58.0 (43183958)|USER_DEBUG|[82]|DEBUG|==modList==AggregateResult:{prodId=a034100000GXwb0AAD, Module=Receiving, c1=1.0, c2=0.0, c3=2.0, c4=4.0, vh=0.0, th=7.0}
06:28:58.0 (43488193)|USER_DEBUG|[88]|DEBUG|==LEVEL WISE=strModule=Receiving
06:28:58.0 (45397476)|USER_DEBUG|[113]|DEBUG|==LEVEL WISE=mapProdIdToModuleSum={a034100000GXwb0AAD=(ModuleSum:[ModuleName=Picking, ProductName=null, mhc1=12.0, mhc2=0.0, mhc3=23.0, mhc4=12.0, mhcTotal=48.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Inventory, ProductName=null, mhc1=0.5, mhc2=0.0, mhc3=1.0, mhc4=4.0, mhcTotal=6.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Receiving, ProductName=null, mhc1=1.0, mhc2=0.0, mhc3=2.0, mhc4=4.0, mhcTotal=7.0, mvariableHours=0.0, pId=a034100000GXwb0AAD])}
06:28:58.0 (45594477)|USER_DEBUG|[82]|DEBUG|==modList==AggregateResult:{prodId=a034100000GXwb0AAD, Module=Back Orders, c1=1.0, c2=0.0, c3=2.0, c4=2.0, vh=0.0, th=5.0}
06:28:58.0 (45851607)|USER_DEBUG|[88]|DEBUG|==LEVEL WISE=strModule=Back Orders
06:28:58.0 (47800465)|USER_DEBUG|[113]|DEBUG|==LEVEL WISE=mapProdIdToModuleSum={a034100000GXwb0AAD=(ModuleSum:[ModuleName=Picking, ProductName=null, mhc1=12.0, mhc2=0.0, mhc3=23.0, mhc4=12.0, mhcTotal=48.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Inventory, ProductName=null, mhc1=0.5, mhc2=0.0, mhc3=1.0, mhc4=4.0, mhcTotal=6.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Receiving, ProductName=null, mhc1=1.0, mhc2=0.0, mhc3=2.0, mhc4=4.0, mhcTotal=7.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Back Orders, ProductName=null, mhc1=1.0, mhc2=0.0, mhc3=2.0, mhc4=2.0, mhcTotal=5.0, mvariableHours=0.0, pId=a034100000GXwb0AAD])}
06:28:58.0 (48083582)|USER_DEBUG|[82]|DEBUG|==modList==AggregateResult:{prodId=a034100000GXwb0AAD, Module=Cycle Counting, c1=0.75, c2=0.0, c3=0.75, c4=2.0, vh=0.0, th=4.0}
06:28:58.0 (48609262)|USER_DEBUG|[88]|DEBUG|==LEVEL WISE=strModule=Cycle Counting
06:28:58.0 (51624149)|USER_DEBUG|[113]|DEBUG|==LEVEL WISE=mapProdIdToModuleSum={a034100000GXwb0AAD=(ModuleSum:[ModuleName=Picking, ProductName=null, mhc1=12.0, mhc2=0.0, mhc3=23.0, mhc4=12.0, mhcTotal=48.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Inventory, ProductName=null, mhc1=0.5, mhc2=0.0, mhc3=1.0, mhc4=4.0, mhcTotal=6.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Receiving, ProductName=null, mhc1=1.0, mhc2=0.0, mhc3=2.0, mhc4=4.0, mhcTotal=7.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Back Orders, ProductName=null, mhc1=1.0, mhc2=0.0, mhc3=2.0, mhc4=2.0, mhcTotal=5.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Cycle Counting, ProductName=null, mhc1=0.75, mhc2=0.0, mhc3=0.75, mhc4=2.0, mhcTotal=4.0, mvariableHours=0.0, pId=a034100000GXwb0AAD])}
06:28:58.0 (51968612)|USER_DEBUG|[82]|DEBUG|==modList==AggregateResult:{prodId=a034100000GXwb0AAD, Module=Physical Count, c1=0.25, c2=0.0, c3=0.25, c4=1.0, vh=0.0, th=2.0}
06:28:58.0 (52478839)|USER_DEBUG|[88]|DEBUG|==LEVEL WISE=strModule=Physical Count
06:28:58.0 (55368709)|USER_DEBUG|[113]|DEBUG|==LEVEL WISE=mapProdIdToModuleSum={a034100000GXwb0AAD=(ModuleSum:[ModuleName=Picking, ProductName=null, mhc1=12.0, mhc2=0.0, mhc3=23.0, mhc4=12.0, mhcTotal=48.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Inventory, ProductName=null, mhc1=0.5, mhc2=0.0, mhc3=1.0, mhc4=4.0, mhcTotal=6.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Receiving, ProductName=null, mhc1=1.0, mhc2=0.0, mhc3=2.0, mhc4=4.0, mhcTotal=7.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Back Orders, ProductName=null, mhc1=1.0, mhc2=0.0, mhc3=2.0, mhc4=2.0, mhcTotal=5.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Cycle Counting, ProductName=null, mhc1=0.75, mhc2=0.0, mhc3=0.75, mhc4=2.0, mhcTotal=4.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Physical Count, ProductName=null, mhc1=0.25, mhc2=0.0, mhc3=0.25, mhc4=1.0, mhcTotal=2.0, mvariableHours=0.0, pId=a034100000GXwb0AAD])}
06:28:58.0 (55577226)|USER_DEBUG|[82]|DEBUG|==modList==AggregateResult:{prodId=a034100000GXwb0AAD, Module=AddressValidation, c1=0.0, c2=2.0, c3=1.0, c4=0.0, vh=0.0, th=3.0}
06:28:58.0 (56020323)|USER_DEBUG|[88]|DEBUG|==LEVEL WISE=strModule=AddressValidation
06:28:58.0 (58330287)|USER_DEBUG|[113]|DEBUG|==LEVEL WISE=mapProdIdToModuleSum={a034100000GXwb0AAD=(ModuleSum:[ModuleName=Picking, ProductName=null, mhc1=12.0, mhc2=0.0, mhc3=23.0, mhc4=12.0, mhcTotal=48.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Inventory, ProductName=null, mhc1=0.5, mhc2=0.0, mhc3=1.0, mhc4=4.0, mhcTotal=6.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Receiving, ProductName=null, mhc1=1.0, mhc2=0.0, mhc3=2.0, mhc4=4.0, mhcTotal=7.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Back Orders, ProductName=null, mhc1=1.0, mhc2=0.0, mhc3=2.0, mhc4=2.0, mhcTotal=5.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Cycle Counting, ProductName=null, mhc1=0.75, mhc2=0.0, mhc3=0.75, mhc4=2.0, mhcTotal=4.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Physical Count, ProductName=null, mhc1=0.25, mhc2=0.0, mhc3=0.25, mhc4=1.0, mhcTotal=2.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=AddressValidation, ProductName=null, mhc1=0.0, mhc2=2.0, mhc3=1.0, mhc4=0.0, mhcTotal=3.0, mvariableHours=0.0, pId=a034100000GXwb0AAD])}
06:28:58.0 (58535905)|USER_DEBUG|[82]|DEBUG|==modList==AggregateResult:{prodId=a034100000GXwb0AAD, Module=Packing and Shipping, c1=6.0, c2=0.0, c3=8.0, c4=9.0, vh=0.0, th=23.0}
06:28:58.0 (58793444)|USER_DEBUG|[88]|DEBUG|==LEVEL WISE=strModule=Packing and Shipping
06:28:58.0 (60735202)|USER_DEBUG|[113]|DEBUG|==LEVEL WISE=mapProdIdToModuleSum={a034100000GXwb0AAD=(ModuleSum:[ModuleName=Picking, ProductName=null, mhc1=12.0, mhc2=0.0, mhc3=23.0, mhc4=12.0, mhcTotal=48.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Inventory, ProductName=null, mhc1=0.5, mhc2=0.0, mhc3=1.0, mhc4=4.0, mhcTotal=6.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Receiving, ProductName=null, mhc1=1.0, mhc2=0.0, mhc3=2.0, mhc4=4.0, mhcTotal=7.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Back Orders, ProductName=null, mhc1=1.0, mhc2=0.0, mhc3=2.0, mhc4=2.0, mhcTotal=5.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Cycle Counting, ProductName=null, mhc1=0.75, mhc2=0.0, mhc3=0.75, mhc4=2.0, mhcTotal=4.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Physical Count, ProductName=null, mhc1=0.25, mhc2=0.0, mhc3=0.25, mhc4=1.0, mhcTotal=2.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=AddressValidation, ProductName=null, mhc1=0.0, mhc2=2.0, mhc3=1.0, mhc4=0.0, mhcTotal=3.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Packing and Shipping, ProductName=null, mhc1=6.0, mhc2=0.0, mhc3=8.0, mhc4=9.0, mhcTotal=23.0, mvariableHours=0.0, pId=a034100000GXwb0AAD])}
06:28:58.0 (61025981)|USER_DEBUG|[82]|DEBUG|==modList==AggregateResult:{prodId=a034100000GXwb0AAD, Module=null, c1=21.5, c2=2.0, c3=38.0, c4=34.0, vh=0.0, th=98.0}
06:28:58.0 (62974753)|USER_DEBUG|[127]|DEBUG|==SUB TOTAL=mapProdIdToModuleSum=(ProductSum:[ModSumList=null, ProdId=null, ProductName=null, phc1=21.5, phc2=2.0, phc3=38.0, phc4=34.0, phcTotal=98.0, pvariableHours=0.0])
06:28:58.0 (63171364)|USER_DEBUG|[82]|DEBUG|==modList==AggregateResult:{prodId=a034100000GXwb1AAD, Module=Printing, c1=1.5, c2=0.0, c3=1.0, c4=0.5, vh=0.0, th=3.0}
06:28:58.0 (63492614)|USER_DEBUG|[88]|DEBUG|==LEVEL WISE=strModule=Printing
06:28:58.0 (65743268)|USER_DEBUG|[113]|DEBUG|==LEVEL WISE=mapProdIdToModuleSum={a034100000GXwb0AAD=(ModuleSum:[ModuleName=Picking, ProductName=null, mhc1=12.0, mhc2=0.0, mhc3=23.0, mhc4=12.0, mhcTotal=48.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Inventory, ProductName=null, mhc1=0.5, mhc2=0.0, mhc3=1.0, mhc4=4.0, mhcTotal=6.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Receiving, ProductName=null, mhc1=1.0, mhc2=0.0, mhc3=2.0, mhc4=4.0, mhcTotal=7.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Back Orders, ProductName=null, mhc1=1.0, mhc2=0.0, mhc3=2.0, mhc4=2.0, mhcTotal=5.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Cycle Counting, ProductName=null, mhc1=0.75, mhc2=0.0, mhc3=0.75, mhc4=2.0, mhcTotal=4.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Physical Count, ProductName=null, mhc1=0.25, mhc2=0.0, mhc3=0.25, mhc4=1.0, mhcTotal=2.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=AddressValidation, ProductName=null, mhc1=0.0, mhc2=2.0, mhc3=1.0, mhc4=0.0, mhcTotal=3.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Packing and Shipping, ProductName=null, mhc1=6.0, mhc2=0.0, mhc3=8.0, mhc4=9.0, mhcTotal=23.0, mvariableHours=0.0, pId=a034100000GXwb0AAD]), a034100000GXwb1AAD=(ModuleSum:[ModuleName=Printing, ProductName=null, mhc1=1.5, mhc2=0.0, mhc3=1.0, mhc4=0.5, mhcTotal=3.0, mvariableHours=0.0, pId=a034100000GXwb1AAD])}
06:28:58.0 (66076950)|USER_DEBUG|[82]|DEBUG|==modList==AggregateResult:{prodId=a034100000GXwb1AAD, Module=Configuration, c1=4.0, c2=2.0, c3=4.0, c4=1.0, vh=0.0, th=11.0}
06:28:58.0 (66459341)|USER_DEBUG|[88]|DEBUG|==LEVEL WISE=strModule=Configuration
06:28:58.0 (68882372)|USER_DEBUG|[113]|DEBUG|==LEVEL WISE=mapProdIdToModuleSum={a034100000GXwb0AAD=(ModuleSum:[ModuleName=Picking, ProductName=null, mhc1=12.0, mhc2=0.0, mhc3=23.0, mhc4=12.0, mhcTotal=48.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Inventory, ProductName=null, mhc1=0.5, mhc2=0.0, mhc3=1.0, mhc4=4.0, mhcTotal=6.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Receiving, ProductName=null, mhc1=1.0, mhc2=0.0, mhc3=2.0, mhc4=4.0, mhcTotal=7.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Back Orders, ProductName=null, mhc1=1.0, mhc2=0.0, mhc3=2.0, mhc4=2.0, mhcTotal=5.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Cycle Counting, ProductName=null, mhc1=0.75, mhc2=0.0, mhc3=0.75, mhc4=2.0, mhcTotal=4.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Physical Count, ProductName=null, mhc1=0.25, mhc2=0.0, mhc3=0.25, mhc4=1.0, mhcTotal=2.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=AddressValidation, ProductName=null, mhc1=0.0, mhc2=2.0, mhc3=1.0, mhc4=0.0, mhcTotal=3.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Packing and Shipping, ProductName=null, mhc1=6.0, mhc2=0.0, mhc3=8.0, mhc4=9.0, mhcTotal=23.0, mvariableHours=0.0, pId=a034100000GXwb0AAD]), a034100000GXwb1AAD=(ModuleSum:[ModuleName=Printing, ProductName=null, mhc1=1.5, mhc2=0.0, mhc3=1.0, mhc4=0.5, mhcTotal=3.0, mvariableHours=0.0, pId=a034100000GXwb1AAD], ModuleSum:[ModuleName=Configuration, ProductName=null, mhc1=4.0, mhc2=2.0, mhc3=4.0, mhc4=1.0, mhcTotal=11.0, mvariableHours=0.0, pId=a034100000GXwb1AAD])}
06:28:58.0 (69158411)|USER_DEBUG|[82]|DEBUG|==modList==AggregateResult:{prodId=a034100000GXwb1AAD, Module=Master Data Setup, c1=9.25, c2=0.0, c3=5.25, c4=1.125, vh=0.0, th=16.0}
06:28:58.0 (69473122)|USER_DEBUG|[88]|DEBUG|==LEVEL WISE=strModule=Master Data Setup
06:28:58.0 (71695703)|USER_DEBUG|[113]|DEBUG|==LEVEL WISE=mapProdIdToModuleSum={a034100000GXwb0AAD=(ModuleSum:[ModuleName=Picking, ProductName=null, mhc1=12.0, mhc2=0.0, mhc3=23.0, mhc4=12.0, mhcTotal=48.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Inventory, ProductName=null, mhc1=0.5, mhc2=0.0, mhc3=1.0, mhc4=4.0, mhcTotal=6.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Receiving, ProductName=null, mhc1=1.0, mhc2=0.0, mhc3=2.0, mhc4=4.0, mhcTotal=7.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Back Orders, ProductName=null, mhc1=1.0, mhc2=0.0, mhc3=2.0, mhc4=2.0, mhcTotal=5.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Cycle Counting, ProductName=null, mhc1=0.75, mhc2=0.0, mhc3=0.75, mhc4=2.0, mhcTotal=4.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Physical Count, ProductName=null, mhc1=0.25, mhc2=0.0, mhc3=0.25, mhc4=1.0, mhcTotal=2.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=AddressValidation, ProductName=null, mhc1=0.0, mhc2=2.0, mhc3=1.0, mhc4=0.0, mhcTotal=3.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Packing and Shipping, ProductName=null, mhc1=6.0, mhc2=0.0, mhc3=8.0, mhc4=9.0, mhcTotal=23.0, mvariableHours=0.0, pId=a034100000GXwb0AAD]), a034100000GXwb1AAD=(ModuleSum:[ModuleName=Printing, ProductName=null, mhc1=1.5, mhc2=0.0, mhc3=1.0, mhc4=0.5, mhcTotal=3.0, mvariableHours=0.0, pId=a034100000GXwb1AAD], ModuleSum:[ModuleName=Configuration, ProductName=null, mhc1=4.0, mhc2=2.0, mhc3=4.0, mhc4=1.0, mhcTotal=11.0, mvariableHours=0.0, pId=a034100000GXwb1AAD], ModuleSum:[ModuleName=Master Data Setup, ProductName=null, mhc1=9.25, mhc2=0.0, mhc3=5.25, mhc4=1.125, mhcTotal=16.0, mvariableHours=0.0, pId=a034100000GXwb1AAD])}
06:28:58.0 (71989387)|USER_DEBUG|[82]|DEBUG|==modList==AggregateResult:{prodId=a034100000GXwb1AAD, Module=null, c1=14.75, c2=2.0, c3=10.25, c4=2.625, vh=0.0, th=30.0}
06:28:58.0 (74252112)|USER_DEBUG|[127]|DEBUG|==SUB TOTAL=mapProdIdToModuleSum=(ProductSum:[ModSumList=null, ProdId=null, ProductName=null, phc1=21.5, phc2=2.0, phc3=38.0, phc4=34.0, phcTotal=98.0, pvariableHours=0.0], ProductSum:[ModSumList=null, ProdId=null, ProductName=null, phc1=14.75, phc2=2.0, phc3=10.25, phc4=2.625, phcTotal=30.0, pvariableHours=0.0])
06:28:58.0 (74611694)|USER_DEBUG|[82]|DEBUG|==modList==AggregateResult:{prodId=a034100000GXwb2AAD, Module=Misc, c1=1.0, c2=2.0, c3=4.0, c4=null, vh=0.0, th=7.0}
06:28:58.0 (75324812)|USER_DEBUG|[88]|DEBUG|==LEVEL WISE=strModule=Misc
06:28:58.0 (77979059)|USER_DEBUG|[113]|DEBUG|==LEVEL WISE=mapProdIdToModuleSum={a034100000GXwb0AAD=(ModuleSum:[ModuleName=Picking, ProductName=null, mhc1=12.0, mhc2=0.0, mhc3=23.0, mhc4=12.0, mhcTotal=48.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Inventory, ProductName=null, mhc1=0.5, mhc2=0.0, mhc3=1.0, mhc4=4.0, mhcTotal=6.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Receiving, ProductName=null, mhc1=1.0, mhc2=0.0, mhc3=2.0, mhc4=4.0, mhcTotal=7.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Back Orders, ProductName=null, mhc1=1.0, mhc2=0.0, mhc3=2.0, mhc4=2.0, mhcTotal=5.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Cycle Counting, ProductName=null, mhc1=0.75, mhc2=0.0, mhc3=0.75, mhc4=2.0, mhcTotal=4.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Physical Count, ProductName=null, mhc1=0.25, mhc2=0.0, mhc3=0.25, mhc4=1.0, mhcTotal=2.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=AddressValidation, ProductName=null, mhc1=0.0, mhc2=2.0, mhc3=1.0, mhc4=0.0, mhcTotal=3.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Packing and Shipping, ProductName=null, mhc1=6.0, mhc2=0.0, mhc3=8.0, mhc4=9.0, mhcTotal=23.0, mvariableHours=0.0, pId=a034100000GXwb0AAD]), a034100000GXwb1AAD=(ModuleSum:[ModuleName=Printing, ProductName=null, mhc1=1.5, mhc2=0.0, mhc3=1.0, mhc4=0.5, mhcTotal=3.0, mvariableHours=0.0, pId=a034100000GXwb1AAD], ModuleSum:[ModuleName=Configuration, ProductName=null, mhc1=4.0, mhc2=2.0, mhc3=4.0, mhc4=1.0, mhcTotal=11.0, mvariableHours=0.0, pId=a034100000GXwb1AAD], ModuleSum:[ModuleName=Master Data Setup, ProductName=null, mhc1=9.25, mhc2=0.0, mhc3=5.25, mhc4=1.125, mhcTotal=16.0, mvariableHours=0.0, pId=a034100000GXwb1AAD]), a034100000GXwb2AAD=(ModuleSum:[ModuleName=Misc, ProductName=null, mhc1=1.0, mhc2=2.0, mhc3=4.0, mhc4=null, mhcTotal=7.0, mvariableHours=0.0, pId=a034100000GXwb2AAD])}
06:28:58.0 (78271352)|USER_DEBUG|[82]|DEBUG|==modList==AggregateResult:{prodId=a034100000GXwb2AAD, Module=null, c1=1.0, c2=2.0, c3=4.0, c4=null, vh=0.0, th=7.0}
06:28:58.0 (79646493)|USER_DEBUG|[127]|DEBUG|==SUB TOTAL=mapProdIdToModuleSum=(ProductSum:[ModSumList=null, ProdId=null, ProductName=null, phc1=21.5, phc2=2.0, phc3=38.0, phc4=34.0, phcTotal=98.0, pvariableHours=0.0], ProductSum:[ModSumList=null, ProdId=null, ProductName=null, phc1=14.75, phc2=2.0, phc3=10.25, phc4=2.625, phcTotal=30.0, pvariableHours=0.0], ProductSum:[ModSumList=null, ProdId=null, ProductName=null, phc1=1.0, phc2=2.0, phc3=4.0, phc4=null, phcTotal=7.0, pvariableHours=0.0])
06:28:58.0 (79926880)|USER_DEBUG|[82]|DEBUG|==modList==AggregateResult:{prodId=a034100000GXwb4AAD, Module=CRM, c1=36.0, c2=144.0, c3=36.0, c4=0.0, vh=0.0, th=216.0}
06:28:58.0 (80226508)|USER_DEBUG|[88]|DEBUG|==LEVEL WISE=strModule=CRM
06:28:58.0 (83447932)|USER_DEBUG|[113]|DEBUG|==LEVEL WISE=mapProdIdToModuleSum={a034100000GXwb0AAD=(ModuleSum:[ModuleName=Picking, ProductName=null, mhc1=12.0, mhc2=0.0, mhc3=23.0, mhc4=12.0, mhcTotal=48.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Inventory, ProductName=null, mhc1=0.5, mhc2=0.0, mhc3=1.0, mhc4=4.0, mhcTotal=6.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Receiving, ProductName=null, mhc1=1.0, mhc2=0.0, mhc3=2.0, mhc4=4.0, mhcTotal=7.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Back Orders, ProductName=null, mhc1=1.0, mhc2=0.0, mhc3=2.0, mhc4=2.0, mhcTotal=5.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Cycle Counting, ProductName=null, mhc1=0.75, mhc2=0.0, mhc3=0.75, mhc4=2.0, mhcTotal=4.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Physical Count, ProductName=null, mhc1=0.25, mhc2=0.0, mhc3=0.25, mhc4=1.0, mhcTotal=2.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=AddressValidation, ProductName=null, mhc1=0.0, mhc2=2.0, mhc3=1.0, mhc4=0.0, mhcTotal=3.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Packing and Shipping, ProductName=null, mhc1=6.0, mhc2=0.0, mhc3=8.0, mhc4=9.0, mhcTotal=23.0, mvariableHours=0.0, pId=a034100000GXwb0AAD]), a034100000GXwb1AAD=(ModuleSum:[ModuleName=Printing, ProductName=null, mhc1=1.5, mhc2=0.0, mhc3=1.0, mhc4=0.5, mhcTotal=3.0, mvariableHours=0.0, pId=a034100000GXwb1AAD], ModuleSum:[ModuleName=Configuration, ProductName=null, mhc1=4.0, mhc2=2.0, mhc3=4.0, mhc4=1.0, mhcTotal=11.0, mvariableHours=0.0, pId=a034100000GXwb1AAD], ModuleSum:[ModuleName=Master Data Setup, ProductName=null, mhc1=9.25, mhc2=0.0, mhc3=5.25, mhc4=1.125, mhcTotal=16.0, mvariableHours=0.0, pId=a034100000GXwb1AAD]), a034100000GXwb2AAD=(ModuleSum:[ModuleName=Misc, ProductName=null, mhc1=1.0, mhc2=2.0, mhc3=4.0, mhc4=null, mhcTotal=7.0, mvariableHours=0.0, pId=a034100000GXwb2AAD]), a034100000GXwb4AAD=(ModuleSum:[ModuleName=CRM, ProductName=null, mhc1=36.0, mhc2=144.0, mhc3=36.0, mhc4=0.0, mhcTotal=216.0, mvariableHours=0.0, pId=a034100000GXwb4AAD])}
06:28:58.0 (83799719)|USER_DEBUG|[82]|DEBUG|==modList==AggregateResult:{prodId=a034100000GXwb4AAD, Module=MHE, c1=17.0, c2=68.0, c3=17.0, c4=0.0, vh=0.0, th=102.0}
06:28:58.0 (84175537)|USER_DEBUG|[88]|DEBUG|==LEVEL WISE=strModule=MHE
06:28:58.0 (87175140)|USER_DEBUG|[113]|DEBUG|==LEVEL WISE=mapProdIdToModuleSum={a034100000GXwb0AAD=(ModuleSum:[ModuleName=Picking, ProductName=null, mhc1=12.0, mhc2=0.0, mhc3=23.0, mhc4=12.0, mhcTotal=48.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Inventory, ProductName=null, mhc1=0.5, mhc2=0.0, mhc3=1.0, mhc4=4.0, mhcTotal=6.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Receiving, ProductName=null, mhc1=1.0, mhc2=0.0, mhc3=2.0, mhc4=4.0, mhcTotal=7.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Back Orders, ProductName=null, mhc1=1.0, mhc2=0.0, mhc3=2.0, mhc4=2.0, mhcTotal=5.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Cycle Counting, ProductName=null, mhc1=0.75, mhc2=0.0, mhc3=0.75, mhc4=2.0, mhcTotal=4.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Physical Count, ProductName=null, mhc1=0.25, mhc2=0.0, mhc3=0.25, mhc4=1.0, mhcTotal=2.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=AddressValidation, ProductName=null, mhc1=0.0, mhc2=2.0, mhc3=1.0, mhc4=0.0, mhcTotal=3.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Packing and Shipping, ProductName=null, mhc1=6.0, mhc2=0.0, mhc3=8.0, mhc4=9.0, mhcTotal=23.0, mvariableHours=0.0, pId=a034100000GXwb0AAD]), a034100000GXwb1AAD=(ModuleSum:[ModuleName=Printing, ProductName=null, mhc1=1.5, mhc2=0.0, mhc3=1.0, mhc4=0.5, mhcTotal=3.0, mvariableHours=0.0, pId=a034100000GXwb1AAD], ModuleSum:[ModuleName=Configuration, ProductName=null, mhc1=4.0, mhc2=2.0, mhc3=4.0, mhc4=1.0, mhcTotal=11.0, mvariableHours=0.0, pId=a034100000GXwb1AAD], ModuleSum:[ModuleName=Master Data Setup, ProductName=null, mhc1=9.25, mhc2=0.0, mhc3=5.25, mhc4=1.125, mhcTotal=16.0, mvariableHours=0.0, pId=a034100000GXwb1AAD]), a034100000GXwb2AAD=(ModuleSum:[ModuleName=Misc, ProductName=null, mhc1=1.0, mhc2=2.0, mhc3=4.0, mhc4=null, mhcTotal=7.0, mvariableHours=0.0, pId=a034100000GXwb2AAD]), a034100000GXwb4AAD=(ModuleSum:[ModuleName=CRM, ProductName=null, mhc1=36.0, mhc2=144.0, mhc3=36.0, mhc4=0.0, mhcTotal=216.0, mvariableHours=0.0, pId=a034100000GXwb4AAD], ModuleSum:[ModuleName=MHE, ProductName=null, mhc1=17.0, mhc2=68.0, mhc3=17.0, mhc4=0.0, mhcTotal=102.0, mvariableHours=0.0, pId=a034100000GXwb4AAD])}
06:28:58.0 (87581376)|USER_DEBUG|[82]|DEBUG|==modList==AggregateResult:{prodId=a034100000GXwb4AAD, Module=Custom, c1=144.0, c2=288.0, c3=144.0, c4=null, vh=0.0, th=576.0}
06:28:58.0 (88096631)|USER_DEBUG|[88]|DEBUG|==LEVEL WISE=strModule=Custom
06:28:58.0 (90584670)|USER_DEBUG|[113]|DEBUG|==LEVEL WISE=mapProdIdToModuleSum={a034100000GXwb0AAD=(ModuleSum:[ModuleName=Picking, ProductName=null, mhc1=12.0, mhc2=0.0, mhc3=23.0, mhc4=12.0, mhcTotal=48.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Inventory, ProductName=null, mhc1=0.5, mhc2=0.0, mhc3=1.0, mhc4=4.0, mhcTotal=6.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Receiving, ProductName=null, mhc1=1.0, mhc2=0.0, mhc3=2.0, mhc4=4.0, mhcTotal=7.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Back Orders, ProductName=null, mhc1=1.0, mhc2=0.0, mhc3=2.0, mhc4=2.0, mhcTotal=5.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Cycle Counting, ProductName=null, mhc1=0.75, mhc2=0.0, mhc3=0.75, mhc4=2.0, mhcTotal=4.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Physical Count, ProductName=null, mhc1=0.25, mhc2=0.0, mhc3=0.25, mhc4=1.0, mhcTotal=2.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=AddressValidation, ProductName=null, mhc1=0.0, mhc2=2.0, mhc3=1.0, mhc4=0.0, mhcTotal=3.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Packing and Shipping, ProductName=null, mhc1=6.0, mhc2=0.0, mhc3=8.0, mhc4=9.0, mhcTotal=23.0, mvariableHours=0.0, pId=a034100000GXwb0AAD]), a034100000GXwb1AAD=(ModuleSum:[ModuleName=Printing, ProductName=null, mhc1=1.5, mhc2=0.0, mhc3=1.0, mhc4=0.5, mhcTotal=3.0, mvariableHours=0.0, pId=a034100000GXwb1AAD], ModuleSum:[ModuleName=Configuration, ProductName=null, mhc1=4.0, mhc2=2.0, mhc3=4.0, mhc4=1.0, mhcTotal=11.0, mvariableHours=0.0, pId=a034100000GXwb1AAD], ModuleSum:[ModuleName=Master Data Setup, ProductName=null, mhc1=9.25, mhc2=0.0, mhc3=5.25, mhc4=1.125, mhcTotal=16.0, mvariableHours=0.0, pId=a034100000GXwb1AAD]), a034100000GXwb2AAD=(ModuleSum:[ModuleName=Misc, ProductName=null, mhc1=1.0, mhc2=2.0, mhc3=4.0, mhc4=null, mhcTotal=7.0, mvariableHours=0.0, pId=a034100000GXwb2AAD]), a034100000GXwb4AAD=(ModuleSum:[ModuleName=CRM, ProductName=null, mhc1=36.0, mhc2=144.0, mhc3=36.0, mhc4=0.0, mhcTotal=216.0, mvariableHours=0.0, pId=a034100000GXwb4AAD], ModuleSum:[ModuleName=MHE, ProductName=null, mhc1=17.0, mhc2=68.0, mhc3=17.0, mhc4=0.0, mhcTotal=102.0, mvariableHours=0.0, pId=a034100000GXwb4AAD], ModuleSum:[ModuleName=Custom, ProductName=null, mhc1=144.0, mhc2=288.0, mhc3=144.0, mhc4=null, mhcTotal=576.0, mvariableHours=0.0, pId=a034100000GXwb4AAD])}
06:28:58.0 (90806667)|USER_DEBUG|[82]|DEBUG|==modList==AggregateResult:{prodId=a034100000GXwb4AAD, Module=Shipping Carriers, c1=2.0, c2=8.0, c3=2.0, c4=0.0, vh=0.0, th=12.0}
06:28:58.0 (91082692)|USER_DEBUG|[88]|DEBUG|==LEVEL WISE=strModule=Shipping Carriers
06:28:58.0 (93370756)|USER_DEBUG|[113]|DEBUG|==LEVEL WISE=mapProdIdToModuleSum={a034100000GXwb0AAD=(ModuleSum:[ModuleName=Picking, ProductName=null, mhc1=12.0, mhc2=0.0, mhc3=23.0, mhc4=12.0, mhcTotal=48.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Inventory, ProductName=null, mhc1=0.5, mhc2=0.0, mhc3=1.0, mhc4=4.0, mhcTotal=6.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Receiving, ProductName=null, mhc1=1.0, mhc2=0.0, mhc3=2.0, mhc4=4.0, mhcTotal=7.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Back Orders, ProductName=null, mhc1=1.0, mhc2=0.0, mhc3=2.0, mhc4=2.0, mhcTotal=5.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Cycle Counting, ProductName=null, mhc1=0.75, mhc2=0.0, mhc3=0.75, mhc4=2.0, mhcTotal=4.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Physical Count, ProductName=null, mhc1=0.25, mhc2=0.0, mhc3=0.25, mhc4=1.0, mhcTotal=2.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=AddressValidation, ProductName=null, mhc1=0.0, mhc2=2.0, mhc3=1.0, mhc4=0.0, mhcTotal=3.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Packing and Shipping, ProductName=null, mhc1=6.0, mhc2=0.0, mhc3=8.0, mhc4=9.0, mhcTotal=23.0, mvariableHours=0.0, pId=a034100000GXwb0AAD]), a034100000GXwb1AAD=(ModuleSum:[ModuleName=Printing, ProductName=null, mhc1=1.5, mhc2=0.0, mhc3=1.0, mhc4=0.5, mhcTotal=3.0, mvariableHours=0.0, pId=a034100000GXwb1AAD], ModuleSum:[ModuleName=Configuration, ProductName=null, mhc1=4.0, mhc2=2.0, mhc3=4.0, mhc4=1.0, mhcTotal=11.0, mvariableHours=0.0, pId=a034100000GXwb1AAD], ModuleSum:[ModuleName=Master Data Setup, ProductName=null, mhc1=9.25, mhc2=0.0, mhc3=5.25, mhc4=1.125, mhcTotal=16.0, mvariableHours=0.0, pId=a034100000GXwb1AAD]), a034100000GXwb2AAD=(ModuleSum:[ModuleName=Misc, ProductName=null, mhc1=1.0, mhc2=2.0, mhc3=4.0, mhc4=null, mhcTotal=7.0, mvariableHours=0.0, pId=a034100000GXwb2AAD]), a034100000GXwb4AAD=(ModuleSum:[ModuleName=CRM, ProductName=null, mhc1=36.0, mhc2=144.0, mhc3=36.0, mhc4=0.0, mhcTotal=216.0, mvariableHours=0.0, pId=a034100000GXwb4AAD], ModuleSum:[ModuleName=MHE, ProductName=null, mhc1=17.0, mhc2=68.0, mhc3=17.0, mhc4=0.0, mhcTotal=102.0, mvariableHours=0.0, pId=a034100000GXwb4AAD], ModuleSum:[ModuleName=Custom, ProductName=null, mhc1=144.0, mhc2=288.0, mhc3=144.0, mhc4=null, mhcTotal=576.0, mvariableHours=0.0, pId=a034100000GXwb4AAD], ModuleSum:[ModuleName=Shipping Carriers, ProductName=null, mhc1=2.0, mhc2=8.0, mhc3=2.0, mhc4=0.0, mhcTotal=12.0, mvariableHours=0.0, pId=a034100000GXwb4AAD])}
06:28:58.0 (93573919)|USER_DEBUG|[82]|DEBUG|==modList==AggregateResult:{prodId=a034100000GXwb4AAD, Module=eCommerce Platform, c1=null, c2=null, c3=null, c4=null, vh=0.0, th=0.0}
06:28:58.0 (93832744)|USER_DEBUG|[88]|DEBUG|==LEVEL WISE=strModule=eCommerce Platform
06:28:58.0 (95946491)|USER_DEBUG|[113]|DEBUG|==LEVEL WISE=mapProdIdToModuleSum={a034100000GXwb0AAD=(ModuleSum:[ModuleName=Picking, ProductName=null, mhc1=12.0, mhc2=0.0, mhc3=23.0, mhc4=12.0, mhcTotal=48.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Inventory, ProductName=null, mhc1=0.5, mhc2=0.0, mhc3=1.0, mhc4=4.0, mhcTotal=6.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Receiving, ProductName=null, mhc1=1.0, mhc2=0.0, mhc3=2.0, mhc4=4.0, mhcTotal=7.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Back Orders, ProductName=null, mhc1=1.0, mhc2=0.0, mhc3=2.0, mhc4=2.0, mhcTotal=5.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Cycle Counting, ProductName=null, mhc1=0.75, mhc2=0.0, mhc3=0.75, mhc4=2.0, mhcTotal=4.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Physical Count, ProductName=null, mhc1=0.25, mhc2=0.0, mhc3=0.25, mhc4=1.0, mhcTotal=2.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=AddressValidation, ProductName=null, mhc1=0.0, mhc2=2.0, mhc3=1.0, mhc4=0.0, mhcTotal=3.0, mvariableHours=0.0, pId=a034100000GXwb0AAD], ModuleSum:[ModuleName=Packing and Shipping, ProductName=null, mhc1=6.0, mhc2=0.0, mhc3=8.0, mhc4=9.0, mhcTotal=23.0, mvariableHours=0.0, pId=a034100000GXwb0AAD]), a034100000GXwb1AAD=(ModuleSum:[ModuleName=Printing, ProductName=null, mhc1=1.5, mhc2=0.0, mhc3=1.0, mhc4=0.5, mhcTotal=3.0, mvariableHours=0.0, pId=a034100000GXwb1AAD], ModuleSum:[ModuleName=Configuration, ProductName=null, mhc1=4.0, mhc2=2.0, mhc3=4.0, mhc4=1.0, mhcTotal=11.0, mvariableHours=0.0, pId=a034100000GXwb1AAD], ModuleSum:[ModuleName=Master Data Setup, ProductName=null, mhc1=9.25, mhc2=0.0, mhc3=5.25, mhc4=1.125, mhcTotal=16.0, mvariableHours=0.0, pId=a034100000GXwb1AAD]), a034100000GXwb2AAD=(ModuleSum:[ModuleName=Misc, ProductName=null, mhc1=1.0, mhc2=2.0, mhc3=4.0, mhc4=null, mhcTotal=7.0, mvariableHours=0.0, pId=a034100000GXwb2AAD]), a034100000GXwb4AAD=(ModuleSum:[ModuleName=CRM, ProductName=null, mhc1=36.0, mhc2=144.0, mhc3=36.0, mhc4=0.0, mhcTotal=216.0, mvariableHours=0.0, pId=a034100000GXwb4AAD], ModuleSum:[ModuleName=MHE, ProductName=null, mhc1=17.0, mhc2=68.0, mhc3=17.0, mhc4=0.0, mhcTotal=102.0, mvariableHours=0.0, pId=a034100000GXwb4AAD], ModuleSum:[ModuleName=Custom, ProductName=null, mhc1=144.0, mhc2=288.0, mhc3=144.0, mhc4=null, mhcTotal=576.0, mvariableHours=0.0, pId=a034100000GXwb4AAD], ModuleSum:[ModuleName=Shipping Carriers, ProductName=null, mhc1=2.0, mhc2=8.0, mhc3=2.0, mhc4=0.0, mhcTotal=12.0, mvariableHours=0.0, pId=a034100000GXwb4AAD], ModuleSum:[ModuleName=eCommerce Platform, ProductName=null, mhc1=null, mhc2=null, mhc3=null, mhc4=null, mhcTotal=0.0, mvariableHours=0.0, pId=a034100000GXwb4AAD])}

 
Nayana KNayana K
public class psqProdModS {
    
    Public PSQ_Header__c Header {get;set;}
    
    private ApexPages.StandardController stdCtrl {get; set;}
    public psqProdModS(ApexPages.StandardController std)
        
        
    {
        Header=[select Id from PSQ_Header__c where Id = 'a0541000008gjcm'];
        //Header =(PSQ_Header__c)std.getrecord();
        stdCtrl=std;
        
    }

    public class ProductSum{
        Public Id ProdId {get;set;}
        public String ProductName {get; set;}
        public String phc1 {get; set;}
        public String phc2 {get; set;}
        public String phc3 {get; set;}
        public String phc4 {get; set;}
        public String pvariableHours {get; set;}
        Public String phcTotal {get;set;}
        Public ProductSum(Id pi,string p1, string p2, string p3, string p4, string pv, string pt){
            this.ProdId = pi;
            this.phc1 = p1;
            this.phc2 = p2;
            this.phc3 = p3;
            this.phc4 = p4;
            this.pvariableHours = pv;
            this.phcTotal = pt;
        }
        public List<ModuleSum> ModSumList {get; set;}
        
    }
    public class ModuleSum{
        public Id pId {get; set;}
        public String ModuleName {get; set;}
        public String ProductName {get; set;}
        public String mhc1 {get; set;}
        public String mhc2 {get; set;}
        public String mhc3 {get; set;}
        public String mhc4 {get; set;}
        public String mvariableHours {get; set;}
        Public String mhcTotal {get;set;}
        Public ModuleSum(Id pId,
                         string m,string m1, string m2, string m3, string m4, string mv, string mt){
                             this.pId = pId;
                             this.ModuleName = m;
                             this.mhc1 = m1;
                             this.mhc2 = m2;
                             this.mhc3 = m3;
                             this.mhc4 = m4;
                             this.mvariableHours = mv;
                             this.mhcTotal = mt;
                         }
        
    }
   
    public List<ProductSum> getProductSumOut()
	{
			List<ProductSum> ProductSumList = new List<ProductSum>();
			Set<Id> setProdId = new Set<Id>();
			Map<Id, List<ModuleSum>> mapProdIdToModuleSum = new Map<Id, List<ModuleSum>>();
			Id idProd;
			String strModule;
			Map<Id, String> mapProductName = new Map<Id,String>();
			
            for (AggregateResult modList : [SELECT PSQ_Application__r.PSQ_Product__c prodId
                                          ,PSQ_Application__r.PSQ_Module__r.Name Module
                                          ,SUM(Class_1_Total__c) c1
                                          ,SUM(Class_2_Total__c) c2
                                          ,SUM(Class_3_Total__c) c3
                                          ,SUM(Class_4_Total__c) c4
                                          ,SUM(Variable_hours__c) vh
                                          ,SUM(Total_Hours__c) th
                                          FROM PSQ_App_Detail__c WHERE PSQ_Header__c=:Header.Id
                                          GROUP BY ROLLUP(PSQ_Application__r.PSQ_Product__c
                                          ,PSQ_Application__r.PSQ_Module__r.Name)]) 
			{
				system.debug('==modList=='+modList);
				idProd = Id.valueOf(String.valueOf(modList.get('prodId')));
				strModule = String.valueOf(modList.get('Module'));
				//level wise total
				if(idProd != NULL && String.isNotBlank(strModule))
				{
					system.debug('==LEVEL WISE=strModule='+strModule);
					if(mapProdIdToModuleSum.containsKey(idProd))
					{
						mapProdIdToModuleSum.get(idProd).add(new ModuleSum(idProd,
                                                strModule
                                                , String.valueOf(modList.get('c1'))
                                                , String.valueOf(modList.get('c2'))
                                                , String.valueOf(modList.get('c3'))
                                                , String.valueOf(modList.get('c4'))
                                                , String.valueOf(modList.get('vh'))
                                                , String.valueOf(modList.get('th'))
                                               ));
					}
					else
					{
						mapProdIdToModuleSum.put(idProd, new List<ModuleSum>{new ModuleSum(idProd,
                                                strModule
                                                , String.valueOf(modList.get('c1'))
                                                , String.valueOf(modList.get('c2'))
                                                , String.valueOf(modList.get('c3'))
                                                , String.valueOf(modList.get('c4'))
                                                , String.valueOf(modList.get('vh'))
                                                , String.valueOf(modList.get('th'))
                                               )});
					}
					system.debug('==LEVEL WISE=mapProdIdToModuleSum='+mapProdIdToModuleSum);
				}
				// sub total
				else if(idProd != NULL)
				{
					setProdId.add(idProd);
					// BELOW LINE I HAVE CHANGED 
					ProductSumList.add(new ProductSum(idProd,
                                              String.valueOf(modList.get('c1'))
                                              , String.valueOf(modList.get('c2'))
                                              , String.valueOf(modList.get('c3'))
                                              , String.valueOf(modList.get('c4'))
                                              , String.valueOf(modList.get('vh'))
                                              , String.valueOf(modList.get('th'))
                                             ));
					system.debug('==SUB TOTAL=mapProdIdToModuleSum='+ProductSumList);
				}
            }
			
			system.debug('==setProdId='+setProdId);
			if(!setProdId.isEmpty())
			for(Product2 objProduct : [SELECT Id, Name FROM Product2 WHERE Id IN: setProdId])
			{
				mapProductName.put(objProduct.Id, objProduct.Name);
			}
			
			system.debug('==ProductSumList=1=='+ProductSumList);
			for(ProductSum objPSL : ProductSumList)
			{
				objPSL.ProductName = mapProductName.get(objPSL.ProdId);
				if(mapProdIdToModuleSum.containsKey(objPSL.ProdId))
				{
					objPSL.ModSumList = mapProdIdToModuleSum.get(objPSL.ProdId);
				}
				else
				{
					objPSL.ModSumList = new List<ModuleSum>();
				}
			}
            system.debug('==ProductSumList=1=='+ProductSumList);
        Return ProductSumList;
    }
}

Please try this once.
BeautifulDrifterBeautifulDrifter
Still got the following error.

Argument cannot be null. 
An unexpected error has occurred. Your development organization has been notified.

I got it working though so it is fine.  Below is what I ended up using, I also took the query out of the loop per your advice. Thanks for your help on everything.  
 
public class psqSummaryController {
    
    Public PSQ_Header__c Header {get;set;}
    
   public class ProductSum{
        Public String ProdId {get;set;}
        public String ProductName {get; set;}
        public String phc1 {get; set;}
        public String phc2 {get; set;}
        public String phc3 {get; set;}
        public String phc4 {get; set;}
        public String pvariableHours {get; set;}
        Public String phcTotal {get;set;}
        Public ProductSum(string pi, string p,string p1, string p2, string p3, string p4, string pv, string pt){
            this.ProdId = pi;
            this.ProductName = p;
            this.phc1 = p1;
            this.phc2 = p2;
            this.phc3 = p3;
            this.phc4 = p4;
            this.pvariableHours = pv;
            this.phcTotal = pt;
        }
        public List<ModuleSum> ModSumList {get; set;}
        
    }
    public class ModuleSum{
        public String pId {get; set;}
        public String ModuleName {get; set;}
        public String ProductName {get; set;}
        public String mhc1 {get; set;}
        public String mhc2 {get; set;}
        public String mhc3 {get; set;}
        public String mhc4 {get; set;}
        public String mvariableHours {get; set;}
        Public String mhcTotal {get;set;}
        Public ModuleSum(string pId,
                         string p,string m,string m1, string m2, string m3, string m4, string mv, string mt){
                             this.pId = pId;
                             this.ProductName = p;
                             this.ModuleName = m;
                             this.mhc1 = m1;
                             this.mhc2 = m2;
                             this.mhc3 = m3;
                             this.mhc4 = m4;
                             this.mvariableHours = mv;
                             this.mhcTotal = mt;
                         }
        
    }
    
    public List<ModuleSum> ModuleSumList = New List<ModuleSum>();
    
    public List<ProductSum> ProductSumList = new List<ProductSum>();
    
    public List<ProductSum> getProductSumOut(){
        
        AggregateResult[] productAR = [SELECT PSQ_Application__r.PSQ_Product__r.Id Id
                                       ,PSQ_Application__r.PSQ_Product__r.Name Product
                                       ,SUM(Class_1_Total__c) pc1
                                       ,SUM(Class_2_Total__c) pc2
                                       ,SUM(Class_3_Total__c) pc3
                                       ,SUM(Class_4_Total__c) pc4
                                       ,SUM(Variable_hours__c) pv
                                       ,SUM(Total_Hours__c) pth
                                       FROM PSQ_App_Detail__c WHERE PSQ_Header__c=:Header.Id //and PSQ_Application__r.PSQ_Product__r.Id = :pp.Id
                                       GROUP BY PSQ_Application__r.PSQ_Product__r.Id
                                       ,PSQ_Application__r.PSQ_Product__r.Name]; 
        for (AggregateResult prodList : productAR) { 
            ProductSumList.add(new ProductSum(String.valueOf(prodList.get('Id')),
                                              String.valueOf(prodList.get('Product')),
                                              String.valueOf(prodList.get('pc1'))
                                              , String.valueOf(prodList.get('pc2'))
                                              , String.valueOf(prodList.get('pc3'))
                                              , String.valueOf(prodList.get('pc4'))
                                              , String.valueOf(prodList.get('pv'))
                                              , String.valueOf(prodList.get('pth'))
                                             ));
            
        }
     
        AggregateResult[] moduleAR = [SELECT PSQ_Application__r.PSQ_Product__c prodId
                                      ,PSQ_Application__r.PSQ_Product__r.Name Product
                                      ,PSQ_Application__r.PSQ_Module__r.Name Module
                                      ,SUM(Class_1_Total__c) c1
                                      ,SUM(Class_2_Total__c) c2
                                      ,SUM(Class_3_Total__c) c3
                                      ,SUM(Class_4_Total__c) c4
                                      ,SUM(Variable_hours__c) vh
                                      ,SUM(Total_Hours__c) th
                                      FROM PSQ_App_Detail__c WHERE PSQ_Header__c=:Header.Id 
                                      GROUP BY PSQ_Application__r.PSQ_Product__c
                                      ,PSQ_Application__r.PSQ_Product__r.Name 
                                      ,PSQ_Application__r.PSQ_Module__r.Name]; 
        for (AggregateResult modList : moduleAR) {
            
            ModuleSumList.add(new ModuleSum(String.valueOf(modList.get('prodId')),
                                         String.valueOf(modList.get('Product'))
                                         ,String.valueOf(modList.get('Module'))
                                         , String.valueOf(modList.get('c1'))
                                         , String.valueOf(modList.get('c2'))
                                         , String.valueOf(modList.get('c3'))
                                         , String.valueOf(modList.get('c4'))
                                         , String.valueOf(modList.get('vh'))
                                         , String.valueOf(modList.get('th'))
                                        ));
            
            For (ProductSum p : ProductSumList){
                List<ModuleSum> ProdModSum = New List<ModuleSum>();
                ProductSum ps = p;
                For(ModuleSum pmSum : ModuleSumList){
                    If(pmSum.pId == ps.prodId){
                        ProdModSum.add(pmSum);
                    }
                   p.ModSumList = ProdModSum; 
                    system.debug(ProdModSum);
                }
                 
            }
            
            
        }
              
        return ProductSumList;
        
    }  

}