В этой статье мы рассмотрим, как добавить дисконтную накопительную скидку в Drupal Commerce. Дисконтная накопительная скидка — это способ поощрения постоянных клиентов, предоставляющий им скидки в зависимости от суммы их предыдущих покупок.

Шаг 1: Создание дисконтного правила

Первым шагом является создание дисконтного правила. Для этого перейдите в административную панель Drupal и выберите раздел «Commerce» -> «Discounts» -> «Promotions». Нажмите кнопку «Add promotion» и заполните необходимые поля, такие как название правила и тип скидки.

function mymodule_commerce_discount_info() {
  return array(
    'mymodule_discount' => array(
      'name' => t('MyModule Discount'),
      'description' => t('Provides a discount based on previous purchases.'),
      'entity types' => array('commerce_order'),
    ),
  );
}

Шаг 2: Настройка условий и действий

После создания дисконтного правила, необходимо настроить условия и действия скидки. Условия определяют, когда скидка применяется, а действия — какая скидка предоставляется. Например, вы можете задать условие, что скидка применяется только для зарегистрированных пользователей, которые сделали более 1000 долларов покупок в прошлом.

function mymodule_commerce_discount_conditions() {
  $conditions = array();

  $conditions['mymodule_commerce_order_total'] = array(
    'label' => t('Commerce Order: Total'),
    'module' => 'commerce_discount',
    'arguments' => array('commerce_order'),
    'callback' => 'mymodule_commerce_order_total_condition',
  );

  return $conditions;
}

function mymodule_commerce_discount_actions() {
  $actions = array();

  $actions['mymodule_commerce_discount_add_fixed_amount'] = array(
    'label' => t('Commerce Discount: Add fixed amount'),
    'module' => 'commerce_discount',
    'arguments' => array('commerce_order', 'commerce_discount'),
    'callback' => 'mymodule_commerce_discount_add_fixed_amount_action',
  );

  return $actions;
}

Шаг 3: Применение скидки

После настройки условий и действий, скидка будет применяться автоматически при соблюдении заданных условий. Например, если пользователь сделал покупки на сумму более 1000 долларов, ему будет предоставлена скидка в размере 10% на следующую покупку.

Пример программного кода для применения скидки:

function mymodule_commerce_order_total_condition($order) {
  $order_total = commerce_order_total($order);

  if ($order_total['amount'] > 1000) {
    return TRUE;
  }

  return FALSE;
}

function mymodule_commerce_discount_add_fixed_amount_action($order, $discount) {
  $commerce_order_total = commerce_order_total($order);

  // Add a fixed amount discount of $10.
  $discount['amount'] = 10;
  $discount['currency_code'] = $commerce_order_total['currency_code'];

  // Apply the discount.
  commerce_discount_apply_fixed_amount($order, $discount);
}

Дополнительные вопросы и ответы

1. Как настроить скидку в процентах вместо фиксированной суммы?

Для того, чтобы настроить скидку в процентах, необходимо изменить вышеуказанный программный код. Вместо функции commerce_discount_apply_fixed_amount используйте функцию commerce_discount_apply_percentage и укажите процентное значение скидки вместо фиксированной суммы.

2. Можно ли ограничить скидку только определенными товарами или категориями?

Да, можно ограничить скидку только определенными товарами или категориями. Для этого в условиях дисконтного правила добавьте дополнительные проверки, например, сравнивайте значения поля «Product: Product ID» или «Product: Category».

3. Как установить срок действия скидки?

Для установки срока действия скидки вы можете добавить дополнительное условие проверки времени заказа или использовать модуль Commerce Coupon, который предоставляет возможность установки срока действия купона.

В этой статье мы рассмотрели, как добавить дисконтную накопительную скидку в Drupal Commerce и привели примеры программного кода. Надеемся, что эта информация будет полезной для вас!