function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Merry SMerry S 

Is there a better way to accomplish what this trigger is doing?

I am wondering if there is a better way to accomplish what this trigger does... or a cleaner way to write the code. Or am I missing an easier way to get the result?

Thanks!
 
trigger CurrencyUpdates on Account (before update) {


List<Account> acclist = new List<Account>();

    for(Account acc: Trigger.new){
        If(Trigger.oldMap.get(acc.id).Currency_Type__c != acc.Currency_Type__c){
            system.debug('Old= ' +Trigger.oldMap.get(acc.id).Currency_Type__c);
            system.debug('New= ' +acc.Currency_Type__c);            
        if (acc.Currency_Type__c == 'YEN'){
            acc.Total_RR_Converted_to_USD__c = acc.Total_RR_Trigger__c * 0.0100;
            acc.X3RECalc_Hosting_USD__c = acc.X3RECalc_Hosting__c * 0.0100;
            acc.X3RECalc_Hybrid_USD__c = acc.X3RECalc_Hybrid__c * 0.0100;
            acc.X3RECalc_MSA_USD__c = acc.X3RECalc_MSA__c * 0.0100;
            acc.X3RECalc_Sub_Asp_USD__c = acc.X3RECalc_Sub_Asp__c * 0.0100;
            acc.X3RECalcMCUniv_USD__c = acc.X3RECalcMCUniv__c * 0.0100;
            acc.X3RECalc_SPARK_USD__c = acc.X3RECalc_SPARK__c * 0.0100;
            acc.X3RECalc_TAM_USD__c = acc.X3RECalc_TAM__c * 0.0100;
            acc.X3RECalc_SVR515_USD__c = acc.X3RECalc_SVR515__c * 0.0100;
            acc.Calc_Total_Sub_Asp_USD__c = acc.Calc_Total_Sub_Asp__c * 0.0100;
            acc.Calc_Total_MSA_USD__c = acc.Calc_Total_MSA__c * 0.0100;
            acc.Calc_Total_MCUniv_USD__c = acc.Calc_Total_MCUniv__c * 0.0100;
            acc.Calc_Total_Hybrid_USD__c = acc.Calc_Total_Hybrid__c * 0.0100;
            acc.Calc_Total_Hosting_USD__c = acc.Calc_Total_Hosting__c *0.0100;
            acc.Calc_Total_SPARK_USD__c = acc.Calc_Total_SPARK__c * 0.0100;
            acc.Calc_Total_TAM_USD__c = acc.Calc_Total_TAM__c * 0.0100;        
            acc.Calc_Total_SVR515_USD__c = acc.Calc_Total_SVR515__c * 0.0100;            
        } else if (acc.Currency_Type__c == 'CHF') {
            acc.Total_RR_Converted_to_USD__c = acc.Total_RR_Trigger__c * 0.9478;
            acc.X3RECalc_Hosting_USD__c = acc.X3RECalc_Hosting__c * 0.9478;
            acc.X3RECalc_Hybrid_USD__c = acc.X3RECalc_Hybrid__c * 0.9478;
            acc.X3RECalc_MSA_USD__c = acc.X3RECalc_MSA__c * 0.9478;
            acc.X3RECalc_Sub_Asp_USD__c = acc.X3RECalc_Sub_Asp__c * 0.9478;
            acc.X3RECalcMCUniv_USD__c = acc.X3RECalcMCUniv__c * 0.9478;
            acc.X3RECalc_SPARK_USD__c = acc.X3RECalc_SPARK__c * 0.9478;
            acc.X3RECalc_TAM_USD__c = acc.X3RECalc_TAM__c * 0.9478;
            acc.X3RECalc_SVR515_USD__c = acc.X3RECalc_SVR515__c * 0.9478;
            acc.Calc_Total_Sub_Asp_USD__c = acc.Calc_Total_Sub_Asp__c * 0.9478;
            acc.Calc_Total_MSA_USD__c = acc.Calc_Total_MSA__c * 0.9478;
            acc.Calc_Total_MCUniv_USD__c = acc.Calc_Total_MCUniv__c * 0.9478;
            acc.Calc_Total_Hybrid_USD__c = acc.Calc_Total_Hybrid__c * 0.9478;
            acc.Calc_Total_Hosting_USD__c = acc.Calc_Total_Hosting__c *0.9478;
            acc.Calc_Total_SPARK_USD__c = acc.Calc_Total_SPARK__c * 0.9478;
            acc.Calc_Total_TAM_USD__c = acc.Calc_Total_TAM__c * 0.9478;        
            acc.Calc_Total_SVR515_USD__c = acc.Calc_Total_SVR515__c * 0.9478;            
        }else if (acc.Currency_Type__c == 'EUR') {
            acc.Total_RR_Converted_to_USD__c = acc.Total_RR_Trigger__c * 1.3008;
            acc.X3RECalc_Hosting_USD__c = acc.X3RECalc_Hosting__c * 1.3008;
            acc.X3RECalc_Hybrid_USD__c = acc.X3RECalc_Hybrid__c * 1.3008;
            acc.X3RECalc_MSA_USD__c = acc.X3RECalc_MSA__c * 1.3008;
            acc.X3RECalc_Sub_Asp_USD__c = acc.X3RECalc_Sub_Asp__c * 1.3008;
            acc.X3RECalcMCUniv_USD__c = acc.X3RECalcMCUniv__c * 1.3008;
            acc.X3RECalc_SPARK_USD__c = acc.X3RECalc_SPARK__c * 1.3008;
            acc.X3RECalc_TAM_USD__c = acc.X3RECalc_TAM__c * 1.3008;
            acc.X3RECalc_SVR515_USD__c = acc.X3RECalc_SVR515__c * 1.3008;
            acc.Calc_Total_Sub_Asp_USD__c = acc.Calc_Total_Sub_Asp__c * 1.3008;
            acc.Calc_Total_MSA_USD__c = acc.Calc_Total_MSA__c * 1.3008;
            acc.Calc_Total_MCUniv_USD__c = acc.Calc_Total_MCUniv__c * 1.3008;
            acc.Calc_Total_Hybrid_USD__c = acc.Calc_Total_Hybrid__c * 1.3008;
            acc.Calc_Total_Hosting_USD__c = acc.Calc_Total_Hosting__c *1.3008;
            acc.Calc_Total_SPARK_USD__c = acc.Calc_Total_SPARK__c * 1.3008; 
            acc.Calc_Total_TAM_USD__c = acc.Calc_Total_TAM__c * 1.3008;        
            acc.Calc_Total_SVR515_USD__c = acc.Calc_Total_SVR515__c * 1.3008;
        }else if (acc.Currency_Type__c == 'CAD'){
            acc.Total_RR_Converted_to_USD__c = acc.Total_RR_Trigger__c * 0.9502;
            acc.X3RECalc_Hosting_USD__c = acc.X3RECalc_Hosting__c * 0.9502;
            acc.X3RECalc_Hybrid_USD__c = acc.X3RECalc_Hybrid__c * 0.9502;
            acc.X3RECalc_MSA_USD__c = acc.X3RECalc_MSA__c * 0.9502;
            acc.X3RECalc_Sub_Asp_USD__c = acc.X3RECalc_Sub_Asp__c * 0.9502;
            acc.X3RECalcMCUniv_USD__c = acc.X3RECalcMCUniv__c * 0.9502;
            acc.X3RECalc_SPARK_USD__c = acc.X3RECalc_SPARK__c * 0.9502;
            acc.X3RECalc_TAM_USD__c = acc.X3RECalc_TAM__c * 0.9502;
            acc.X3RECalc_SVR515_USD__c = acc.X3RECalc_SVR515__c * 0.9502;
            acc.Calc_Total_Sub_Asp_USD__c = acc.Calc_Total_Sub_Asp__c * 0.9502;
            acc.Calc_Total_MSA_USD__c = acc.Calc_Total_MSA__c * 0.9502;
            acc.Calc_Total_MCUniv_USD__c = acc.Calc_Total_MCUniv__c * 0.9502;
            acc.Calc_Total_Hybrid_USD__c = acc.Calc_Total_Hybrid__c * 0.9502;
            acc.Calc_Total_Hosting_USD__c = acc.Calc_Total_Hosting__c *0.9502;
            acc.Calc_Total_SPARK_USD__c = acc.Calc_Total_SPARK__c * 0.9502; 
            acc.Calc_Total_TAM_USD__c = acc.Calc_Total_TAM__c * 0.9502;        
            acc.Calc_Total_SVR515_USD__c = acc.Calc_Total_SVR515__c * 0.9502;            
        }else if (acc.Currency_Type__c == 'GBP'){
            acc.Total_RR_Converted_to_USD__c = acc.Total_RR_Trigger__c * 1.5279;
            acc.X3RECalc_Hosting_USD__c = acc.X3RECalc_Hosting__c * 1.5279;
            acc.X3RECalc_Hybrid_USD__c = acc.X3RECalc_Hybrid__c * 1.5279;
            acc.X3RECalc_MSA_USD__c = acc.X3RECalc_MSA__c * 1.5279;
            acc.X3RECalc_Sub_Asp_USD__c = acc.X3RECalc_Sub_Asp__c * 1.5279;
            acc.X3RECalcMCUniv_USD__c = acc.X3RECalcMCUniv__c * 1.5279;
            acc.X3RECalc_SPARK_USD__c = acc.X3RECalc_SPARK__c * 1.5279;
            acc.X3RECalc_TAM_USD__c = acc.X3RECalc_TAM__c * 1.5279;
            acc.X3RECalc_SVR515_USD__c = acc.X3RECalc_SVR515__c * 1.5279;
            acc.Calc_Total_Sub_Asp_USD__c = acc.Calc_Total_Sub_Asp__c * 1.5279;
            acc.Calc_Total_MSA_USD__c = acc.Calc_Total_MSA__c * 1.5279;
            acc.Calc_Total_MCUniv_USD__c = acc.Calc_Total_MCUniv__c * 1.5279;
            acc.Calc_Total_Hybrid_USD__c = acc.Calc_Total_Hybrid__c * 1.5279;
            acc.Calc_Total_Hosting_USD__c = acc.Calc_Total_Hosting__c *1.5279;
            acc.Calc_Total_SPARK_USD__c = acc.Calc_Total_SPARK__c * 1.5279;
            acc.Calc_Total_TAM_USD__c = acc.Calc_Total_TAM__c * 1.5279;        
            acc.Calc_Total_SVR515_USD__c = acc.Calc_Total_SVR515__c * 1.5279;            
        }else if (acc.Currency_Type__c == 'KRW') {
            acc.Total_RR_Converted_to_USD__c = acc.Total_RR_Trigger__c * 0.0009;
            acc.X3RECalc_Hosting_USD__c = acc.X3RECalc_Hosting__c * 0.0009;
            acc.X3RECalc_Hybrid_USD__c = acc.X3RECalc_Hybrid__c * 0.0009;
            acc.X3RECalc_MSA_USD__c = acc.X3RECalc_MSA__c * 0.0009;
            acc.X3RECalc_Sub_Asp_USD__c = acc.X3RECalc_Sub_Asp__c * 0.0009;
            acc.X3RECalcMCUniv_USD__c = acc.X3RECalcMCUniv__c * 0.0009;
            acc.X3RECalc_SPARK_USD__c = acc.X3RECalc_SPARK__c * 0.0009;
            acc.X3RECalc_TAM_USD__c = acc.X3RECalc_TAM__c * 0.0009;
            acc.X3RECalc_SVR515_USD__c = acc.X3RECalc_SVR515__c * 0.0009;
            acc.Calc_Total_Sub_Asp_USD__c = acc.Calc_Total_Sub_Asp__c * 0.0009;
            acc.Calc_Total_MSA_USD__c = acc.Calc_Total_MSA__c * 0.0009;
            acc.Calc_Total_MCUniv_USD__c = acc.Calc_Total_MCUniv__c * 0.0009;
            acc.Calc_Total_Hybrid_USD__c = acc.Calc_Total_Hybrid__c * 0.0009;
            acc.Calc_Total_Hosting_USD__c = acc.Calc_Total_Hosting__c *0.0009;
            acc.Calc_Total_SPARK_USD__c = acc.Calc_Total_SPARK__c * 0.0009;
            acc.Calc_Total_TAM_USD__c = acc.Calc_Total_TAM__c * 0.0009;        
            acc.Calc_Total_SVR515_USD__c = acc.Calc_Total_SVR515__c * 0.0009;            
        }else if (acc.Currency_Type__c == 'USD') {
            acc.Total_RR_Converted_to_USD__c = acc.Total_RR_Trigger__c * 1.0;
            acc.X3RECalc_Hosting_USD__c = acc.X3RECalc_Hosting__c * 1.0;
            acc.X3RECalc_Hybrid_USD__c = acc.X3RECalc_Hybrid__c * 1.0;
            acc.X3RECalc_MSA_USD__c = acc.X3RECalc_MSA__c * 1.0;
            acc.X3RECalc_Sub_Asp_USD__c = acc.X3RECalc_Sub_Asp__c * 1.0;
            acc.X3RECalcMCUniv_USD__c = acc.X3RECalcMCUniv__c * 1.0;
            acc.X3RECalc_SPARK_USD__c = acc.X3RECalc_SPARK__c * 1.0;
            acc.X3RECalc_TAM_USD__c = acc.X3RECalc_TAM__c * 1.0;
            acc.X3RECalc_SVR515_USD__c = acc.X3RECalc_SVR515__c * 1.0;
            acc.Calc_Total_Sub_Asp_USD__c = acc.Calc_Total_Sub_Asp__c * 1.0;
            acc.Calc_Total_MSA_USD__c = acc.Calc_Total_MSA__c * 1.0;
            acc.Calc_Total_MCUniv_USD__c = acc.Calc_Total_MCUniv__c * 1.0;
            acc.Calc_Total_Hybrid_USD__c = acc.Calc_Total_Hybrid__c * 1.0;
            acc.Calc_Total_Hosting_USD__c = acc.Calc_Total_Hosting__c *1.0;
            acc.Calc_Total_SPARK_USD__c = acc.Calc_Total_SPARK__c * 1.0;
            acc.Calc_Total_TAM_USD__c = acc.Calc_Total_TAM__c * 1.0;        
            acc.Calc_Total_SVR515_USD__c = acc.Calc_Total_SVR515__c * 1.0;            
        }else if (acc.Currency_Type__c == 'AUD') {
            acc.Total_RR_Converted_to_USD__c = acc.Total_RR_Trigger__c * 0.88309;
            acc.X3RECalc_Hosting_USD__c = acc.X3RECalc_Hosting__c * 0.88309;
            acc.X3RECalc_Hybrid_USD__c = acc.X3RECalc_Hybrid__c * 0.88309;
            acc.X3RECalc_MSA_USD__c = acc.X3RECalc_MSA__c * 0.88309;
            acc.X3RECalc_Sub_Asp_USD__c = acc.X3RECalc_Sub_Asp__c * 0.88309;
            acc.X3RECalcMCUniv_USD__c = acc.X3RECalcMCUniv__c * 0.88309;
            acc.X3RECalc_SPARK_USD__c = acc.X3RECalc_SPARK__c * 0.88309;
            acc.X3RECalc_TAM_USD__c = acc.X3RECalc_TAM__c * 0.88309;
            acc.X3RECalc_SVR515_USD__c = acc.X3RECalc_SVR515__c * 0.88309;
            acc.Calc_Total_Sub_Asp_USD__c = acc.Calc_Total_Sub_Asp__c * 0.88309;
            acc.Calc_Total_MSA_USD__c = acc.Calc_Total_MSA__c * 0.88309;
            acc.Calc_Total_MCUniv_USD__c = acc.Calc_Total_MCUniv__c * 0.88309;
            acc.Calc_Total_Hybrid_USD__c = acc.Calc_Total_Hybrid__c * 0.88309;
            acc.Calc_Total_Hosting_USD__c = acc.Calc_Total_Hosting__c * 0.88309;
            acc.Calc_Total_SPARK_USD__c = acc.Calc_Total_SPARK__c * 0.88309;
            acc.Calc_Total_TAM_USD__c = acc.Calc_Total_TAM__c * 0.88309;        
            acc.Calc_Total_SVR515_USD__c = acc.Calc_Total_SVR515__c * 0.88309;            
        }else if (acc.Currency_Type__c == 'SGD') {
            acc.Total_RR_Converted_to_USD__c = acc.Total_RR_Trigger__c * 0.78499;
            acc.X3RECalc_Hosting_USD__c = acc.X3RECalc_Hosting__c * 0.78499;
            acc.X3RECalc_Hybrid_USD__c = acc.X3RECalc_Hybrid__c * 0.78499;
            acc.X3RECalc_MSA_USD__c = acc.X3RECalc_MSA__c * 0.78499;
            acc.X3RECalc_Sub_Asp_USD__c = acc.X3RECalc_Sub_Asp__c * 0.78499;
            acc.X3RECalcMCUniv_USD__c = acc.X3RECalcMCUniv__c * 0.78499;
            acc.X3RECalc_SPARK_USD__c = acc.X3RECalc_SPARK__c * 0.78499;
            acc.X3RECalc_TAM_USD__c = acc.X3RECalc_TAM__c * 0.78499;
            acc.X3RECalc_SVR515_USD__c = acc.X3RECalc_SVR515__c * 0.78499;
            acc.Calc_Total_Sub_Asp_USD__c = acc.Calc_Total_Sub_Asp__c * 0.78499;
            acc.Calc_Total_MSA_USD__c = acc.Calc_Total_MSA__c * 0.78499;
            acc.Calc_Total_MCUniv_USD__c = acc.Calc_Total_MCUniv__c * 0.78499;
            acc.Calc_Total_Hybrid_USD__c = acc.Calc_Total_Hybrid__c * 0.78499;
            acc.Calc_Total_Hosting_USD__c = acc.Calc_Total_Hosting__c * 0.78499;
            acc.Calc_Total_SPARK_USD__c = acc.Calc_Total_SPARK__c * 0.78499;
            acc.Calc_Total_TAM_USD__c = acc.Calc_Total_TAM__c * 0.78499;        
            acc.Calc_Total_SVR515_USD__c = acc.Calc_Total_SVR515__c * 0.78499;            
        }else if (acc.Currency_Type__c == 'HKD') {
            acc.Total_RR_Converted_to_USD__c = acc.Total_RR_Trigger__c * 0.12891;
            acc.X3RECalc_Hosting_USD__c = acc.X3RECalc_Hosting__c * 0.12891;
            acc.X3RECalc_Hybrid_USD__c = acc.X3RECalc_Hybrid__c * 0.12891;
            acc.X3RECalc_MSA_USD__c = acc.X3RECalc_MSA__c * 0.12891;
            acc.X3RECalc_Sub_Asp_USD__c = acc.X3RECalc_Sub_Asp__c * 0.12891;
            acc.X3RECalcMCUniv_USD__c = acc.X3RECalcMCUniv__c * 0.12891;
            acc.X3RECalc_SPARK_USD__c = acc.X3RECalc_SPARK__c * 0.12891;
            acc.X3RECalc_TAM_USD__c = acc.X3RECalc_TAM__c * 0.12891;
            acc.X3RECalc_SVR515_USD__c = acc.X3RECalc_SVR515__c * 0.12891;
            acc.Calc_Total_Sub_Asp_USD__c = acc.Calc_Total_Sub_Asp__c * 0.12891;
            acc.Calc_Total_MSA_USD__c = acc.Calc_Total_MSA__c * 0.12891;
            acc.Calc_Total_MCUniv_USD__c = acc.Calc_Total_MCUniv__c * 0.12891;
            acc.Calc_Total_Hybrid_USD__c = acc.Calc_Total_Hybrid__c * 0.12891;
            acc.Calc_Total_Hosting_USD__c = acc.Calc_Total_Hosting__c * 0.12891;
            acc.Calc_Total_SPARK_USD__c = acc.Calc_Total_SPARK__c * 0.12891;
            acc.Calc_Total_TAM_USD__c = acc.Calc_Total_TAM__c * 0.12891;        
            acc.Calc_Total_SVR515_USD__c = acc.Calc_Total_SVR515__c * 0.12891;            
        }else if (acc.Currency_Type__c == 'NZD') {
            acc.Total_RR_Converted_to_USD__c = acc.Total_RR_Trigger__c * 0.79067;
            acc.X3RECalc_Hosting_USD__c = acc.X3RECalc_Hosting__c * 0.79067;
            acc.X3RECalc_Hybrid_USD__c = acc.X3RECalc_Hybrid__c * 0.79067;
            acc.X3RECalc_MSA_USD__c = acc.X3RECalc_MSA__c * 0.79067;
            acc.X3RECalc_Sub_Asp_USD__c = acc.X3RECalc_Sub_Asp__c * 0.79067;
            acc.X3RECalcMCUniv_USD__c = acc.X3RECalcMCUniv__c * 0.79067;
            acc.X3RECalc_SPARK_USD__c = acc.X3RECalc_SPARK__c * 0.79067;
            acc.X3RECalc_TAM_USD__c = acc.X3RECalc_TAM__c * 0.79067;
            acc.X3RECalc_SVR515_USD__c = acc.X3RECalc_SVR515__c * 0.79067;
            acc.Calc_Total_Sub_Asp_USD__c = acc.Calc_Total_Sub_Asp__c * 0.79067;
            acc.Calc_Total_MSA_USD__c = acc.Calc_Total_MSA__c * 0.79067;
            acc.Calc_Total_MCUniv_USD__c = acc.Calc_Total_MCUniv__c * 0.79067;
            acc.Calc_Total_Hybrid_USD__c = acc.Calc_Total_Hybrid__c * 0.79067;
            acc.Calc_Total_Hosting_USD__c = acc.Calc_Total_Hosting__c *0.79067;
            acc.Calc_Total_SPARK_USD__c = acc.Calc_Total_SPARK__c * 0.79067;
            acc.Calc_Total_TAM_USD__c = acc.Calc_Total_TAM__c * 0.79067;        
            acc.Calc_Total_SVR515_USD__c = acc.Calc_Total_SVR515__c * 0.79067;            
        }else if (acc.Currency_Type__c == 'THB') {
            acc.Total_RR_Converted_to_USD__c = acc.Total_RR_Trigger__c * 0.03078;
            acc.X3RECalc_Hosting_USD__c = acc.X3RECalc_Hosting__c * 0.03078;
            acc.X3RECalc_Hybrid_USD__c = acc.X3RECalc_Hybrid__c * 0.03078;
            acc.X3RECalc_MSA_USD__c = acc.X3RECalc_MSA__c * 0.03078;
            acc.X3RECalc_Sub_Asp_USD__c = acc.X3RECalc_Sub_Asp__c * 0.03078;
            acc.X3RECalcMCUniv_USD__c = acc.X3RECalcMCUniv__c * 0.03078;
            acc.X3RECalc_SPARK_USD__c = acc.X3RECalc_SPARK__c * 0.03078;
            acc.X3RECalc_TAM_USD__c = acc.X3RECalc_TAM__c * 0.03078;
            acc.X3RECalc_SVR515_USD__c = acc.X3RECalc_SVR515__c * 0.03078;
            acc.Calc_Total_Sub_Asp_USD__c = acc.Calc_Total_Sub_Asp__c * 0.03078;
            acc.Calc_Total_MSA_USD__c = acc.Calc_Total_MSA__c * 0.03078;
            acc.Calc_Total_MCUniv_USD__c = acc.Calc_Total_MCUniv__c * 0.03078;
            acc.Calc_Total_Hybrid_USD__c = acc.Calc_Total_Hybrid__c * 0.03078;
            acc.Calc_Total_Hosting_USD__c = acc.Calc_Total_Hosting__c *0.03078;
            acc.Calc_Total_SPARK_USD__c = acc.Calc_Total_SPARK__c * 0.03078;
            acc.Calc_Total_TAM_USD__c = acc.Calc_Total_TAM__c * 0.03078;        
            acc.Calc_Total_SVR515_USD__c = acc.Calc_Total_SVR515__c * 0.03078;            
        }else (acc.Total_RR_Converted_to_USD__c = null);
                  
        }
    }
update acclist;
}

 
Best Answer chosen by Merry S
William Christ NYWilliam Christ NY
At the very least, the code could be streamlined to eliminate the redundant calculation statements.  Ideally, the rates should be stored in a record or custom setting to make them easier to change when necessary.  Here's a sample of what the code could look like with the rates still hardcoded.  Needless to say, this code hasn't been tested:
trigger CurrencyUpdates on Account (before update) {

    List<Account> acclist = new List<Account>();

    Decimal decRate;                            // Conversion rate
    Boolean blnConvert = true;                  // Indicates whether conversion should be done

    // Set rate for currency
    if (acc.Currency_Type__c == 'YEN'){
        decRate = 0.0100;
    } else if (acc.Currency_Type__c == 'CHF') {
        decRate = 0.9478;
    } else if (acc.Currency_Type__c == 'EUR') {
        decRate = 1.3008;
    } else if (acc.Currency_Type__c == 'CAD') {
        decRate = 0.9502;
    } else if (acc.Currency_Type__c == 'GBP') {
        decRate = 1.5279;
    } else if (acc.Currency_Type__c == 'KRW') {
        decRate = 0.0009;
    } else if (acc.Currency_Type__c == 'USD') {
        decRate = 1.0;
    } else if (acc.Currency_Type__c == 'AUD') {
        decRate = 0.88309;
    } else if (acc.Currency_Type__c == 'SGD') {
        decRate = 0.78499;
    } else if (acc.Currency_Type__c == 'HKD') {
        decRate = 0.12891;
    } else if (acc.Currency_Type__c == 'NZD') {
        decRate = 0.79067;
    } else if (acc.Currency_Type__c == 'THB') {
        decRate = 0.03078;
    } else {
        blnConvert = false;
    }

    for(Account acc: Trigger.new){
        If(Trigger.oldMap.get(acc.id).Currency_Type__c != acc.Currency_Type__c){
            system.debug('Old= ' +Trigger.oldMap.get(acc.id).Currency_Type__c);
            system.debug('New= ' +acc.Currency_Type__c);            
            if (blnConvert){
                acc.Total_RR_Converted_to_USD__c = acc.Total_RR_Trigger__c * decRate;
                acc.X3RECalc_Hosting_USD__c = acc.X3RECalc_Hosting__c * decRate;
                acc.X3RECalc_Hybrid_USD__c = acc.X3RECalc_Hybrid__c * decRate;
                acc.X3RECalc_MSA_USD__c = acc.X3RECalc_MSA__c * decRate;
                acc.X3RECalc_Sub_Asp_USD__c = acc.X3RECalc_Sub_Asp__c * decRate;
                acc.X3RECalcMCUniv_USD__c = acc.X3RECalcMCUniv__c * decRate;
                acc.X3RECalc_SPARK_USD__c = acc.X3RECalc_SPARK__c * decRate;
                acc.X3RECalc_TAM_USD__c = acc.X3RECalc_TAM__c * decRate;
                acc.X3RECalc_SVR515_USD__c = acc.X3RECalc_SVR515__c * decRate;
                acc.Calc_Total_Sub_Asp_USD__c = acc.Calc_Total_Sub_Asp__c * decRate;
                acc.Calc_Total_MSA_USD__c = acc.Calc_Total_MSA__c * decRate;
                acc.Calc_Total_MCUniv_USD__c = acc.Calc_Total_MCUniv__c * decRate;
                acc.Calc_Total_Hybrid_USD__c = acc.Calc_Total_Hybrid__c * decRate;
                acc.Calc_Total_Hosting_USD__c = acc.Calc_Total_Hosting__c * decRate;
                acc.Calc_Total_SPARK_USD__c = acc.Calc_Total_SPARK__c * decRate;
                acc.Calc_Total_TAM_USD__c = acc.Calc_Total_TAM__c * decRate;        
                acc.Calc_Total_SVR515_USD__c = acc.Calc_Total_SVR515__c * decRate;            
            } else (acc.Total_RR_Converted_to_USD__c = null);
        }
    }
update acclist;
}

 

