CMS Drupal

Для управления скидками в магазине на Ubercart (Drupal 6) существует модуль uc_discounts_alt Модуль хороший, но есть проблемы с отображением скидок в разделе просмотра истории заказов. Там видна полная сумма заказ без скидок, поэтому у покупателя, естественно, возникают вопросы. Перерыл весь интернет и ничего кроме вопросов с такой же проблемой не нашел. Пришлось ковыряться самому.

Вынужден был хакать файл uc_order.order_pane.inc из модуля uc_order:

function uc_order_pane_line_items($op, $order) {
  switch ($op) {
    case 'view':
    case 'customer':
...
 
      $output = '<table class="line-item-table">';
      foreach ($line_items as $item) {
        $context['subject']['line_item'] = $item;
        $output .= '<tr><td class="li-title">' .
                   check_plain($item['title']) .
                   ':</td><td class="li-amount">' .
                   uc_price($item['amount'], $context) .
                   '</td></tr>';
      }
      $output .= '</table>';
 
 
 
      // XA
      if (module_exists('uc_discounts')){
        $discount = 0;
        $discounts = get_discounts_for_order($order);
        foreach ($discounts as $cur_discount) {
          $discount += $cur_discount->amount;
        }
 
        $output = '<table class="line-item-table">';
        foreach ($line_items as $item) {
          $context['subject']['line_item'] = $item;
          if ($item['title'] == 'Итого') {
            $output .= '<tr><td class="li-title">' .
                       check_plain('Скидка') .
                       ':</td><td class="li-amount">' .
                       uc_price($discount, $context) .
                       '</td></tr>';
            $item['amount'] = $item['amount'] - $discount;
          }
          $output .= '<tr><td class="li-title">' .
                     check_plain($item['title']) .
                     ':</td><td class="li-amount">' .
                     uc_price($item['amount'], $context) .
                     '</td></tr>';
        }
        $output .= '</table>';
 
      }
      // 		XA
 
      return $output;
 
    case 'show-title':
      return FALSE;
...

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

Комментарии

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

Почему то не работает твой хак, абсолютно!
Есть рабочее решение?

admin аватар

По крайней мере у меня это решение работает. В вашем случае может версии играют какую-то роль. Так не глядя не скажу.

Дело в том, что он отображает скидку лишь тогда когда скидка действует. Как только период действия скидки заканчивается, то в истории заказа скидки уже нет

admin аватар

Тут спорить не буду. Очень может быть. В моем случае скидка была постоянной, да и давно это уже было.

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

Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступны HTML теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img>
  • Строки и параграфы переносятся автоматически.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>, <1c7>, <drupal5>, <drupal6>, <javascript>, <php>. Beside the tag style "<foo>" it is also possible to use "[foo]".