| Quintiq file version 2.0 | 
| #parent: #root | 
| StaticMethod Archive ( | 
|   const MacroPlan macroPlan, | 
|   Archive archive | 
| ) | 
| { | 
|   TextBody: | 
|   [* | 
|     // Akari Oct-23-2024 (created) | 
|     archiveTransferPlanCells := selectset( archive,ArchiveTransferPlanRow.ArchiveTransferPlanCell,cell,true ); | 
|     archiveTransferPlanCellIndexTree := NamedValueTree::Create(); | 
|     for( i := 0; i < archiveTransferPlanCells.Size(); i++ ){ | 
|       archiveTransferPlanCell := archiveTransferPlanCells.Element( i ); | 
|       archiveTransferPlanRow := archiveTransferPlanCell.ArchiveTransferPlanRow(); | 
|       archiveTransferPlanColumn := archiveTransferPlanCell.ArchiveTransferPlanColumn(); | 
|        | 
|       archiveTransferPlanRowKey := archiveTransferPlanRow.Category() + archiveTransferPlanRow.ProductID() + archiveTransferPlanRow.SourceStockpoingPointID() + archiveTransferPlanRow.TargetStockpoingPointID() ; | 
|       archiveTransferPlanColumnKey := archiveTransferPlanColumn.ColumnDate().AsQUILL(); | 
|       archiveTransferPlanCellKey := archiveTransferPlanRowKey + archiveTransferPlanColumnKey; | 
|       archiveTransferPlanCellHandle := archiveTransferPlanCellIndexTree.GetHandle( archiveTransferPlanCellKey ); | 
|        | 
|       archiveTransferPlanCellIndexTree.Root().AddChild( archiveTransferPlanCellHandle,i ); | 
|     } | 
|      | 
|     archiveTransferPlanRows := selectset( archive,ArchiveTransferPlanRow,row,true ); | 
|     archiveTransferPlanRowIndexTree := NamedValueTree::Create(); | 
|     for( i := 0; i < archiveTransferPlanRows.Size(); i++ ){ | 
|       archiveTransferPlanRow := archiveTransferPlanRows.Element( i ); | 
|       archiveTransferPlanRowKey := archiveTransferPlanRow.Category() + archiveTransferPlanRow.ProductID() + archiveTransferPlanRow.SourceStockpoingPointID() + archiveTransferPlanRow.TargetStockpoingPointID() ; | 
|       archiveTransferPlanRowHandle := archiveTransferPlanRowIndexTree.GetHandle( archiveTransferPlanRowKey ); | 
|       archiveTransferPlanRowIndexTree.Root().AddChild( archiveTransferPlanRowHandle,i ); | 
|     } | 
|      | 
|     archiveTransferPlanColumns := selectset( archive,ArchiveTransferPlanColumn,row,true ); | 
|     archiveTransferPlanColumnIndexTree := NamedValueTree::Create(); | 
|     for( i := 0; i < archiveTransferPlanColumns.Size(); i++ ){ | 
|       archiveTransferPlanColumn := archiveTransferPlanColumns.Element( i ); | 
|       archiveTransferPlanColumnKey := archiveTransferPlanColumn.ColumnDate().AsQUILL(); | 
|       archiveTransferPlanColumnHandle := archiveTransferPlanColumnIndexTree.GetHandle( archiveTransferPlanColumnKey ); | 
|       archiveTransferPlanColumnIndexTree.Root().AddChild( archiveTransferPlanColumnHandle,i ); | 
|     } | 
|      | 
|     traverse( macroPlan,TransferPlanRow.TransferPlanCell,transferPlanCell,transferPlanCell.TransferPlanColumn().ColumnDate() >= macroPlan.StartOfPlanning().Date() ){ | 
|       transferPlanRow := transferPlanCell.TransferPlanRow(); | 
|       transferPlanColumn := transferPlanCell.TransferPlanColumn(); | 
|       transferPlanRowKey := transferPlanRow.Category() + transferPlanRow.ProductID() + transferPlanRow.SourceStockpoingPointID() + transferPlanRow.TargetStockpoingPointID(); | 
|       transferPlanColumnKey := transferPlanColumn.ColumnDate().AsQUILL(); | 
|       transferPlanCellKey := transferPlanRowKey + transferPlanColumnKey; | 
|        | 
|       archiveTransferPlanCell := null( ArchiveTransferPlanCell ); | 
|       archiveTransferPlanCellHandle := archiveTransferPlanCellIndexTree.GetHandle( transferPlanCellKey ); | 
|       archiveTransferPlanCellIndex := guard( archiveTransferPlanCellIndexTree.Root().Child( archiveTransferPlanCellHandle ),null( NamedValue ) ); | 
|       if( isnull( archiveTransferPlanCellIndex )){ | 
|         archiveTransferPlanRow := null( ArchiveTransferPlanRow ); | 
|         archiveTransferPlanRowHandle := archiveTransferPlanRowIndexTree.GetHandle( transferPlanRowKey ); | 
|         archiveTransferPlanRowIndex := guard( archiveTransferPlanRowIndexTree.Root().Child( archiveTransferPlanRowHandle ),null( NamedValue )); | 
|         if( isnull( archiveTransferPlanRowIndex )){ | 
|           archiveTransferPlanRow := archive.ArchiveTransferPlanRow( relnew,Category := transferPlanRow.Category(),ProductID := transferPlanRow.ProductID(),RowNr := transferPlanRow.RowNr(),SourceStockpoingPointID := transferPlanRow.SourceStockpoingPointID(),TargetStockpoingPointID := transferPlanRow.TargetStockpoingPointID() ); | 
|           archiveTransferPlanRows.Add( archiveTransferPlanRow ); | 
|           archiveTransferPlanRowIndexTree.Root().AddChild( archiveTransferPlanRowHandle,archiveTransferPlanRows.Size() - 1 ); | 
|         }else{ | 
|           archiveTransferPlanRow := archiveTransferPlanRows.Element( archiveTransferPlanRowIndex.GetValueAsNumber() );  | 
|         } | 
|          | 
|         archiveTransferPlanColumn := null( ArchiveTransferPlanColumn ); | 
|         archiveTransferPlanColumnHandle := archiveTransferPlanColumnIndexTree.GetHandle( transferPlanColumnKey ); | 
|         archiveTransferPlanColumnIndex := guard( archiveTransferPlanColumnIndexTree.Root().Child( archiveTransferPlanColumnHandle ),null( NamedValue )); | 
|         if( isnull( archiveTransferPlanColumnIndex )){ | 
|           archiveTransferPlanColumn := archive.ArchiveTransferPlanColumn( relnew,ColumnDate := transferPlanColumn.ColumnDate(),ColumnIndex := transferPlanColumn.ColumnIndex() ); | 
|           archiveTransferPlanColumns.Add( archiveTransferPlanColumn ); | 
|           archiveTransferPlanColumnIndexTree.Root().AddChild( archiveTransferPlanColumnHandle,archiveTransferPlanColumns.Size() - 1 ); | 
|         }else{ | 
|           archiveTransferPlanColumn := archiveTransferPlanColumns.Element( archiveTransferPlanColumnIndex.GetValueAsNumber() );  | 
|         } | 
|          | 
|         archiveTransferPlanCell := archiveTransferPlanRow.ArchiveTransferPlanCell( relnew,ArchiveTransferPlanColumn := archiveTransferPlanColumn ); | 
|         archiveTransferPlanCells.Add( archiveTransferPlanCell ); | 
|         archiveTransferPlanCellIndexTree.Root().AddChild( archiveTransferPlanCellHandle,archiveTransferPlanCells.Size() - 1 ); | 
|       }else{ | 
|         archiveTransferPlanCell := archiveTransferPlanCells.Element( archiveTransferPlanCellIndex.GetValueAsNumber()); | 
|       } | 
|        | 
|       archiveTransferPlanCell.Value( transferPlanCell.Value() ); | 
|      | 
|     } | 
|   *] | 
| } |