Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method MPSyncCurrencyRate_MP ( 
 | 
  Boolean isoverwritemanualconfig, 
 | 
  IOCurrency_MP iocurrency, 
 | 
  Currency_MP currency 
 | 
) 
 | 
{ 
 | 
  Description: 'Synchronization of CurrencyRate_MP for MPSync' 
 | 
  TextBody: 
 | 
  [* 
 | 
    // If the passed in Currency_MP is not null, execute the logic 
 | 
    if( not isnull( currency ) ) 
 | 
    { 
 | 
      // Select a set of existing CurrencyRate_MP 
 | 
      existing := selectset( currency, CurrencyRate_MP, item, true ); 
 | 
      updates := construct( CurrencyRate_MPs ); 
 | 
     
 | 
      // Traverse the new set of valid CurrencyRate_MP 
 | 
      traverse( iocurrency, IOCurrencyRate_MP, io, io.IsValid() ) 
 | 
      { 
 | 
        currencyid := io.CurrencyID(); 
 | 
        start := io.Start(); 
 | 
        // Find existing CurrencyRate_MP 
 | 
        objectinstance := CurrencyRate_MP::FindCurrencyRateTypeIndex( currencyid, start ); 
 | 
       
 | 
        // If no existing CurrencyRate_MP is found, create one 
 | 
        if( isnull( objectinstance ) ) 
 | 
        { 
 | 
          objectinstance := CurrencyRate_MP::Create( currency, start, io.Rate(), true ); 
 | 
        } 
 | 
        // Else if the CurrencyRate_MP is not manually configured or the imported instance should overwrite manual configuration, 
 | 
        // update the existing CurrencyRate_MP 
 | 
        else if( not objectinstance.IsManuallyConfigured() or isoverwritemanualconfig ) 
 | 
        { 
 | 
          // Update CurrencyRate_MP 
 | 
          objectinstance.Update( currency, start, io.Rate(), true ); 
 | 
          updates.Add( objectinstance ); 
 | 
        } 
 | 
       if( not isnull( objectinstance ) ) 
 | 
       { 
 | 
          objectinstance.CustomUpdate( io, isoverwritemanualconfig ); 
 | 
       }    
 | 
      } 
 | 
       
 | 
      // Get the set of old CurrencyRate_MP to be deleted 
 | 
      tobedeleteset := existing.Difference( updates ); 
 | 
     
 | 
      // Traverse the set of CurrencyRate_MP to be deleted 
 | 
      // Only delete CurrencyRate_MP that is not manually configured or the imported instance should overwrite manual configuration 
 | 
      traverse( tobedeleteset, Elements, ele, 
 | 
                not ele.IsManuallyConfigured() or isoverwritemanualconfig ) 
 | 
      { 
 | 
        ele.Delete(); 
 | 
      } 
 | 
    } 
 | 
  *] 
 | 
} 
 |