Quintiq file version 2.0 
 | 
#parent: #root 
 | 
StaticMethod Archive ( 
 | 
  const MacroPlan macroPlan, 
 | 
  Archive archive 
 | 
) 
 | 
{ 
 | 
  TextBody: 
 | 
  [* 
 | 
    // Akari Oct-23-2024 (created) 
 | 
    archiveShiftPlanCells := selectset( archive,ArchiveShiftPlanRow.ArchiveShiftPlanCell,cell,true ); 
 | 
    archiveShiftPlanCellIndexTree := NamedValueTree::Create(); 
 | 
    for( i := 0; i < archiveShiftPlanCells.Size(); i++ ){ 
 | 
      archiveShiftPlanCell := archiveShiftPlanCells.Element( i ); 
 | 
      archiveShiftPlanRow := archiveShiftPlanCell.ArchiveShiftPlanRow(); 
 | 
      archiveShiftPlanColumn := archiveShiftPlanCell.ArchiveShiftPlanColumn(); 
 | 
       
 | 
      archiveShiftPlanRowKey := archiveShiftPlanRow.UnitID(); 
 | 
      archiveShiftPlanColumnKey := archiveShiftPlanColumn.StartDate().AsQUILL(); 
 | 
      archiveShiftPlanCellKey := archiveShiftPlanRowKey + archiveShiftPlanColumnKey; 
 | 
      archiveShiftPlanCellHandle := archiveShiftPlanCellIndexTree.GetHandle( archiveShiftPlanCellKey ); 
 | 
       
 | 
      archiveShiftPlanCellIndexTree.Root().AddChild( archiveShiftPlanCellHandle,i ); 
 | 
    } 
 | 
     
 | 
    archiveShiftPlanRows := selectset( archive,ArchiveShiftPlanRow,row,true ); 
 | 
    archiveShiftPlanRowIndexTree := NamedValueTree::Create(); 
 | 
    for( i := 0; i < archiveShiftPlanRows.Size(); i++ ){ 
 | 
      archiveShiftPlanRow := archiveShiftPlanRows.Element( i ); 
 | 
      archiveShiftPlanRowKey := archiveShiftPlanRow.UnitID(); 
 | 
      archiveShiftPlanRowHandle := archiveShiftPlanRowIndexTree.GetHandle( archiveShiftPlanRowKey ); 
 | 
      archiveShiftPlanRowIndexTree.Root().AddChild( archiveShiftPlanRowHandle,i ); 
 | 
    } 
 | 
     
 | 
    archiveShiftPlanColumns := selectset( archive,ArchiveShiftPlanColumn,row,true ); 
 | 
    archiveShiftPlanColumnIndexTree := NamedValueTree::Create(); 
 | 
    for( i := 0; i < archiveShiftPlanColumns.Size(); i++ ){ 
 | 
      archiveShiftPlanColumn := archiveShiftPlanColumns.Element( i ); 
 | 
      archiveShiftPlanColumnKey := archiveShiftPlanColumn.StartDate().AsQUILL(); 
 | 
      archiveShiftPlanColumnHandle := archiveShiftPlanColumnIndexTree.GetHandle( archiveShiftPlanColumnKey ); 
 | 
      archiveShiftPlanColumnIndexTree.Root().AddChild( archiveShiftPlanColumnHandle,i ); 
 | 
    } 
 | 
     
 | 
    traverse( macroPlan,Unit.UnitPeriod.astype( UnitPeriodTime ).ShiftPlan,shiftPlanCell,shiftPlanCell.UnitPeriodTime().Period_MP().StartDate() >= macroPlan.StartOfPlanning().Date() ){ 
 | 
      shiftPlanRow := shiftPlanCell.UnitPeriodTime().Unit(); 
 | 
      shiftPlanColumn := shiftPlanCell.UnitPeriodTime().Period_MP(); 
 | 
      shiftPlanRowKey := shiftPlanRow.ID(); 
 | 
      shiftPlanColumnKey := shiftPlanColumn.StartDate().AsQUILL(); 
 | 
      shiftPlanCellKey := shiftPlanRowKey + shiftPlanColumnKey; 
 | 
       
 | 
      archiveShiftPlanCell := null( ArchiveShiftPlanCell ); 
 | 
      archiveShiftPlanCellHandle := archiveShiftPlanCellIndexTree.GetHandle( shiftPlanCellKey ); 
 | 
      archiveShiftPlanCellIndex := guard( archiveShiftPlanCellIndexTree.Root().Child( archiveShiftPlanCellHandle ),null( NamedValue ) ); 
 | 
      if( isnull( archiveShiftPlanCellIndex )){ 
 | 
        factory := LocalTool::GetFactoryByUnit( shiftPlanCell.UnitPeriodTime().Unit() ); 
 | 
         
 | 
        archiveShiftPlanRow := null( ArchiveShiftPlanRow ); 
 | 
        archiveShiftPlanRowHandle := archiveShiftPlanRowIndexTree.GetHandle( shiftPlanRowKey ); 
 | 
        archiveShiftPlanRowIndex := guard( archiveShiftPlanRowIndexTree.Root().Child( archiveShiftPlanRowHandle ),null( NamedValue )); 
 | 
        if( isnull( archiveShiftPlanRowIndex )){ 
 | 
          archiveShiftPlanRow := archive.ArchiveShiftPlanRow( relnew,UnitID := shiftPlanRow.ID() ); 
 | 
          archiveShiftPlanRows.Add( archiveShiftPlanRow ); 
 | 
          archiveShiftPlanRowIndexTree.Root().AddChild( archiveShiftPlanRowHandle,archiveShiftPlanRows.Size() - 1 ); 
 | 
        }else{ 
 | 
          archiveShiftPlanRow := archiveShiftPlanRows.Element( archiveShiftPlanRowIndex.GetValueAsNumber() ); 
 | 
        } 
 | 
         
 | 
        archiveShiftPlanRow.FactoryName( factory.ID() ); 
 | 
         
 | 
        archiveShiftPlanColumn := null( ArchiveShiftPlanColumn ); 
 | 
        archiveShiftPlanColumnHandle := archiveShiftPlanColumnIndexTree.GetHandle( shiftPlanColumnKey ); 
 | 
        archiveShiftPlanColumnIndex := guard( archiveShiftPlanColumnIndexTree.Root().Child( archiveShiftPlanColumnHandle ),null( NamedValue )); 
 | 
        if( isnull( archiveShiftPlanColumnIndex )){ 
 | 
          archiveShiftPlanColumn := archive.ArchiveShiftPlanColumn( relnew,StartDate := shiftPlanColumn.StartDate() ); 
 | 
          archiveShiftPlanColumns.Add( archiveShiftPlanColumn ); 
 | 
          archiveShiftPlanColumnIndexTree.Root().AddChild( archiveShiftPlanColumnHandle,archiveShiftPlanColumns.Size() - 1 ); 
 | 
        }else{ 
 | 
          archiveShiftPlanColumn := archiveShiftPlanColumns.Element( archiveShiftPlanColumnIndex.GetValueAsNumber() );  
 | 
        } 
 | 
         
 | 
        archiveShiftPlanCell := archiveShiftPlanRow.ArchiveShiftPlanCell( relnew,ArchiveShiftPlanColumn := archiveShiftPlanColumn ); 
 | 
        archiveShiftPlanCells.Add( archiveShiftPlanCell ); 
 | 
        archiveShiftPlanCellIndexTree.Root().AddChild( archiveShiftPlanCellHandle,archiveShiftPlanCells.Size() - 1 ); 
 | 
      }else{ 
 | 
        archiveShiftPlanCell := archiveShiftPlanCells.Element( archiveShiftPlanCellIndex.GetValueAsNumber()); 
 | 
      } 
 | 
       
 | 
      archiveShiftPlanCell.EventType( shiftPlanCell.EventType()); 
 | 
      archiveShiftPlanCell.IsHoliday( shiftPlanCell.IsHoliday() ); 
 | 
      archiveShiftPlanCell.Outcome( shiftPlanCell.Outcome() ); 
 | 
      archiveShiftPlanCell.Remark( shiftPlanCell.Remark() ); 
 | 
      archiveShiftPlanCell.MacroPlanName( shiftPlanCell.UnitPeriodTime().MacroPlan().MDSMacroPlan().Description() ); 
 | 
      archiveShiftPlanCell.MacroPlanMDSID( shiftPlanCell.UnitPeriodTime().MacroPlan().MDSID() ); 
 | 
    } 
 | 
  *] 
 | 
} 
 |