Quintiq file version 2.0 #parent: #root Method GenerateMatrixData () id:Method_FormCostManagement_GenerateMatrixData { #keys: '[127710.1.439019647]' Body: [* // Generate account cost in period shadow instances // Clear data holder DataHolderShadowGlobalParameters.Data( null( shadow[GlobalParameters_MP], owning ) ); //Ownership on GP so that it is possible to show multi rows when multiple accounts are selected. owner := shadow( MacroPlan.GlobalParameters_MP() ); DataHolderShadowGlobalParameters.Data( &owner ); traverse( DataHolderMatrixEditorRows.Data(), Elements, rowheadercost ) // For each ROW { traverse ( DataHolderMatrixEditorColumns.Data(), Elements, p ) { maxcost := maxselect( rowheadercost, AccountAssignment.AccountCost, ac, ac.OwnerID() = rowheadercost.OwnerID() and ac.Account_MP() = rowheadercost.Account_MP() and ac.CostDriver() = rowheadercost.CostDriver() and ac.Start() <= p.StartDate(), ac.Start() ); if( rowheadercost.istype( ProductValueAndCost ) ) { maxcost := maxselect( rowheadercost.astype( ProductValueAndCost ), Product_MP.ProductValueAndCost, pc, pc.OwnerID() = rowheadercost.OwnerID() and pc.Account_MP() = rowheadercost.Account_MP() and pc.CostDriver() = rowheadercost.CostDriver() and pc.Start() <= p.StartDate(), pc.Start() ); } if( not isnull( maxcost ) ) { this.CreateShadowAccountCostInPeriod( p, maxcost, rowheadercost ); } } } *] }