Не работает сохранение цены в USD в карточке товара в разделе "Торговый каталог" необходимо указать цену в USD на некоторые товары, техподдержка битрикс намекнула на файл в bitrix/php_interface/init.php
Вот сам файл:
Помогите разобраться, а то кто делал сайт уже не выходит на связь, и у меня такое чувство что тут напортачено как-то не так)
Вот сам файл:
Код |
---|
function __d($var, $isAdmin = false, $caller = null){ global $USER; if(!($USER->IsAdmin() || $isAdmin)) return false; if(!isset($caller)){ $caller = array_shift(debug_backtrace(1)); } echo '<code>File: '.$caller['file'].' / Line: '.$caller['line'].'</code>'; echo '<pre>'; echo print_r($var, true); echo '</pre>'; } function IBlockElementAfterSaveHandler($arg1, $arg2 = false) { static $use_handler = true; if ($use_handler) { CModule::IncludeModule("iblock"); CModule::IncludeModule("catalog"); $ELEMENT_ID = false; if (is_array($arg2) && $arg2["PRODUCT_ID"] > 0) { $ELEMENT_ID = $arg2["PRODUCT_ID"]; } elseif (is_array($arg1) && $arg1["ID"] > 0) { $arElementFields = CIBlockElement::GetByID($arg1["ID"])->GetNext(); if($arElementFields["IBLOCK_ID"] == 4) { $ELEMENT_ID = $arg1["ID"]; } } if($ELEMENT_ID) { $price = true; if($price) { $use_handler = false; CPrice::DeleteByProduct($ELEMENT_ID); $arSelect = Array("ID", "PROPERTY_SAMOVYVOZST","IBLOCK_ID","PROPERTY_SALE_VAL","PROPERTY_SAMOVYVOZM","PROPERTY_ROZNICAST","PROPERTY_ROZNICAM"); $arFilter = Array("IBLOCK_ID"=>4, "ID"=>$ELEMENT_ID); $res = CIBlockElement::GetList(Array(), $arFilter, false, Array(), $arSelect); if ($arFields = $res->Fetch()){ if ($arFields['PROPERTY_SALE_VAL_VALUE'] != ''){ $dbProductDiscounts = CCatalogDiscount::GetList( array("SORT" => "ASC"), array("PRODUCT_ID" => $ELEMENT_ID), false, false, array()); $arLogic = array ( "CLASS_ID" => "CondIBElement", "DATA" => array ( "logic" => "Equal", "value" => $ELEMENT_ID,)); if ($arProductDiscounts = $dbProductDiscounts->Fetch()){ $skidka = intval($arFields['PROPERTY_SALE_VAL_VALUE']); $arDiscountFields = array( "SITE_ID" => 's1', "NAME" => 'Скидка '.$skidka.'%', "VALUE_TYPE" => 'P', "VALUE" => $skidka, "CURRENCY" => 'RUB', "ACTIVE" => "Y", "CONDITIONS" =>serialize($arLogic), ); CCatalogDiscount::Update($arProductDiscounts['ID'],$arDiscountFields); } else { $arDiscountFields = array( "SITE_ID" => 's1', "NAME" => 'Скидка '.intval($arFields['PROPERTY_SALE_VAL_VALUE']).'%', "VALUE_TYPE" => 'P', "VALUE" => intval($arFields['PROPERTY_SALE_VAL_VALUE']), "CURRENCY" => 'RUB', "ACTIVE" => "Y", "CONDITIONS" =>serialize($arLogic), ); CCatalogDiscount::Add($arDiscountFields); } } else { $dbProductDiscounts1 = CCatalogDiscount::GetList( array("SORT" => "ASC"), array("PRODUCT_ID" => $ELEMENT_ID), false, false, array() ); $arLogic = array ( "CLASS_ID" => "CondIBElement", "DATA" => array ( "logic" => "Equal", "value" => $ELEMENT_ID, ) ); if ($arProductDiscounts1 = $dbProductDiscounts1->Fetch()) { //echo'<pre>';print_r($arProductDiscounts1);echo'</pre>';die(); CCatalogDiscount::Delete($arProductDiscounts1['ID']); } } $cprice = new CPrice(); $res = $cprice->SetBasePrice($ELEMENT_ID, $arFields['PROPERTY_SAMOVYVOZST_VALUE'], "RUB"); $use_handler = true; if ($skidka != ''){ $value = $arFields['PROPERTY_SAMOVYVOZST_VALUE'] - ($arFields['PROPERTY_SAMOVYVOZST_VALUE']/100*$skidka); // echo '<pre>';print_r($arFields['PROPERTY_SAMOVYVOZST_VALUE']);echo '</pre>';die(); CIBlockElement::SetPropertyValueCode($ELEMENT_ID, "SORT_PRICE", $value); } else { CIBlockElement::SetPropertyValueCode($ELEMENT_ID, "SORT_PRICE", $arFields['PROPERTY_SAMOVYVOZST_VALUE']); } } } } } } /*function OnBeforeUserRegisterHandler(&$arFields) { global $APPLICATION; //CSS ANTIBOT if(isset($_REQUEST['ANTIBOT']) && is_array($_REQUEST['ANTIBOT'])) { foreach($_REQUEST['ANTIBOT'] as $k=>$v) if(empty($v)) unset($_REQUEST['ANTIBOT'][$k]); } if($_REQUEST['ANTIBOT'] || !isset($_REQUEST['ANTIBOT'])) { $APPLICATION->ThrowException('Ошибка регистрации.'); return false; } //\\CSS ANTIBOT }*/ function p($str, $v=0){ global $USER; if ($USER->IsAdmin()){ echo '<pre>'; if ($v == 1){ var_dump($str); } elseif($v == 0){ print_r($str); } echo '</pre>'; } } AddEventHandler("main", "OnAfterUserRegister", "OnAfterUserRegisterHandler"); function OnAfterUserRegisterHandler(&$arFields) { //Отправим письмо пользователю после регистрации со всеми данными $arUserFields = array( "USER_ID" => $arFields["USER_ID"], "STATUS" => ($arFields["ACTIVE"] == "Y" ? 'Активен' : 'Не активен'), "MESSAGE" => '', "LOGIN" => $arFields["LOGIN"], "PASSWORD" => $arFields["PASSWORD"], "URL_LOGIN" => urlencode($arFields["LOGIN"]), "CHECKWORD" => $arFields["CHECKWORD"], "NAME" => $arFields["NAME"], "LAST_NAME" => $arFields["LAST_NAME"], "EMAIL" => $arFields["EMAIL"], ); //CEvent::Send('USER_INFO', SITE_ID, $arFields, 'N'); CEvent::SendImmediate('USER_INFO', SITE_ID, $arUserFields, 'N'); //Отправим стандартную информацию пользователю, но без пароля, //тогда отправку выше CEvent::SendImmediate(0 надо закомментить //CUser::SendUserInfo($USER->GetID(), SITE_ID, 'Вы успешно зарегистрированы.', true); } function MyGetOptimalPrice($productID, $quantity = 1, $arUserGroups = array(), $renewal = "N", $arPrices = array(), $siteID = false, $arDiscountCoupons = true) { static $use_handler = true; CModule::IncludeModule("iblock"); // Выведем актуальную корзину для текущего пользователя $dbBasketItems = CSaleBasket::GetList(false, array( "FUSER_ID" => CSaleBasket::GetBasketUserID(), "LID" => SITE_ID, "ORDER_ID" => "NULL", "PRODUCT_ID"=>$productID ), false, false, array() ); while ($arItem = $dbBasketItems->Fetch()) { $db_res = CSaleBasket::GetPropsList( array(), array('BASKET_ID'=>$arItem['ID']) ); while ($ar_res = $db_res->Fetch()) { //echo'<pre>';print_r($ar_res);echo '</pre>'; $price = $ar_res['VALUE']; $ID = $arItem['ID']; } $arDiscounts = CCatalogDiscount::GetDiscountByProduct($productID); } $catalog_group_id = 1; $arSelect = Array("ID", "IBLOCK_ID", "IBLOCK_SECTION_ID", "PROPERTY_WEIGHT", "PROPERTY_SAMOVYVOZST", "PROPERTY_BRAND"); $arFilter = Array("IBLOCK_ID"=>4, "ID"=>$productID, "ACTIVE"=>"Y"); $res = CIBlockElement::GetList(Array(), $arFilter, false, Array(), $arSelect); if($ob = $res->GetNextElement()) { $arFields = $ob->GetFields(); } $CZ = $arFields['PROPERTY_SAMOVYVOZST_VALUE']; $VK = $arFields['PROPERTY_WEIGHT_VALUE']; $exp = explode('.', $_SERVER['SERVER_NAME']); $city = $exp[0]; $arSelect = Array("ID", "CODE"); $arFilter = Array("IBLOCK_ID"=>10, "CODE" => $city); $res = CIBlockElement::GetList(Array(), $arFilter, false, Array(), $arSelect); if($ob = $res->GetNextElement()) { $cityInfo = $ob->GetFields(); } $cityto = $cityInfo['CODE']; $brand = $arFields['PROPERTY_BRAND_VALUE']; $arSelect = Array("UF_FORMULA"); $arFilter = Array('IBLOCK_ID'=>4, 'ID'=>$arFields['IBLOCK_SECTION_ID']); $res = CIBlockSection::GetList(Array($by=>$order), $arFilter, true, $arSelect); $ar_res = $res->GetNext(); $arSelect = Array("ID", "PROPERTY_$cityto"); $arFilter = Array("IBLOCK_ID"=>6, "ID"=>$brand, "ACTIVE"=>"Y"); $res = CIBlockElement::GetList(Array(), $arFilter, false, Array(), $arSelect); if($ob = $res->GetNextElement()) { $arFields = $ob->GetFields(); } $FDG = $arFields["PROPERTY_".strtoupper($cityto)."_VALUE"]; if (($FDG != 0) and (!empty($ar_res['UF_FORMULA'][0]))){ $formula = str_replace(Array('ЦенаЗавода', 'ФураДоГорода', 'ВесКирпича'), Array('$CZ', '$FDG', '$VK'), $ar_res['UF_FORMULA'][0]); $formula = '$res = '.$formula.';'; eval($formula); $price_value = $res; } else { $price_value = $CZ; } return array( 'PRICE' => array( "ID" => $ID, 'CATALOG_GROUP_ID' => $catalog_group_id, 'PRICE' => $price_value, 'CURRENCY' => "RUB", 'ELEMENT_IBLOCK_ID' => $productID, 'VAT_INCLUDED' => "Y", ), 'DISCOUNT_PRICE' => 100 - (100*$arDiscounts[0]['VALUE']/100), 'DISCOUNT' => $arDiscounts[0] ); return true; } function isBasketEmpty() { $dbBasketItems = CSaleBasket::GetList(array("NAME" => "ASC","ID" => "ASC"), array("FUSER_ID" => CSaleBasket::GetBasketUserID(), "LID" => SITE_ID, "ORDER_ID" => "NULL"), false, false, array("ID","MODULE","PRODUCT_ID")); if ($arItems=$dbBasketItems->Fetch()){ return false; } else { return true; } } function getNumEnding($number, $endingArray) { $number = $number % 100; if ($number>=11 && $number<=19) { $ending=$endingArray[2]; } else { $i = $number % 10; switch ($i) { case (1): $ending = $endingArray[0]; break; case (2): case (3): case (4): $ending = $endingArray[1]; break; default: $ending=$endingArray[2]; } } return $ending; } |