| Quintiq file version 2.0 | 
| #parent: #root | 
| StaticMethod GetOperationPeriodTaskPeriodsForPreprocessing ( | 
|   const Period_MP pispipperiod, | 
|   const Process_MP process | 
| ) const as constcontent owning Period_MPs | 
| { | 
|   Description: 'Return the operation period task periods for the passed in dependent demand periods' | 
|   TextBody: | 
|   [* | 
|     // To get the period of period tasks from dependent demands, it can be treated as "new supplies" of dependent demands. | 
|     // Please read the optimizer solution design for more information. | 
|     startofpt := Process_MP::GetNewSupplyEarliestStart( pispipperiod, process.LeadTime() ) | 
|     endofpt := Process_MP::GetOperationEnd( pispipperiod, startofpt ); | 
|      | 
|     gp := pispipperiod.MacroPlan().GlobalParameters_MP(); | 
|      | 
|     if( gp.IsOperationLeadTimeLogicFromEnd() )  | 
|     { | 
|       startofpt := pispipperiod.Start() + process.LeadTime(); | 
|       endofpt := startofpt; | 
|     } | 
|     else if( gp.IsOperationLeadTimeLogicFromMiddle() )  | 
|     { | 
|       startofpt := pispipperiod.Start() + 0.5 * pispipperiod.Duration() + process.LeadTime(); | 
|       endofpt := startofpt; | 
|     } | 
|      | 
|     return selectset( pispipperiod, MacroPlan.PlanningPeriod, ptperiod, | 
|                       ptperiod.IsInPeriod( startofpt, endofpt ) ); | 
|   *] | 
|   InterfaceProperties { Accessibility: 'Module' } | 
| } |