| Quintiq file version 2.0 | 
| #parent: #root | 
| Method GenerateDemands () id:Method_FormDemandSupply_GenerateDemands | 
| { | 
|   #keys: '[132448.0.712669067]' | 
|   Body: | 
|   [* | 
|     // Generate all demand for visualization                          | 
|     // Clear dataholder | 
|     DataHolderGP.Data( null( shadow[GlobalParameters_MP], owning ) ); | 
|      | 
|     // Ownership on GP so it is possible to display the DemandForVisualization | 
|     owner := shadow( MacroPlan.GlobalParameters_MP() ); | 
|      | 
|     DataHolderGP.Data( &owner ); | 
|      | 
|     traverse( DataHolderDemandPISPIP.Data(), Elements, pispip ) | 
|     { | 
|       pispName := pispip.ProductInStockingPoint_MP().Name(); | 
|       planningPISPIP := pispip; | 
|       type := DemandForVisualization::GetPlanningDemandString(); | 
|       factor := 1.0; | 
|        | 
|       if( pispip.istype( ProductInStockingPointInPeriodNonPlanningBase ) ) | 
|       { | 
|         planningPISPIP := pispip.astype( ProductInStockingPointInPeriodNonPlanningBase ).PlanningPISPIP(); | 
|         type := DemandForVisualization::GetDisaggregatedDemandString();  | 
|         factor := pispip.GetPlanningSystemRatio(); | 
|       }  | 
|        | 
|       if( not isnull( planningPISPIP ) | 
|           and planningPISPIP.istype( ProductInStockingPointInPeriodPlanningLeaf ) )  // If its original demand or disaggregated demand | 
|       {                          | 
|         traverse( planningPISPIP.astype( ProductInStockingPointInPeriodPlanningLeaf ).GetDemand_MPs(), Elements, demand ) | 
|         { | 
|           quantity := demand.Quantity() * factor; // If its disaagregated  | 
|                                | 
|           Form.CreateDemandForVisualization( pispName,  | 
|                                              type, | 
|                                              quantity,  | 
|                                              pispip.Start(), | 
|                                              demand );    | 
|         } | 
|       } | 
|       else | 
|       {  | 
|         if( pispip.istype( ProductInStockingPointInPeriodNonPlanningBase ) | 
|             and not isnull( pispip.astype( ProductInStockingPointInPeriodNonPlanningBase ).PlanningPISPIP() ) ) | 
|         { | 
|           type := DemandForVisualization::GetDisaggregatedDemandString(); | 
|         } | 
|         else | 
|         { | 
|           type := DemandForVisualization::GetAggregatedDemandString(); | 
|         } | 
|          | 
|         Form.CreateDemandForVisualization( pispName, | 
|                                            type, | 
|                                            pispip.DependentDemandAndSalesDemandQuantity(), // Pispip already have the demand information | 
|                                            pispip.Start(), | 
|                                            null( Demand_MP ) ); | 
|       } | 
|     } | 
|   *] | 
| } |