Quintiq file version 2.0 
 | 
#parent: #root 
 | 
StaticMethod Create ( 
 | 
  PeriodTaskOperation owner, 
 | 
  Real qty 
 | 
) as DependentDemandInputGroup 
 | 
{ 
 | 
  Description: "Create dependent demand based on operation's input product" 
 | 
  TextBody: 
 | 
  [* 
 | 
    ddig := null( DependentDemandInputGroup ); 
 | 
     
 | 
    // Using the procedural relation (astypes) so that this can be executed without having 
 | 
    // to call transaction propagate within the same transaction 
 | 
    traverse( owner, 
 | 
              Process_MP.astype( Operation ).OperationInputOutput.astype( OperationInput ).BaseOperationLink, 
 | 
              bol, 
 | 
              not isnull( bol.OperationInputGroup() ) ) 
 | 
    { 
 | 
      ddig := select( owner, DependentDemandInputGroup, dig, dig.BaseOperationLink() = bol ); 
 | 
     
 | 
      if( isnull( ddig ) ) 
 | 
      { 
 | 
        ddig := owner.DependentDemandInputGroup( relnew, 
 | 
                                                 OptimizerFulfilledQuantity := qty, 
 | 
                                                 BaseOperationLink := bol ); 
 | 
     
 | 
        // Propagate the operation input relation 
 | 
        Transaction::Transaction().Propagate( relation( DependentDemandInputGroup, OperationInput ) ); 
 | 
      } 
 | 
    } 
 | 
     
 | 
    return ddig; 
 | 
  *] 
 | 
} 
 |