Cprice getbaseprice не работает

не работает CPrice::SetBasePrice в обработчике изменения элемента

не работает CPrice::SetBasePrice в обработчике изменения элемента

Цитата
AddEventHandler(«iblock», «OnAfterIBlockElementUpdate», Array(«CatalogTools», «test»));

class CatalogTools <
function test(&$arFields) <
CModule::IncludeModule(‘catalog’);
CPrice::SetBasePrice(13,13,’USD’);
>

возвращает true, но базовая цена не меняется..

если просто написать в консоли

Цитата
CModule::IncludeModule(‘catalog’);
CPrice::SetBasePrice(13,13,’USD’);

Найти эту строчку и разобраться, что к чему, можно в файлах /bitrix/modules/catalog/admin/templates/product_edit_action.php и /bitrix/modules/catalog/admin/templates/subproduct_edit_acti ­on.php.

Вкратце: фишка в том, что $arUpdatedIDs завязан на текстовых полях цен, которые передаются в POST, и попадают туда только те значения, которые в текстовом поле цены. Если цена в поле не указана, то в массив ничего не попадает, а то, что не попадает, удаляется.

Решается эта проблема дополнительным обработчиком OnBeforeProductPriceDelete , который должен возвратить false, запрещая удаление.

По ссылкам в разделах документации всё хорошо описано и с примерами.

Источник

не работает CPrice::SetBasePrice в обработчике изменения элемента

не работает CPrice::SetBasePrice в обработчике изменения элемента

Цитата
AddEventHandler(«iblock», «OnAfterIBlockElementUpdate», Array(«CatalogTools», «test»));

class CatalogTools <
function test(&$arFields) <
CModule::IncludeModule(‘catalog’);
CPrice::SetBasePrice(13,13,’USD’);
>

возвращает true, но базовая цена не меняется..

если просто написать в консоли

Цитата
CModule::IncludeModule(‘catalog’);
CPrice::SetBasePrice(13,13,’USD’);

Найти эту строчку и разобраться, что к чему, можно в файлах /bitrix/modules/catalog/admin/templates/product_edit_action.php и /bitrix/modules/catalog/admin/templates/subproduct_edit_acti ­on.php.

Вкратце: фишка в том, что $arUpdatedIDs завязан на текстовых полях цен, которые передаются в POST, и попадают туда только те значения, которые в текстовом поле цены. Если цена в поле не указана, то в массив ничего не попадает, а то, что не попадает, удаляется.

Решается эта проблема дополнительным обработчиком OnBeforeProductPriceDelete , который должен возвратить false, запрещая удаление.

По ссылкам в разделах документации всё хорошо описано и с примерами.

Источник

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

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

AddEventHandler(«iblock», «OnAfterIBlockElementUpdate», Array(«MyClass2», «OnAfterIBlockElementUpdateHandler»));

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

$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»]);
>

$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 q=17541806
MyClass2::OnAfterIBlockElementUpdateHandler

Источник

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

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

AddEventHandler(«iblock», «OnAfterIBlockElementUpdate», Array(«MyClass2», «OnAfterIBlockElementUpdateHandler»));

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

$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»]);
>

$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 q=17541806
MyClass2::OnAfterIBlockElementUpdateHandler

Источник

GetBasePrice

Описание и параметры

Метод возвращает базовую цену товара с кодом PRODUCT_ID. Базовая цена — это цена базового типа цен. Нестатический метод.

Параметры вызова

Параметр Описание С версии
productID Код товара или торгового предложения (ID элемента инфоблока).

До версии 4.0.4 параметр назывался PRODUCT_ID. quantityFrom Количество товара, начиная с приобретения которого действует эта цена. 4.0.4 quantityTo Количество товара, при приобретении которого заканчивает действие эта цена. 4.0.4

Возвращаемые значения

Возвращает ассоциативный массив с ключами:

Код Описание
ID Код ценового предложения.
PRODUCT_ID Код товара или торгового предложения (ID элемента инфоблока).
EXTRA_ID Код наценки.
CATALOG_GROUP_ID Код типа цены.
PRICE Базовая цена.
CURRENCY Валюта базовой цены.
QUANTITY_FROM Количество товара, начиная с приобретения которого действует эта цена.
QUANTITY_TO Количество товара, при приобретении которого заканчивает действие эта цена.

Примеры использования

Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.

Источник

Читайте также:  Не работает sip телефония
Оцените статью