GetGroupRight($module_id); if ($SALE_RIGHT>="R") : IncludeModuleLangFile($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/options.php'); IncludeModuleLangFile(__FILE__); Main\Page\Asset::getInstance()->addJs('/bitrix/js/sale/options.js'); $APPLICATION->SetAdditionalCSS("/bitrix/themes/.default/sale.css"); Loader::includeModule('sale'); Loader::includeModule('currency'); $lpEnabled = CSaleLocation::isLocationProEnabled(); $lMigrated = CSaleLocation::isLocationProMigrated(); $siteList = array(); $siteIterator = SiteTable::getList(array( 'select' => array('LID', 'NAME'), 'order' => array('SORT' => 'ASC') )); while ($oneSite = $siteIterator->fetch()) { $siteList[] = array('ID' => $oneSite['LID'], 'NAME' => $oneSite['NAME']); } unset($oneSite, $siteIterator); $siteCount = count($siteList); $bWasUpdated = false; if ($_SERVER['REQUEST_METHOD'] == "GET" && $RestoreDefaults <> '' && $SALE_RIGHT=="W" && check_bitrix_sessid()) { $bWasUpdated = true; COption::RemoveOption("sale"); $z = CGroup::GetList("id", "asc", array("ACTIVE" => "Y", "ADMIN" => "N")); while($zr = $z->Fetch()) $APPLICATION->DelGroupRight($module_id, array($zr["ID"])); } $arAllOptions = array( Array("order_email", GetMessage("SALE_EMAIL_ORDER"), "order@".$SERVER_NAME, Array("text", 30)), //Array("default_email", GetMessage("SALE_EMAIL_REGISTER"), "admin@".$SERVER_NAME, Array("text", 30)), Array("delete_after", GetMessage("SALE_DELETE_AFTER"), "", Array("text", 10)), Array("order_list_date", GetMessage("SALE_ORDER_LIST_DATE"), 30, Array("text", 10)), Array("MAX_LOCK_TIME", GetMessage("SALE_MAX_LOCK_TIME"), 30, Array("text", 10)), Array("GRAPH_WEIGHT", GetMessage("SALE_GRAPH_WEIGHT"), 800, Array("text", 10)), Array("GRAPH_HEIGHT", GetMessage("SALE_GRAPH_HEIGHT"), 600, Array("text", 10)), Array("path2user_ps_files", GetMessage("SALE_PATH2UPSF"), BX_PERSONAL_ROOT."/php_interface/include/sale_payment/", Array("text", 40)), //Array("path2custom_view_order", GetMessage("SMO_SALE_PATH2ORDER"), "", Array("text", 40)), Array("lock_catalog", GetMessage("SMO_LOCK_CATALOG"), "Y", Array("checkbox", 40)), (CBXFeatures::IsFeatureEnabled('SaleAffiliate')) ? Array("affiliate_param_name", GetMessage("SMOS_AFFILIATE_PARAM"), "partner", Array("text", 40)) : array(), (CBXFeatures::IsFeatureEnabled('SaleAffiliate')) ? Array("affiliate_life_time", GetMessage("SMO_AFFILIATE_LIFE_TIME"), "30", Array("text", 10)): array(), Array("show_order_sum", GetMessage("SMO_SHOW_ORDER_SUM"), "N", Array("checkbox", 40)), Array("show_order_product_xml_id", GetMessage("SMO_SHOW_ORDER_PRODUCT_XML_ID"), "N", Array("checkbox", 40)), Array("show_paysystem_action_id", GetMessage("SMO_SHOW_PAYSYSTEM_ACTION_ID"), "N", Array("checkbox", 40)), Array("measurement_path", GetMessage("SMO_MEASUREMENT_PATH"), "/bitrix/modules/sale/measurements.php", Array("text", 40)), //Array("use_delivery_handlers", GetMessage("SMO_USE_DELIVERY_HANDLERS"), "N", Array("checkbox", 40)), Array("delivery_handles_custom_path", GetMessage("SMO_DELIVERY_HANDLERS_CUSTOM_PATH"), BX_PERSONAL_ROOT."/php_interface/include/sale_delivery/", Array("text", 40)), Array("use_secure_cookies", GetMessage("SMO_USE_SECURE_COOKIES"), "N", Array("checkbox", 40)), Array("encode_fuser_id", GetMessage("SMO_ENCODE_FUSER_ID"), "N", Array("checkbox", 40)), //Array("recalc_product_list", GetMessage("SALE_RECALC_PRODUCT_LIST"), "N", Array("checkbox", 40)), //Array("recalc_product_list_period", GetMessage("SALE_RECALC_PRODUCT_LIST_PERIOD"), 7, Array("text", 10)), Array("COUNT_DISCOUNT_4_ALL_QUANTITY", GetMessage("SALE_OPT_COUNT_DISCOUNT_4_ALL_QUANTITY"), "N", Array("checkbox", 40)), Array("COUNT_DELIVERY_TAX", GetMessage("SALE_OPT_COUNT_DELIVERY_TAX"), "N", Array("checkbox", 40)), Array("QUANTITY_FACTORIAL", GetMessage("SALE_OPT_QUANTITY_FACTORIAL"), "N", Array("checkbox", 40)), Array("product_viewed_save", GetMessage("SALE_PRODUCT_VIEWED_SAVE"), "Y", Array("checkbox", 40)), Array("viewed_capability", GetMessage("SALE_VIEWED_CAPABILITY"), "Y", Array("checkbox", 40)), Array("viewed_time", GetMessage("SALE_VIEWED_TIME"), 90, Array("text", 10)), Array("viewed_count", GetMessage("SALE_VIEWED_COUNT"), 100, Array("text", 10)), Array("SALE_ADMIN_NEW_PRODUCT", GetMessage("SALE_ADMIN_NEW_PRODUCT"), "N", Array("checkbox", 40)), Array("use_ccards", GetMessage("SALE_ADMIN_USE_CARDS"), "N", Array("checkbox", 40)), Array("show_basket_props_in_order_list", GetMessage("SALE_SHOW_BASKET_PROPS_IN_ORDER_LIST"), "Y", Array("checkbox", 40)), ); $arOrderFlags = array("P" => GetMessage("SMO_PAYMENT_FLAG"), "C" => GetMessage("SMO_CANCEL_FLAG"), "D" => GetMessage("SMO_DELIVERY_FLAG")); $numeratorForOrdersId = ''; $numeratorsOrderType = Main\Numerator\Numerator::getOneByType(Registry::REGISTRY_TYPE_ORDER); if ($numeratorsOrderType) { $numeratorForOrdersId = $numeratorsOrderType['id']; } $aTabs = array( array("DIV" => "edit1", "TAB" => GetMessage("MAIN_TAB_SET"), "ICON" => "sale_settings", "TITLE" => GetMessage("MAIN_TAB_TITLE_SET")), array("DIV" => "edit7", "TAB" => GetMessage("SALE_TAB_WEIGHT"), "ICON" => "sale_settings", "TITLE" => GetMessage("SALE_TAB_WEIGHT_TITLE")), array("DIV" => "edit5", "TAB" => GetMessage("SALE_TAB_ADDRESS"), "ICON" => "sale_settings", "TITLE" => GetMessage("SALE_TAB_ADDRESS_TITLE")) ); if (CBXFeatures::IsFeatureEnabled('SaleCCards') && COption::GetOptionString($module_id, "use_ccards", "N") == "Y") $aTabs[] = array("DIV" => "edit2", "TAB" => GetMessage("SALE_TAB_2"), "ICON" => "sale_settings", "TITLE" => GetMessage("SMO_CRYPT_TITLE")); $aTabs[] = array("DIV" => "edit3", "TAB" => GetMessage("SALE_TAB_3"), "ICON" => "sale_settings", "TITLE" => GetMessage("SALE_TAB_3_TITLE")); $aTabs[] = array("DIV" => "edit4", "TAB" => GetMessage("MAIN_TAB_RIGHTS"), "ICON" => "sale_settings", "TITLE" => GetMessage("MAIN_TAB_TITLE_RIGHTS")); $aTabs[] = array("DIV" => "edit8", "TAB" => GetMessage("SALE_TAB_AUTO"), "ICON" => "sale_settings", "TITLE" => GetMessage("SALE_TAB_AUTO_TITLE")); $aTabs[] = array("DIV" => "edit9", "TAB" => GetMessage("SALE_TAB_ARCHIVE"), "ICON" => "sale_settings", "TITLE" => GetMessage("SALE_TAB_ARCHIVE_TITLE")); $aTabs[] = array("DIV" => "edit10", "TAB" => GetMessage("SALE_TAB_ORDER_NUMERATOR_TEMPLATE"), "ICON" => "sale_settings", "TITLE" => GetMessage("SALE_TAB_ORDER_NUMERATOR_TEMPLATE_TITLE")); $tabControl = new CAdminTabControl("tabControl", $aTabs); $strWarning = ""; function addNumeratorErrorToWarningString($_numeratorResult) { $numeratorWarningsString = ''; foreach ($_numeratorResult->getErrors() as $error) { $numeratorWarningsString = $error->getMessage() . '
'; } return $numeratorWarningsString; } if ($_SERVER['REQUEST_METHOD'] == "POST" && $Update <> '' && $SALE_RIGHT == "W" && check_bitrix_sessid()) { if (isset($_POST['hideNumeratorSettings']) && $_POST['hideNumeratorSettings'] != "Y") { $numerator = Main\Numerator\Numerator::create(); $validationResult = $numerator->setConfig($_POST); if (!$validationResult->isSuccess()) { $strWarning .= addNumeratorErrorToWarningString($validationResult); } } else { $bWasUpdated = true; COption::RemoveOption($module_id, "weight_unit"); COption::RemoveOption($module_id, "weight_koef"); if (!empty($_REQUEST["WEIGHT_dif_settings"])) { for ($i = 0; $i < $siteCount; $i++) { COption::SetOptionString($module_id, "weight_unit", trim($_REQUEST["weight_unit"][$siteList[$i]["ID"]]), false, $siteList[$i]["ID"]); COption::SetOptionString($module_id, "weight_koef", floatval($_REQUEST["weight_koef"][$siteList[$i]["ID"]]), false, $siteList[$i]["ID"]); } COption::SetOptionString($module_id, "WEIGHT_different_set", "Y"); } else { $site_id = trim($_REQUEST["WEIGHT_current_site"]); COption::SetOptionString($module_id, "weight_unit", trim($_REQUEST["weight_unit"][$site_id])); COption::SetOptionString($module_id, "weight_koef", floatval($_REQUEST["weight_koef"][$site_id])); COption::SetOptionString($module_id, "WEIGHT_different_set", "N"); } COption::RemoveOption($module_id, "location_zip"); COption::RemoveOption($module_id, "location"); if (!empty($_REQUEST["ADDRESS_dif_settings"])) { for ($i = 0; $i < $siteCount; $i++) { COption::SetOptionString($module_id, "location_zip", $_REQUEST["location_zip"][$siteList[$i]["ID"]], false, $siteList[$i]["ID"]); COption::SetOptionString($module_id, "location", $_REQUEST["location"][$siteList[$i]["ID"]], false, $siteList[$i]["ID"]); } COption::SetOptionString($module_id, "ADDRESS_different_set", "Y"); } else { $site_id = trim($_REQUEST["ADDRESS_current_site"]); COption::SetOptionString($module_id, "location_zip", $_REQUEST["location_zip"][$site_id]); COption::SetOptionString($module_id, "location", $_REQUEST["location"][$site_id]); COption::SetOptionString($module_id, "ADDRESS_different_set", "N"); } if(!$lMigrated ) { COption::RemoveOption($module_id, "sales_zone_countries"); COption::RemoveOption($module_id, "sales_zone_regions"); COption::RemoveOption($module_id, "sales_zone_cities"); } if(!$lpEnabled) { if (!empty($_REQUEST["ADDRESS_dif_settings"])) { for ($i = 0; $i < $siteCount; $i++) { if($lMigrated) { try { \Bitrix\Sale\SalesZone::saveSelectedTypes(array( 'COUNTRY' => $_REQUEST["sales_zone_countries"][$siteList[$i]["ID"]], 'REGION' => $_REQUEST["sales_zone_regions"][$siteList[$i]["ID"]], 'CITY' => $_REQUEST["sales_zone_cities"][$siteList[$i]["ID"]] ), $siteList[$i]["ID"]); } catch(Exception $e) { } } else { COption::SetOptionString($module_id, "sales_zone_countries", implode(":", $_REQUEST["sales_zone_countries"][$siteList[$i]["ID"]]), false, $siteList[$i]["ID"]); COption::SetOptionString($module_id, "sales_zone_regions", implode(":",$_REQUEST["sales_zone_regions"][$siteList[$i]["ID"]]), false, $siteList[$i]["ID"]); COption::SetOptionString($module_id, "sales_zone_cities", implode(":",$_REQUEST["sales_zone_cities"][$siteList[$i]["ID"]]), false, $siteList[$i]["ID"]); } } } else { $site_id = trim($_REQUEST["ADDRESS_current_site"]); if($lMigrated) { try { \Bitrix\Sale\SalesZone::saveSelectedTypes(array( 'COUNTRY' => $_REQUEST["sales_zone_countries"][$site_id], 'REGION' => $_REQUEST["sales_zone_regions"][$site_id], 'CITY' => $_REQUEST["sales_zone_cities"][$site_id] ), $site_id); } catch(Exception $e) { } } else { COption::SetOptionString($module_id, "sales_zone_countries", implode(":",$_REQUEST["sales_zone_countries"][$site_id])); COption::SetOptionString($module_id, "sales_zone_regions", implode(":",$_REQUEST["sales_zone_regions"][$site_id])); COption::SetOptionString($module_id, "sales_zone_cities", implode(":",$_REQUEST["sales_zone_cities"][$site_id])); } } } for ($i = 0, $intCount = count($arAllOptions); $i < $intCount; $i++) { if(!empty($arAllOptions[$i])) { $name = $arAllOptions[$i][0]; $val = ${$name}; if ($arAllOptions[$i][3][0]=="checkbox" && $val!="Y") $val = "N"; if ($name == "path2user_ps_files" && mb_substr($val, mb_strlen($val) - 1, 1) != "/") { $val .= "/"; } COption::SetOptionString("sale", $name, $val, $arAllOptions[$i][1]); } } $rsAgents = CAgent::GetList(array("ID"=>"DESC"), array( "MODULE_ID" => "sale", "NAME" => "\\Bitrix\\Sale\\Basket::deleteOldAgent(%", )); while($arAgent = $rsAgents->Fetch()) { CAgent::Delete($arAgent["ID"]); } $delete_after = (int)COption::GetOptionInt("sale", "delete_after"); if ($delete_after > 0) CAgent::AddAgent("\\Bitrix\\Sale\\Basket::deleteOldAgent(".$delete_after.");", "sale", "N", 8*60*60, "", "Y"); /*$recalc_product_list_period = intval(COption::GetOptionInt("sale", "recalc_product_list_period", 7)); CAgent::RemoveAgent("CSaleProduct::RefreshProductList();", "sale"); if( COption::GetOptionString("sale", "recalc_product_list", "N") == "Y" && $recalc_product_list_period > 0 ) { CAgent::AddAgent("CSaleProduct::RefreshProductList();", "sale", "N", 60*60*24*$recalc_product_list_period, "", "Y"); }*/ if(CBXFeatures::IsFeatureEnabled('SaleAffiliate')) { COption::SetOptionString("sale", "affiliate_plan_type", $affiliate_plan_type); } $arAmountSer = Array(); foreach($amount_val as $key =>$val) { if((float)$val > 0) $arAmountSer[$key] = array("AMOUNT" => (float)$val, "CURRENCY" => $amount_currency[$key]); } if(!empty($arAmountSer)) COption::SetOptionString("sale", "pay_amount", serialize($arAmountSer)); CAgent::RemoveAgent("CSaleOrder::RemindPayment();", "sale"); COption::RemoveOption("sale", "pay_reminder"); if (isset($_POST["reminder"]) && is_array($_POST["reminder"]) && !empty($_POST["reminder"])) { COption::SetOptionString("sale", "pay_reminder", serialize($_POST["reminder"])); CAgent::AddAgent("CSaleOrder::RemindPayment();", "sale", "N", 86400, "", "Y"); } //subscribe product $rsAgents = CAgent::GetList( array("ID"=>"DESC"), array( "MODULE_ID" => "sale", "NAME" => "CSaleBasket::ClearProductSubscribe(%", ) ); while($arAgent = $rsAgents->Fetch()) CAgent::Delete($arAgent["ID"]); if(!empty($subscribProd)) { foreach($siteList as $vv) { $lid = $vv["ID"]; $val = $subscribProd[$lid]; if ($val["use"] == "Y") { if (intval($val["del_after"]) <= 0) $subscribProd[$lid]["del_after"] = 30; CAgent::AddAgent("CSaleBasket::ClearProductSubscribe('".EscapePHPString($lid)."');", "sale", "N", intval($subscribProd[$lid]["del_after"])*24*60*60, "", "Y"); } } COption::SetOptionString("sale", "subscribe_prod", serialize($subscribProd)); } //viewed product if(!empty($viewed)) { foreach ($viewed as $lid => $val) { if (intval($val["time"]) <= 0) $viewed[$lid]["time"] = 90; if (intval($val["count"]) <= 0) $viewed[$lid]["count"] = 1000; } COption::SetOptionString("sale", "viewed_product", serialize($viewed)); } if(isset($_POST['viewed_capability']) && $_POST['viewed_capability'] == "Y") { COption::SetOptionString("sale", "viewed_capability", "Y"); } else { COption::SetOptionString("sale", "viewed_capability", "N"); } $rsAgents = CAgent::GetList(array("ID"=>"DESC"), array( "MODULE_ID" => "sale", "NAME" => "CSaleViewedProduct::ClearViewed();", )); if (!$arAgent = $rsAgents->Fetch()) { CAgent::AddAgent("CSaleViewedProduct::ClearViewed();", "sale", "N", 86400, "", "Y"); } COption::SetOptionString("sale", "default_currency", $CURRENCY_DEFAULT); COption::SetOptionString("sale", "crypt_algorithm", $crypt_algorithm); COption::SetOptionString("sale", "sale_data_file", $sale_data_file); COption::SetOptionString("sale", "sale_data_file", $sale_data_file); if ($sale_ps_success_path == "") $sale_ps_success_path = "/"; COption::SetOptionString("sale", "sale_ps_success_path", $sale_ps_success_path); if ($sale_ps_fail_path == "") $sale_ps_fail_path = "/"; COption::SetOptionString("sale", "sale_ps_fail_path", $sale_ps_fail_path); if ($sale_location_selector_appearance == "") $sale_location_selector_appearance = "steps"; COption::SetOptionString("sale", "sale_location_selector_appearance", $sale_location_selector_appearance); COption::SetOptionString("sale", "status_on_paid", $PAID_STATUS); COption::SetOptionString("sale", "status_on_half_paid", $HALF_PAID_STATUS); COption::SetOptionString("sale", "status_on_allow_delivery", $ALLOW_DELIVERY_STATUS); COption::SetOptionString("sale", "status_on_allow_delivery_one_of", $ALLOW_DELIVERY_ONE_OF_STATUS); COption::SetOptionString("sale", "status_on_shipped_shipment", $SHIPMENT_SHIPPED_STATUS); COption::SetOptionString("sale", "status_on_shipped_shipment_one_of", $SHIPMENT_SHIPPED_ONE_OF_STATUS); COption::SetOptionString("sale", "shipment_status_on_allow_delivery", $SHIPMENT_ALLOW_DELIVERY_TO_SHIPMENT_STATUS); COption::SetOptionString("sale", "shipment_status_on_shipped", $SHIPMENT_SHIPPED_TO_SHIPMENT_STATUS); COption::SetOptionString("sale", "status_on_payed_2_allow_delivery", $PAYED_2_ALLOW_DELIVERY); COption::SetOptionString("sale", "status_on_change_allow_delivery_after_paid", $CHANGE_ALLOW_DELIVERY_AFTER_PAID); COption::SetOptionString("sale", "allow_deduction_on_delivery", $ALLOW_DEDUCTION_ON_DELIVERY); COption::SetOptionString("sale", "format_quantity", ($FORMAT_QUANTITY == 'AUTO' ? $FORMAT_QUANTITY: intval($FORMAT_QUANTITY))); COption::SetOptionString("sale", "value_precision", (intval($VALUE_PRECISION) < 0 ? 2 : intval($VALUE_PRECISION))); $oldExpirationProcessingEvents = Option::get('sale', 'expiration_processing_events'); COption::SetOptionString("sale", "expiration_processing_events", $EXPIRATION_PROCESSING_EVENTS); if ($oldExpirationProcessingEvents != $EXPIRATION_PROCESSING_EVENTS) { $eventManager = Main\EventManager::getInstance(); if ($EXPIRATION_PROCESSING_EVENTS == "Y") { Sale\Compatible\EventCompatibility::registerEvents(); $eventManager->registerEventHandlerCompatible('sale', 'OnBeforeBasketAdd', 'sale', '\Bitrix\Sale\Internals\ConversionHandlers', 'onBeforeBasketAdd'); $eventManager->registerEventHandlerCompatible('sale', 'OnBasketAdd', 'sale', '\Bitrix\Sale\Internals\ConversionHandlers', 'onBasketAdd'); $eventManager->registerEventHandlerCompatible('sale', 'OnOrderAdd', 'sale', '\Bitrix\Sale\Internals\ConversionHandlers', 'onOrderAdd'); $eventManager->registerEventHandlerCompatible('sale', 'OnSalePayOrder', 'sale', '\Bitrix\Sale\Internals\ConversionHandlers', 'onSalePayOrder'); $eventManager->unRegisterEventHandler('sale', 'OnSaleBasketItemSaved', 'sale', '\Bitrix\Sale\Internals\ConversionHandlers', 'onSaleBasketItemSaved'); $eventManager->unRegisterEventHandler('sale', 'OnSaleOrderSaved', 'sale', '\Bitrix\Sale\Internals\ConversionHandlers', 'onSaleOrderSaved'); $eventManager->unRegisterEventHandler('sale', 'OnSaleOrderPaid', 'sale', '\Bitrix\Sale\Internals\ConversionHandlers', 'onSaleOrderPaid'); } else { Sale\Compatible\EventCompatibility::unRegisterEvents(); $eventManager->unRegisterEventHandler('sale', 'OnBeforeBasketAdd', 'sale', '\Bitrix\Sale\Internals\ConversionHandlers', 'onBeforeBasketAdd'); $eventManager->unRegisterEventHandler('sale', 'OnBasketAdd', 'sale', '\Bitrix\Sale\Internals\ConversionHandlers', 'onBasketAdd'); $eventManager->unRegisterEventHandler('sale', 'OnOrderAdd', 'sale', '\Bitrix\Sale\Internals\ConversionHandlers', 'onOrderAdd'); $eventManager->unRegisterEventHandler('sale', 'OnSalePayOrder', 'sale', '\Bitrix\Sale\Internals\ConversionHandlers', 'onSalePayOrder'); $eventManager->registerEventHandler('sale', 'OnSaleBasketItemSaved', 'sale', '\Bitrix\Sale\Internals\ConversionHandlers', 'onSaleBasketItemSaved'); $eventManager->registerEventHandler('sale', 'OnSaleOrderSaved', 'sale', '\Bitrix\Sale\Internals\ConversionHandlers', 'onSaleOrderSaved'); $eventManager->registerEventHandler('sale', 'OnSaleOrderPaid', 'sale', '\Bitrix\Sale\Internals\ConversionHandlers', 'onSaleOrderPaid'); } } $ORDER_HISTORY_LOG_LEVEL = intval($ORDER_HISTORY_LOG_LEVEL); COption::SetOptionString("sale", "order_history_log_level", $ORDER_HISTORY_LOG_LEVEL); $ORDER_HISTORY_ACTION_LOG_LEVEL = intval($ORDER_HISTORY_ACTION_LOG_LEVEL); COption::SetOptionString("sale", "order_history_action_log_level", $ORDER_HISTORY_ACTION_LOG_LEVEL); if (!empty($SELECTED_FIELDS) && is_array($SELECTED_FIELDS)) { for ($i = 0, $intCount = count($SELECTED_FIELDS); $i < $intCount; $i++) { if ($saveValue <> '') $saveValue .= ","; $saveValue .= $SELECTED_FIELDS[$i]; } } else { $saveValue = "ID,USER,PAY_SYSTEM,PRICE,STATUS,PAYED,PS_STATUS,CANCELED,BASKET"; } COption::SetOptionString("sale", "order_list_fields", $saveValue); // account number generation - via numerator if (isset($_POST['hideNumeratorSettings']) && $_POST['hideNumeratorSettings'] == "Y") { if ($numeratorForOrdersId) { Main\Numerator\Numerator::delete($numeratorForOrdersId); } } else { if ($numeratorForOrdersId) { $numeratorUpdateResult = Main\Numerator\Numerator::update($numeratorForOrdersId, $_POST); if (!$numeratorUpdateResult->isSuccess()) { $strWarning .= addNumeratorErrorToWarningString($numeratorUpdateResult); } } else { $numeratorOrder = Main\Numerator\Numerator::create(); $numeratorOrderValidationResult = $numeratorOrder->setConfig($_POST); if ($numeratorOrderValidationResult->isSuccess()) { $numeratorOrderSaveResult = $numeratorOrder->save(); if (!$numeratorOrderSaveResult->isSuccess()) { $strWarning .= addNumeratorErrorToWarningString($numeratorOrderSaveResult); } } else { $strWarning .= addNumeratorErrorToWarningString($numeratorOrderValidationResult); } } } //subscribe product if (!empty($defaultDeductStore)) { COption::RemoveOption("sale", "deduct_store_id"); foreach ($defaultDeductStore as $lid => $val) { if (isset($val["save"]) && $val["save"] == "Y") COption::SetOptionString("sale", "deduct_store_id", intval($val["id"]), "", $lid); } } //SAVE SHOP LIST SITE foreach($siteList as $val) { COption::RemoveOption("sale", "SHOP_SITE_".$val["ID"]); } if (isset(${"SHOP_SITE"}) AND is_array(${"SHOP_SITE"})) { foreach (${"SHOP_SITE"} as $key => $val) { COption::SetOptionString("sale", "SHOP_SITE_".$val, $val); } } $p2p_del_exp_old = COption::GetOptionString("sale", "p2p_del_exp", 10); $agentData = CAgent::GetList(array("ID"=>"DESC"), array( "MODULE_ID" => "sale", "NAME" => "\\Bitrix\\Sale\\Product2ProductTable::addProductsByAgent(%", )); $agent = $agentData->Fetch(); if ($SALE_P2P_ALLOW_COLLECT_DATA == "Y") { if (!$agent) { $limit = (int)Option::get("sale", "p2p_limit_collecting_per_hit", 100); CAgent::AddAgent("Bitrix\\Sale\\Product2ProductTable::addProductsByAgent($limit);", "sale", "N", 60, "", "Y"); } } else { $SALE_P2P_ALLOW_COLLECT_DATA = "N"; if ($agent['ID'] > 0) { CAgent::Delete($agent['ID']); } } COption::SetOptionString("sale", "p2p_allow_collect_data", $SALE_P2P_ALLOW_COLLECT_DATA); COption::SetOptionString("sale", "p2p_status_list", serialize($SALE_P2P_STATUS_LIST)); if(intval($p2p_del_period) <= 0) $p2p_del_period = 10; COption::SetOptionString("sale", "p2p_del_period", $p2p_del_period); if(intval($p2p_del_exp) <= 0) $p2p_del_exp = 10; COption::SetOptionString("sale", "p2p_del_exp", $p2p_del_exp); $rsAgents = CAgent::GetList(array("ID"=>"DESC"), array( "MODULE_ID" => "sale", "NAME" => "\\Bitrix\\Sale\\Product2ProductTable::deleteOldProducts(%", )); while($arAgent = $rsAgents->Fetch()) { CAgent::Delete($arAgent["ID"]); } CAgent::AddAgent("Bitrix\\Sale\\Product2ProductTable::deleteOldProducts(".$p2p_del_exp.");", "sale", "N", 24 * 3600 * $p2p_del_period, "", "Y"); foreach ($siteList as &$oneSite) { $valCurrency = trim(${"CURRENCY_".$oneSite['ID']}); if ($valCurrency == '') $valCurrency = false; $arFields = array( 'LID' => $oneSite['ID'], 'CURRENCY' => $valCurrency ); if ($arRes = CSaleLang::GetByID($oneSite['ID'])) { if ($valCurrency!==false) { CSaleLang::Update($oneSite['ID'], $arFields); } else { CSaleLang::Delete($oneSite['ID']); } } else { if ($valCurrency!==false) { CSaleLang::Add($arFields); } } CSaleGroupAccessToSite::DeleteBySite($oneSite['ID']); if (isset(${"SITE_USER_GROUPS_".$oneSite['ID']}) && is_array(${"SITE_USER_GROUPS_".$oneSite['ID']})) { for ($i = 0, $intCount = count(${"SITE_USER_GROUPS_".$oneSite['ID']}); $i < $intCount; $i++) { $groupID = intval(${"SITE_USER_GROUPS_".$oneSite['ID']}[$i]); if ($groupID > 0) { CSaleGroupAccessToSite::Add( array( "SITE_ID" => $oneSite['ID'], "GROUP_ID" => $groupID ) ); } } } } if (isset($_POST['product_reserve_condition'])) { $productReserveCondition = (string)$_POST['product_reserve_condition']; if (in_array($productReserveCondition, Sale\Configuration::getReservationConditionList(false))) Option::set('sale', 'product_reserve_condition', $productReserveCondition, ''); unset($productReserveCondition); } if (isset($_POST['product_reserve_clear_period'])) { $clearPeriod = (int)$_POST['product_reserve_clear_period']; if ($clearPeriod >= 0) Option::set('sale', 'product_reserve_clear_period', $clearPeriod, ''); unset($clearPeriod); } if (isset($_POST['use_sale_discount_only'])) { $useSaleDiscountOnly = (string)$_POST['use_sale_discount_only']; if ($useSaleDiscountOnly == 'Y' || $useSaleDiscountOnly == 'N') Option::set('sale', 'use_sale_discount_only', $useSaleDiscountOnly, ''); unset($useSaleDiscountOnly); } if (isset($_POST['get_discount_percent_from_base_price'])) { $discountPercent = (string)$_REQUEST['get_discount_percent_from_base_price']; if ($discountPercent == 'Y' || $discountPercent == 'N') Option::set('sale', 'get_discount_percent_from_base_price', $discountPercent, ''); unset($discountPercent); } $useSaleDiscountOnly = (string)Option::get('sale', 'use_sale_discount_only'); if ($useSaleDiscountOnly == 'N') { if (isset($_POST['discount_apply_mode'])) { $discountModeApply = (int)$_POST['discount_apply_mode']; $modeList = Sale\Discount::getApplyModeList(false); if (in_array($discountModeApply, $modeList)) Option::set('sale', 'discount_apply_mode', $discountModeApply, ''); unset($modeList, $discountModeApply); } } unset($useSaleDiscountOnly); Option::set("sale", "regular_archive_active", $_POST['archive_regular_accept']); Option::set("sale", "archive_blocked_order", $_POST['archive_blocked_order_accept']); if ((int)($_POST['archive_period'])) $filter['PERIOD'] = (int)($_POST['archive_period']); else $filter['PERIOD'] = 365; if ($_POST['archive_blocked_order_accept'] !== 'Y') { $filterValues['LOCKED_BY'] = null; $filterValues['DATE_LOCK'] = null; } if (isset($_POST['archive_status_id'])) $filter["STATUS_ID"] = $_POST['archive_status_id']; if (isset($_POST['archive_site'])) $filter["LID"] = $_POST['archive_site']; if($_POST['archive_payed'] <> '') { $filter["=PAYED"] = $_POST['archive_payed']; } if($_POST['archive_canceled'] <> '') { $filter["=CANCELED"] = $_POST['archive_canceled']; } if($_POST['archive_deducted'] <> '') { $filter["=DEDUCTED"] = $_POST['archive_deducted']; } if ((int)($_POST['archive_limit'])) $archiveLimit = (int)$_POST['archive_limit']; else $archiveLimit = 10; Option::set('sale', 'archive_limit', $archiveLimit, ''); if ((int)($_POST['archive_time_limit'])) $archiveTimeLimit = (int)$_POST['archive_time_limit']; else $archiveTimeLimit = 5; Option::set('sale', 'archive_time_limit', $archiveTimeLimit, ''); $filter = serialize($filter); Option::set("sale", "archive_params", $filter); $agentsList = CAgent::GetList(array("ID"=>"DESC"), array( "MODULE_ID" => "sale", "NAME" => "\\Bitrix\\Sale\\Archive\\Manager::archiveOnAgent(%", )); while($agent = $agentsList->Fetch()) { CAgent::Delete($agent["ID"]); } if (isset($_POST['archive_regular_accept'])) { CAgent::AddAgent("\\Bitrix\\Sale\\Archive\\Manager::archiveOnAgent(".$archiveLimit.",".$archiveTimeLimit.");", "sale", "N", 24*60*60, "", "Y"); } Option::set("sale", "order_changes_cleaner_active", $_POST['order_changes_cleaner_active']); $orderChangesCleanerDays = (int)$_POST['order_changes_cleaner_days']; Option::set("sale", "order_changes_cleaner_days", $orderChangesCleanerDays); $orderChangesCleanerLimit = (int)$_POST['order_changes_cleaner_limit']; Option::set("sale", "order_changes_cleaner_limit",$orderChangesCleanerLimit); $agentsList = CAgent::GetList(array("ID"=>"DESC"), array( "MODULE_ID" => "sale", "NAME" => "\\Bitrix\\Sale\\OrderHistory::deleteOldAgent(%", )); while($agent = $agentsList->Fetch()) { CAgent::Delete($agent["ID"]); } if (isset($_POST['order_changes_cleaner_active'])) { CAgent::AddAgent("\\Bitrix\\Sale\\OrderHistory::deleteOldAgent(\"$orderChangesCleanerDays\",\"$orderChangesCleanerLimit\");", "sale", "N", 60, "", "Y"); } ob_start(); require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/admin/group_rights.php"); ob_end_clean(); if(isset($_POST['tracking_map_statuses'])) { $mapStatuses = $_POST['tracking_map_statuses']; foreach($mapStatuses as $tStatusId => $sStatusId) if($sStatusId == '') unset($mapStatuses[$tStatusId]); Option::set('sale', 'tracking_map_statuses', serialize($mapStatuses)); unset($mapStatuses); } $tSwitch = 'N'; if(isset($_POST['tracking_check_switch']) && $_POST['tracking_check_switch'] == 'Y') $tSwitch = 'Y'; Option::set('sale', 'tracking_check_switch', $tSwitch); $tPeriod = 0; if(isset($_POST['tracking_check_period']) && intval($_POST['tracking_check_period']) > 0) $tPeriod = intval($_POST['tracking_check_period']); Option::set('sale', 'tracking_check_period', $tPeriod); $agentName = '\Bitrix\Sale\Delivery\Tracking\Manager::startRefreshingStatuses();'; if($tSwitch == 'Y' && $tPeriod > 0) { $res = \CAgent::GetList(array(), array('NAME' => $agentName)); if($agent = $res->Fetch()) { \CAgent::Update($agent['ID'], array('AGENT_INTERVAL' => $tPeriod*60*60)); } else { \CAgent::AddAgent( $agentName, 'sale', "Y", $tPeriod*60*60, "", "Y" ); } } else { \CAgent::RemoveAgent( $agentName, 'sale' ); } COption::SetOptionString("sale", "check_type_on_pay", $CHECK_TYPE_ON_PAY ?: 'sell'); COption::SetOptionInt("sale", "basket_refresh_gap", $BASKET_REFRESH_GAP); COption::SetOptionString("sale", "allow_pay_status", $ALLOW_PAY_STATUS); COption::SetOptionString("sale", "allow_guest_order_view", $ALLOW_GUEST_ORDER_VIEW); $ALLOW_GUEST_ORDER_VIEW_PATH = is_array($ALLOW_GUEST_ORDER_VIEW_PATH) ? $ALLOW_GUEST_ORDER_VIEW_PATH : array(); COption::SetOptionString("sale", "allow_guest_order_view_paths", serialize($ALLOW_GUEST_ORDER_VIEW_PATH)); $ALLOW_GUEST_ORDER_VIEW_STATUS = is_array($ALLOW_GUEST_ORDER_VIEW_STATUS) ? $ALLOW_GUEST_ORDER_VIEW_STATUS : array(); COption::SetOptionString("sale", "allow_guest_order_view_status", serialize($ALLOW_GUEST_ORDER_VIEW_STATUS)); } } $statusesWithoutNoChange = array(); $arStatuses = array("" => GetMessage("SMO_STATUS")); $dbStatus = CSaleStatus::GetList(Array("SORT" => "ASC"), Array("LID" => LANGUAGE_ID), false, false, Array("ID", "NAME", "SORT")); while ($arStatus = $dbStatus->GetNext()) { $arStatuses[$arStatus["ID"]] = "[".$arStatus["ID"]."] ".$arStatus["NAME"]; $statusesWithoutNoChange[$arStatus["ID"]] = "[".$arStatus["ID"]."] ".$arStatus["NAME"]; } $delieryStatuses = array("" => GetMessage("SMO_STATUS")); $delieryStatusesList = Sale\DeliveryStatus::getAllStatusesNames(); if (!empty($delieryStatusesList) && is_array($delieryStatusesList)) { foreach ($delieryStatusesList as $statusId => $statusName) { $delieryStatuses[$statusId] = "[".$statusId."] ".htmlspecialcharsbx($statusName); } } if($strWarning != '') CAdminMessage::ShowMessage($strWarning); elseif ($bWasUpdated) { if($Update <> '' && $_REQUEST["back_url_settings"] <> '') LocalRedirect($_REQUEST["back_url_settings"]); else LocalRedirect($APPLICATION->GetCurPage()."?mid=".$module_id."&lang=".LANGUAGE_ID."&back_url_settings=".urlencode($_REQUEST["back_url_settings"])."&".$tabControl->ActiveTabParam()); } $currentSettings = array(); $currentSettings['use_sale_discount_only'] = Option::get('sale', 'use_sale_discount_only'); $currentSettings['get_discount_percent_from_base_price'] = Option::get('sale', 'get_discount_percent_from_base_price'); $currentSettings['discount_apply_mode'] = (int)Option::get('sale', 'discount_apply_mode'); $currentSettings['product_reserve_condition'] = (string)Option::get('sale', 'product_reserve_condition'); $currentSettings['product_reserve_clear_period'] = (int)Option::get('sale', 'product_reserve_clear_period'); $currentSettings['tracking_map_statuses'] = unserialize(Option::get('sale', 'tracking_map_statuses', ''), ['allowed_classes' => false]); $currentSettings['tracking_check_switch'] = Option::get('sale', 'tracking_check_switch', 'N'); $currentSettings['tracking_check_period'] = (int)Option::get('sale', 'tracking_check_period', '24'); $tabControl->Begin(); ?>