Документация для разработчиков

Add

bool
CCatalogDiscount::Add(
 array arFields );

Метод добавляет новую скидку в соответствии с данными из массива arFields. Нестатический метод.

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

ПараметрОписание
arFields Ассоциативный массив параметров новой скидки, ключами в котором являются названия параметров, а значениями - соответствующие значения. Допустимые ключи:
  • SITE_ID - сайт, обязательное поле;
  • ACTIVE - флаг активности;
  • NAME - название скидки, обязательное поле;
  • COUPON - код купона;
  • SORT - индекс сортировки;
  • MAX_DISCOUNT - максимальная величина скидки;
  • LAST_DISCOUNT - если равно N, то отменяет опцию Прекратить дальнейшее применение скидок;
  • 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 - массив кодов типов цен, на которые действует скидка (если скидка действует не на все типы цен).
  • CATALOG_COUPONS - массив купонов скидки.
  • USE_COUPONS - [Y/N] - есть купоны или нет, обновляется автоматически.
  • PRIORITY - приоритет применимости;
  • CONDITIONS - массив для создания условий использования скидки. Ключ доступен с версии 12.0.0.

    Если он задан и не пуст, то массивы PRODUCT_IDS, SECTION_IDS и IBLOCK_IDS использоваться не будут. Чтобы задать параметры скидки через эти 3 ключа, то CONDITIONS в массиве arFields должен отсутствовать.

    Каждое условие массива 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 в случае ошибки.

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

Получить детальную информацию об ошибке при сохранении можно следующим образом:

$ID = CCatalogDiscount::Add($arFields);
$res = $ID>0;
if (!$res) { 
    $ex = $APPLICATION->GetException();  
    $ex->GetString(); 
}


© «Битрикс», 2001-2019, «1С-Битрикс», 2019
Наверх