Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

не добавляются цены методом cprice::add

00 голосов
7
не добавляются цены методом cprice::add
спросил 25 Авг, 13 от Amentet (2,080 баллов)

7 Ответы

00 голосов
Написал обработчик но цена не приходит


AddEventHandler("iblock", "OnAfterIBlockElementUpdate", Array("MyClass2", "OnAfterIBlockElementUpdateHandler"));

class MyClass2
{
    // создаем обработчик события "OnAfterIBlockElementUpdate"
    function OnAfterIBlockElementUpdateHandler(&$arFields)
    {
  if (intval($arFields["IBLOCK_ID"]) == 49)
  {

if (CModule::IncludeModule("catalog")
   && CCatalog::GetByID($arFields["IBLOCK_ID"]))
{
$db_props = CIBlockElement::GetProperty(49, intval($arFields["ID"]), array("sort" => "asc"), Array("CODE"=>"DISCOUNT"));
if($ar_props = $db_props->Fetch())
    $DISCOUNT = intval($ar_props["VALUE"]);
echo "<script type='text/javascript'>alert '".$DISCOUNT."'; </script>";

$db_res = CPrice::GetList(
  array(),
  array(
    "PRODUCT_ID" => intval($arFields["ID"]),
    "CATALOG_GROUP_ID" => 9,
)
    );
if ($ar_res2 = $db_res->Fetch())
{
    $price=intval($ar_res2["PRICE"]);
}
ответил 25 Авг, 13 от Amentet (2,080 баллов)
00 голосов
$price_new=$price-$price*$DISCOUNT/100;

$arFields2 = Array(
    "PRODUCT_ID" => intval($arFields["ID"]),
    "CATALOG_GROUP_ID" => 11,
    "PRICE" => intval($price_new),
    "CURRENCY" => "RUB",
    "CAN_BUY" => "Y",
    "CAN_ACCESS" => "Y"
);
$res = CPrice::GetList(
  array(),
  array(
    "PRODUCT_ID" => intval($arFields["ID"]),
    "CATALOG_GROUP_ID" => 11,
)
    );
if ($arr = $res->Fetch())
{
    CPrice::Update(intval($arr["ID"]), $arFields2);
if($arFields["RESULT"])
      AddMessage2Log("1Запись с кодом ".$arFields["ID"]." изменена."." || Скидка=".$DISCOUNT." Цена=".$price." Новая цена=".$price_new);
  else
      AddMessage2Log("1Ошибка изменения записи ".$arFields["ID"]." (".$arFields["RESULT_MESSAGE"].").");

}
else
{
    $q=CPrice::Add($arFields2);
$arPrice = CPrice::GetByID(11);
if($arFields["RESULT"])
      AddMessage2Log("2Запись с кодом ".$arFields["ID"]." изменена."." || Скидка=".$DISCOUNT." Цена=".$price." Новая цена=".intval($price_new)." q=".$q." тип цены=".$arr["CATALOG_GROUP_NAME"]);
  else
      AddMessage2Log("2Ошибка изменения записи ".$arFields["ID"]." (".$arFields["RESULT_MESSAGE"].").");

}

}
    }
    }
} выводил логи и смотрел все нормально

старый лог



2012-02-27 19:32:19 -  - 2Запись с кодом 406932 изменена. || Скидка=10 Цена=964 Новая цена=867 IBLOCK=49 ID=406932 q=17541806
    MyClass2::OnAfterIBlockElementUpdateHandler < call_user_func_array < ExecuteModuleEventEx
новый лог


2012-02-28 08:15:52 -  - 2Запись с кодом 406932 изменена. || Скидка=10 Цена=964 Новая цена=867 q=17543330 тип цены=
    MyClass2::OnAfterIBlockElementUpdateHandler < call_user_func_array < ExecuteModuleEventEx
В чем может быть причина?
ответил 07 Ноя, 13 от Amentet (2,080 баллов)
00 голосов
что за фигня с форумом? сколько стоит ограничение на сообщение?
ответил 14 Фев, 14 от Amentet (2,080 баллов)
00 голосов
логи которых не видно

Код
2012-02-27 19:32:19 -  - 2Запись с кодом 406932 изменена. || Скидка=10 Цена=964 Новая цена=867 IBLOCK=49 ID=406932 q=17541806

     MyClass2::OnAfterIBlockElementUpdateHandler < call_user_func_array < ExecuteModuleEventEx


Код
2012-02-28 08:15:52 -  - 2Запись с кодом 406932 изменена. || Скидка=10 Цена=964 Новая цена=867 q=17543330 тип цены=

     MyClass2::OnAfterIBlockElementUpdateHandler < call_user_func_array < ExecuteModuleEventEx
ответил 04 Июнь, 14 от Amentet (2,080 баллов)
00 голосов
никто не знает в чем проблема?
может кто знает хоть как этот метод правильно должен работать?
ответил 02 Окт, 14 от Amentet (2,080 баллов)
00 голосов
Особо всматриваться не стал..........вывод ошибок делали? Просто например не проинклюдили модуль sale и такое может быть.
ответил 04 Фев, 15 от volk (180 баллов)
00 голосов
Такая же проблема.  Предложили обновить параметры товара  CCatalogProduct:Add(). Если поможет скажите. Руки проверить не дошли.
ответил 17 Май, 15 от NiKa (100 баллов)

Похожие вопросы

0 голосов
1 ответ
0 голосов
5 ответов
0 голосов
5 ответов
0 голосов
2 ответов