public static function PrepareAccountingData($arFields) { $accountCurrencyID = CCrmCurrency::GetAccountCurrencyID(); if (!isset($accountCurrencyID[0])) { return false; } $currencyID = isset($arFields['CURRENCY_ID']) ? strval($arFields['CURRENCY_ID']) : ''; if (!CCrmCurrency::GetByID($currencyID)) { // Currency is invalid or not assigned return false; } if ($currencyID === $accountCurrencyID) { // Avoid conversion to float since possible data lost return array('ACCOUNT_CURRENCY_ID' => $accountCurrencyID, 'ACCOUNT_SUM' => isset($arFields['SUM']) ? $arFields['SUM'] : 0.0); } $account = CCrmCurrency::ConvertMoney(isset($arFields['SUM']) ? doubleval($arFields['SUM']) : 0.0, $currencyID, $accountCurrencyID, isset($arFields['EXCH_RATE']) ? doubleval($arFields['EXCH_RATE']) : -1); return array('ACCOUNT_CURRENCY_ID' => $accountCurrencyID, 'ACCOUNT_SUM' => $account); }
// 2. Try to interpret value as TITLE. If not found leave value as is $result = array_search($data, $arStatus['STATUS_LIST']); $arLead[$currentKey] = $result !== false ? $result : $data; } } elseif ($currentKey == 'SOURCE_ID') { if (isset($arStatus['SOURCE_LIST'][$data])) { // 1. Try to interpret value as ID $arLead[$currentKey] = $data; } else { $result = array_search($data, $arStatus['SOURCE_LIST']); $arLead[$currentKey] = $result !== false ? $result : $data; } } elseif ($currentKey == 'CURRENCY_ID') { $currency = CCrmCurrency::GetByName($data); if (!$currency) { $currency = CCrmCurrency::GetByID($data); } $arLead[$currentKey] = $currency ? $currency['CURRENCY'] : CCrmCurrency::GetBaseCurrencyID(); } elseif ($currentKey == 'PRODUCT_ID') { // For compatibility $arProduct = CCrmProduct::GetByOriginID('CRM_PROD_' . $data); if (is_array($arProduct)) { $arProductRow = array('PRODUCT_ID' => $arProduct['ID'], 'QUANTITY' => 1); // PRICE equals to OPPORTUNITY. We will set PRICE latter } else { $arProduct = CCrmProduct::GetByName($data); if ($arProduct) { $arProductRow['PRODUCT_ID'] = $arProduct['ID']; } else { $arProductRow['PRODUCT_ID'] = 0; }
} } if ($result) { if ($currency['IS_ACCOUNTING_CURRENCY'] && $currencyID !== CCrmCurrency::GetAccountCurrencyID()) { CCrmCurrency::SetAccountCurrencyID($currencyID); } elseif (!$currency['IS_ACCOUNTING_CURRENCY'] && $currencyID === CCrmCurrency::GetAccountCurrencyID()) { CCrmCurrency::SetAccountCurrencyID(CCrmCurrency::GetBaseCurrencyID()); } if ($currency['IS_INVOICE_CURRENCY'] && $currencyID !== CCrmCurrency::getInvoiceDefault()) { CCrmCurrency::setInvoiceDefault($currencyID); } LocalRedirect(isset($_POST['apply']) ? CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_CURRENCY_EDIT'], array('currency_id' => $currencyID)) : CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_CURRENCY_LIST'], array('currency_id' => $currencyID))); } } elseif ($_SERVER['REQUEST_METHOD'] == 'GET' && isset($_GET['delete'])) { $currencyID = isset($arParams['CURRENCY_ID']) ? strval($arParams['CURRENCY_ID']) : ''; $currency = isset($currencyID[0]) ? CCrmCurrency::GetByID($currencyID) : null; if ($currency) { if (!CCrmCurrency::Delete($currencyID)) { $err = CCrmCurrency::GetLastError(); ShowError(isset($err[0]) ? $err : GetMessage('CRM_CURRENCY_DELETE_UNKNOWN_ERROR')); return; } } LocalRedirect(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_CURRENCY_LIST'], array())); } } $arResult['FIELDS'] = array(); $arResult['FIELDS']['tab_1'][] = array('id' => 'currency_info', 'name' => GetMessage('CRM_CURRENCY_SECTION_MAIN'), 'type' => 'section'); $arResult['FIELDS']['tab_1'][] = array('id' => 'ID', 'name' => GetMessage('CRM_CURRENCY_FIELD_ID'), 'params' => array('size' => 10), 'value' => $currencyID, 'type' => $isEditMode ? 'label' : 'text'); $arResult['FIELDS']['tab_1'][] = array('id' => 'AMOUNT_CNT', 'name' => GetMessage('CRM_CURRENCY_FIELD_AMOUNT_CNT'), 'params' => array('size' => 10), 'value' => isset($currency['AMOUNT_CNT']) ? $currency['AMOUNT_CNT'] : '1', 'type' => $isBaseCurrency ? 'label' : 'text'); $arResult['FIELDS']['tab_1'][] = array('id' => 'DEFAULT_EXCH_RATE', 'name' => GetMessage('CRM_CURRENCY_FIELD_DEFAULT_EXCH_RATE'), 'params' => array('size' => 10), 'value' => isset($currency['AMOUNT']) ? $currency['AMOUNT'] : '1', 'type' => $isBaseCurrency ? 'label' : 'text');
protected static function getCurrencyName($ID, $htmlEncode = false) { $currency = CCrmCurrency::GetByID($ID); if ($currency) { return $currency['FULL_NAME']; } // Old style (for compatibility only) $statuses = CCrmStatus::GetStatus('CURRENCY'); $name = array_key_exists($ID, $statuses) ? $statuses[$ID]['NAME'] : $ID; return $htmlEncode ? htmlspecialcharsbx($name) : $name; }
$arResult['HIDE_MODE_BUTTON'] = isset($arParams['HIDE_MODE_BUTTON']) ? $arParams['HIDE_MODE_BUTTON'] === 'Y' : false; $arResult['HIDE_ALL_TAXES'] = isset($arParams['HIDE_ALL_TAXES']) ? $arParams['HIDE_ALL_TAXES'] === 'Y' : false; $arResult['ALLOW_TAX'] = isset($arParams['ALLOW_TAX']) ? $arParams['ALLOW_TAX'] === 'Y' : CCrmTax::isVatMode(); $arResult['ALLOW_TAX'] = $arResult['ALLOW_TAX'] && !$arResult['HIDE_ALL_TAXES']; $arResult['ALLOW_LD_TAX'] = isset($arParams['ALLOW_LD_TAX']) ? $arParams['ALLOW_LD_TAX'] === 'Y' : CCrmTax::isTaxMode(); $arResult['ALLOW_LD_TAX'] = $arResult['ALLOW_LD_TAX'] || $arResult['HIDE_ALL_TAXES']; $arResult['LOCATION_ID'] = isset($arParams['LOCATION_ID']) ? $arParams['LOCATION_ID'] : ''; $arResult['PRODUCT_ROW_TAX_UNIFORM'] = COption::GetOptionString('crm', 'product_row_tax_uniform', 'Y') === 'Y'; $arResult['INVOICE_MODE'] = $ownerType === 'I'; $arResult['HIDE_TAX_INCLUDED_COLUMN'] = $arResult['INVOICE_MODE']; $arResult['CATALOG_TYPE_ID'] = CCrmCatalog::GetCatalogTypeID(); // copy flag $bCopy = $arParams['COPY_FLAG'] === 'Y' ? true : false; // Check currency (national currency by default) $currencyID = $arResult['CURRENCY_ID'] = isset($arParams['CURRENCY_ID']) ? (string) $arParams['CURRENCY_ID'] : CCrmCurrency::GetBaseCurrencyID(); $currency = CCrmCurrency::GetByID($currencyID); if (!$currency) { ShowError(GetMessage('CRM_CURRENCY_IS_NOT_FOUND', array('#CURRENCY_ID#' => $currencyID))); return; } $arResult['CURRENCY_FORMAT'] = CCrmCurrency::GetCurrencyFormatString($currencyID); //$exchRate = $arResult['EXCH_RATE'] = isset($arParams['EXCH_RATE']) ? (double)$arParams['EXCH_RATE'] : 1.0; //$arResult['CURRENCY_DISPLAY_NAME'] = $currency['ID']; //ID is ISO 4217 // Prepare source data if (isset($arParams['PRODUCT_ROWS']) && is_array($arParams['PRODUCT_ROWS'])) { $arResult['PRODUCT_ROWS'] = $arParams['PRODUCT_ROWS']; foreach ($arResult['PRODUCT_ROWS'] as &$arProdRow) { $productID = intval($arProdRow['PRODUCT_ID']); if (isset($arProdRow['PRODUCT_NAME'])) { continue; }
} elseif (preg_match('/(.*)\\[(\\d+?)\\]/i' . BX_UTF_PCRE_MODIFIER, $search, $arMatches)) { $arFilter['ID'] = intval($arMatches[2]); $arFilter['%NAME'] = trim($arMatches[1]); $arFilter['LOGIC'] = 'OR'; $arFilter['ACTIVE'] = 'Y'; /*$arFilter['__INNER_FILTER'] = array( 'LOGIC' => 'OR', 'ID' => intval($arMatches[2]), '%NAME' => trim($arMatches[1]) );*/ } else { $arFilter['ACTIVE'] = 'Y'; $arFilter['%NAME'] = $search; } $dstCurrencyID = isset($_REQUEST['CURRENCY_ID']) ? trim($_REQUEST['CURRENCY_ID']) : ''; $dstCurrency = strlen($dstCurrencyID) > 0 ? CCrmCurrency::GetByID($dstCurrencyID) : CCrmCurrency::GetBaseCurrency(); // Default currency exchange rates are used //$dstExchRate = isset($_REQUEST['EXCH_RATE']) ? (double)$_REQUEST['EXCH_RATE'] : 0; //if($dstExchRate == 0) //{ // $dstExchRate = is_array($dstCurrency) ? $dstCurrency['EXCH_RATE'] : 1.0; //} $enableRawPrices = isset($_REQUEST['ENABLE_RAW_PRICES']) && strtoupper($_REQUEST['ENABLE_RAW_PRICES']) === 'Y'; $limit = isset($_REQUEST['LIMIT']) ? intval($_REQUEST['LIMIT']) : 0; /*$arNavStartParams = false; if ($limit > 0) $arNavStartParams = array('nTopCount' => $limit);*/ $arSelect = array('ID', 'NAME', 'PRICE', 'CURRENCY_ID'); $arPricesSelect = $arVatsSelect = array(); $arSelect = CCrmProduct::DistributeProductSelect($arSelect, $arPricesSelect, $arVatsSelect);
protected function innerGet($ID, &$errors) { if (!CCrmCurrency::CheckReadPermission($ID)) { $errors[] = 'Access denied.'; return false; } $result = CCrmCurrency::GetByID($ID); if (is_array($result)) { return $result; } $errors[] = 'Not found'; return false; }
return; } global $USER, $APPLICATION; $arParams['PATH_TO_CURRENCY_LIST'] = CrmCheckPath('PATH_TO_CURRENCY_LIST', $arParams['PATH_TO_CURRENCY_LIST'], ''); $arParams['PATH_TO_CURRENCY_SHOW'] = CrmCheckPath('PATH_TO_CURRENCY_SHOW', $arParams['PATH_TO_CURRENCY_SHOW'], '?currency_id=#currency_id#&show'); $arParams['PATH_TO_CURRENCY_ADD'] = CrmCheckPath('PATH_TO_CURRENCY_ADD', $arParams['PATH_TO_CURRENCY_ADD'], '?add'); $arParams['PATH_TO_CURRENCY_EDIT'] = CrmCheckPath('PATH_TO_CURRENCY_EDIT', $arParams['PATH_TO_CURRENCY_EDIT'], '?currency_id=#currency_id#&edit'); if (!isset($arParams['TYPE'])) { $arParams['TYPE'] = 'list'; } $arResult['BUTTONS'] = array(); $currencyID = isset($arParams['CURRENCY_ID']) ? strval($arParams['CURRENCY_ID']) : ''; $CrmPerms = new CCrmPerms($USER->GetID()); $currencyAdd = $currencyEdit = $currencyDelete = $CrmPerms->HavePerm('CONFIG', BX_CRM_PERM_CONFIG, 'WRITE'); $currencyShow = $CrmPerms->HavePerm('CONFIG', BX_CRM_PERM_CONFIG, 'READ'); $exists = isset($currencyID[0]) && is_array(CCrmCurrency::GetByID($currencyID)); if ($arParams['TYPE'] !== 'list') { $arResult['BUTTONS'][] = array('TEXT' => GetMessage('CRM_CURRENCY_LIST'), 'TITLE' => GetMessage('CRM_CURRENCY_LIST_TITLE'), 'LINK' => CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_CURRENCY_LIST'], array()), 'ICON' => 'btn-list'); } if ($currencyAdd) { $arResult['BUTTONS'][] = array('TEXT' => GetMessage('CRM_CURRENCY_ADD'), 'TITLE' => GetMessage('CRM_CURRENCY_ADD_TITLE'), 'LINK' => CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_CURRENCY_ADD'], array()), 'ICON' => 'btn-new'); } if ($currencyEdit && $arParams['TYPE'] == 'show' && $exists) { $arResult['BUTTONS'][] = array('TEXT' => GetMessage('CRM_CURRENCY_EDIT'), 'TITLE' => GetMessage('CRM_CURRENCY_EDIT_TITLE'), 'LINK' => CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_CURRENCY_EDIT'], array('currency_id' => $currencyID)), 'ICON' => 'btn-edit'); } if ($currencyShow && $arParams['TYPE'] == 'edit' && $exists) { $arResult['BUTTONS'][] = array('TEXT' => GetMessage('CRM_CURRENCY_SHOW'), 'TITLE' => GetMessage('CRM_CURRENCY_SHOW_TITLE'), 'LINK' => CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_CURRENCY_SHOW'], array('currency_id' => $currencyID)), 'ICON' => 'btn-view'); } if ($currencyDelete && ($arParams['TYPE'] == 'edit' || $arParams['TYPE'] == 'show') && $exists) { $arResult['BUTTONS'][] = array('TEXT' => GetMessage('CRM_CURRENCY_DELETE'), 'TITLE' => GetMessage('CRM_CURRENCY_DELETE_TITLE'), 'LINK' => "javascript:currency_delete('" . GetMessage('CRM_CURRENCY_DELETE_DLG_TITLE') . "', '" . GetMessage('CRM_CURRENCY_DELETE_DLG_MESSAGE') . "', '" . GetMessage('CRM_CURRENCY_DELETE_DLG_BTNTITLE') . "', '" . CHTTP::urlAddParams(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_CURRENCY_EDIT'], array('currency_id' => $currencyID)), array('delete' => '', 'sessid' => bitrix_sessid())) . "')", 'ICON' => 'btn-delete'); }
$CrmPerms = new CCrmPerms($USER->GetID()); if (!$CrmPerms->HavePerm('CONFIG', BX_CRM_PERM_CONFIG, 'READ')) { ShowError(GetMessage('CRM_PERMISSION_DENIED')); return; } $baseCurrencyID = CCrmCurrency::GetBaseCurrencyID(); $currencyID = isset($arParams['CURRENCY_ID']) ? strval($arParams['CURRENCY_ID']) : ''; if (!isset($currencyID[0])) { $currencyIDParName = isset($arParams['CURRENCY_ID_PAR_NAME']) ? strval($arParams['CURRENCY_ID_PAR_NAME']) : ''; if (strlen($currencyIDParName) == 0) { $currencyIDParName = 'currency_id'; } $currencyID = isset($_REQUEST[$currencyIDParName]) ? strval($_REQUEST[$currencyIDParName]) : ''; } $currency = array(); if (!isset($currencyID[0]) || !($currency = CCrmCurrency::GetByID($currencyID))) { ShowError(GetMessage('CRM_CURRENCY_NOT_FOUND')); @define('ERROR_404', 'Y'); if ($arParams['SET_STATUS_404'] === 'Y') { CHTTP::SetStatus("404 Not Found"); } return; } $currencyID = $currency['CURRENCY']; $isBaseCurrency = $currencyID === $baseCurrencyID; $arResult['CURRENCY_ID'] = $currencyID; $arResult['CURRENCY'] = $currency; $isEditMode = isset($currencyID[0]); $arResult['FORM_ID'] = 'CRM_CURRENCY_EDIT'; $arResult['GRID_ID'] = 'CRM_CURRENCY_EDIT'; $arResult['BACK_URL'] = CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_CURRENCY_LIST'], array());