static function updateCurrencyRates($company_id)
 {
     /*
     	Contact info@timetrex.com to request adding custom currency data feeds.
     */
     $base_currency = FALSE;
     $clf = TTnew('CurrencyListFactory');
     $clf->getByCompanyId($company_id);
     if ($clf->getRecordCount() > 0) {
         foreach ($clf as $c_obj) {
             if ($c_obj->getBase() == TRUE) {
                 $base_currency = $c_obj->getISOCode();
             }
             if ($c_obj->getStatus() == 10 and $c_obj->getAutoUpdate() == TRUE) {
                 $active_currencies[] = $c_obj->getISOCode();
             }
         }
     }
     unset($clf, $c_obj);
     if ($base_currency != FALSE and isset($active_currencies) and is_array($active_currencies) and count($active_currencies) > 0) {
         $ttsc = new TimeTrexSoapClient();
         $currency_rates = $ttsc->getCurrencyExchangeRates($company_id, $active_currencies, $base_currency);
     } else {
         Debug::Text('Invalid Currency Data, not getting rates...', __FILE__, __LINE__, __METHOD__, 10);
     }
     if (isset($currency_rates) and is_array($currency_rates) and count($currency_rates) > 0) {
         foreach ($currency_rates as $currency => $rate) {
             if (is_numeric($rate)) {
                 $clf = TTnew('CurrencyListFactory');
                 $clf->getByCompanyIdAndISOCode($company_id, $currency);
                 if ($clf->getRecordCount() == 1) {
                     $c_obj = $clf->getCurrent();
                     if ($c_obj->getAutoUpdate() == TRUE) {
                         $c_obj->setActualRate($rate);
                         $c_obj->setConversionRate($c_obj->getPercentModifiedRate($rate));
                         $c_obj->setActualRateUpdatedDate(time());
                         if ($c_obj->isValid()) {
                             $c_obj->Save();
                         }
                     }
                 }
             } else {
                 Debug::Text('Invalid rate from data feed! Currency: ' . $currency . ' Rate: ' . $rate, __FILE__, __LINE__, __METHOD__, 10);
             }
         }
         return TRUE;
     }
     Debug::Text('Updating Currency Data Failed...', __FILE__, __LINE__, __METHOD__, 10);
     return FALSE;
 }