Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method CreateShadowConversionFactor () id:Method_FormUnitsOfMeasurement_CreateShadowConversionFactor 
 | 
{ 
 | 
  #keys: '[124808.2.631315687]' 
 | 
  Body: 
 | 
  [* 
 | 
    // Generate conversion factor shadow instances 
 | 
    DataHolderShadowGlobalParameters.Data( null( shadow[GlobalParameters_MP], owning ) ); 
 | 
     
 | 
    //Ownership on GP so that it is possible to show multi rows when multiple uoms are selected. 
 | 
    owner := shadow( MacroPlan.GlobalParameters_MP() ); 
 | 
    DataHolderShadowGlobalParameters.Data( &owner ); 
 | 
     
 | 
    traverse( DataHolderMatrixEditorRows.Data(), Elements, rowheader ) 
 | 
    { 
 | 
      traverse( DataHolderMatrixEditorColumns.Data(), Elements, colheader, rowheader <> colheader ) 
 | 
      {            
 | 
        baseconversionfactor := null( BaseConversionFactor ); 
 | 
         
 | 
        // Get conversion factor regardless it is base or inverse, to show Factor value in matrix 
 | 
        conversionfactor := select( rowheader, AsSourceUnitOfMeasure, cf, 
 | 
                                    not cf.IsProductDependent(), 
 | 
                                    cf.TargetUnitOfMeasure() = colheader ); 
 | 
         
 | 
        // Need to set relation to base conversion factor 
 | 
        // If it is base, relset straight away. 
 | 
        if( not isnull( conversionfactor ) ) 
 | 
        {                                    
 | 
          if( conversionfactor.istype( BaseConversionFactor ) ) 
 | 
          {      
 | 
            baseconversionfactor := conversionfactor.astype( BaseConversionFactor ); 
 | 
          } 
 | 
          // Else if it is inverse, relset the base conversion factor the inverse factor belongs to. 
 | 
          else 
 | 
          { 
 | 
            baseconversionfactor := conversionfactor.astype( InverseConversionFactor ).BaseConversionFactor(); 
 | 
          } 
 | 
        } 
 | 
     
 | 
        // Create shadow conversion factor in matrix 
 | 
        DataHolderShadowGlobalParameters.Data().ConversionFactorInMatrix( relnew, 
 | 
                                                                          SourceUnitOfMeasureInConversionMatrix := rowheader, 
 | 
                                                                          TargetUnitOfMeasureInConversionMatrix := colheader, 
 | 
                                                                          BaseConversionFactor  := baseconversionfactor, 
 | 
                                                                          Factor := guard( conversionfactor.Factor(), 1 ) ); 
 | 
                                                                                      
 | 
       } 
 | 
    } 
 | 
  *] 
 | 
} 
 |