Quintiq file version 2.0 
 | 
#parent: #root 
 | 
StaticMethod GetDestinationGroupID ( 
 | 
  Operation sourceoperation, 
 | 
  Operation destinationoperation 
 | 
) as Number 
 | 
{ 
 | 
  Description: 'Return the incremental destination group id.' 
 | 
  TextBody: 
 | 
  [* 
 | 
    // DWE2 Feb-1-2016 (created) 
 | 
    id := 1; 
 | 
     
 | 
    // If already have input, we need to increment the group id 
 | 
    if( destinationoperation.OperationInput( relsize ) > 0 ) 
 | 
    { 
 | 
      /* We need to propagate the Systems attribute and relations 
 | 
         During the creation of operation link, Product/SP/OI/OO/OIG will be created 
 | 
         Operation have SystemXXX relation to OI/OO/OIG, we need these relation to get new operation link id 
 | 
         while creating new operation link */ 
 | 
      // To ensure the SystemXXX attribute/relation is propagated in batch creation 
 | 
      Transaction::Transaction().Propagate(); 
 | 
     
 | 
      // Get all operation input with the same uom 
 | 
      sysinputwithsameuom := selectset( destinationoperation, SystemOperationInput, soi, 
 | 
                                        soi.PISPUnitOfMeasurement() = sourceoperation.Unit().UnitOfMeasure_MP() ); 
 | 
     
 | 
      // Get all operation input group with the same uom 
 | 
      sysgroupwithsameuom := selectset( destinationoperation, SystemOperationInputGroup, soig, 
 | 
                                        soig.UnitOfMeasure_MP() = sourceoperation.Unit().UnitOfMeasure_MP() ); 
 | 
     
 | 
      // If there is only one input with same uom, we will re use it 
 | 
      // 99% of the case people will want it to be an alternative resource instead of other resource. 
 | 
      if( sysinputwithsameuom.Size() = 1 ) 
 | 
      { 
 | 
        id := sysinputwithsameuom.Element( 0 ).OperationLinkGroupID(); 
 | 
      } 
 | 
      // If there is on;y one input group with the same uom, we will add to the group 
 | 
      // 99% of the case people will want it to be an alternative resource instead of other resource. 
 | 
      else if( sysgroupwithsameuom.Size() = 1 ) 
 | 
      { 
 | 
        id := sysgroupwithsameuom.Element( 0 ).InputGroupID(); 
 | 
      } 
 | 
      else 
 | 
      { 
 | 
        id := BaseOperationLink::GetGroupID( destinationoperation, true, true ); 
 | 
      } 
 | 
    } 
 | 
     
 | 
    return id; 
 | 
  *] 
 | 
} 
 |