Описание и параметры
bool
CCatalogDiscount::Update(
int ID,
array arFields
);
Метод изменяет параметры скидки с кодом ID в соответствии с данными из массива arFields. Нестатический метод.
Параметры вызова
Параметр | Описание |
ID |
Код скидки. |
arFields |
Ассоциативный массив параметров новой скидки, ключами в котором являются названия параметров, а значениями - соответствующие значения. Допустимые ключи:
- SITE_ID - сайт;
- ACTIVE - флаг активности;
- NAME - название скидки;
- COUPON - код купона;
- USE_COUPONS - [Y/N] - есть купоны или нет, обновляется автоматически.
- SORT - индекс сортировки;
- MAX_DISCOUNT - максимальная величина скидки;
- VALUE_TYPE - тип скидки (P - в процентах, F - фиксированная величина, S - Установить цену на товар);
- VALUE - величина скидки;
- CURRENCY - валюта;
- RENEWAL - флаг "Скидка на продление";
- ACTIVE_FROM - дата начала действия скидки;
- ACTIVE_TO - дата окончания действия скидки;
- IBLOCK_IDS - массив кодов инфоблоков, на которые действует скидка (если скидка действует не на все инфоблоки). Ключ является устаревшим с версии 12.0.0;
- PRODUCT_IDS - массив кодов товаров, на которые действует скидка (если скидка действует не на все товары). Ключ является устаревшим с версии 12.0.0;
- SECTION_IDS - массив кодов групп товаров, на которые действует скидка (если скидка действует не на все группы товары). Ключ является устаревшим с версии 12.0.0;
- GROUP_IDS - массив кодов групп пользователей, на которые действует скидка (если скидка действует не на все группы пользователей);
- CATALOG_GROUP_IDS - массив кодов типов цен, на которые действует скидка (если скидка действует не на все типы цен);
- CONDITIONS - массив для изменения условий использования скидки. Массив перезаписывается, поэтому при обновлении скидки следует добавлять в массив все необходимые данные. Ключ доступен с версии 12.0.0.
Если он задан и не пуст, то массивы PRODUCT_IDS, SECTION_IDS и IBLOCK_IDS использоваться не будут. Чтобы задать параметры скидки через эти 3 ключа, то CONDITIONS в массиве arFields должен отсутствовать, а старые данные будут изменены в соответствии PRODUCT_IDS, SECTION_IDS и IBLOCK_IDS.
Каждое условие массива CONDITIONS описывается массивом следующей структуры:
- CLASS_ID - идентификатор (строка);
- DATA => array() - массив параметров условий;
- CHILDREN => array() - массив подусловий, каждое из которых является массивом аналогичной структуры, где ключами являются значения 0,1,2,3,..
Возможные логические условия:
- Equal - равно;
- Not - не равно;
- Great - больше;
- Less - меньше;
- EqGr - больше либо равно;
- EqLs - меньше либо равно.
Наименования условий:
- CondIBElement - товар;
- CondIBIBlock - инфоблок;
- CondIBSection - раздел;
- CondIBCode - символьный код;
- CondIBXmlID - внешний код;
- CondIBName - название;
- CondIBActive - активность;
- CondIBDateActiveFrom - начало активности;
- CondIBDateActiveTo - окончание активности;
- CondIBSort - сортировка;
- CondIBPreviewText - описание для анонса;
- CondIBDetailText - детальное описание;
- CondIBDateCreate - дата создания;
- CondIBCreatedBy - автор;
- CondIBTimestampX - дата изменения;
- CondIBModifiedBy - изменивший;
- CondIBTags - теги;
- CondCatQuantity - количество товара на складе;
- CondCatWeight - вес товара;
- CondCatVatID - НДС;
- CondCatVatIncluded - НДС включен в цену.
Кроме того, возможна привязка условий к свойствам товара.
Верхний элемент массива CONDITIONS всегда один и тот же (для скидок каталога может быть получен методом CCatalogCondTree::GetDefaultConditions()):
array(
'CLASS_ID' => 'CondGroup',
'DATA' => array('All' => 'AND', 'True' => 'True'),
'CHILDREN' => array()
);
|
Возвращаемые значения
Метод возвращает код измененной записи или false в случае ошибки.
Примеры использования
Получить детальную информацию об ошибке при изменении можно следующим образом:
$res = CCatalogDiscount::Update($ID, $arFields);
if (!$res) {
$ex = $APPLICATION->GetException();
$ex->GetString();
}
Пример массива arFields:
$arFields = array(
"SITE_ID" => "s1",
"MAX_DISCOUNT" => 0,
"VALUE" => 15,
"ACTIVE" => "Y",
"CONDITIONS" => array (
'CLASS_ID' => 'CondGroup',
'DATA' =>
array (
'All' => 'AND',
'True' => 'True',
),
'CHILDREN' =>
array (
0 =>
array (
'CLASS_ID' => 'CondIBElement',
'DATA' =>
array (
'logic' => 'Equal',
'value' => 2975, //товар с ID=2975
),
),
1 =>
array (
'CLASS_ID' => 'CondCatQuantity',
'DATA' =>
array (
'logic' => 'Equal',
'value' => 10, //остаток на складе равен 10
),
),
),
)
);