protected function innerUpdate($ID, &$fields, &$errors, array $params = null) { if (!CCrmCurrency::CheckUpdatePermission($ID)) { $errors[] = 'Access denied.'; return false; } $result = CCrmCurrency::Update($ID, $fields); if ($result !== true) { $errors[] = CCrmCurrency::GetLastError(); } return $result; }
$defaultExchRate = doubleval($_POST['DEFAULT_EXCH_RATE']); if ($defaultExchRate <= 0) { $defaultExchRate = 1; //default } $fields['AMOUNT'] = $defaultExchRate; } } if (isset($_POST['SORT'])) { $fields['SORT'] = $_POST['SORT']; } $result = false; $presentFields = CCrmCurrency::GetByID($currencyID); if (is_array($presentFields)) { $arResult['CURRENCY'] = $currency = array_merge($presentFields, $fields); $result = CCrmCurrency::Update($currencyID, $fields); if (!$result) { $err = CCrmCurrency::GetLastError(); $arResult['ERROR'] = $err !== '' ? $err : GetMessage('CRM_CURRENCY_UPDATE_UNKNOWN_ERROR'); } } else { $arResult['CURRENCY'] = $currency = $fields; $fields['CURRENCY'] = $currencyID; $fields['AMOUNT_CNT'] = 1; //Default $currencyID = CCrmCurrency::Add($fields); $result = is_string($currencyID) && $currencyID !== ''; if (!$result) { $err = CCrmCurrency::GetLastError(); $arResult['ERROR'] = $err !== '' ? $err : GetMessage('CRM_CURRENCY_ADD_UNKNOWN_ERROR'); $currencyID = $fields['CURRENCY'];
unset($_POST['ID'], $_REQUEST['ID']); // otherwise the filter will work } elseif ($arResult['CAN_EDIT'] && $action === 'edit' && isset($_POST['FIELDS']) && is_array($_POST['FIELDS'])) { foreach ($_POST['FIELDS'] as $ID => $arField) { $arFields = array(); if (isset($arField['EXCH_RATE'])) { $arFields['AMOUNT'] = $arField['EXCH_RATE']; } if (isset($arField['AMOUNT_CNT'])) { $arFields['AMOUNT_CNT'] = max(intval($arField['AMOUNT_CNT']), 1); } if (isset($arField['SORT'])) { $arFields['SORT'] = $arField['SORT']; } if (count($arFields) > 0) { if (!CCrmCurrency::Update($ID, $arFields)) { $error = CCrmCurrency::GetLastError(); $errorMessages[] = $error !== '' ? $error : GetMessage('CRM_CURRENCY_UPDATE_GENERAL_ERROR'); continue; } } if (isset($arField['ACCOUNTING'])) { $baseCurrencyID = CCrmCurrency::GetBaseCurrencyID(); $accountCurrencyID = CCrmCurrency::GetAccountCurrencyID(); if ($ID === $accountCurrencyID) { if ($arField['ACCOUNTING'] === 'N' && $ID !== $baseCurrencyID) { CCrmCurrency::SetAccountCurrencyID($baseCurrencyID); } } elseif ($arField['ACCOUNTING'] === 'Y') { CCrmCurrency::SetAccountCurrencyID($ID); }