/**
  * Return the bean for what we are forecasting by
  *
  * @return RevenueLineItem|Opportunity|SugarBean
  */
 protected function getForecastByBean()
 {
     if (!static::$forecastByBean instanceof SugarBean) {
         /* @var $admin Administration */
         $admin = BeanFactory::getBean('Administration');
         $settings = $admin->getConfigForModule('Forecasts');
         // if we don't have the forecast_by from the db, grab the defaults that we use on set.
         if (empty($settings['forecast_by'])) {
             require_once 'modules/Forecasts/ForecastsDefaults.php';
             $settings = ForecastsDefaults::getDefaults();
         }
         $bean = $settings['forecast_by'];
         static::$forecastByBean = BeanFactory::getBean($bean);
     }
     return static::$forecastByBean;
 }
示例#2
0
 /**
  * @param Administration $admin
  * @param array $forecastsSettings
  * @param RestService $api
  * @throws SugarApiExceptionInvalidHash
  */
 protected function compareSettingsToDefaults(Administration $admin, $forecastsSettings, $api)
 {
     $defaultConfig = ForecastsDefaults::getDefaults();
     $missing_config = array_diff(array_keys($defaultConfig), array_keys($forecastsSettings));
     if (!empty($missing_config)) {
         foreach ($missing_config as $config) {
             $val = $defaultConfig[$config];
             if (is_array($val)) {
                 $val = json_encode($val);
             }
             $admin->saveSetting('Forecasts', $config, $val, $api->platform);
         }
         MetaDataManager::refreshModulesCache(array("Forecasts"));
         MetaDataManager::refreshSectionCache(array(MetaDataManager::MM_CONFIG));
         throw new SugarApiExceptionInvalidHash();
     }
 }