xandeadx.ru Блог музицирующего веб-девелопера

Drupal → Программно добавить скидку к заказу

Опубликовано в

Ранее показывал как добавлять скидки к заказу из админки. Сейчас покажу как это же можно сделать программно.

Пример добавления скидки в 500 руб. для заказов с числом товаров больше 5:

/**
 * Implements hook_commerce_order_presave().
 */
function MODULENAME_commerce_order_presave($order) {
  $order_wrapper = entity_metadata_wrapper('commerce_order', $order);
  $line_items_quantity = commerce_line_items_quantity($order_wrapper->commerce_line_items, commerce_product_line_item_types());
 
  if ($line_items_quantity > 5) {
    $discount_decimal = 500;
    $discount_currency_code = 'RUB';
 
    $order_total = $order_wrapper->commerce_order_total->value();
    $discount_amount = commerce_currency_decimal_to_amount($discount_decimal, $discount_currency_code);
    $discount_amount = commerce_currency_convert($discount_amount, $discount_currency_code, $order_total['currency_code']);
 
    $order_wrapper->commerce_order_total->amount = $order_total['amount'] - $discount_amount;
    $order_wrapper->commerce_order_total->data = commerce_price_component_add($order_total, 'discount', array(
      'amount' => $discount_amount,
      'currency_code' => $order_total['currency_code'],
      'data' => array(),
    ), TRUE);
  }
}
Написанное актуально для Commerce 1
Похожие записи

Комментарии RSS

как сделать что бы скидка срабатывала только определенных товаров?

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании