/** * 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; }
/** * @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(); } }