Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method Enable ( 
 | 
  const NewOfflinePlanTable offlinePlanTable 
 | 
) 
 | 
{ 
 | 
  TextBody: 
 | 
  [* 
 | 
    // Akari Oct-30-2024 (created) 
 | 
    offlinePlanRow := select( offlinePlanTable,NewOfflinePlanRow,row,row.ProductID() = this.ProductInStockingPoint_MP().ProductID() and row.StockingPointID() = this.ProductInStockingPoint_MP().StockingPointID() ); 
 | 
     
 | 
    offlinePlanCells := selectset( offlinePlanRow, NewOfflinePlanCell,cell,true ); 
 | 
    offlinePlanCellIndexTree := NamedValueTree::Create(); 
 | 
    for( i := 0; i< offlinePlanCells.Size(); i++ ){ 
 | 
      offlinePlanCell := offlinePlanCells.Element( i ); 
 | 
      offlinePlanCellHandle := offlinePlanCellIndexTree.GetHandle( offlinePlanCell.NewOfflinePlanColumn().StartDate().AsQUILL() ); 
 | 
      offlinePlanCellIndexTree.Root().AddChild( offlinePlanCellHandle,i ); 
 | 
    } 
 | 
     
 | 
     
 | 
    if( not this.IsEnable() ){ 
 | 
      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 ); 
 | 
    } 
 | 
  *] 
 | 
} 
 |