All Answers

William Christ NYWilliam Christ NY
At the very least, the code could be streamlined to eliminate the redundant calculation statements.  Ideally, the rates should be stored in a record or custom setting to make them easier to change when necessary.  Here's a sample of what the code could look like with the rates still hardcoded.  Needless to say, this code hasn't been tested:
trigger CurrencyUpdates on Account (before update) {

    List<Account> acclist = new List<Account>();

    Decimal decRate;                            // Conversion rate
    Boolean blnConvert = true;                  // Indicates whether conversion should be done

    // Set rate for currency
    if (acc.Currency_Type__c == 'YEN'){
        decRate = 0.0100;
    } else if (acc.Currency_Type__c == 'CHF') {
        decRate = 0.9478;
    } else if (acc.Currency_Type__c == 'EUR') {
        decRate = 1.3008;
    } else if (acc.Currency_Type__c == 'CAD') {
        decRate = 0.9502;
    } else if (acc.Currency_Type__c == 'GBP') {
        decRate = 1.5279;
    } else if (acc.Currency_Type__c == 'KRW') {
        decRate = 0.0009;
    } else if (acc.Currency_Type__c == 'USD') {
        decRate = 1.0;
    } else if (acc.Currency_Type__c == 'AUD') {
        decRate = 0.88309;
    } else if (acc.Currency_Type__c == 'SGD') {
        decRate = 0.78499;
    } else if (acc.Currency_Type__c == 'HKD') {
        decRate = 0.12891;
    } else if (acc.Currency_Type__c == 'NZD') {
        decRate = 0.79067;
    } else if (acc.Currency_Type__c == 'THB') {
        decRate = 0.03078;
    } else {
        blnConvert = false;
    }

    for(Account acc: Trigger.new){
        If(Trigger.oldMap.get(acc.id).Currency_Type__c != acc.Currency_Type__c){
            system.debug('Old= ' +Trigger.oldMap.get(acc.id).Currency_Type__c);
            system.debug('New= ' +acc.Currency_Type__c);            
            if (blnConvert){
                acc.Total_RR_Converted_to_USD__c = acc.Total_RR_Trigger__c * decRate;
                acc.X3RECalc_Hosting_USD__c = acc.X3RECalc_Hosting__c * decRate;
                acc.X3RECalc_Hybrid_USD__c = acc.X3RECalc_Hybrid__c * decRate;
                acc.X3RECalc_MSA_USD__c = acc.X3RECalc_MSA__c * decRate;
                acc.X3RECalc_Sub_Asp_USD__c = acc.X3RECalc_Sub_Asp__c * decRate;
                acc.X3RECalcMCUniv_USD__c = acc.X3RECalcMCUniv__c * decRate;
                acc.X3RECalc_SPARK_USD__c = acc.X3RECalc_SPARK__c * decRate;
                acc.X3RECalc_TAM_USD__c = acc.X3RECalc_TAM__c * decRate;
                acc.X3RECalc_SVR515_USD__c = acc.X3RECalc_SVR515__c * decRate;
                acc.Calc_Total_Sub_Asp_USD__c = acc.Calc_Total_Sub_Asp__c * decRate;
                acc.Calc_Total_MSA_USD__c = acc.Calc_Total_MSA__c * decRate;
                acc.Calc_Total_MCUniv_USD__c = acc.Calc_Total_MCUniv__c * decRate;
                acc.Calc_Total_Hybrid_USD__c = acc.Calc_Total_Hybrid__c * decRate;
                acc.Calc_Total_Hosting_USD__c = acc.Calc_Total_Hosting__c * decRate;
                acc.Calc_Total_SPARK_USD__c = acc.Calc_Total_SPARK__c * decRate;
                acc.Calc_Total_TAM_USD__c = acc.Calc_Total_TAM__c * decRate;        
                acc.Calc_Total_SVR515_USD__c = acc.Calc_Total_SVR515__c * decRate;            
            } else (acc.Total_RR_Converted_to_USD__c = null);
        }
    }
update acclist;
}

 
This was selected as the best answer
Merry SMerry S
Thank you - with a few adjustements I was able to use your suggestion. It was so easy!