| Quintiq file version 2.0 | 
| #parent: #root | 
| Method Enable ( | 
|   const OfflinePlanArchiveVersion offlinePlanTable | 
| ) | 
| { | 
|   TextBody: | 
|   [* | 
|     // Akari Oct-30-2024 (created) | 
|     offlinePlanRow := select( offlinePlanTable,Row,row,row.ProductID() = this.ProductInStockingPoint_MP().ProductID() and row.StockingPointID() = this.ProductInStockingPoint_MP().StockingPointID() ); | 
|      | 
|     if( not this.IsEnable() and not isnull( offlinePlanRow )){ | 
|       offlinePlanCells := selectset( offlinePlanRow, Cell,cell, true );//,cell.Column().TimeUnit() = "Day" | 
|       offlinePlanCellIndexTree := NamedValueTree::Create(); | 
|       for( i := 0; i< offlinePlanCells.Size(); i++ ){ | 
|         offlinePlanCell := offlinePlanCells.Element( i ); | 
|         offlinePlanCellHandle := offlinePlanCellIndexTree.GetHandle( offlinePlanCell.Column().StartDate().AsQUILL() ); | 
|         offlinePlanCellIndexTree.Root().AddChild( offlinePlanCellHandle,i ); | 
|       } | 
|        | 
|       this.IsEnable( true ); | 
|        | 
|       pispips := selectset( this,ProductInStockingPoint_MP.ProductInStockingPointInPeriod.astype( ProductInStockingPointInPeriodPlanningLeaf ),period,period.Period_MP().StartDate() <= this.LockDate() ); | 
|       traverse( pispips,Elements,element ){ | 
|         element.IsLock( true ); | 
|         offlinePlanCellHandle := offlinePlanCellIndexTree.GetHandle( element.Period_MP().StartDate().AsQUILL() ); | 
|         offlinePlanCellIndex := guard( offlinePlanCellIndexTree.Root().Child( offlinePlanCellHandle),null( NamedValue )); | 
|         offlinePlanCellQuantity := 0.0; | 
|         if( not isnull( offlinePlanCellIndex )){ | 
|           offlinePlanCell := offlinePlanCells.Element( offlinePlanCellIndex.GetValueAsNumber() ); | 
|           offlinePlanCellQuantity := offlinePlanCell.Quantity(); | 
|         } | 
|      | 
|         if( element.NewSupply( relsize ) = 1 ){ | 
|           traverse( element,NewSupply,newSupply ){ | 
|             newSupply.Update( offlinePlanCellQuantity ); | 
|           } | 
|         }else if( element.NewSupply( relsize ) > 1 ){ | 
|           newSupplys := selectset( element,NewSupply,newSupply,true ); | 
|           for( i := 1; i < newSupplys.Size(); i++ ){ | 
|             newSupply := newSupplys.Element( i ); | 
|             newSupply.Update( 0.0 ); | 
|           } | 
|           newSupplys.Element( 0 ).Update( offlinePlanCellQuantity ) | 
|         }else if( element.NewSupply( relsize ) = 0 ){ | 
|           if( offlinePlanCellQuantity <> 0 ){ | 
|             info( "new supply is null" ); | 
|             unit := element.StockingPointInPeriod().StockingPoint_MP().Unit(); | 
|             operaction := select( unit,Operation,op,true ); | 
|             if( not isnull( operaction )){ | 
|               info( "operaction is null" ); | 
|               // unitPeriod := element.Period_MP().UnitPeriod() | 
|               // PeriodTaskOperation::Create( operaction,unitPeriod,quantity,false ); | 
|             }else{ | 
|                | 
|             } | 
|           } | 
|         } | 
|       } | 
|       ProductInStockingPointInPeriod::LockUnlockPlanning( pispips, true, true ); | 
|     }else{ | 
|       info( "Archive data [" + this.ProductInStockingPoint_MP().Name() + "] is null.") | 
|     } | 
|   *] | 
| } |