$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; } $dbRes = CCrmProduct::GetList(array(), array('ID' => $productID), array('NAME')); $arProdRow['PRODUCT_NAME'] = is_array($arRes = $dbRes->Fetch()) ? $arRes['NAME'] : '[' . strval($productID) . ']'; } unset($arProdRow); } else {
// { // $srcExchRate = ($srcCurrency = CCrmCurrency::GetByID($srcCurrencyID)) ? $srcCurrency['EXCH_RATE'] : 1.0; // } $dstCurrencyID = isset($data['DST_CURRENCY_ID']) && strlen(strval($data['DST_CURRENCY_ID'])) > 0 ? strval($data['DST_CURRENCY_ID']) : CCrmCurrency::GetBaseCurrencyID(); // $dstExchRate = ($dstCurrency = CCrmCurrency::GetByID($dstCurrencyID)) ? $dstCurrency['EXCH_RATE'] : 1.0; $arProducts = isset($data['PRODUCTS']) && is_array($data['PRODUCTS']) ? $data['PRODUCTS'] : array(); if (count($arProducts) > 0) { foreach ($arProducts as &$arProduct) { $arProduct['PRICE'] = CCrmCurrency::ConvertMoney(isset($arProduct['PRICE']) ? $arProduct['PRICE'] : 1.0, $srcCurrencyID, $dstCurrencyID); if (isset($arProduct['DISCOUNT_TYPE_ID']) && isset($arProduct['DISCOUNT_VALUE']) && intval($arProduct['DISCOUNT_TYPE_ID']) === \Bitrix\Crm\Discount::MONETARY && abs(doubleval($arProduct['DISCOUNT_VALUE'])) > 0) { $arProduct['DISCOUNT_VALUE'] = CCrmCurrency::ConvertMoney(isset($arProduct['DISCOUNT_VALUE']) ? $arProduct['DISCOUNT_VALUE'] : 0.0, $srcCurrencyID, $dstCurrencyID); } } } Header('Content-Type: application/x-javascript; charset=' . LANG_CHARSET); echo CUtil::PhpToJsObject(array('CURRENCY_ID' => $dstCurrencyID, 'CURRENCY_FORMAT' => CCrmCurrency::GetCurrencyFormatString($dstCurrencyID), 'EXCH_RATE' => CCrmCurrency::GetExchangeRate($dstCurrencyID), 'PRODUCTS' => $arProducts, 'PRODUCT_POPUP_ITEMS' => CCrmProductHelper::PreparePopupItems($dstCurrencyID))); } elseif ($mode === 'CONVERT_MONEY') { if ($perms->HavePerm($ownerName, BX_CRM_PERM_NONE, 'READ')) { echo CUtil::PhpToJSObject(array('ERROR' => 'PERMISSION_DENIED')); die; } $data = isset($_POST['DATA']) && is_array($_POST['DATA']) ? $_POST['DATA'] : array(); if (count($data) == 0) { echo CUtil::PhpToJSObject(array('ERROR' => 'SOURCE_DATA_NOT_FOUND')); die; } $srcSum = isset($data['SRC_SUM']) ? doubleval($data['SRC_SUM']) : 0.0; $srcCurrencyID = isset($data['SRC_CURRENCY_ID']) && strlen(strval($data['SRC_CURRENCY_ID'])) > 0 ? strval($data['SRC_CURRENCY_ID']) : CCrmCurrency::GetBaseCurrencyID(); $dstCurrencyID = isset($data['DST_CURRENCY_ID']) && strlen(strval($data['DST_CURRENCY_ID'])) > 0 ? strval($data['DST_CURRENCY_ID']) : CCrmCurrency::GetBaseCurrencyID(); echo CUtil::PhpToJSObject(array('SUM' => CCrmCurrency::ConvertMoney($srcSum, $srcCurrencyID, $dstCurrencyID))); } elseif ($mode === 'ADD_PRODUCT') {