Quintiq file version 2.0 #parent: #root Method GeneratePlanningMatrixData () id:Method_FormSupplyPlanWebClient_GeneratePlanningMatrixData { #keys: '[127710.1.1993166152]' Body: [* // Generate shadow planning cells if( not isnull( DataHolderProductInSPIP.Data() ) and DataHolderProductInSPIP.Data().Size() > 0 ) { DataHolderShadowGlobalParameters.Data( null( shadow[GlobalParameters_MP], owning ) ); owner := shadow( MacroPlan.GlobalParameters_MP() ); DataHolderShadowGlobalParameters.Data( &owner ); traverse ( DataHolderMatrixEditorColumns.Data(), Elements, period ) { traverse( DataHolderMatrixEditorRows.Data(), Elements, process ) // For each ROW { pisp := DataHolderProductInStockingPoints.Data().Element( 0 ); pispip := select( pisp, ProductInStockingPointInPeriodPlanning, p, p.Period_MP() = period ) qty := sum( process, SupplyBase.astype( NewSupply ), ns, ns.ProductInStockingPointInPeriodPlanning() = pispip, ns.Quantity() ); //total qty this routing has produced on the selected pispip if( process.istype( Operation ) ) { routing := process.astype( Operation ).RoutingStep().Routing(); qty := sum( routing, OperationOutput.NewSupply, ns, ns.ProductInStockingPointInPeriodPlanning() = pispip, ns.Quantity() ); } // Create a new shadow AccountCostInPeriod DataHolderShadowGlobalParameters.Data().PlanningCell( relnew, Process_MP := process, ProductInStockingPointInPeriodPlanning := pispip, Quantity := qty, InventoryQuantity := pispip.InventorySupplyQuantity() + pispip.InventoryLevelStart() ); } } } *] }