Не работает сохранение цены в USD в карточке товара в разделе "Торговый каталог" необходимо указать цену в USD на некоторые товары, техподдержка битрикс намекнула на файл в bitrix/php_interface/init.php
Вот сам файл:[CODE]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;
}
[/CODE]Помогите разобраться, а то кто делал сайт уже не выходит на связь, и у меня такое чувство что тут напортачено как-то не так)