Quintiq file version 2.0 
 | 
#parent: #root 
 | 
StaticMethod Dispatch ( 
 | 
  Date startDate, 
 | 
  Date endDate, 
 | 
  const OfflinePlanTable offlinePlan, 
 | 
  RecycleBin owner 
 | 
) 
 | 
{ 
 | 
  TextBody: 
 | 
  [* 
 | 
    // Akari Sep-4-2024 (created) 
 | 
    owner.DispatchShiftSchedulingInformation( relflush ); 
 | 
    macroPlan := offlinePlan.MacroPlan(); 
 | 
    now := DateTime::Now(); 
 | 
     
 | 
    shiftPatterns := selectset( macroPlan,ShiftPattern,object,true ); 
 | 
    shiftPatternIndexTree := NamedValueTree::Create(); 
 | 
    for( i := 0; i < shiftPatterns.Size(); i++){ 
 | 
      shiftPattern := shiftPatterns.Element( i ); 
 | 
      shiftPatternHandle := shiftPatternIndexTree.GetHandle( shiftPattern.Name() ); 
 | 
      shiftPatternIndexTree.Root().AddChild( shiftPatternHandle,i ); 
 | 
    } 
 | 
     
 | 
    units := selectset( macroPlan,Unit,object, true ); 
 | 
    unitIndexTree := NamedValueTree::Create(); 
 | 
    for( i := 0; i < units.Size(); i++){ 
 | 
      unit := units.Element( i ); 
 | 
      unitHandle := unitIndexTree.GetHandle( unit.Name() ); 
 | 
      unitIndexTree.Root().AddChild( unitHandle,i ); 
 | 
    } 
 | 
     
 | 
    traverse( offlinePlan,OfflinePlanRow,row ){ 
 | 
      productID := row.ProductID(); 
 | 
      productLine := row.ProductionLine(); 
 | 
      factory := constnull( Unit ); 
 | 
      { 
 | 
        unitHandle := unitIndexTree.GetHandle( productLine ); 
 | 
        unitIndex := guard( unitIndexTree.Root().Child( unitHandle ), null( NamedValue )); 
 | 
        if( not isnull( unitIndex )){ 
 | 
          unit := units.Element( unitIndex.GetValueAsNumber() ); 
 | 
          temp1 := unit; 
 | 
          temp2 := unit.Parent(); 
 | 
          while( not isnull( temp1.Parent())){ 
 | 
            temp2 := temp1; 
 | 
            temp1 := temp1.Parent(); 
 | 
          } 
 | 
          factory := temp2; 
 | 
        } 
 | 
      } 
 | 
      traverse( row,OfflinePlanCell,cell ,startDate <= cell.OfflinePlanColumn().ColumnDate() and endDate > cell.OfflinePlanColumn().ColumnDate()){ 
 | 
        shiftDate := cell.OfflinePlanColumn().ColumnDate(); 
 | 
        shiftName := cell.Shift(); 
 | 
        shiftVolume := cell.Quantity(); 
 | 
        shiftDayTime := constnull( ShiftDayTime ); 
 | 
        { 
 | 
          shiftPatternHandle := shiftPatternIndexTree.GetHandle( shiftName ); 
 | 
          shiftPatternIndex := guard( shiftPatternIndexTree.Root().Child( shiftPatternHandle ),null( NamedValue )); 
 | 
          if( not isnull( shiftPatternIndex )){ 
 | 
            shiftPattern := shiftPatterns.Element( shiftPatternIndex.GetValueAsNumber() ); 
 | 
            shiftDayTime := select( shiftPattern,ShiftDayTime,object,true ); 
 | 
          } 
 | 
        } 
 | 
        if( shiftVolume <> 0 ){ 
 | 
          shiftSchedulingInformations := DispatchShiftSchedulingInformation::SplitShifts( owner,shiftName,shiftVolume ); 
 | 
         
 | 
        traverse( shiftSchedulingInformations,Elements,shiftSchedulingInformation ){ 
 | 
          shiftSchedulingInformation.InterfaceTime( now ); 
 | 
          shiftSchedulingInformation.VersionName( macroPlan.MDSMacroPlan().Description() ); 
 | 
          shiftSchedulingInformation.Product( productID ); 
 | 
          shiftSchedulingInformation.ProductLine( productLine ); 
 | 
          shiftSchedulingInformation.ShiftDate( shiftDate ); 
 | 
    //      shiftSchedulingInformation.InterfaceTime( now ); 
 | 
    //      shiftSchedulingInformation.InterfaceTime( now ); 
 | 
    //      shiftSchedulingInformation.InterfaceTime( now ); 
 | 
    //      shiftSchedulingInformation.InterfaceTime( now ); 
 | 
           
 | 
           
 | 
          if( not isnull( shiftDayTime )){ 
 | 
            shiftSchedulingInformation.ShiftStartDate( shiftDayTime.StartDateTime() ); 
 | 
            shiftSchedulingInformation.ShiftEndDate( shiftDayTime.EndDateTIme() ); 
 | 
          } 
 | 
          if( not isnull( factory )){ 
 | 
            shiftSchedulingInformation.FactoryName( factory.Name() ); 
 | 
          } 
 | 
        } 
 | 
        } 
 | 
      } 
 | 
    } 
 | 
  *] 
 | 
} 
 |