Для управления скидками в магазине на 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; ...
Смысл примерно такой, что мы вклиниваемся между строкой промежуточного итога и окончательного итога по заказу. Вписываем туда строку со скидкой и вычитаем сумму скидки из окончательного итога.
Если я Вам помог, то меня можно поблагодарить.
Почему то не работает твой хак, абсолютно!
Есть рабочее решение?
По крайней мере у меня это решение работает. В вашем случае может версии играют какую-то роль. Так не глядя не скажу.
Дело в том, что он отображает скидку лишь тогда когда скидка действует. Как только период действия скидки заканчивается, то в истории заказа скидки уже нет
Тут спорить не буду. Очень может быть. В моем случае скидка была постоянной, да и давно это уже было.
Отправить комментарий