/** * Handles export field sanitizing for field type * * @param $value string value to be sanitized * @param $vardef array representing the vardef definition * @param $focus SugarBean object * @param $row Array of a row of data to be exported * * @return string sanitized value */ public function exportSanitize($value, $vardef, $focus, $row = array()) { // If $value is null, default to zero to prevent conversion errors. $value = is_null($value) ? 0 : $value; require_once 'include/SugarCurrency/SugarCurrency.php'; if (isset($vardef['convertToBase']) && $vardef['convertToBase']) { // convert amount to base $baseRate = isset($row['base_rate']) ? $row['base_rate'] : $focus->base_rate; $value = SugarCurrency::convertWithRate($value, $baseRate); $currency_id = '-99'; } elseif (isset($vardef['is_base_currency']) && $vardef['is_base_currency']) { $currency_id = '-99'; } else { //If the row has a currency_id set, use that instead of the $focus->currency_id value $currency_id = isset($row['currency_id']) ? $row['currency_id'] : $focus->currency_id; } return SugarCurrency::formatAmountUserLocale($value, $currency_id); }
function create_campaign_summary($focus) { global $mod_strings, $app_strings; $fields = array(); $fields[] = 'name'; $fields[] = 'assigned_user_name'; $fields[] = 'status'; $fields[] = 'team_name'; $fields[] = 'start_date'; $fields[] = 'end_date'; if ($focus->campaign_type == 'NewsLetter') { $fields[] = 'frequency'; } $fields[] = 'content'; $fields[] = 'budget'; $fields[] = 'actual_cost'; $fields[] = 'expected_revenue'; $fields[] = 'expected_cost'; $fields[] = 'impressions'; $fields[] = 'objective'; if (!empty($focus->budget)) { $focus->budget = SugarCurrency::formatAmountUserLocale($focus->budget, $focus->currency_id); } if (!empty($focus->actual_cost)) { $focus->actual_cost = SugarCurrency::formatAmountUserLocale($focus->actual_cost, $focus->currency_id); } if (!empty($focus->expected_cost)) { $focus->expected_cost = SugarCurrency::formatAmountUserLocale($focus->expected_cost, $focus->currency_id); } if (!empty($focus->expected_revenue)) { $focus->expected_revenue = SugarCurrency::formatAmountUserLocale($focus->expected_revenue, $focus->currency_id); } //create edit view status and input buttons $cmp_input = ''; //create edit campaign button $cmp_input = "<input id='wiz_next_button' name='SUBMIT' "; $cmp_input .= "onclick=\"this.form.return_module.value='Campaigns';"; $cmp_input .= "this.form.module.value='Campaigns';"; $cmp_input .= "this.form.action.value='WizardNewsletter';"; $cmp_input .= "this.form.return_action.value='WizardHome';"; $cmp_input .= "this.form.direct_step.value='1';"; $cmp_input .= "this.form.record.value='" . $focus->id . "';"; $cmp_input .= "this.form.return_id.value='" . $focus->id . "';\" "; $cmp_input .= "class='button' value='" . $mod_strings['LBL_EDIT_EXISTING'] . "' type='submit'> "; //create view status button if ($focus->campaign_type == 'NewsLetter' || $focus->campaign_type == 'Email') { $cmp_input .= " <input id='wiz_status_button' name='SUBMIT' "; $cmp_input .= "onclick=\"this.form.return_module.value='Campaigns';"; $cmp_input .= "this.form.module.value='Campaigns';"; $cmp_input .= "this.form.action.value='TrackDetailView';"; $cmp_input .= "this.form.return_action.value='WizardHome';"; $cmp_input .= "this.form.record.value='" . $focus->id . "';"; $cmp_input .= "this.form.return_id.value='" . $focus->id . "';\" "; $cmp_input .= "class='button' value='" . $mod_strings['LBL_TRACK_BUTTON_TITLE'] . "' type='submit'>"; } //create view roi button $cmp_input .= " <input id='wiz_status_button' name='SUBMIT' "; $cmp_input .= "onclick=\"this.form.return_module.value='Campaigns';"; $cmp_input .= "this.form.module.value='Campaigns';"; $cmp_input .= "this.form.action.value='RoiDetailView';"; $cmp_input .= "this.form.return_action.value='WizardHome';"; $cmp_input .= "this.form.record.value='" . $focus->id . "';"; $cmp_input .= "this.form.return_id.value='" . $focus->id . "';\" "; $cmp_input .= "class='button' value='" . $mod_strings['LBL_TRACK_ROI_BUTTON_LABEL'] . "' type='submit'>"; //Create Campaign Header $cmpgn_tbl = "<p><table class='edit view' width='100%' border='0' cellspacing='0' cellpadding='0'>"; $cmpgn_tbl .= "<tr><td class='dataField' align='left'><h4 class='dataLabel'> " . $mod_strings['LBL_LIST_CAMPAIGN_NAME'] . ' ' . $mod_strings['LBL_WIZ_NEWSLETTER_TITLE_SUMMARY'] . " </h4></td>"; $cmpgn_tbl .= "<td align='right'>{$cmp_input}</td></tr>"; $colorclass = ''; foreach ($fields as $key) { if (!empty($focus->{$key}) && !empty($mod_strings[$focus->field_name_map[$key]['vname']])) { $cmpgn_tbl .= "<tr><td scope='row' width='15%'>" . $mod_strings[$focus->field_name_map[$key]['vname']] . "</td>\n"; if ($key == 'team_name') { require_once 'modules/Teams/TeamSetManager.php'; $cmpgn_tbl .= "<td scope='row'>" . TeamSetManager::getCommaDelimitedTeams($focus->team_set_id, $focus->team_id, true) . "</td></tr>\n"; } else { $cmpgn_tbl .= "<td scope='row'>" . $focus->{$key} . "</td></tr>\n"; } } } $cmpgn_tbl .= "</table></p>"; return $cmpgn_tbl; }
if (unformat_number($focus->impressions) > 0) { $cost_per_impression = unformat_number($focus->actual_cost) / unformat_number($focus->impressions); } else { $cost_per_impression = format_number(0); } $smarty->assign("COST_PER_IMPRESSION", SugarCurrency::formatAmountUserLocale($cost_per_impression, $focus->currency_id)); if (empty($camp_data1['click_thru_link'])) { $camp_data1['click_thru_link'] = 0; } $click_thru_links = $camp_data1['click_thru_link']; if ($click_thru_links > 0) { $cost_per_click_thru = unformat_number($focus->actual_cost) / unformat_number($click_thru_links); } else { $cost_per_click_thru = format_number(0); } $smarty->assign("COST_PER_CLICK_THROUGH", SugarCurrency::formatAmountUserLocale($cost_per_click_thru, $focus->currency_id)); $currency = BeanFactory::getBean('Currencies'); if (isset($focus->currency_id) && !empty($focus->currency_id)) { $currency->retrieve($focus->currency_id); if ($currency->deleted != 1) { $smarty->assign("CURRENCY", $currency->iso4217 . ' ' . $currency->symbol); } else { $smarty->assign("CURRENCY", $currency->getDefaultISO4217() . ' ' . $currency->getDefaultCurrencySymbol()); } } else { $smarty->assign("CURRENCY", $currency->getDefaultISO4217() . ' ' . $currency->getDefaultCurrencySymbol()); } global $current_user; if (is_admin($current_user) && $_REQUEST['module'] != 'DynamicLayout' && !empty($_SESSION['editinplace'])) { $smarty->assign("ADMIN_EDIT", "<a href='index.php?action=index&module=DynamicLayout&from_action=" . $_REQUEST['action'] . "&from_module=" . $_REQUEST['module'] . "&record=" . $_REQUEST['record'] . "'>" . SugarThemeRegistry::current()->getImage("EditLayout", "border='0' align='bottom'", null, null, '.gif', $mod_strings['LBL_EDIT_LAYOUT']) . "</a>"); }
/** * Retrieve a user's quota using the rollup value, if available. This method is useful for * fetching user quota data when you're unsure about whether or not the given user is a manager. * If you would like to force a direct quota, pass a false value to $should_rollup. * * @param $timeperiod_id String id of the TimePeriod to retrieve quota for * @param $user_id String value of the user id to retrieve. If NULL, the $current_user is used * @param $should_rollup boolean value indicating whether or not the quota should be a rollup calculation; false by default * * @return array [currency_id => int, amount => number, formatted_amount => String] */ public function getRollupQuota($timeperiod_id, $user_id = null, $should_rollup = false) { if (is_null($user_id)) { global $current_user; $user_id = $current_user->id; } // figure out the timeperiod // if we didn't find a time period, set the time period to be the current time period if (!is_guid($timeperiod_id) && is_numeric($timeperiod_id) && $timeperiod_id != 0) { // we have a timestamp, find timeperiod it belongs in $timeperiod_id = TimePeriod::getIdFromTimestamp($timeperiod_id); } if (!is_guid($timeperiod_id)) { $timeperiod_id = TimePeriod::getCurrentId(); } $sq = new SugarQuery(); $sq->select(array('quotas.currency_id', 'quotas.amount')); $sq->from(BeanFactory::getBean('Quotas')); $sq->where()->equals('user_id', $user_id)->equals('quota_type', $should_rollup ? 'Rollup' : 'Direct')->equals('timeperiod_id', $timeperiod_id); $sq->orderBy('date_modified', 'DESC'); $sq->limit(1); // since there is only ever one row, just shift the value off the results $row = array_shift($sq->execute()); if (empty($row)) { // This is to prevent return value of false when a given timeperiod has no quota. $row = array('currency_id' => -99, 'amount' => 0); } $row['formatted_amount'] = SugarCurrency::formatAmountUserLocale($row['amount'], $row['currency_id']); return $row; }
$smarty->assign("STATUS", $app_list_strings['campaign_status_dom'][$focus->status]); $smarty->assign("NAME", $focus->name); $smarty->assign("TYPE", $app_list_strings['campaign_type_dom'][$focus->campaign_type]); $smarty->assign("START_DATE", $focus->start_date); $smarty->assign("END_DATE", $focus->end_date); if (!empty($focus->budget)) { $smarty->assign("BUDGET", SugarCurrency::formatAmountUserLocale($focus->budget, $focus->currency_id)); } if (!empty($focus->actual_cost)) { $smarty->assign("ACTUAL_COST", SugarCurrency::formatAmountUserLocale($focus->actual_cost, $focus->currency_id)); } if (!empty($focus->expected_cost)) { $smarty->assign("EXPECTED_COST", SugarCurrency::formatAmountUserLocale($focus->expected_cost, $focus->currency_id)); } if (!empty($focus->expected_revenue)) { $smarty->assign("EXPECTED_REVENUE", SugarCurrency::formatAmountUserLocale($focus->expected_revenue, $focus->currency_id)); } $smarty->assign("OBJECTIVE", nl2br($focus->objective)); $smarty->assign("CONTENT", nl2br($focus->content)); $smarty->assign("DATE_MODIFIED", $focus->date_modified); $smarty->assign("DATE_ENTERED", $focus->date_entered); $smarty->assign("CREATED_BY", $focus->created_by_name); $smarty->assign("MODIFIED_BY", $focus->modified_by_name); $smarty->assign("TRACKER_URL", $sugar_config['site_url'] . '/campaign_tracker.php?track=' . $focus->tracker_key); $smarty->assign("TRACKER_COUNT", intval($focus->tracker_count)); $smarty->assign("TRACKER_TEXT", $focus->tracker_text); $smarty->assign("REFER_URL", $focus->refer_url); if (isset($focus->campaign_type) && $focus->campaign_type == "Email" || $focus->campaign_type == "NewsLetter") { $smarty->assign("TRACK_DELETE_BUTTON", "<input title=\"{$mod_strings['LBL_TRACK_DELETE_BUTTON_TITLE']}\" class=\"button\" onclick=\"this.form.module.value='Campaigns'; this.form.action.value='Delete';this.form.return_module.value='Campaigns'; this.form.return_action.value='TrackDetailView';this.form.mode.value='Test';return confirm('{$mod_strings['LBL_TRACK_DELETE_CONFIRM']}');\" type=\"submit\" name=\"button\" value=\" {$mod_strings['LBL_TRACK_DELETE_BUTTON_LABEL']} \">"); } $currency = BeanFactory::getBean('Currencies');
/** * @see SugarView::display() */ public function display() { require_once 'modules/Quotes/Layouts.php'; require_once 'include/EditView/EditView2.php'; global $beanFiles; require_once $beanFiles['Quote']; require_once $beanFiles['TaxRate']; require_once $beanFiles['Shipper']; global $mod_strings; global $app_strings; global $app_list_strings; global $current_user; global $timedate; global $locale; $original_quote = BeanFactory::getBean('Quotes'); if ($this->ev->isDuplicate) { $this->bean->id = ""; $this->bean->quote_num = ""; $original_quote->retrieve($_REQUEST['record']); } //needed when creating a new quote only with a default account value passed in if (empty($this->bean->id) && !$this->ev->isDuplicate) { $this->bean->quote_num = ''; $this->bean->total = '0.00'; $this->bean->shipping = '0.00'; $this->bean->tax = '0.00'; $this->bean->subtotal = '0.00'; if (isset($_REQUEST['opportunity_name'])) { $this->bean->opportunity_name = $_REQUEST['opportunity_name']; } if (isset($_REQUEST['opportunity_id'])) { $this->bean->opportunity_id = $_REQUEST['opportunity_id']; } if (isset($_REQUEST['account_name'])) { $this->bean->billing_account_name = $_REQUEST['account_name']; $this->bean->shipping_account_name = $_REQUEST['account_name']; } if (isset($_REQUEST['account_id'])) { $this->bean->billing_account_id = $_REQUEST['account_id']; $this->bean->shipping_account_id = $_REQUEST['account_id']; require_once $beanFiles['Account']; $account = BeanFactory::getBean('Accounts', $this->bean->shipping_account_id); $this->bean->shipping_address_street = $account->shipping_address_street; $this->bean->shipping_address_city = $account->shipping_address_city; $this->bean->shipping_address_state = $account->shipping_address_state; $this->bean->shipping_address_country = $account->shipping_address_country; $this->bean->shipping_address_postalcode = $account->shipping_address_postalcode; $this->bean->billing_address_street = $account->billing_address_street; $this->bean->billing_address_city = $account->billing_address_city; $this->bean->billing_address_state = $account->billing_address_state; $this->bean->billing_address_country = $account->billing_address_country; $this->bean->billing_address_postalcode = $account->billing_address_postalcode; } if (isset($_REQUEST['contact_id'])) { $this->bean->contact_id = $_REQUEST['contact_id']; require_once $beanFiles['Contact']; $contact = BeanFactory::getBean('Contacts', $this->bean->contact_id); $this->bean->billing_contact_name = $locale->formatName($contact); $this->bean->billing_contact_id = $contact->id; $this->bean->shipping_contact_name = $locale->formatName($contact); $this->bean->shipping_contact_id = $contact->id; $this->bean->shipping_address_street = $contact->primary_address_street; $this->bean->shipping_address_city = $contact->primary_address_city; $this->bean->shipping_address_state = $contact->primary_address_state; $this->bean->shipping_address_country = $contact->primary_address_country; $this->bean->shipping_address_postalcode = $contact->primary_address_postalcode; } if (isset($_REQUEST['date_quote_expected_closed'])) { $this->bean->date_quote_expected_closed = $_REQUEST['date_quote_expected_closed']; } if (isset($_REQUEST['currency_id'])) { $this->bean->currency_id = $_REQUEST['currency_id']; } } $currency = BeanFactory::getBean('Currencies', $this->bean->currency_id); // Set the number grouping and decimal separators $seps = get_number_seperators(); $dec_sep = $seps[1]; $num_grp_sep = $seps[0]; $this->ss->assign('NUM_GRP_SEP', $num_grp_sep); $this->ss->assign('DEC_SEP', $dec_sep); $significantDigits = $locale->getPrecedentPreference('default_currency_significant_digits', $current_user); $this->ss->assign('PRECISION', $significantDigits); if ((is_admin($current_user) || is_admin_for_module($GLOBALS['current_user'], 'Quotes')) && $_REQUEST['module'] != 'DynamicLayout' && !empty($_SESSION['editinplace'])) { $record = ''; if (!empty($_REQUEST['record'])) { $record = $_REQUEST['record']; } $this->ss->assign('ADMIN_EDIT', "<a href='index.php?action=index&module=DynamicLayout&from_action=" . $_REQUEST['action'] . "&from_module=" . $_REQUEST['module'] . "&record=" . $record . "'>" . SugarThemeRegistry::current()->getImage("EditLayout", "border='0' align='bottom'", null, null, '.gif', $mod_strings['LBL_EDITLAYOUT']) . "</a>"); } $this->ss->assign('QUOTE_STAGE_OPTIONS', get_select_options_with_id($app_list_strings['quote_stage_dom'], $this->bean->quote_stage)); $this->ss->assign('DEFAULT_PRODUCT_STATUS', $app_list_strings['product_status_quote_key']); if (isset($this->bean->subtotal)) { $this->ss->assign('SUBTOTAL', $this->bean->subtotal); } else { $this->ss->assign('SUBTOTAL', "0.00"); } if (isset($this->bean->tax)) { $this->ss->assign('TAX', $this->bean->tax); } else { $this->ss->assign('TAX', "0.00"); } if (isset($this->bean->shipping)) { $this->ss->assign("SHIPPING", $this->bean->shipping); } else { $this->ss->assign('SHIPPING', "0.00"); } if (isset($this->bean->deal_tot)) { $this->ss->assign('DEAL_TOT', $this->bean->deal_tot); } else { $this->ss->assign('DEAL_TOT', "0.00"); } if (isset($this->bean->new_sub)) { $this->ss->assign('NEW_SUB', $this->bean->new_sub); } else { $this->ss->assign('NEW_SUB', "0.00"); } if (isset($this->bean->total)) { $this->ss->assign('TOTAL', $this->bean->total); } else { $this->ss->assign('TOTAL', "0.00"); } if (isset($this->bean->subtotal_usdollar)) { $this->ss->assign('SUBTOTAL_USDOLLAR', $this->bean->subtotal_usdollar); } else { $this->ss->assign('SUBTOTAL_USDOLLAR', "0.00"); } if (isset($this->bean->tax_usdollar)) { $this->ss->assign('TAX_USDOLLAR', $this->bean->tax_usdollar); } else { $this->ss->assign('TAX_USDOLLAR', "0.00"); } if (isset($this->bean->shipping_usdollar)) { $this->ss->assign('SHIPPING_USDOLLAR', $this->bean->shipping_usdollar); } else { $this->ss->assign('SHIPPING_USDOLLAR', "0.00"); } if (isset($this->bean->total_usdollar)) { $this->ss->assign('TOTAL_USDOLLAR', $this->bean->total_usdollar); } else { $this->ss->assign('TOTAL_USDOLLAR', "0.00"); } $this->ss->assign('USER_DATEFORMAT', '(' . $timedate->get_user_date_format() . ')'); $this->ss->assign('CALENDAR_DATEFORMAT', $timedate->get_cal_date_format()); $taxrate = BeanFactory::getBean('TaxRates'); $this->ss->assign('TAXRATE_OPTIONS', get_select_options_with_id($taxrate->get_taxrates(false), $this->bean->taxrate_id)); if (empty($this->bean->taxrate_value)) { $this->ss->assign('TAXRATE_VALUE', $taxrate->get_default_taxrate_value() / 100); } else { $this->ss->assign('TAXRATE_VALUE', $this->bean->taxrate_value / 100); } $shipper = BeanFactory::getBean('Shippers'); $this->ss->assign('SHIPPER_OPTIONS', get_select_options_with_id($shipper->get_shippers(true), $this->bean->shipper_id)); if (empty($this->bean->assigned_user_id) && empty($this->bean->id)) { $this->bean->assigned_user_id = $current_user->id; } if (empty($this->bean->assigned_name) && empty($this->bean->id)) { $this->bean->assigned_user_name = $current_user->user_name; } $this->ss->assign('ASSIGNED_USER_OPTIONS', get_select_options_with_id(get_user_array(TRUE, 'Active', $this->bean->assigned_user_id), $this->bean->assigned_user_id)); $this->ss->assign('ASSIGNED_USER_NAME', $this->bean->assigned_user_name); $this->ss->assign('ASSIGNED_USER_ID', $this->bean->assigned_user_id); if (!empty($this->bean->calc_grand_total) && $this->bean->calc_grand_total == 1) { $this->ss->assign('CALC_GRAND_TOTAL_CHECKED', 'checked'); } if (!empty($this->bean->show_line_nums) && $this->bean->show_line_nums == 1) { $this->ss->assign('SHOW_LINE_NUMS_CHECKED', 'checked'); } // Set Currency values and currency javascript require_once 'modules/Currencies/ListCurrency.php'; $currency = new ListCurrency(); $base_rate = '1.00'; if (isset($this->bean->currency_id) && !empty($this->bean->currency_id)) { $curid = $this->bean->currency_id; } elseif (isset($_REQUEST['currency_id']) && !empty($_REQUEST['currency_id'])) { $curid = $_REQUEST['currency_id']; } elseif (empty($this->bean->id)) { $curid = $current_user->getPreference('currency'); if (empty($curid)) { $curid = -99; } } else { $curid = -99; } if ($this->bean->isClosed()) { $base_rate = $this->bean->base_rate; } else { $base_rate = null; } $selectCurrency = $currency->getSelectOptions($curid, $base_rate); $this->ss->assign("CURRENCY", $selectCurrency); $this->ss->assign('CURRENCY_JAVASCRIPT', $currency->getJavascript()); if ($this->bean->fetched_row['date_quote_expected_closed'] == '1970-01-01' || $this->bean->fetched_row['date_quote_expected_closed'] == '0001-01-01') { $this->bean->date_quote_expected_closed = ''; } $add_row = array(); if (!empty($this->bean->id)) { $this->bean->load_relationship('product_bundles'); $product_bundle_list = $this->bean->product_bundles->getBeans(); usort($product_bundle_list, array('ProductBundle', 'compareProductBundlesByIndex')); $quote_currency_id = $this->bean->currency_id; $quote_base_rate = $this->bean->base_rate; $convert_format = function ($value, $prod_currency, $prod_base_rate) use($quote_currency_id, $quote_base_rate) { if ($prod_currency !== $quote_currency_id) { $value = SugarCurrency::convertWithRate($value, $prod_base_rate, $quote_base_rate); } return SugarCurrency::formatAmountUserLocale($value, $quote_currency_id, false); }; if (is_array($product_bundle_list)) { foreach ($product_bundle_list as $product_bundle) { $bundle_list = $product_bundle->get_product_bundle_line_items(); $add_row[] = "quotesManager.addTable('{$product_bundle->id}','{$product_bundle->bundle_stage}', '{$product_bundle->name}', '" . format_money($product_bundle->shipping, FALSE) . "' );\n"; if (is_array($bundle_list)) { while (list($key, $line_item) = each($bundle_list)) { if ($line_item->object_name == "Product") { /* @var $line_item Product */ $tax_class_name = isset($line_item->tax_class) ? $line_item->tax_class : ""; $encoded_name = js_escape(br2nl($line_item->name)); $add_row[] = "quotesManager.addRow('{$line_item->id}','" . format_number($line_item->quantity, $significantDigits, $significantDigits) . "','{$line_item->product_template_id}','{$encoded_name}'" . ", '" . $convert_format($line_item->cost_price, $line_item->currency_id, $line_item->base_rate) . "'" . ", '" . $convert_format($line_item->list_price, $line_item->currency_id, $line_item->base_rate) . "'" . ", '" . $convert_format($line_item->discount_price, $line_item->currency_id, $line_item->base_rate) . "'" . ", '', '', '{$line_item->pricing_factor}', '{$line_item->tax_class}', '{$tax_class_name}', '{$line_item->mft_part_num}', '{$product_bundle->id}', '{$product_bundle->bundle_stage}', '{$product_bundle->name}', '" . format_number($product_bundle->shipping) . "', '" . js_escape(br2nl($line_item->description)) . "', '" . $line_item->type_id . "'" . ", '" . format_number($line_item->discount_amount, $significantDigits, $significantDigits) . "'" . ", " . ($line_item->discount_select ? 1 : 0) . ", " . ($line_item->deal_calc ? 1 : 0) . ", '" . $line_item->status . "');\n"; } else { if ($line_item->object_name == "ProductBundleNote") { /* @var $line_item ProductBundleNote */ $encoded_description = js_escape(br2nl($line_item->description)); //$encoded_description = html_entity_decode($encoded_description); $add_row[] = "quotesManager.addCommentRow('{$line_item->id}', '{$product_bundle->id}', '{$encoded_description}');\n"; } } } //while } //if } //foreach } } else { // this else part is to create a new product_bundle for the duplicate quote $original_quote->load_relationship('product_bundles'); $product_bundle_list = $original_quote->product_bundles->getBeans(); usort($product_bundle_list, array('ProductBundle', 'compareProductBundlesByIndex')); if (is_array($product_bundle_list)) { foreach ($product_bundle_list as $product_bundle) { $product_list = $product_bundle->get_products(); if (is_array($product_list)) { foreach ($product_list as $line_item) { $tax_class_name = isset($line_item->tax_class) ? $line_item->tax_class : ""; $add_row[] = "quotesManager.addRow('','{$line_item->quantity}','{$line_item->product_template_id}','{$line_item->name}'" . ", '" . format_number($line_item->cost_usdollar, $significantDigits, $significantDigits, array('convert' => true, 'currency_id' => $curid)) . "'" . ", '" . format_number($line_item->list_usdollar, $significantDigits, $significantDigits, array('convert' => true, 'currency_id' => $curid)) . "'" . ", '" . format_number($line_item->discount_usdollar, $significantDigits, $significantDigits, array('convert' => true, 'currency_id' => $curid)) . "'" . ", '', '', '{$line_item->pricing_factor}', '{$line_item->tax_class}', '{$tax_class_name}',\n\t\t\t\t\t\t\t\t'{$line_item->mft_part_num}', 'group_{$product_bundle->id}', '{$product_bundle->bundle_stage}', '{$product_bundle->name}', '" . format_money($product_bundle->shipping, FALSE) . "', '" . js_escape(br2nl($line_item->description)) . "', '" . $line_item->type_id . "','" . format_number($line_item->discount_amount_usdollar, $significantDigits, $significantDigits, array('convert' => !$line_item->discount_select, 'currency_id' => $curid)) . "'," . ($line_item->discount_select ? 1 : 0) . ",0, '" . $line_item->status . "');\n"; } //foreach if (empty($product_list)) { $add_row[] = "quotesManager.addTable('group_{$product_bundle->id}','{$product_bundle->bundle_stage}', '{$product_bundle->name}' , ' " . format_money($product_bundle->shipping, FALSE) . "');\n"; } //if //bug 39573 - Comments are not duplicated in quotes $bundle_list = $product_bundle->get_product_bundle_line_items(); if (is_array($bundle_list)) { while (list($key, $line_item) = each($bundle_list)) { if ($line_item->object_name == "ProductBundleNote") { $encoded_description = js_escape(br2nl($line_item->description)); $add_row[] = "quotesManager.addCommentRow('{$line_item->id}', 'group_{$product_bundle->id}', '{$encoded_description}');\n"; } } } //end bug 39573 } //if } } } //if-else for !empty($this->bean->id) //Bug#53607: Create the javascript code to store the rendering function in a queue $add_row_js = 'var add_row_stack = [];'; foreach ($add_row as $script_command) { $add_row_js .= "add_row_stack.push(function(){\n {$script_command}\n });"; } //Bug#53607: Rather than executing all rendering row script once, it will keep in a queue. // And it will render the specified number of rows every interval. $add_row_js .= "function add_rows_on_load() {\n if(typeof add_row_stack != 'undefined' && add_row_stack.length > 0) {\n //interval is in msec,\n //size is the number of rows rendering every time\n asyncLoading = true; // to indicate that the content is still loading\n var _interval = 100,\n _size = 3,\n _exec = add_row_stack.splice(0, _size),\n _header_button = document.getElementById('SAVE_HEADER'),\n _footer_button = document.getElementById('SAVE_FOOTER');\n if(_header_button) {\n _header_button.disabled = true;\n }\n if(_footer_button) {\n _footer_button.disabled = true;\n }\n for(idx in _exec) {\n _exec[idx]();\n }\n window.setTimeout(add_rows_on_load, _interval);\n } else {\n asyncLoading = false; // content is loaded\n var _header_button = document.getElementById('SAVE_HEADER'),\n _footer_button = document.getElementById('SAVE_FOOTER');\n if(_header_button) {\n _header_button.disabled = false;\n }\n if(_footer_button) {\n _footer_button.disabled = false;\n }\n }\n }"; $this->ss->assign("ADD_ROWS", $add_row_js); $setup_script = ''; $taxclass = translate('tax_class_dom'); foreach ($taxclass as $value => $name) { $setup_script .= "quotesManager.add_tax_class('{$name}', '{$value}');\n"; } $this->ss->assign("SETUP_SCRIPT", $setup_script); $this->ss->assign('TAXRATE_JAVASCRIPT', $taxrate->get_taxrate_js()); $this->ss->assign('CALCULATE_FUNCTION', '<script type="text/javascript">YAHOO.util.Event.onDOMReady(function(){quotesManager.calculate(document);});</script>'); $this->ss->assign('NO_MATCH_VARIABLE', '<script type="text/javascript">sqs_no_match_text = "' . $app_strings['ERR_SQS_NO_MATCH'] . '";</script>'); $str = "<script language=\"javascript\">\n\t\tYAHOO.util.Event.onAvailable('add_tables', add_rows_on_load);\n\t\t</script>"; $this->ss->assign('SAVED_SEARCH_SELECTS', $str); parent::display(); echo '<script>sqs_must_match = false;</script>'; }
/// Users Popup $popup_request_data = array('call_back_function' => 'set_return', 'form_name' => 'wizform', 'field_to_name_array' => array('id' => 'assigned_user_id', 'user_name' => 'assigned_user_name')); $ss->assign('encoded_users_popup_request_data', $json->encode($popup_request_data)); $popup_request_data = array('call_back_function' => 'set_return', 'form_name' => 'wizform', 'field_to_name_array' => array('id' => 'team_id', 'name' => 'team_name')); $ss->assign('encoded_team_popup_request_data', $json->encode($popup_request_data)); if (!empty($focus->budget)) { $focus->budget = SugarCurrency::formatAmountUserLocale($focus->budget, $focus->currency_id, false); } if (!empty($focus->actual_cost)) { $focus->actual_cost = SugarCurrency::formatAmountUserLocale($focus->actual_cost, $focus->currency_id, false); } if (!empty($focus->expected_cost)) { $focus->expected_cost = SugarCurrency::formatAmountUserLocale($focus->expected_cost, $focus->currency_id, false); } if (!empty($focus->expected_revenue)) { $focus->expected_revenue = SugarCurrency::formatAmountUserLocale($focus->expected_revenue, $focus->currency_id, false); } //set default values $ss->assign("CALENDAR_LANG", "en"); $ss->assign("USER_DATEFORMAT", '(' . $timedate->get_user_date_format() . ')'); $ss->assign("CALENDAR_DATEFORMAT", $timedate->get_cal_date_format()); $ss->assign("CAMP_DATE_ENTERED", $focus->date_entered); $ss->assign("CAMP_DATE_MODIFIED", $focus->date_modified); $ss->assign("CAMP_CREATED_BY", $focus->created_by_name); $ss->assign("CAMP_MODIFIED_BY", $focus->modified_by_name); $ss->assign("ID", $focus->id); $ss->assign("CAMP_TRACKER_TEXT", $focus->tracker_text); $ss->assign("CAMP_START_DATE", $focus->start_date); $ss->assign("CAMP_END_DATE", $focus->end_date); $ss->assign("CAMP_BUDGET", $focus->budget); $ss->assign("CAMP_ACTUAL_COST", $focus->actual_cost);
public function displayListPlain($layout_def) { $value = parent::displayListPlain($layout_def); $row_currency = $this->getCurrency($layout_def); $format_id = $row_currency['currency_id']; global $current_user; // when the group by function is empty, and we should show the user prefered currency, it should convert it if (empty($layout_def['group_function']) && $current_user->getPreference('currency_show_preferred')) { $user_currency = SugarCurrency::getUserLocaleCurrency(); if ($user_currency->id != $row_currency['currency_id']) { $value = SugarCurrency::convertAmount($value, $row_currency['currency_id'], $user_currency->id); $format_id = $user_currency->id; } } return SugarCurrency::formatAmountUserLocale($value, $format_id); }
function get_next_row($result_field_name = 'result', $column_field_name = 'display_columns', $skip_non_summary_columns = false, $exporting = false) { global $current_user; $chart_cells = array(); if ($this->do_export) { $db_row = $this->db->fetchByAssoc($this->{$result_field_name}, false); } else { $db_row = $this->db->fetchByAssoc($this->{$result_field_name}); } if ($db_row == 0 || sizeof($db_row) == 0) { return 0; } // Call custom hooks if (isset($this->full_bean_list) && is_array($this->full_bean_list) && array_key_exists('self', $this->full_bean_list) && is_object($this->full_bean_list['self']) && method_exists($this->full_bean_list['self'], 'call_custom_logic')) { $this->full_bean_list['self']->call_custom_logic('process_report_row', array('row' => &$db_row, 'reporter' => $this)); } if ($result_field_name == 'summary_result') { if (!empty($this->child_filter) && !empty($db_row[$this->child_filter_name])) { $this->child_filter_by = $db_row[$this->child_filter_name]; } else { $this->child_filter = ''; $this->child_filter_by = ''; $this->child_filter_name = ''; } } $row = array(); $cells = array(); $fields = array(); foreach ($db_row as $key => $value) { //if value is null or not set, then change to empty string. This prevents array index errors while processing $fields[strtoupper($key)] = is_null($value) ? '' : $value; } // here we want to make copies, so use foreach foreach ($this->report_def[$column_field_name] as $display_column) { $display_column['table_alias'] = $this->getTableFromField($display_column); $this->register_field_for_query($display_column); if ($skip_non_summary_columns && empty($display_column['group_function'])) { if ($exporting || $this->plain_text_output) { array_push($cells, ' '); } else { array_push($cells, ' '); } continue; } $display_column['fields'] = $fields; if ($this->plain_text_output == true) { /*nsingh: bug 13554- date and time fields must be displayed using user's locale settings. * Since to_pdf uses plain_text_output=true, we handle the date and time case here by using the 'List' context of the layout_manager */ if ($display_column['type'] == 'date' || $display_column['type'] == 'time' || $display_column['type'] == 'datetimecombo') { $this->layout_manager->setAttribute('context', 'List'); } else { $this->layout_manager->setAttribute('context', 'ListPlain'); } } else { $this->layout_manager->setAttribute('context', 'List'); } // Make sure 'AVG' aggregate is shown as float, regardless of the original field type if (!empty($display_column['group_function']) && strtolower($display_column['group_function']) === 'avg' && $display_column['type'] != 'currency') { $display_column['type'] = 'float'; } if ($display_column['type'] != 'currency' || substr_count($display_column['name'], '_usdoll') == 0 && (isset($display_column['group_function']) ? $display_column['group_function'] != 'weighted_amount' && $display_column['group_function'] != 'weighted_sum' : true)) { $pos = $display_column['table_key']; $module_name = ''; if ($pos) { $module_name = substr($pos, strrpos($pos, ':') + 1); } $field_name = $this->getColumnFieldName($display_column); if ($module_name == 'currencies' && empty($display_column['fields'][$field_name])) { switch ($display_column['name']) { case 'iso4217': $display = $this->currency_obj->getDefaultISO4217(); break; case 'symbol': $display = $this->currency_obj->getDefaultCurrencySymbol(); break; case 'name': $display = $this->currency_obj->getDefaultCurrencyName(); break; default: $display = $this->layout_manager->widgetDisplay($display_column); } $display_column['fields'][$field_name] = $display; } else { if (!empty($field_name) && isset($display_column['fields'][$field_name])) { $display_column['fields'][$field_name] = $this->db->fromConvert($display_column['fields'][$field_name], $display_column['type']); } $display = $this->layout_manager->widgetDisplay($display_column); } } else { if (isset($display_column['group_function'])) { $field_name = $this->getTruncatedColumnAlias(strtoupper($display_column['table_alias']) . "_" . strtoupper($display_column['group_function']) . "_" . strtoupper($display_column['name'])); } else { unset($field_name); } if (!isset($field_name) || !isset($display_column['fields'][$field_name])) { $field_name = $this->getTruncatedColumnAlias(strtoupper($display_column['table_alias']) . "_" . strtoupper($display_column['name'])); } if (isset($display_column['fields'][$field_name])) { $display = $display_column['fields'][$field_name]; } } if ($display_column['type'] == 'currency' && (strpos($display_column['name'], '_usdoll') !== false || !empty($display_column['group_function']))) { // convert base to user preferred if set in user prefs if ($current_user->getPreference('currency_show_preferred')) { $userCurrency = SugarCurrency::getUserLocaleCurrency(); $raw_display = SugarCurrency::convertWithRate($display_column['fields'][$field_name], 1.0, $userCurrency->conversion_rate); $display = SugarCurrency::formatAmountUserLocale($raw_display, $userCurrency->id); } else { $raw_display = $display_column['fields'][$field_name]; $display = SugarCurrency::formatAmountUserLocale($raw_display, SugarCurrency::getBaseCurrency()->id); } } else { $raw_display = $display; } if (isset($display_column['type']) && $display_column['type'] == 'float') { $display = $this->layout_manager->widgetDisplay($display_column); } if (isset($display_column['type'])) { $alias = $this->alias_lookup[$display_column['table_key']]; $array_key = strtoupper($alias . '__count'); if (array_key_exists($array_key, $display_column['fields'])) { $displayData = $display_column['fields'][$array_key]; if (empty($displayData) && $display_column['type'] != 'bool' && ($display_column['type'] != 'enum' || $display_column['type'] == 'enum' && $displayData != '0')) { $display = ""; } } // if $module_bean = BeanFactory::getBean($this->module); if (is_array($module_bean->field_defs)) { if (isset($module_bean->field_defs[$display_column['type']])) { if (isset($module_bean->field_defs[$display_column['type']]['options'])) { $trans_options = translate($module_bean->field_defs[$display_column['type']]['options']); if (isset($trans_options[$display_column['fields'][$field_name]])) { $display = $trans_options[$display_column['fields'][$field_name]]; } } } } } // if // for charts if ($column_field_name == 'summary_columns' && $this->do_chart) { //_pp($display); $raw_value = ""; $keys = array_keys($fields); foreach ($this->report_def['summary_columns'] as $index => $column) { if ($column['name'] == $display_column['name'] && isset($keys[$index]) && isset($fields[$keys[$index]])) { $raw_value = $fields[$keys[$index]]; break; } } $cell_arr = array('val' => $raw_display, 'key' => $display_column['column_key'], 'raw_value' => $raw_value); //_pp($cell_arr); array_push($chart_cells, $cell_arr); } if ($exporting) { global $app_list_strings; // parse out checkboxes // TODO: wp this should be done in the widget if (preg_match('/type.*=.*checkbox/Uis', $display)) { if (preg_match('/checked/i', $display)) { $display = $app_list_strings['dom_switch_bool']['on']; } else { $display = $app_list_strings['dom_switch_bool']['off']; } } } array_push($cells, $display); } // END foreach $row['cells'] = $cells; // calculate summary rows count as the product of all count fields in summary $count = 1; $count_exists = false; foreach ($db_row as $count_column => $count_value) { if (substr($count_column, -10) == "__allcount" || $count_column == 'count') { $count *= max($count_value, 1); $count_exists = true; } } if ($count_exists) { $row['count'] = $count; } // for charts if ($column_field_name == 'summary_columns' && $this->do_chart) { $chart_row = 0; if (!empty($db_row['count'])) { $chart_row = array('cells' => $chart_cells, 'count' => $db_row['count']); } else { $chart_row = array('cells' => $chart_cells); } array_push($this->chart_rows, $chart_row); } if ($column_field_name == 'summary_columns' && isset($this->chart_group_position) && isset($this->group_header)) { $row['group_pos'] = $this->chart_group_position; $row['group_header'] = $this->group_header; $row['group_column_is_invisible'] = $this->group_column_is_invisible; } return $row; }