define('STOP_STATISTICS', true); define('BX_SECURITY_SHOW_MESSAGE', true); define('NO_AGENT_CHECK', true); require_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_admin_before.php'; header('Content-Type: application/x-javascript; charset=' . LANG_CHARSET); Loc::loadMessages(__FILE__); $result = array('STATUS' => '', 'MESSAGE' => '', 'RATE_CNT' => '', 'RATE' => ''); if (!check_bitrix_sessid()) { $result['STATUS'] = 'ERROR'; $result['MESSAGE'] = Loc::getMessage('BX_CURRENCY_GET_RATE_ERR_SESSION'); } else { if (!Loader::includeModule('currency')) { $result['STATUS'] = 'ERROR'; $result['MESSAGE'] = Loc::getMessage('BX_CURRENCY_GET_RATE_ERR_MODULE_ABSENT'); } else { $baseCurrency = Currency\CurrencyManager::getBaseCurrency(); $date = ''; $currency = ''; if (isset($_REQUEST['DATE_RATE'])) { $date = (string) $_REQUEST['DATE_RATE']; } if (isset($_REQUEST['CURRENCY'])) { $currency = (string) $_REQUEST['CURRENCY']; } if ($baseCurrency == '') { $result['STATUS'] = 'ERROR'; $result['MESSAGE'] = Loc::getMessage('BX_CURRENCY_GET_RATE_ERR_BASE_CURRENCY_ABSENT'); } elseif ($date == '' || !$DB->IsDate($date)) { $result['STATUS'] = 'ERROR'; $result['MESSAGE'] = Loc::getMessage('BX_CURRENCY_GET_RATE_ERR_DATE_RATE'); } elseif ($currency == '') {
/** * Return currencies list. * * @return array Currencies list. * @throws SystemException * @throws \Bitrix\Main\LoaderException */ public static function getCurrenciesList() { static $currencies = null; if ($currencies === null) { $currencies = array(); if (!\Bitrix\Main\Loader::includeModule('currency')) { throw new SystemException("Can't include module \"Currency\"!"); } $currencies = Currency\CurrencyManager::getCurrencyList(); } return $currencies; }
protected function getConfigStructure() { static $handlers = null; $initedHandlers = self::getRegisteredHandlers("SID"); sortByColumn($initedHandlers, array(strtoupper("NAME") => SORT_ASC)); if ($handlers === null) { $handlers = array("" => ""); foreach ($initedHandlers as $handler) { $handlers[$handler["SID"]] = $handler["NAME"] . " [" . $handler["SID"] . "]"; } } if (strlen($this->handlerInitParams["SID"]) <= 0 || $this->id <= 0) { $result = array("MAIN" => array("TITLE" => Loc::getMessage("SALE_DLVR_HANDL_AUT_HANDLER_SETTINGS"), "DESCRIPTION" => Loc::getMessage("SALE_DLVR_HANDL_AUT_HANDLER_SETTINGS_DSCR"), "ITEMS" => array("SID" => array("TYPE" => "ENUM", "NAME" => Loc::getMessage("SALE_DLVR_HANDL_AUT_HANDLER_CHOOSE"), "OPTIONS" => $handlers, "ONCHANGE" => "top.BX.showWait(); if(this.form.elements['NAME'].value == '') this.form.elements['NAME'].value = this.selectedOptions[0].innerHTML.replace(/\\s*\\[.*\\]/g,''); this.form.submit();")))); } else { $handler = $this->handlerInitParams["SID"]; $result = array("MAIN" => array("TITLE" => Loc::getMessage("SALE_DLVR_HANDL_AUT_HANDLER_SETTINGS"), "DESCRIPTION" => Loc::getMessage("SALE_DLVR_HANDL_AUT_HANDLER_SETTINGS_DSCR"), "ITEMS" => array("SID" => array("TYPE" => "DELIVERY_READ_ONLY", "NAME" => Loc::getMessage("SALE_DLVR_HANDL_AUT_HANDLER_CHOOSE"), "VALUE" => $handler, "VALUE_VIEW" => $handlers[$handler]), "DESCRIPTION_INNER" => array("TYPE" => "DELIVERY_READ_ONLY", "NAME" => Loc::getMessage("SALE_DLVR_HANDL_AUT_DESCRIPTION_INNER"), "VALUE" => $this->handlerInitParams["DESCRIPTION_INNER"])))); } $serviceCurrency = $this->currency; if (\Bitrix\Main\Loader::includeModule('currency')) { $currencyList = CurrencyManager::getCurrencyList(); if (isset($currencyList[$this->currency])) { $serviceCurrency = $currencyList[$this->currency]; } unset($currencyList); } $marginTypes = array("%" => "%", "CURRENCY" => $serviceCurrency); $result["MAIN"]["ITEMS"]["MARGIN_VALUE"] = array("TYPE" => "STRING", "NAME" => Loc::getMessage("SALE_DLVR_HANDL_AUT_MARGIN_VALUE"), "DEFAULT" => 0); $result["MAIN"]["ITEMS"]["MARGIN_TYPE"] = array("TYPE" => "ENUM", "NAME" => Loc::getMessage("SALE_DLVR_HANDL_AUT_MARGIN_TYPE"), "DEFAULT" => "%", "OPTIONS" => $marginTypes); if (strlen($this->sid) > 0) { $configProfileIds = array_keys($this->handlerInitParams["PROFILES"]); } else { $configProfileIds = array(); } if (isset($this->oldConfig["CONFIG_GROUPS"])) { $groupProfileIds = array_keys($this->oldConfig["CONFIG_GROUPS"]); $intersect = array_intersect($groupProfileIds, $configProfileIds); foreach ($intersect as $pid) { unset($this->oldConfig["CONFIG_GROUPS"][$pid]); } } $oldConfig = $this->convertOldConfigToNew($this->oldConfig); if (!empty($oldConfig)) { if (isset($oldConfig["CONFIG_GROUPS"]["MAIN"])) { $oldConfig["CONFIG_GROUPS"]["MAIN_OLD"] = $oldConfig["CONFIG_GROUPS"]["MAIN"]; unset($oldConfig["CONFIG_GROUPS"]["MAIN"]); } $result = array_merge($result, $oldConfig); } return $result; }
function UnInstallDB($arParams = array()) { global $DB, $APPLICATION; $this->errors = false; if (!isset($arParams["savedata"]) || $arParams["savedata"] != "Y") { $this->errors = $DB->RunSQLBatch($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/currency/install/db/" . strtolower($DB->type) . "/uninstall.sql"); if ($this->errors !== false) { $APPLICATION->ThrowException(implode('', $this->errors)); return false; } } \Bitrix\Currency\CurrencyManager::clearCurrencyCache(); CAgent::RemoveModuleAgents('currency'); ModuleManager::unRegisterModule('currency'); return true; }
/** * @param array $arParams * @return array|false */ public static function OrderProduct($arParams) { $adminSection = defined('ADMIN_SECTION') && ADMIN_SECTION === true; $arParams['RENEWAL'] = isset($arParams['RENEWAL']) && $arParams['RENEWAL'] == 'Y' ? 'Y' : 'N'; $arParams['CHECK_QUANTITY'] = isset($arParams['CHECK_QUANTITY']) && $arParams['CHECK_QUANTITY'] == 'N' ? 'N' : 'Y'; $arParams['CHECK_DISCOUNT'] = isset($arParams['CHECK_DISCOUNT']) && $arParams['CHECK_DISCOUNT'] == 'N' ? 'N' : 'Y'; $arParams['USER_ID'] = isset($arParams['USER_ID']) ? (int) $arParams['USER_ID'] : 0; if ($arParams['USER_ID'] < 0) { $arParams['USER_ID'] = 0; } $arParams['SITE_ID'] = isset($arParams['SITE_ID']) ? $arParams['SITE_ID'] : false; $strSiteID = $arParams['SITE_ID']; $arParams['BASKET_ID'] = (string) (isset($arParams['BASKET_ID']) ? $arParams['BASKET_ID'] : '0'); $arParams['CURRENCY'] = isset($arParams['CURRENCY']) ? Currency\CurrencyManager::checkCurrencyID($arParams['CURRENCY']) : false; if ($arParams['CURRENCY'] === false) { $arParams['CURRENCY'] = CSaleLang::GetLangCurrency($strSiteID ? $strSiteID : SITE_ID); } global $USER; $productID = (int) $arParams['PRODUCT_ID']; $quantity = (double) $arParams['QUANTITY']; $intUserID = (int) $arParams['USER_ID']; $arResult = array(); if ($adminSection) { if ($intUserID == 0) { return $arResult; } if (!($userGroups = static::getHitCache('USER_GROUPS', $intUserID))) { $userGroups = self::getUserGroups($intUserID); static::setHitCache('USER_GROUPS', $intUserID, $userGroups); } if (empty($userGroups)) { return $arResult; } if (!($arProduct = static::getHitCache('IBLOCK_ELEMENT_PERM_N', $productID))) { $dbIBlockElement = CIBlockElement::GetList(array(), array('ID' => $productID, 'ACTIVE' => 'Y', 'ACTIVE_DATE' => 'Y', 'CHECK_PERMISSION' => 'N'), false, false, array('ID', 'IBLOCK_ID', 'NAME', 'DETAIL_PAGE_URL')); if ($arProduct = $dbIBlockElement->GetNext()) { static::setHitCache('IBLOCK_ELEMENT_PERM_N', $productID, $arProduct); } unset($dbIBlockElement); } if (empty($arProduct) || !is_array($arProduct)) { return $arResult; } $iblockRightByID = null; if (!($iblockRightByID = static::getHitCache('IBLOCK_RIGHT', $arProduct['IBLOCK_ID']))) { if ($iblockRightByID = CIBlock::GetArrayByID($arProduct['IBLOCK_ID'], 'RIGHTS_MODE')) { static::setHitCache('IBLOCK_RIGHT', $arProduct['IBLOCK_ID'], $iblockRightByID); } } if ($iblockRightByID == 'E') { $proxyUserPermissionKey = $productID . "|" . $intUserID; if (!($arUserRights = static::getHitCache('USER_RIGHT', $proxyUserPermissionKey))) { if ($arUserRights = CIBlockElementRights::GetUserOperations($productID, $intUserID)) { static::setHitCache('USER_RIGHT', $proxyUserPermissionKey, $arUserRights); } } if (empty($arUserRights) || !isset($arUserRights['element_read'])) { return $arResult; } unset($arUserRights); } else { $proxyIblockPermissionKey = $arProduct['IBLOCK_ID'] . "|" . $intUserID; if (!($iblockPermissions = static::getHitCache('IBLOCK_PERM', $proxyIblockPermissionKey))) { if ($iblockPermissions = CIBlock::GetPermission($arProduct['IBLOCK_ID'], $intUserID)) { static::setHitCache('IBLOCK_PERM', $proxyIblockPermissionKey, $iblockPermissions); } } if ($iblockPermissions < 'R') { return $arResult; } } } else { $userGroups = $USER->GetUserGroupArray(); if (!($arProduct = static::getHitCache('IBLOCK_ELEMENT_PERM_Y', $productID))) { $dbIBlockElement = CIBlockElement::GetList(array(), array('ID' => $productID, 'ACTIVE' => 'Y', 'ACTIVE_DATE' => 'Y', 'CHECK_PERMISSIONS' => 'Y', 'MIN_PERMISSION' => 'R'), false, false, array('ID', 'IBLOCK_ID', 'NAME', 'DETAIL_PAGE_URL')); if ($arProduct = $dbIBlockElement->GetNext()) { static::setHitCache('IBLOCK_ELEMENT_PERM_Y', $productID, $arProduct); } unset($dbIBlockElement); } if (empty($arProduct) || !is_array($arProduct)) { return $arResult; } } if (!($arCatalogProduct = static::getHitCache('CATALOG_PRODUCT', $productID))) { $rsProducts = CCatalogProduct::GetList(array(), array('ID' => $productID), false, false, array('ID', 'CAN_BUY_ZERO', 'QUANTITY_TRACE', 'QUANTITY', 'WEIGHT', 'WIDTH', 'HEIGHT', 'LENGTH', 'BARCODE_MULTI', 'TYPE')); if ($arCatalogProduct = $rsProducts->Fetch()) { static::setHitCache('CATALOG_PRODUCT', $productID, $arCatalogProduct); } unset($rsProducts); } if (!empty($arCatalogProduct) && is_array($arCatalogProduct)) { $arCatalogProduct["QUANTITY"] = (double) $arCatalogProduct["QUANTITY"]; if ($arParams["CHECK_QUANTITY"] == "Y") { if ('Y' != $arCatalogProduct["CAN_BUY_ZERO"] && 'Y' == $arCatalogProduct["QUANTITY_TRACE"] && ($arCatalogProduct["QUANTITY"] <= 0 || $quantity > $arCatalogProduct["QUANTITY"])) { return $arResult; } } } else { return $arResult; } if ($adminSection) { CCatalogDiscountSave::SetDiscountUserID($intUserID); } $productHash = array('MODULE' => 'catalog', 'PRODUCT_ID' => $productID, 'BASKET_ID' => $arParams['BASKET_ID']); $arCoupons = DiscountCouponsManager::getForApply(array(), $productHash, true); if (!empty($arCoupons)) { $arCoupons = array_keys($arCoupons); } $currentVatMode = CCatalogProduct::getPriceVatIncludeMode(); $currentUseDiscount = CCatalogProduct::getUseDiscount(); CCatalogProduct::setUseDiscount($arParams['CHECK_DISCOUNT'] == 'Y'); CCatalogProduct::setPriceVatIncludeMode(true); CCatalogProduct::setUsedCurrency($arParams['CURRENCY']); $arPrice = CCatalogProduct::GetOptimalPrice($productID, $quantity, $userGroups, $arParams['RENEWAL'], array(), $adminSection ? $strSiteID : false, $arCoupons); if (empty($arPrice)) { if ($nearestQuantity = CCatalogProduct::GetNearestQuantityPrice($productID, $quantity, $userGroups)) { $quantity = $nearestQuantity; $arPrice = CCatalogProduct::GetOptimalPrice($productID, $quantity, $userGroups, $arParams['RENEWAL'], array(), $adminSection ? $strSiteID : false, $arCoupons); } } CCatalogProduct::clearUsedCurrency(); CCatalogProduct::setPriceVatIncludeMode($currentVatMode); CCatalogProduct::setUseDiscount($currentUseDiscount); unset($userGroups, $currentUseDiscount, $currentVatMode); if ($adminSection) { CCatalogDiscountSave::ClearDiscountUserID(); } if (empty($arPrice)) { return $arResult; } $arDiscountList = array(); if (empty($arPrice['DISCOUNT_LIST']) && !empty($arPrice['DISCOUNT']) && is_array($arPrice['DISCOUNT'])) { $arPrice['DISCOUNT_LIST'] = array($arPrice['DISCOUNT']); } if (!empty($arPrice['DISCOUNT_LIST'])) { $appliedCoupons = array(); foreach ($arPrice['DISCOUNT_LIST'] as &$arOneDiscount) { $arOneList = array('ID' => $arOneDiscount['ID'], 'NAME' => $arOneDiscount['NAME'], 'COUPON' => '', 'COUPON_TYPE' => '', 'USE_COUPONS' => isset($arOneDiscount['USE_COUPONS']) ? $arOneDiscount['USE_COUPONS'] : 'N', 'MODULE_ID' => isset($oneDiscount['MODULE_ID']) ? $oneDiscount['MODULE_ID'] : 'catalog', 'TYPE' => $arOneDiscount['TYPE'], 'VALUE' => $arOneDiscount['VALUE'], 'VALUE_TYPE' => $arOneDiscount['VALUE_TYPE'], 'MAX_VALUE' => $arOneDiscount['VALUE_TYPE'] == Catalog\DiscountTable::VALUE_TYPE_PERCENT ? $arOneDiscount['MAX_DISCOUNT'] : 0, 'CURRENCY' => $arOneDiscount['CURRENCY'], 'HANDLERS' => isset($arOneDiscount['HANDLERS']) ? $arOneDiscount['HANDLERS'] : array()); if (!empty($arOneDiscount['COUPON'])) { $arOneList['USE_COUPONS'] = 'Y'; $arOneList['COUPON'] = $arOneDiscount['COUPON']; $arOneList['COUPON_TYPE'] = $arOneDiscount['COUPON_ONE_TIME']; $appliedCoupons[] = $arOneDiscount['COUPON']; } $arDiscountList[] = $arOneList; } unset($arOneList, $arOneDiscount); if (!empty($appliedCoupons)) { $resultApply = DiscountCouponsManager::setApplyByProduct($productHash, $appliedCoupons); } unset($resultApply, $appliedCoupons); } if (empty($arPrice['PRICE']['CATALOG_GROUP_NAME'])) { if (!empty($arPrice['PRICE']['CATALOG_GROUP_ID'])) { $priceName = self::getPriceTitle($arPrice['PRICE']['CATALOG_GROUP_ID']); if ($priceName != '') { $arPrice['PRICE']['CATALOG_GROUP_NAME'] = $priceName; } unset($priceName); } } if (empty($arPrice['RESULT_PRICE']) || !is_array($arPrice['RESULT_PRICE'])) { $arPrice['RESULT_PRICE'] = CCatalogDiscount::calculateDiscountList($arPrice['PRICE'], $arParams['CURRENCY'], $arDiscountList, true); } $arResult = array('PRODUCT_PRICE_ID' => $arPrice['PRICE']['ID'], 'BASE_PRICE' => $arPrice['RESULT_PRICE']['BASE_PRICE'], 'PRICE' => $arPrice['RESULT_PRICE']['DISCOUNT_PRICE'], 'VAT_RATE' => $arPrice['PRICE']['VAT_RATE'], "CURRENCY" => $arPrice['RESULT_PRICE']['CURRENCY'], "WEIGHT" => (double) $arCatalogProduct["WEIGHT"], "DIMENSIONS" => serialize(array("WIDTH" => $arCatalogProduct["WIDTH"], "HEIGHT" => $arCatalogProduct["HEIGHT"], "LENGTH" => $arCatalogProduct["LENGTH"])), "NAME" => $arProduct["~NAME"], "CAN_BUY" => "Y", "DETAIL_PAGE_URL" => $arProduct['~DETAIL_PAGE_URL'], "NOTES" => $arPrice["PRICE"]["CATALOG_GROUP_NAME"], "DISCOUNT_PRICE" => $arPrice['RESULT_PRICE']['DISCOUNT'], "TYPE" => $arCatalogProduct["TYPE"] == CCatalogProduct::TYPE_SET ? CCatalogProductSet::TYPE_SET : null, "DISCOUNT_VALUE" => $arPrice['RESULT_PRICE']['PERCENT'] > 0 ? $arPrice['RESULT_PRICE']['PERCENT'] . '%' : 0, "DISCOUNT_NAME" => '', "DISCOUNT_COUPON" => '', "DISCOUNT_LIST" => array()); if ($arParams["CHECK_QUANTITY"] == "Y") { $arResult["QUANTITY"] = $quantity; } else { $arResult["QUANTITY"] = $arParams["QUANTITY"]; } if (!empty($arDiscountList)) { $arResult['DISCOUNT_LIST'] = $arDiscountList; } if (!empty($arPrice['DISCOUNT'])) { $arResult['DISCOUNT_NAME'] = '[' . $arPrice['DISCOUNT']['ID'] . '] ' . $arPrice['DISCOUNT']['NAME']; if (!empty($arPrice['DISCOUNT']['COUPON'])) { $arResult['DISCOUNT_COUPON'] = $arPrice['DISCOUNT']['COUPON']; } if (empty($arResult['DISCOUNT_LIST'])) { $arResult['DISCOUNT_LIST'] = array($arPrice['DISCOUNT']); } } $arResult["VAT_INCLUDED"] = "Y"; return $arResult; }
} $arParams["CACHE_TIME"] = intval($arParams["CACHE_TIME"]); if ($this->StartResultCache()) { if (!CModule::IncludeModule("currency")) { $this->AbortResultCache(); ShowError(GetMessage("CURRENCY_MODULE_NOT_INSTALLED")); return; } global $CACHE_MANAGER; $arResult = array(); $arResult["CURRENCY"] = array(); if ('' == $arParams["CURRENCY_BASE"]) { $arParams["CURRENCY_BASE"] = COption::GetOptionString("sale", "default_currency"); } if ('' == $arParams["CURRENCY_BASE"]) { $arParams["CURRENCY_BASE"] = Currency\CurrencyManager::getBaseCurrency(); } if ('' != $arParams["CURRENCY_BASE"]) { if ('' == $arParams["RATE_DAY"]) { $arResult["RATE_DAY_TIMESTAMP"] = time(); $arResult["RATE_DAY_SHOW"] = ConvertTimeStamp($arResult["RATE_DAY_TIMESTAMP"], 'SHORT'); } else { $arRATE_DAY_PARSED = ParseDateTime($arParams["RATE_DAY"], "YYYY-MM-DD"); $arRATE_DAY_PARSED['YYYY'] = intval($arRATE_DAY_PARSED['YYYY']); if (1901 > $arRATE_DAY_PARSED["YYYY"] || 2038 < $arRATE_DAY_PARSED["YYYY"]) { $arResult["RATE_DAY_TIMESTAMP"] = time(); $arResult["RATE_DAY_SHOW"] = ConvertTimeStamp($arResult["RATE_DAY_TIMESTAMP"], 'SHORT'); } else { $arResult["RATE_DAY_TIMESTAMP"] = mktime(0, 0, 0, $arRATE_DAY_PARSED["MM"], $arRATE_DAY_PARSED["DD"], $arRATE_DAY_PARSED["YYYY"]); $arResult["RATE_DAY_SHOW"] = ConvertTimeStamp($arResult["RATE_DAY_TIMESTAMP"], 'SHORT'); }
public static function Delete($ID) { global $DB; global $APPLICATION; /** @global CStackCacheManager $stackCacheManager */ global $stackCacheManager; $ID = (int) $ID; if ($ID <= 0) { return false; } foreach (GetModuleEvents("currency", "OnBeforeCurrencyRateDelete", true) as $arEvent) { if (ExecuteModuleEventEx($arEvent, array($ID)) === false) { return false; } } $arFields = CCurrencyRates::GetByID($ID); if (!is_array($arFields)) { $arMsg = array('id' => 'ID', 'text' => GetMessage('BT_MOD_CURR_ERR_RATE_CANT_DELETE_ABSENT_ID')); $e = new CAdminException($arMsg); $APPLICATION->ThrowException($e); return false; } $stackCacheManager->Clear("currency_rate"); $strSql = "DELETE FROM b_catalog_currency_rate WHERE ID = " . $ID; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); Currency\CurrencyManager::updateBaseRates($arFields['CURRENCY']); Currency\CurrencyManager::clearTagCache($arFields['CURRENCY']); self::$currentCache = array(); foreach (GetModuleEvents("currency", "OnCurrencyRateDelete", true) as $arEvent) { ExecuteModuleEventEx($arEvent, array($ID)); } return true; }
<?php /** @global CUser $USER */ use Bitrix\Main; use Bitrix\Currency; if ($USER->CanDoOperation('catalog_read') || $USER->CanDoOperation('catalog_price') || $USER->CanDoOperation('catalog_view')) { IncludeModuleLangFile($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/catalog/templates/product_edit.php'); $currencyList = array(); foreach (Currency\CurrencyManager::getCurrencyList() as $currency => $currencyName) { $currencyList[$currency] = array('CURRENCY' => $currency, 'FULL_NAME' => htmlspecialcharsex($currencyName), 'FULL_NAME_JS' => CUtil::JSEscape(htmlspecialcharsbx($currencyName))); } unset($currency, $currencyName); $IBLOCK_ID = (int) $IBLOCK_ID; if ($IBLOCK_ID <= 0) { return; } $MENU_SECTION_ID = (int) $MENU_SECTION_ID; $PRODUCT_ID = $ID > 0 ? CIBlockElement::GetRealElement($ID) : 0; $arBaseProduct = false; $periodTimeTypes = array(); if ($arMainCatalog['SUBSCRIPTION'] == 'Y') { $arDefProduct = array('QUANTITY' => '', 'QUANTITY_RESERVED' => '', 'VAT_ID' => 0, 'VAT_INCLUDED' => 'N', 'QUANTITY_TRACE_ORIG' => 'D', 'CAN_BUY_ZERO_ORIG' => 'D', 'PRICE_TYPE' => '', 'RECUR_SCHEME_TYPE' => '', 'RECUR_SCHEME_LENGTH' => '', 'TRIAL_PRICE_ID' => '', 'WITHOUT_ORDER' => '', 'PURCHASING_PRICE' => '', 'PURCHASING_CURRENCY' => '', 'BARCODE_MULTI' => '', 'SUBSCRIBE_ORIG' => 'D'); $periodTimeTypes = CCatalogProduct::GetTimePeriodTypes(true); } else { $arDefProduct = array('QUANTITY' => '', 'QUANTITY_RESERVED' => '', 'WEIGHT' => '', 'WIDTH' => '', 'LENGTH' => '', 'HEIGHT' => '', 'MEASURE' => '', 'VAT_ID' => 0, 'VAT_INCLUDED' => 'N', 'QUANTITY_TRACE_ORIG' => 'D', 'CAN_BUY_ZERO_ORIG' => 'D', 'PURCHASING_PRICE' => '', 'PURCHASING_CURRENCY' => '', 'BARCODE_MULTI' => '', 'SUBSCRIBE_ORIG' => 'D'); } if ($PRODUCT_ID > 0) { $bReadOnly = !($USER->CanDoOperation('catalog_price') && CIBlockElementRights::UserHasRightTo($IBLOCK_ID, $PRODUCT_ID, "element_edit_price")); if ($arMainCatalog['SUBSCRIPTION'] == 'Y') { $arProductSelect = array('ID', 'QUANTITY', 'QUANTITY_RESERVED', 'QUANTITY_TRACE_ORIG', 'VAT_ID', 'VAT_INCLUDED', 'CAN_BUY_ZERO_ORIG', 'PRICE_TYPE', 'RECUR_SCHEME_TYPE', 'RECUR_SCHEME_LENGTH', 'TRIAL_PRICE_ID', 'WITHOUT_ORDER', 'PURCHASING_PRICE', 'PURCHASING_CURRENCY', 'BARCODE_MULTI', 'SUBSCRIBE_ORIG', 'TYPE'); } else {
<tr> <td width="30%" class="adm-detail-required-field"><?=Loc::getMessage('SEO_YANDEX_STATS_PERIOD')?>:</td> <td width="70%"> <span style="white-space: nowrap; display:inline-block;"><select name="period_sel" onchange="setGraphInterval(this.value)"> <option value="interval"><?=Loc::getMessage('SEO_YANDEX_STATS_GRAPH_INTERVAL')?></option> <option value="week_ago"><?=Loc::getMessage('SEO_YANDEX_STATS_GRAPH_WEEK')?></option> <option value="month_ago"><?=Loc::getMessage('SEO_YANDEX_STATS_GRAPH_MONTH')?></option> </select> <span id="seo_graph_interval"><?=CalendarDate("date_from", $dateStart->toString(), 'form1', "4")?> …<?=CalendarDate("date_to", $dateFinish->toString(), 'form1', "4")?></span></span> <input type="button" value="<?=Loc::getMessage('SEO_YANDEX_STATS_PERIOD_APPLY')?>" onclick="loadGraphData()" id="stats_loading_button" name="template_preview"><span id="stats_wait" class="loading-message-text" style="display: none; margin-top: 5px;"><?=Loc::getMessage('SEO_YANDEX_STATS_WAIT')?></span> </td> </tr> <? if($bSale): ?> <tr> <td><?=Loc::getMessage('SEO_YANDEX_STATS_SUM_ORDER_REPIOD')?>:</td> <td><span id="banner_profit"><?=\CCurrencyLang::CurrencyFormat(doubleval($bannerProfit), \Bitrix\Currency\CurrencyManager::getBaseCurrency(), true)?></span></td> </tr> <? endif; ?> <tr> <td><?=Loc::getMessage('SEO_YANDEX_STATS_GRAPH_TYPE')?>:</td> <td><select onchange="setGraph(this.value)"> <option value="sum"><?=Loc::getMessage('SEO_YANDEX_STATS_GRAPH_TYPE_SUM')?></option> <option value="shows"><?=Loc::getMessage('SEO_YANDEX_STATS_GRAPH_TYPE_SHOWS')?></option> <option value="clicks"><?=Loc::getMessage('SEO_YANDEX_STATS_GRAPH_TYPE_CLICKS')?></option> </select></td> </tr> <tr> <td colspan="2"> <?
$arComponentParameters["PARAMETERS"]['CONVERT_CURRENCY'] = array( 'PARENT' => 'PRICES', 'NAME' => GetMessage('CP_BCS_CONVERT_CURRENCY'), 'TYPE' => 'CHECKBOX', 'DEFAULT' => 'N', 'REFRESH' => 'Y', ); if (isset($arCurrentValues['CONVERT_CURRENCY']) && $arCurrentValues['CONVERT_CURRENCY'] == 'Y') { $arComponentParameters['PARAMETERS']['CURRENCY_ID'] = array( 'PARENT' => 'PRICES', 'NAME' => GetMessage('CP_BCS_CURRENCY_ID'), 'TYPE' => 'LIST', 'VALUES' => Currency\CurrencyManager::getCurrencyList(), 'DEFAULT' => Currency\CurrencyManager::getBaseCurrency(), "ADDITIONAL_VALUES" => "Y", ); } } if (empty($offers)) { unset($arComponentParameters["PARAMETERS"]["OFFERS_FIELD_CODE"]); unset($arComponentParameters["PARAMETERS"]["OFFERS_PROPERTY_CODE"]); unset($arComponentParameters["PARAMETERS"]["OFFERS_SORT_FIELD"]); unset($arComponentParameters["PARAMETERS"]["OFFERS_SORT_ORDER"]); unset($arComponentParameters["PARAMETERS"]["OFFERS_SORT_FIELD2"]); unset($arComponentParameters["PARAMETERS"]["OFFERS_SORT_ORDER2"]); } else
/** * Convert discount data to other currency (sale currency). * * @param array &$discount Discout data. * @param string $currency New currency. * @return void */ public static function convertCurrency(&$discount, $currency) { $currency = Currency\CurrencyManager::checkCurrencyID($currency); if ($currency === false || empty($discount) || !is_array($discount)) { return; } if (!isset($discount['VALUE_TYPE']) || !isset($discount['CURRENCY']) || $discount['CURRENCY'] == $currency) { return; } switch ($discount['VALUE_TYPE']) { case self::VALUE_TYPE_FIX: case self::VALUE_TYPE_SALE: $discount['VALUE'] = roundEx(\CCurrencyRates::convertCurrency($discount['VALUE'], $discount['CURRENCY'], $currency), CATALOG_VALUE_PRECISION); $discount['CURRENCY'] = $currency; break; case self::VALUE_TYPE_PERCENT: if ($discount['MAX_DISCOUNT'] > 0) { $discount['MAX_DISCOUNT'] = roundEx(\CCurrencyRates::convertCurrency($discount['MAX_DISCOUNT'], $discount['CURRENCY'], $currency), CATALOG_VALUE_PRECISION); } $discount['CURRENCY'] = $currency; break; } }
/** * @param Basket $basketCollection * @param array $select * @param BasketItem $refreshItem * @return array * @throws NotSupportedException */ public static function getProductData(Basket $basketCollection, array $select = array(), BasketItem $refreshItem = null) { $result = array(); $orderId = null; $userId = null; $siteId = null; $currency = null; if (($order = $basketCollection->getOrder()) !== null) { $userId = $order->getUserId(); $siteId = $order->getSiteId(); $currency = $order->getCurrency(); } if ($userId === null) { static $usersIds = array(); if (empty($usersIds[$basketCollection->getFUserId(true)])) { $usersIds[$basketCollection->getFUserId(true)] = \CSaleUser::getUserID($basketCollection->getFUserId(true)); } $userId = $usersIds[$basketCollection->getFUserId(true)]; } if ($siteId === null) { $siteId = $basketCollection->getSiteId(); } if ($siteId === null) { return array(); } if ($currency === null) { $currency = Internals\SiteCurrencyTable::getSiteCurrency($siteId); if (!$currency) { $currency = Currency\CurrencyManager::getBaseCurrency(); } } $basketList = static::makeArrayFromBasketCollection($basketCollection, $refreshItem); $basketProviderMap = static::createProviderBasketMap($basketList, array('QUANTITY', 'RENEWAL')); $basketProviderList = static::redistributeToProviders($basketProviderMap); if (!empty($basketProviderList)) { $needPrice = in_array('PRICE', $select); $needBasePrice = in_array('BASE_PRICE', $select); $needCoupons = in_array('COUPONS', $select); $data = array('USER_ID' => (int) $userId, 'SITE_ID' => $siteId, 'CURRENCY' => $currency, 'CHECK_QUANTITY' => in_array('QUANTITY', $select) ? 'Y' : 'N', 'CHECK_PRICE' => $needPrice ? 'Y' : 'N', 'CHECK_COUPONS' => $needCoupons ? 'Y' : 'N', 'RENEWAL' => in_array('RENEWAL', $select) ? 'Y' : 'N'); if ($needBasePrice) { $data['CHECK_DISCOUNT'] = 'N'; } $useOrderProduct = false; if ($needPrice) { $useOrderProduct = true; } if ($needCoupons) { $useOrderProduct = false; } unset($needCoupons, $needPrice); foreach ($basketProviderList as $provider => $providerBasketItemList) { if ($provider instanceof Provider) { throw new NotSupportedException('provider not supported'); } elseif ($provider && array_key_exists("IBXSaleProductProvider", class_implements($provider))) { foreach ($providerBasketItemList as $providerBasketItem) { $currentUseOrderProduct = $useOrderProduct; if (!isset($providerBasketItem['BASKET_ID']) || (int) $providerBasketItem['BASKET_ID'] <= 0) { $currentUseOrderProduct = false; } $providerFields = $data; if ($providerBasketItem['BASKET_ITEM']->isBundleChild()) { $providerFields['CHECK_DISCOUNT'] = 'N'; } $providerFields['PRODUCT_ID'] = $providerBasketItem['PRODUCT_ID']; $providerFields['QUANTITY'] = $providerBasketItem['QUANTITY']; $hasTrustData = false; $trustData = static::getTrustData($siteId, $providerBasketItem['MODULE'], $providerBasketItem['PRODUCT_ID']); if (static::isReadTrustData() === true && !empty($trustData) && is_array($trustData)) { $hasTrustData = true; $resultProductData = $trustData; foreach (static::getProductDataRequiredFields() as $requiredField) { if (!array_key_exists($requiredField, $resultProductData)) { $hasTrustData = false; break; } } if ($hasTrustData && in_array('PRICE', $select)) { foreach (static::getProductDataRequiredPriceFields() as $requiredField) { if (!array_key_exists($requiredField, $resultProductData)) { $hasTrustData = false; break; } } } } if (!$hasTrustData) { $resultProductData = $currentUseOrderProduct ? $provider::OrderProduct($providerFields) : $provider::GetProductData($providerFields); } $basketCode = $providerBasketItem['BASKET_ITEM']->getBasketCode(); $result[$basketCode] = $resultProductData; } } else { foreach ($providerBasketItemList as $providerBasketItem) { $resultProductData = \CSaleBasket::executeCallbackFunction($providerBasketItem['CALLBACK_FUNC'], $providerBasketItem['MODULE'], $providerBasketItem['PRODUCT_ID'], $providerBasketItem['QUANTITY']); $basketCode = $providerBasketItem['BASKET_ITEM']->getBasketCode(); $result[$basketCode] = $resultProductData; } } } } return $result; }
/** * @return array * @throws \Exception */ protected function getConfigStructure() { $currency = $this->currency; if (Loader::includeModule('currency')) { $currencyList = Currency\CurrencyManager::getCurrencyList(); if (isset($currencyList[$this->currency])) { $currency = $currencyList[$this->currency]; } unset($currencyList); } return array("MAIN" => array("TITLE" => Loc::getMessage("SALE_DLVR_HANDL_CONF_TITLE"), "DESCRIPTION" => Loc::getMessage("SALE_DLVR_HANDL_CONF_DESCRIPTION"), "ITEMS" => array("CURRENCY" => array("TYPE" => "DELIVERY_READ_ONLY", "NAME" => Loc::getMessage("SALE_DLVR_HANDL_CONF_CURRENCY"), "VALUE" => $this->currency, "VALUE_VIEW" => $currency), "PRICE" => array("TYPE" => "NUMBER", "MIN" => 0, "NAME" => Loc::getMessage("SALE_DLVR_HANDL_CONF_PRICE")), "PERIOD" => array("TYPE" => "DELIVERY_PERIOD", "NAME" => Loc::getMessage("SALE_DLVR_HANDL_CONF_PERIOD_DLV"), "ITEMS" => array("FROM" => array("TYPE" => "NUMBER", "MIN" => 0, "NAME" => ""), "TO" => array("TYPE" => "NUMBER", "MIN" => 0, "NAME" => " - "), "TYPE" => array("TYPE" => "ENUM", "OPTIONS" => array("H" => Loc::getMessage("SALE_DLVR_HANDL_CONF_PERIOD_HOUR"), "D" => Loc::getMessage("SALE_DLVR_HANDL_CONF_PERIOD_DAY"), "M" => Loc::getMessage("SALE_DLVR_HANDL_CONF_PERIOD_MONTH")))))))); }
$filterFields = array(); if (!isset($by)) $by = 'SORT'; if (!isset($order)) $order = 'ASC'; $by = strtoupper($by); $order = strtoupper($order); if ($adminList->EditAction() && $CURRENCY_RIGHT == "W") { if (isset($FIELDS) && is_array($FIELDS)) { foreach ($FIELDS as $ID => $arFields) { $ID = Currency\CurrencyManager::checkCurrencyID($ID); if ($ID === false) continue; if (!$adminList->IsUpdated($ID)) continue; if (!CCurrency::Update($ID, $arFields)) { if ($ex = $APPLICATION->GetException()) { $adminList->AddUpdateError(GetMessage("CURRENCY_SAVE_ERR", array("#ID#" => $ID, "#ERROR_TEXT#" => $ex->GetString())), $ID); } else { $adminList->AddUpdateError(GetMessage("CURRENCY_SAVE_ERR2", array("#ID#"=>$ID)), $ID);
$boolPriceInc = true; } } if (is_array($arCatGroup) && !empty($arCatGroup)) { foreach ($arCatGroup as &$CatalogGroups) { if (in_array("CATALOG_GROUP_" . $CatalogGroups["ID"], $arSelectedFields)) { $arFilter["CATALOG_SHOP_QUANTITY_" . $CatalogGroups["ID"]] = 1; $boolPriceInc = true; } } unset($CatalogGroups); } if ($boolPriceInc) { $boolSubCurrency = Loader::includeModule('currency'); if ($boolSubCurrency) { $arCurrencyList = array_keys(Currency\CurrencyManager::getCurrencyList()); } } unset($boolPriceInc); } $arSelectedFieldsMap = array(); foreach ($arSelectedFields as $field) { $arSelectedFieldsMap[$field] = true; } $measureList = array(0 => ' '); if (isset($arSelectedFieldsMap['CATALOG_MEASURE'])) { $measureIterator = CCatalogMeasure::getList(array(), array(), false, false, array('ID', 'MEASURE_TITLE', 'SYMBOL_RUS')); while ($measure = $measureIterator->Fetch()) { $measureList[$measure['ID']] = $measure['SYMBOL_RUS'] != '' ? $measure['SYMBOL_RUS'] : $measure['MEASURE_TITLE']; } unset($measure, $measureIterator);
" onclick="loadGraphData()" id="stats_loading_button" name="template_preview"><span id="stats_wait" class="loading-message-text" style="display: none; margin-top: 5px;"><?php echo Loc::getMessage('SEO_YANDEX_STATS_WAIT'); ?> </span> </td> </tr> <?php if ($bSale) { ?> <tr> <td><?php echo Loc::getMessage('SEO_YANDEX_STATS_SUM_ORDER_REPIOD'); ?> :</td> <td><span id="banner_profit"><?php echo \CCurrencyLang::CurrencyFormat(doubleval($bannerProfit), \Bitrix\Currency\CurrencyManager::getBaseCurrency(), true); ?> </span></td> </tr> <?php } ?> <tr> <td><?php echo Loc::getMessage('SEO_YANDEX_STATS_GRAPH_TYPE'); ?> :</td> <td><select onchange="setGraph(this.value)"> <option value="sum"><?php echo Loc::getMessage('SEO_YANDEX_STATS_GRAPH_TYPE_SUM'); ?>
"#ID#" => $banner["BANNER_ID"], "#XML_ID#" => $banner["BANNER_XML_ID"], )).'">'.Converter::getHtmlConverter()->encode($banner['BANNER_NAME']).'</a>'); $row->AddViewField('XML_ID', '<a href="https://direct.yandex.ru/registered/main.pl?cmd=showCampMultiEdit&bids='.$banner['BANNER_XML_ID'].'&cid='.$campaign['XML_ID'].'" target="_blank" title="'.Converter::getHtmlConverter()->encode(Loc::getMessage('SEO_CAMPAIGN_EDIT_EXTERNAL')).'">'.Loc::getMessage('SEO_YANDEX_DIRECT_LINK_TPL', array('#XML_ID#' => $banner['BANNER_XML_ID'])).'</a>'); $row->AddViewField("BANNER_SUM", number_format($banner['BANNER_SUM'], 2, '.', ' ')); $row->AddViewField("BANNER_SHOWS", $banner['BANNER_SHOWS']); $row->AddViewField("BANNER_CLICKS", $banner['BANNER_CLICKS']); $row->AddViewField("BANNER_CTR", number_format($banner['BANNER_CTR'], 2, '.', ' ')); if($bShowOrderStats) { $row->AddViewField("BANNER_SUM_ORDER", \CCurrencyLang::CurrencyFormat(doubleval($banner['BANNER_SUM_ORDER']), \Bitrix\Currency\CurrencyManager::getBaseCurrency(), true)); } } } $statsAdminList->checkListMode(); } if($ID <= 0) { $campaign = array( "SETTINGS" => array( "Name" => Loc::getMessage("SEO_CAMPAIGN_NAME_DEFAULT", array("#DATE#" => ConvertTimeStamp())), "FIO" => $currentUser['real_name'], "StartDate" => ConvertTimeStamp(), "EmailNotification" => array(
<?php use Bitrix\Conversion\Config; use Bitrix\Currency\CurrencyManager; use Bitrix\Main\Loader; use Bitrix\Main\Localization\Loc; Loc::loadMessages($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/options.php'); Loc::loadMessages(__FILE__); if (!$USER->IsAdmin()) { return; } $modules = Config::getModules(); // TODO all modules with attributes must be active unset($modules['conversion'], $modules['abtest'], $modules['sender'], $modules['seo']); $currency = Config::getBaseCurrency(); if (!(Loader::includeModule('currency') && ($currencies = CurrencyManager::getCurrencyList()))) { $currencies = array($currency => $currency); } if ($REQUEST_METHOD == 'POST' && strlen($Update . $Apply . $RestoreDefaults) > 0 && check_bitrix_sessid()) { if (strlen($RestoreDefaults) > 0) { Config::setBaseCurrency(null); $currency = Config::getBaseCurrency(); Config::setModules(array()); $modules = Config::getModules(); } else { if ($currencies[$_POST['CURRENCY']]) { $currency = $_POST['CURRENCY']; Config::setBaseCurrency($currency); } foreach ($modules as $name => $config) { $modules[$name]['ACTIVE'] = isset($_POST['MODULE'][$name]['ACTIVE']);
public static function isExistCurrencyLanguage($currency, $language) { global $DB; $currency = Currency\CurrencyManager::checkCurrencyID($currency); $language = Currency\CurrencyManager::checkLanguage($language); if ($currency === false || $language === false) return false; $query = "select LID from b_catalog_currency_lang where CURRENCY = '".$DB->ForSql($currency)."' and LID = '".$DB->ForSql($language)."'"; $searchIterator = $DB->Query($query, false, 'File: '.__FILE__.'<br>Line: '.__LINE__); if ($result = $searchIterator->Fetch()) { return true; } return false; }
fwrite($fp, '<platform>1C-Bitrix</platform>'."\n"); $strTmp = '<currencies>'."\n"; $RUR = 'RUB'; $currencyIterator = Currency\CurrencyTable::getList(array( 'select' => array('CURRENCY'), 'filter' => array('=CURRENCY' => 'RUR') )); if ($currency = $currencyIterator->fetch()) $RUR = 'RUR'; unset($currency, $currencyIterator); $arCurrencyAllowed = array($RUR, 'USD', 'EUR', 'UAH', 'BYR', 'KZT'); $BASE_CURRENCY = Currency\CurrencyManager::getBaseCurrency(); if (is_array($XML_DATA['CURRENCY'])) { foreach ($XML_DATA['CURRENCY'] as $CURRENCY => $arCurData) { if (in_array($CURRENCY, $arCurrencyAllowed)) { $strTmp.= '<currency id="'.$CURRENCY.'"' .' rate="'.($arCurData['rate'] == 'SITE' ? CCurrencyRates::ConvertCurrency(1, $CURRENCY, $RUR) : $arCurData['rate']).'"' .($arCurData['plus'] > 0 ? ' plus="'.(int)$arCurData['plus'].'"' : '') ." />\n"; } } unset($CURRENCY, $arCurData); } else
$arPrice = array(); if ($catalogIncluded) { $arPrice = CCatalogIBlockParameters::getPriceTypesList(); } $arProperty_UF = array(); $arSProperty_LNS = array(); if ($iblockExists) { $arUserFields = $GLOBALS["USER_FIELD_MANAGER"]->GetUserFields("IBLOCK_" . $arCurrentValues["IBLOCK_ID"] . "_SECTION"); foreach ($arUserFields as $FIELD_NAME => $arUserField) { $arProperty_UF[$FIELD_NAME] = $arUserField["LIST_COLUMN_LABEL"] ? $arUserField["LIST_COLUMN_LABEL"] : $FIELD_NAME; if ($arUserField["USER_TYPE"]["BASE_TYPE"] == "string") { $arSProperty_LNS[$FIELD_NAME] = $arProperty_UF[$FIELD_NAME]; } } unset($arUserFields, $FIELD_NAME, $arUserField); } $arComponentParameters = array("GROUPS" => array("PRICES" => array("NAME" => GetMessage("CP_BCSF_PRICES")), "XML_EXPORT" => array("NAME" => GetMessage("CP_BCSF_GROUP_XML_EXPORT"))), "PARAMETERS" => array("SEF_MODE" => array(), "SEF_RULE" => array("VALUES" => array("SECTION_ID" => array("TEXT" => GetMessage("CP_BCSF_SECTION_ID"), "TEMPLATE" => "#SECTION_ID#", "PARAMETER_LINK" => "SECTION_ID", "PARAMETER_VALUE" => '={$_REQUEST["SECTION_ID"]}'), "SECTION_CODE" => array("TEXT" => GetMessage("CP_BCSF_SECTION_CODE"), "TEMPLATE" => "#SECTION_CODE#", "PARAMETER_LINK" => "SECTION_CODE", "PARAMETER_VALUE" => '={$_REQUEST["SECTION_CODE"]}'), "SECTION_CODE_PATH" => array("TEXT" => GetMessage("CP_BCSF_SECTION_CODE_PATH"), "TEMPLATE" => "#SECTION_CODE_PATH#", "PARAMETER_LINK" => "SECTION_CODE_PATH", "PARAMETER_VALUE" => '={$_REQUEST["SECTION_CODE_PATH"]}'), "SMART_FILTER_PATH" => array("TEXT" => GetMessage("CP_BCSF_SMART_FILTER_PATH"), "TEMPLATE" => "#SMART_FILTER_PATH#", "PARAMETER_LINK" => "SMART_FILTER_PATH", "PARAMETER_VALUE" => '={$_REQUEST["SMART_FILTER_PATH"]}'))), "IBLOCK_TYPE" => array("PARENT" => "DATA_SOURCE", "NAME" => GetMessage("CP_BCSF_IBLOCK_TYPE"), "TYPE" => "LIST", "ADDITIONAL_VALUES" => "Y", "VALUES" => $arIBlockType, "REFRESH" => "Y"), "IBLOCK_ID" => array("PARENT" => "DATA_SOURCE", "NAME" => GetMessage("CP_BCSF_IBLOCK_ID"), "TYPE" => "LIST", "ADDITIONAL_VALUES" => "Y", "VALUES" => $arIBlock, "REFRESH" => "Y"), "SECTION_ID" => array("PARENT" => "DATA_SOURCE", "NAME" => GetMessage("CP_BCSF_SECTION_ID"), "TYPE" => "STRING", "DEFAULT" => '={$_REQUEST["SECTION_ID"]}'), "SECTION_CODE" => array("PARENT" => "DATA_SOURCE", "NAME" => GetMessage("CP_BCSF_SECTION_CODE"), "TYPE" => "STRING", "DEFAULT" => ''), "FILTER_NAME" => array("PARENT" => "DATA_SOURCE", "NAME" => GetMessage("CP_BCSF_FILTER_NAME"), "TYPE" => "STRING", "DEFAULT" => "arrFilter"), "PRICE_CODE" => array("PARENT" => "PRICES", "NAME" => GetMessage("CP_BCSF_PRICE_CODE"), "TYPE" => "LIST", "MULTIPLE" => "Y", "VALUES" => $arPrice), "CACHE_TIME" => array("DEFAULT" => 36000000), "CACHE_GROUPS" => array("PARENT" => "CACHE_SETTINGS", "NAME" => GetMessage("CP_BCSF_CACHE_GROUPS"), "TYPE" => "CHECKBOX", "DEFAULT" => "Y"), "SAVE_IN_SESSION" => array("PARENT" => "ADDITIONAL_SETTINGS", "NAME" => GetMessage("CP_BCSF_SAVE_IN_SESSION"), "TYPE" => "CHECKBOX", "DEFAULT" => "N"), "INSTANT_RELOAD" => array("PARENT" => "ADDITIONAL_SETTINGS", "NAME" => GetMessage("CP_BCSF_INSTANT_RELOAD"), "TYPE" => "CHECKBOX", "DEFAULT" => "N"), "XML_EXPORT" => array("PARENT" => "XML_EXPORT", "NAME" => GetMessage("CP_BCSF_XML_EXPORT"), "TYPE" => "CHECKBOX", "DEFAULT" => "N"), "SECTION_TITLE" => array("PARENT" => "XML_EXPORT", "NAME" => GetMessage("CP_BCSF_SECTION_TITLE"), "TYPE" => "LIST", "MULTIPLE" => "N", "DEFAULT" => "-", "VALUES" => array_merge(array("-" => " ", "NAME" => GetMessage("IBLOCK_FIELD_NAME")), $arSProperty_LNS)), "SECTION_DESCRIPTION" => array("PARENT" => "XML_EXPORT", "NAME" => GetMessage("CP_BCSF_SECTION_DESCRIPTION"), "TYPE" => "LIST", "MULTIPLE" => "N", "DEFAULT" => "-", "VALUES" => array_merge(array("-" => " ", "NAME" => GetMessage("IBLOCK_FIELD_NAME"), "DESCRIPTION" => GetMessage("IBLOCK_FIELD_DESCRIPTION")), $arSProperty_LNS)))); if ($arCurrentValues["SEF_MODE"] == "Y") { $arComponentParameters["PARAMETERS"]["SECTION_CODE_PATH"] = array("NAME" => GetMessage("CP_BCSF_SECTION_CODE_PATH"), "TYPE" => "STRING", "DEFAULT" => ""); $arComponentParameters["PARAMETERS"]["SMART_FILTER_PATH"] = array("NAME" => GetMessage("CP_BCSF_SMART_FILTER_PATH"), "TYPE" => "STRING", "DEFAULT" => ""); } if ($catalogIncluded) { $arComponentParameters["PARAMETERS"]['HIDE_NOT_AVAILABLE'] = array('PARENT' => 'DATA_SOURCE', 'NAME' => GetMessage('CP_BCSF_HIDE_NOT_AVAILABLE'), 'TYPE' => 'CHECKBOX', 'DEFAULT' => 'N'); $arComponentParameters["PARAMETERS"]['CONVERT_CURRENCY'] = array('PARENT' => 'PRICES', 'NAME' => GetMessage('CP_BCSF_CONVERT_CURRENCY'), 'TYPE' => 'CHECKBOX', 'DEFAULT' => 'N', 'REFRESH' => 'Y'); if (isset($arCurrentValues['CONVERT_CURRENCY']) && $arCurrentValues['CONVERT_CURRENCY'] == 'Y') { $arComponentParameters['PARAMETERS']['CURRENCY_ID'] = array('PARENT' => 'PRICES', 'NAME' => GetMessage('CP_BCSF_CURRENCY_ID'), 'TYPE' => 'LIST', 'VALUES' => Currency\CurrencyManager::getCurrencyList(), 'DEFAULT' => Currency\CurrencyManager::getBaseCurrency(), "ADDITIONAL_VALUES" => "Y"); } } if (empty($arPrice)) { unset($arComponentParameters["PARAMETERS"]["PRICE_CODE"]); }
protected static function updateBaseRates($currency = '', $updateCurrency = '') { global $DB; if ($currency === '') { $currency = (string) Currency\CurrencyManager::getBaseCurrency(); } if ($currency === '') { return; } if ($updateCurrency != '') { $factor = 1; if ($updateCurrency != $currency) { $factor = CCurrencyRates::GetConvertFactor($updateCurrency, $currency); } $query = "update b_catalog_currency set CURRENT_BASE_RATE = " . (double) $factor . " where CURRENCY = '" . $updateCurrency . "'"; $DB->Query($query, false, 'File: ' . __FILE__ . '<br>Line: ' . __LINE__); } else { $query = "select CURRENCY from b_catalog_currency"; $currencyIterator = $DB->Query($query, false, 'File: ' . __FILE__ . '<br>Line: ' . __LINE__); while ($oneCurrency = $currencyIterator->Fetch()) { $factor = 1; if ($oneCurrency['CURRENCY'] != $currency) { $factor = CCurrencyRates::GetConvertFactor($oneCurrency['CURRENCY'], $currency); } $query = "update b_catalog_currency set CURRENT_BASE_RATE = " . (double) $factor . " where CURRENCY = '" . $oneCurrency['CURRENCY'] . "'"; $DB->Query($query, false, 'File: ' . __FILE__ . '<br>Line: ' . __LINE__); } } }
?> &mid=<?php echo $module_id; ?> " name="currency_settings"> <?php echo bitrix_sessid_post(); $tabControl->BeginNextTab(); ?> <tr> <td width="40%"><?php echo Loc::getMessage('BASE_CURRENCY'); ?> </td> <td width="60%"><select name="BASE_CURRENCY"><?php $currencyList = Currency\CurrencyManager::getCurrencyList(); if (!empty($currencyList)) { foreach ($currencyList as $currency => $title) { ?> <option value="<?php echo $currency; ?> "<?php echo $currency == $baseCurrency ? ' selected' : ''; ?> ><?php echo htmlspecialcharsex($title); ?> </option><?php } unset($title, $currency);
protected function installCurrencies() { if (!Loader::includeModule('currency')) { return; } $bitrix24Path = $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/bitrix24/'; $bitrix24 = file_exists($bitrix24Path) && is_dir($bitrix24Path); unset($bitrix24Path); $currencyIterator = \Bitrix\Currency\CurrencyTable::getList(array('select' => array('CURRENCY'), 'limit' => 1)); $currency = $currencyIterator->fetch(); if (!empty($currency)) { return; } $languageID = ''; $siteIterator = SiteTable::getList(array('select' => array('LID', 'LANGUAGE_ID'), 'filter' => array('=DEF' => 'Y', '=ACTIVE' => 'Y'))); if ($site = $siteIterator->fetch()) { $languageID = (string) $site['LANGUAGE_ID']; } unset($site, $siteIterator); if ($languageID == '') { $languageID = 'en'; } $currencyList = array(); $currencySetID = ''; switch ($languageID) { case 'ua': case 'de': case 'en': case 'la': case 'tc': case 'sc': case 'in': $currencySetID = $languageID; break; case 'ru': if (!$bitrix24) { $languageIterator = LanguageTable::getList(array('select' => array('ID'), 'filter' => array('=ID' => 'kz', '=ACTIVE' => 'Y'))); if ($existLanguage = $languageIterator->fetch()) { $currencySetID = $existLanguage['ID']; } if ($currencySetID == '') { $languageIterator = LanguageTable::getList(array('select' => array('ID'), 'filter' => array('=ID' => 'ua', '=ACTIVE' => 'Y'))); if ($existLanguage = $languageIterator->fetch()) { $currencySetID = $existLanguage['ID']; } } unset($existLanguage, $languageIterator); } if ($currencySetID == '') { $currencySetID = $languageID; } break; default: $currencySetID = 'en'; break; } $datetimeEntity = new Main\DB\SqlExpression(Main\Application::getConnection()->getSqlHelper()->getCurrentDateTimeFunction()); switch ($currencySetID) { case 'kz': $addCurrency = array(array('CURRENCY' => 'KZT', 'NUMCODE' => '398', 'AMOUNT' => 1, 'AMOUNT_CNT' => 1, 'SORT' => 100, 'BASE' => 'Y', 'CURRENT_BASE_RATE' => 1), array('CURRENCY' => 'RUB', 'NUMCODE' => '643', 'AMOUNT' => 4.4, 'AMOUNT_CNT' => 1, 'SORT' => 200, 'BASE' => 'N', 'CURRENT_BASE_RATE' => 4.4), array('CURRENCY' => 'USD', 'NUMCODE' => '840', 'AMOUNT' => 283.17, 'AMOUNT_CNT' => 1, 'SORT' => 300, 'BASE' => 'N', 'CURRENT_BASE_RATE' => 283.17), array('CURRENCY' => 'EUR', 'NUMCODE' => '978', 'AMOUNT' => 310.78, 'AMOUNT_CNT' => 1, 'SORT' => 400, 'BASE' => 'N', 'CURRENT_BASE_RATE' => 310.78)); break; case 'ua': $addCurrency = array(array('CURRENCY' => 'UAH', 'NUMCODE' => '980', 'AMOUNT' => 1, 'AMOUNT_CNT' => 1, 'SORT' => 100, 'BASE' => 'Y', 'CURRENT_BASE_RATE' => 1), array('CURRENCY' => 'RUB', 'NUMCODE' => '643', 'AMOUNT' => 3.61, 'AMOUNT_CNT' => 10, 'SORT' => 200, 'BASE' => 'N', 'CURRENT_BASE_RATE' => 0.361), array('CURRENCY' => 'USD', 'NUMCODE' => '840', 'AMOUNT' => 2322.93, 'AMOUNT_CNT' => 100, 'SORT' => 300, 'BASE' => 'N', 'CURRENT_BASE_RATE' => 23.2293), array('CURRENCY' => 'EUR', 'NUMCODE' => '978', 'AMOUNT' => 2548.19, 'AMOUNT_CNT' => 100, 'SORT' => 400, 'BASE' => 'N', 'CURRENT_BASE_RATE' => 25.4819)); break; case 'ru': $addCurrency = array(array('CURRENCY' => 'RUB', 'NUMCODE' => '643', 'AMOUNT' => 1, 'AMOUNT_CNT' => 1, 'SORT' => 100, 'BASE' => 'Y', 'CURRENT_BASE_RATE' => 1), array('CURRENCY' => 'USD', 'NUMCODE' => '840', 'AMOUNT' => 64.36, 'AMOUNT_CNT' => 1, 'SORT' => 200, 'BASE' => 'N', 'CURRENT_BASE_RATE' => 64.36), array('CURRENCY' => 'EUR', 'NUMCODE' => '978', 'AMOUNT' => 70.59999999999999, 'AMOUNT_CNT' => 1, 'SORT' => 300, 'BASE' => 'N', 'CURRENT_BASE_RATE' => 70.59999999999999), array('CURRENCY' => 'UAH', 'NUMCODE' => '980', 'AMOUNT' => 27.69, 'AMOUNT_CNT' => 10, 'SORT' => 400, 'BASE' => 'N', 'CURRENT_BASE_RATE' => 2.769), array('CURRENCY' => 'BYR', 'NUMCODE' => '974', 'AMOUNT' => 36.9, 'AMOUNT_CNT' => 10000, 'SORT' => 500, 'BASE' => 'N', 'CURRENT_BASE_RATE' => 0.00369)); break; case 'de': case 'la': $addCurrency = array(array('CURRENCY' => 'EUR', 'NUMCODE' => '978', 'AMOUNT' => 1, 'AMOUNT_CNT' => 1, 'SORT' => 100, 'BASE' => 'Y', 'CURRENT_BASE_RATE' => 1), array('CURRENCY' => 'USD', 'NUMCODE' => '840', 'AMOUNT' => 0.91, 'AMOUNT_CNT' => 1, 'SORT' => 200, 'BASE' => 'N', 'CURRENT_BASE_RATE' => 0.91), array('CURRENCY' => 'CNY', 'NUMCODE' => '156', 'AMOUNT' => 14.35, 'AMOUNT_CNT' => 100, 'SORT' => 300, 'BASE' => 'N', 'CURRENT_BASE_RATE' => 0.1435), array('CURRENCY' => 'BRL', 'NUMCODE' => '986', 'AMOUNT' => 23.21, 'AMOUNT_CNT' => 100, 'SORT' => 400, 'BASE' => 'N', 'CURRENT_BASE_RATE' => 0.2321), array('CURRENCY' => 'INR', 'NUMCODE' => '356', 'AMOUNT' => 13.97, 'AMOUNT_CNT' => 1000, 'SORT' => 500, 'BASE' => 'N', 'CURRENT_BASE_RATE' => 0.01397)); break; case 'tc': case 'sc': $addCurrency = array(array('CURRENCY' => 'CNY', 'NUMCODE' => '156', 'AMOUNT' => 1, 'AMOUNT_CNT' => 1, 'SORT' => 100, 'BASE' => 'Y', 'CURRENT_BASE_RATE' => 1), array('CURRENCY' => 'USD', 'NUMCODE' => '840', 'AMOUNT' => 6.36, 'AMOUNT_CNT' => 1, 'SORT' => 200, 'BASE' => 'N', 'CURRENT_BASE_RATE' => 6.36), array('CURRENCY' => 'EUR', 'NUMCODE' => '978', 'AMOUNT' => 6.97, 'AMOUNT_CNT' => 1, 'SORT' => 300, 'BASE' => 'N', 'CURRENT_BASE_RATE' => 6.97), array('CURRENCY' => 'BRL', 'NUMCODE' => '986', 'AMOUNT' => 1.61, 'AMOUNT_CNT' => 1, 'SORT' => 400, 'BASE' => 'N', 'CURRENT_BASE_RATE' => 1.61), array('CURRENCY' => 'INR', 'NUMCODE' => '356', 'AMOUNT' => 9.74, 'AMOUNT_CNT' => 100, 'SORT' => 500, 'BASE' => 'N', 'CURRENT_BASE_RATE' => 0.09737)); break; case 'in': $addCurrency = array(array('CURRENCY' => 'INR', 'NUMCODE' => '356', 'AMOUNT' => 1, 'AMOUNT_CNT' => 1, 'SORT' => 100, 'BASE' => 'Y', 'CURRENT_BASE_RATE' => 1), array('CURRENCY' => 'USD', 'NUMCODE' => '840', 'AMOUNT' => 65.31, 'AMOUNT_CNT' => 1, 'SORT' => 200, 'BASE' => 'N', 'CURRENT_BASE_RATE' => 65.31), array('CURRENCY' => 'EUR', 'NUMCODE' => '978', 'AMOUNT' => 71.56, 'AMOUNT_CNT' => 1, 'SORT' => 300, 'BASE' => 'N', 'CURRENT_BASE_RATE' => 71.56), array('CURRENCY' => 'CNY', 'NUMCODE' => '156', 'AMOUNT' => 10.27, 'AMOUNT_CNT' => 1, 'SORT' => 400, 'BASE' => 'N', 'CURRENT_BASE_RATE' => 10.27), array('CURRENCY' => 'BRL', 'NUMCODE' => '986', 'AMOUNT' => 16.56, 'AMOUNT_CNT' => 1, 'SORT' => 500, 'BASE' => 'N', 'CURRENT_BASE_RATE' => 16.56)); break; case 'br': $addCurrency = array(array('CURRENCY' => 'BRL', 'NUMCODE' => '986', 'AMOUNT' => 1, 'AMOUNT_CNT' => 1, 'SORT' => 100, 'BASE' => 'Y', 'CURRENT_BASE_RATE' => 1), array('CURRENCY' => 'USD', 'NUMCODE' => '840', 'AMOUNT' => 3.9, 'AMOUNT_CNT' => 1, 'SORT' => 200, 'BASE' => 'N', 'CURRENT_BASE_RATE' => 3.9), array('CURRENCY' => 'EUR', 'NUMCODE' => '978', 'AMOUNT' => 4.29, 'AMOUNT_CNT' => 1, 'SORT' => 300, 'BASE' => 'N', 'CURRENT_BASE_RATE' => 4.29), array('CURRENCY' => 'CNY', 'NUMCODE' => '156', 'AMOUNT' => 61.44, 'AMOUNT_CNT' => 100, 'SORT' => 400, 'BASE' => 'N', 'CURRENT_BASE_RATE' => 0.6143999999999999), array('CURRENCY' => 'INR', 'NUMCODE' => '356', 'AMOUNT' => 5.99, 'AMOUNT_CNT' => 100, 'SORT' => 500, 'BASE' => 'N', 'CURRENT_BASE_RATE' => 0.0599)); break; default: case 'en': $addCurrency = array(array('CURRENCY' => 'USD', 'NUMCODE' => '840', 'AMOUNT' => 1, 'AMOUNT_CNT' => 1, 'SORT' => 100, 'BASE' => 'Y', 'CURRENT_BASE_RATE' => 1), array('CURRENCY' => 'EUR', 'NUMCODE' => '978', 'AMOUNT' => 1.1, 'AMOUNT_CNT' => 1, 'SORT' => 200, 'BASE' => 'N', 'CURRENT_BASE_RATE' => 1.1), array('CURRENCY' => 'CNY', 'NUMCODE' => '156', 'AMOUNT' => 15.73, 'AMOUNT_CNT' => 100, 'SORT' => 300, 'BASE' => 'N', 'CURRENT_BASE_RATE' => 0.1573), array('CURRENCY' => 'BRL', 'NUMCODE' => '986', 'AMOUNT' => 25.35, 'AMOUNT_CNT' => 100, 'SORT' => 400, 'BASE' => 'N', 'CURRENT_BASE_RATE' => 0.2535), array('CURRENCY' => 'INR', 'NUMCODE' => '356', 'AMOUNT' => 15.31, 'AMOUNT_CNT' => 1000, 'SORT' => 500, 'BASE' => 'N', 'CURRENT_BASE_RATE' => 0.01531)); break; } foreach ($addCurrency as &$fields) { $fields['CREATED_BY'] = null; $fields['MODIFIED_BY'] = null; $fields['DATE_CREATE'] = $datetimeEntity; $fields['DATE_UPDATE'] = $datetimeEntity; $currencyResult = \Bitrix\Currency\CurrencyTable::add($fields); if ($currencyResult->isSuccess()) { $currencyList[] = $fields['CURRENCY']; } } unset($currencyResult, $fields); if (!empty($currencyList)) { Option::set('currency', 'installed_currencies', implode(',', $currencyList), ''); $languageIterator = LanguageTable::getList(array('select' => array('ID'), 'filter' => array('=ACTIVE' => 'Y'))); while ($existLanguage = $languageIterator->fetch()) { $messList = Loc::loadLanguageFile($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/currency/install_lang.php', $existLanguage['ID']); foreach ($currencyList as &$oneCurrency) { $fields = array('LID' => $existLanguage['ID'], 'CURRENCY' => $oneCurrency, 'THOUSANDS_SEP' => false, 'DECIMALS' => 2, 'HIDE_ZERO' => 'Y', 'FORMAT_STRING' => $messList['CUR_INSTALL_' . $oneCurrency . '_FORMAT_STRING'], 'FULL_NAME' => $messList['CUR_INSTALL_' . $oneCurrency . '_FULL_NAME'], 'DEC_POINT' => $messList['CUR_INSTALL_' . $oneCurrency . '_DEC_POINT'], 'THOUSANDS_VARIANT' => $messList['CUR_INSTALL_' . $oneCurrency . '_THOUSANDS_SEP'], 'CREATED_BY' => null, 'MODIFIED_BY' => null, 'DATE_CREATE' => $datetimeEntity, 'TIMESTAMP_X' => $datetimeEntity); $resultCurrencyLang = \Bitrix\Currency\CurrencyLangTable::add($fields); unset($resultCurrencyLang); } unset($oneCurrency, $messList); } unset($existLanguage, $languageIterator); if (!$bitrix24) { $checkDate = Main\Type\DateTime::createFromTimestamp(strtotime('tomorrow 00:01:00')); CAgent::AddAgent('\\Bitrix\\Currency\\CurrencyTable::currencyBaseRateAgent();', 'currency', 'Y', 86400, '', 'Y', $checkDate->toString(), 100, false, true); unset($checkDate); } \Bitrix\Currency\CurrencyManager::clearCurrencyCache(); } unset($datetimeEntity); }
protected static function getProductProfit($productInfo) { if (strlen($productInfo['GROSS_PROFIT']) > 0) { $profit = doubleval($productInfo['GROSS_PROFIT']); } else { $purchasingCost = 0; if (strlen($productInfo['SUMMARY_PURCHASING_PRICE']) > 0) { $purchasingCost = doubleval($productInfo['SUMMARY_PURCHASING_PRICE']); } else { $dbRes = ProductTable::getList(array('filter' => array('=ID' => $productInfo['PRODUCT_ID']), 'select' => array('ID', 'PURCHASING_PRICE', 'PURCHASING_CURRENCY'))); $productInfoBase = $dbRes->fetch(); if ($productInfoBase) { $purchasingCost = $productInfoBase['PURCHASING_PRICE'] * $productInfo['QUANTITY']; $baseCurrency = CurrencyManager::getBaseCurrency(); if ($baseCurrency != $productInfoBase['PURCHASING_CURRENCY']) { $purchasingCost = \CCurrencyRates::convertCurrency($purchasingCost, $productInfoBase['PURCHASING_CURRENCY'], $baseCurrency); } } } $profit = doubleval($productInfo['SUMMARY_PRICE']) - $purchasingCost; } return $profit; }
/** * @deprecated deprecated since currency 16.0.0 * @see \Bitrix\Currency\CurrencyManager::updateBaseRates * * @param string $currency * @param string $updateCurrency */ protected static function updateBaseRates($currency = '', $updateCurrency = '') { Currency\CurrencyManager::updateBaseRates($updateCurrency); }
echo $prefix; echo \CCurrencyLang::CurrencyFormat($profit, CurrencyManager::getBaseCurrency(), true); ?> </div> <div class="seo-adv-block-text"><?php echo Loc::getMessage('SEO_YANDEX_STATS_HINT_GROSS'); ?> </div> </div> <?php $color = $expences > 0 ? 'red' : 'gray'; $prefix = $expences > 0 ? '– ' : ''; $text = CCurrencyLang::CurrencyFormat($expences, CurrencyManager::getBaseCurrency(), false); if ($currency == '') { $text .= ' ' . Loc::getMessage('SEO_YANDEX_CURRENCY'); } elseif (CurrencyManager::checkCurrencyID($currency)) { $text = CCurrencyLang::CurrencyFormat($expences, $currency, true); } else { $text .= ' ' . $currency; } ?> <div class="seo-adv-block seo-adv-block-<?php echo $color; ?> "> <div class="seo-adv-block-icon"></div> <div class="seo-adv-block-title"><?php echo $prefix; echo $text; ?> </div>
protected function getConfigStructure() { static $profiles = null; if ($profiles === null) { $profiles = array("" => ""); foreach ($this->parentHandlerInitParams["PROFILES"] as $profileId => $profileParams) { $profiles[$profileId] = $profileParams["TITLE"] . " [" . $profileId . "]"; } } $result = array("MAIN" => array("TITLE" => Loc::getMessage("SALE_DLVR_HANDL_AUTP_CONF_MAIN_TITLE"), "DESCRIPTION" => Loc::getMessage("SALE_DLVR_HANDL_AUTP_CONF_MAIN_DESCR"), "ITEMS" => array("PROFILE_ID" => array("TYPE" => "ENUM", "NAME" => Loc::getMessage("SALE_DLVR_HANDL_AUTP_CONF_MAIN_PROFILE_ID"), "OPTIONS" => $profiles, "ONCHANGE" => "top.BX.showWait(); this.form.submit(); /* elements.apply.click();*/")))); $serviceCurrency = $this->currency; if (\Bitrix\Main\Loader::includeModule('currency')) { $currencyList = CurrencyManager::getCurrencyList(); if (isset($currencyList[$this->currency])) { $serviceCurrency = $currencyList[$this->currency]; } unset($currencyList); } $marginTypes = array("%" => "%", "CURRENCY" => $serviceCurrency); $result["MAIN"]["ITEMS"]["MARGIN_VALUE"] = array("TYPE" => "STRING", "NAME" => Loc::getMessage("SALE_DLVR_HANDL_AUT_MARGIN_VALUE"), "DEFAULT" => 0); $result["MAIN"]["ITEMS"]["MARGIN_TYPE"] = array("TYPE" => "ENUM", "NAME" => Loc::getMessage("SALE_DLVR_HANDL_AUT_MARGIN_TYPE"), "DEFAULT" => "%", "OPTIONS" => $marginTypes); $configProfileIds = array_keys($this->parentHandlerInitParams["PROFILES"]); if (strlen($this->profileId) > 0 && in_array($this->profileId, $configProfileIds)) { $oldAutoConfig = $this->parentAutomatic->getOldConfig(); if ($oldAutoConfig && isset($oldAutoConfig["CONFIG_GROUPS"]) && is_array($oldAutoConfig["CONFIG_GROUPS"])) { foreach ($oldAutoConfig["CONFIG_GROUPS"] as $key => $groupId) { if ($this->profileId != $groupId) { unset($oldAutoConfig["CONFIG_GROUPS"][$key]); } } foreach ($oldAutoConfig["CONFIG"] as $key => $params) { if ($this->profileId != $params["CONFIG"]) { unset($oldAutoConfig["CONFIG"][$key]); } } } $oldConfig = Automatic::convertOldConfigToNew($oldAutoConfig); if (!empty($oldConfig)) { if (isset($oldConfig["CONFIG_GROUPS"]["MAIN"])) { $oldConfig["CONFIG_GROUPS"]["MAIN_OLD"] = $oldConfig["CONFIG_GROUPS"]["MAIN"]; unset($oldConfig["CONFIG_GROUPS"]["MAIN"]); } $result = array_merge($result, $oldConfig); } } return $result; }
public function CheckFields($strAction, &$arFields, $intID = 0) { global $APPLICATION; global $DB; global $USER; $strAction = strtoupper($strAction); if ('UPDATE' != $strAction && 'ADD' != $strAction) { return false; } $intID = (int) $intID; $arCurrencyList = Currency\CurrencyManager::getCurrencyList(); $boolResult = true; $arMsg = array(); $clearFields = array('ID', '~ID', 'UNPACK', '~UNPACK', '~CONDITIONS', 'CONDITIONS', 'USE_COUPONS', '~USE_COUPONS', 'HANDLERS', '~HANDLERS', '~TYPE', '~RENEWAL', '~PRIORITY', '~LAST_DISCOUNT', '~VERSION', 'TIMESTAMP_X', 'DATE_CREATE', '~DATE_CREATE', '~MODIFIED_BY', '~CREATED_BY'); if ($strAction == 'UPDATE') { $clearFields[] = 'CREATED_BY'; } $arFields = array_filter($arFields, 'CCatalogDiscountSave::clearFields'); foreach ($clearFields as &$fieldName) { if (isset($arFields[$fieldName])) { unset($arFields[$fieldName]); } } unset($fieldName, $clearFields); $arFields['TYPE'] = self::ENTITY_ID; $arFields["RENEWAL"] = 'N'; $arFields['PRIORITY'] = 1; $arFields['LAST_DISCOUNT'] = 'Y'; $arFields['VERSION'] = Catalog\DiscountTable::ACTUAL_VERSION; if ((is_set($arFields, "SITE_ID") || $strAction == "ADD") && empty($arFields["SITE_ID"])) { $arMsg[] = array('id' => 'SITE_ID', 'text' => Loc::getMessage('BT_MOD_CAT_DSC_SV_ERR_EMPTY_SITE')); $boolResult = false; } else { $rsSites = CSite::GetByID($arFields['SITE_ID']); if (!($arSite = $rsSites->Fetch())) { $arMsg[] = array('id' => 'SITE_ID', 'text' => Loc::getMessage('BT_MOD_CAT_DSC_SV_ERR_BAD_SITE')); $boolResult = false; } } if ((is_set($arFields, "NAME") || $strAction == "ADD") && strlen(trim($arFields["NAME"])) <= 0) { $arMsg[] = array('id' => 'NAME', 'text' => Loc::getMessage('BT_MOD_CAT_DSC_SV_ERR_EMPTY_NAME')); $boolResult = false; } if ((is_set($arFields, "ACTIVE") || $strAction == "ADD") && $arFields["ACTIVE"] != "N") { $arFields["ACTIVE"] = "Y"; } if ((is_set($arFields, 'SORT') || $strAction == 'ADD') && intval($arFields['SORT']) <= 0) { $arFields['SORT'] = 500; } if ((is_set($arFields, "CURRENCY") || $strAction == "ADD") && empty($arFields["CURRENCY"])) { $arMsg[] = array('id' => 'CURRENCY', 'text' => Loc::getMessage('BT_MOD_CAT_DSC_SV_ERR_EMPTY_CURRENCY')); $boolResult = false; } if ((is_set($arFields, "ACTIVE_FROM") || $strAction == "ADD") && !$DB->IsDate($arFields["ACTIVE_FROM"], false, LANGUAGE_ID, "FULL")) { $arFields["ACTIVE_FROM"] = false; } if ((is_set($arFields, "ACTIVE_TO") || $strAction == "ADD") && !$DB->IsDate($arFields["ACTIVE_TO"], false, LANGUAGE_ID, "FULL")) { $arFields["ACTIVE_TO"] = false; } if ((is_set($arFields, 'COUNT_SIZE') || $strAction == 'ADD') && intval($arFields['COUNT_SIZE']) < 0) { $arFields['COUNT_SIZE'] = 0; } if ((is_set($arFields, 'COUNT_TYPE') || $strAction == 'ADD') && !in_array($arFields['COUNT_TYPE'], array('D', 'M', 'Y'))) { $arFields['COUNT_TYPE'] = 'Y'; } if ((is_set($arFields, "COUNT_FROM") || $strAction == "ADD") && !$DB->IsDate($arFields["COUNT_FROM"], false, LANGUAGE_ID, "FULL")) { $arFields["COUNT_FROM"] = false; } if ((is_set($arFields, "COUNT_TO") || $strAction == "ADD") && !$DB->IsDate($arFields["COUNT_TO"], false, LANGUAGE_ID, "FULL")) { $arFields["COUNT_TO"] = false; } if (is_set($arFields, 'COUNT_PERIOD')) { unset($arFields['COUNT_PERIOD']); } $strCountPeriod = self::COUNT_TIME_ALL; if (is_set($arFields, 'COUNT_SIZE') && intval($arFields['COUNT_SIZE']) > 0) { $strCountPeriod = self::COUNT_TIME_PERIOD; } if (!empty($arFields["COUNT_FROM"]) || !empty($arFields["COUNT_TO"])) { $strCountPeriod = self::COUNT_TIME_INTERVAL; } $arFields['COUNT_PERIOD'] = $strCountPeriod; if ((is_set($arFields, 'ACTION_SIZE') || $strAction == 'ADD') && intval($arFields['ACTION_SIZE']) < 0) { $arFields['ACTION_SIZE'] = 0; } if ((is_set($arFields, 'ACTION_TYPE') || $strAction == 'ADD') && !in_array($arFields['ACTION_TYPE'], array('D', 'M', 'Y'))) { $arFields['ACTION_TYPE'] = 'Y'; } $intUserID = 0; $boolUserExist = CCatalog::IsUserExists(); if ($boolUserExist) { $intUserID = (int) $USER->GetID(); } $strDateFunction = $DB->GetNowFunction(); $arFields['~TIMESTAMP_X'] = $strDateFunction; if ($boolUserExist) { if (!array_key_exists('MODIFIED_BY', $arFields) || (int) $arFields["MODIFIED_BY"] <= 0) { $arFields["MODIFIED_BY"] = $intUserID; } } if ('ADD' == $strAction) { $arFields['~DATE_CREATE'] = $strDateFunction; if ($boolUserExist) { if (!array_key_exists('CREATED_BY', $arFields) || (int) $arFields["CREATED_BY"] <= 0) { $arFields["CREATED_BY"] = $intUserID; } } } if (is_set($arFields, 'RANGES') || $strAction == 'ADD') { if (!is_array($arFields['RANGES']) || empty($arFields['RANGES'])) { $arMsg[] = array('id' => 'RANGES', 'text' => Loc::getMessage('BT_MOD_CAT_DSC_SV_ERR_EMPTY_RANGES')); $boolResult = false; } else { $boolRepeat = false; $arRangeList = array(); foreach ($arFields['RANGES'] as &$arRange) { if (!is_array($arRange) || empty($arRange)) { $arMsg[] = array('id' => 'RANGES', 'text' => Loc::getMessage('BT_MOD_CAT_DSC_SV_ERR_BAD_RANGE')); $boolResult = false; } else { if (empty($arRange['TYPE']) || $arRange['TYPE'] != self::TYPE_FIX) { $arRange['TYPE'] = self::TYPE_PERCENT; } if (isset($arRange['VALUE'])) { $arRange["VALUE"] = str_replace(",", ".", $arRange["VALUE"]); $arRange["VALUE"] = doubleval($arRange["VALUE"]); if (!(0 < $arRange["VALUE"])) { $arMsg[] = array('id' => 'RANGES', 'text' => Loc::getMessage('BT_MOD_CAT_DSC_SV_ERR_BAD_RANGE_VALUE')); $boolResult = false; } elseif (self::TYPE_PERCENT == $arRange['TYPE'] && 100 < $arRange["VALUE"]) { $arMsg[] = array('id' => 'RANGES', 'text' => Loc::getMessage('BT_MOD_CAT_DSC_SV_ERR_BAD_RANGE_VALUE')); $boolResult = false; } } else { $arMsg[] = array('id' => 'RANGES', 'text' => Loc::getMessage('BT_MOD_CAT_DSC_SV_ERR_BAD_RANGE_VALUE')); $boolResult = false; } if (isset($arRange['RANGE_FROM'])) { $arRange["RANGE_FROM"] = str_replace(",", ".", $arRange["RANGE_FROM"]); $arRange["RANGE_FROM"] = doubleval($arRange["RANGE_FROM"]); if (0 > $arRange["RANGE_FROM"]) { $arMsg[] = array('id' => 'RANGES', 'text' => Loc::getMessage('BT_MOD_CAT_DSC_SV_ERR_BAD_RANGE_FROM')); $boolResult = false; } else { if (in_array($arRange["RANGE_FROM"], $arRangeList)) { $boolRepeat = true; } else { $arRangeList[] = $arRange["RANGE_FROM"]; } } } else { $arMsg[] = array('id' => 'RANGES', 'text' => Loc::getMessage('BT_MOD_CAT_DSC_SV_ERR_BAD_RANGE_FROM')); $boolResult = false; } } } if (isset($arRange)) { unset($arRange); } if ($boolRepeat) { $arMsg[] = array('id' => 'RANGES', 'text' => Loc::getMessage('BT_MOD_CAT_DSC_SV_ERR_DUP_RANGE_FROM')); $boolResult = false; } } } if (isset($arFields['GROUP_IDS']) || $strAction == 'ADD') { if (!empty($arFields['GROUP_IDS'])) { if (!is_array($arFields['GROUP_IDS'])) { $arFields['GROUP_IDS'] = array($arFields['GROUP_IDS']); } $arValid = array(); foreach ($arFields['GROUP_IDS'] as &$intGroupID) { $intGroupID = (int) $intGroupID; if (0 < $intGroupID && 2 != $intGroupID) { $arValid[] = $intGroupID; } } if (isset($intGroupID)) { unset($intGroupID); } $arFields['GROUP_IDS'] = array_unique($arValid); } if (empty($arFields['GROUP_IDS'])) { $arMsg[] = array('id' => 'GROUP_IDS', 'text' => Loc::getMessage('BT_MOD_CAT_DSC_SV_ERR_EMPTY_GROUP_IDS')); $boolResult = false; } } if ($boolResult) { $cond = new CCatalogCondTree(); $boolCond = $cond->Init(BT_COND_MODE_GENERATE, BT_COND_BUILD_CATALOG, array()); if (!$boolCond) { $boolResult = false; } else { $arFields['CONDITIONS'] = $cond->GetDefaultConditions(); $arFields['UNPACK'] = $cond->Generate($arFields['CONDITIONS'], array()); $arFields['CONDITIONS'] = serialize($arFields['CONDITIONS']); } } if (!$boolResult) { $obError = new CAdminException($arMsg); $APPLICATION->ResetException(); $APPLICATION->ThrowException($obError); } return $boolResult; }
unset($dayData['BANNER_ID']); unset($dayData['DATE_DAY']); $dayData['date'] = $date; $graphData[] = $dayData; } $res["data"] = $graphData; $res["date_from"] = $dateStart->toString(); $res["date_to"] = $dateFinish->toString(); if (\Bitrix\Main\ModuleManager::isModuleInstalled('sale') && \Bitrix\Main\ModuleManager::isModuleInstalled('catalog') && Loader::includeModule('currency')) { $orderStats = Adv\OrderTable::getList(array('filter' => array('=BANNER_ID' => $bannerId, '=PROCESSED' => Adv\OrderTable::PROCESSED, ">=TIMESTAMP_X" => $dateStart, "<TIMESTAMP_X" => $dateFinish), 'group' => array('BANNER_ID'), 'select' => array('BANNER_SUM'), 'runtime' => array(new \Bitrix\Main\Entity\ExpressionField('BANNER_SUM', 'SUM(SUM)')))); if ($stat = $orderStats->fetch()) { $res["order_sum"] = $stat['BANNER_SUM']; } else { $res["order_sum"] = 0; } $res["order_sum_format"] = \CCurrencyLang::CurrencyFormat(doubleval($res["order_sum"]), \Bitrix\Currency\CurrencyManager::getBaseCurrency(), true); } } } else { $res = array("session" => $loadingSession, "amount" => $_SESSION[$loadingSession]['ORIGINAL_CNT'], "left" => count($_SESSION[$loadingSession]["GAPS"])); } break; case 'campaign_stats': $res = array(); $campaignId = intval($_REQUEST['campaign']); $loadingSession = $_REQUEST['loading_session']; $gaps = array(); if ($loadingSession) { if (isset($_SESSION[$loadingSession]) && $_SESSION[$loadingSession]['CAMPAIGN_ID'] == $campaignId) { $dateStart = new Date($_SESSION[$loadingSession]['DATE_START']); $dateFinish = new Date($_SESSION[$loadingSession]['DATE_FINISH']);