Oscommerce - выбираем модуль скидки для клиента или пишем свой.

Для OSCommerce существует несколько готовых решений для организации скидок на своем сайте. Самый простой способ найти большинство дополнений (addon) - обратиться на официальный сайт.

http://www.oscommerce.com/community?contributions=&search=discount&category=all

Одной из самых популярных в последнее время считается возможность предоставлять скидку по кодовому слову (или по купону) - т.н. Discount Code. Модули для создания купонов на скидку есть и для OSCommerce-магазинов.

Модули скидки для OSCommerce

Персональная скидка - Customer specific discount ot_customer discount.php - позволяет устанавливать персональную скидку каждому клиенту.

Скидка в зависимости от количества товаров - Quantity discount ot_qty_discount.php - скидка в зависимости от количества купленных товаров

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

Структура модуля скидок для OSCommerce

Большинство скидок сделаны в виде модулей order_total (префикс ot_). Это значит, что скидка (без “доработок”) проявляется лишь во время окончательного оформления заказа, а также в письме с подтверждением заказа. Каждый модуль оформляется в виде отдельного класса с несколькими обязательными методами - install, remove, check, process.

Методы install и remove, как несложно догадаться отвечают за установку и удаление модуля соответственно (как правило, содержат операции вставки и удаления строк в таблице конфигурации)

Метод process отвечает непосредственно за обсчет скидки (глобальная переменная $order содержит информацию о заказе.. ) и за её отображение:

function process() {
$od_amount = $this->calculate_discount(); // функция подсчета ссылки.
//при необходимости можно использовать, например global $customer_id
$this->output[]=array( //массив, по данным которого формируется строка таблицы "итого"
'title'=>$this->title.':', // название скидки (персональная скидка, скидка за количество)
'text'=>$currencies->format($od_amount), // форматированное число с обозначением валюты
'value'=>
$od_amount //сумма скидки
);
$order->info['total'] = $order->info['total'] - $od_amount; //считаем итог
$order->info['subtotal'] -= $od_amount;//считаем подитог;
}

Предусмотрена возможность указания порядка обсчета скидок (равно как и других модулей order_total - доставка, налог) - для этого в методе-конструкторе следует задать $this->sort_order (как правило, с правой стороны -  define-”константа” в таблице конфигурации,  редактируется в админке на странице свойств модуля)

Метки:

Автор будет признателен, если Вы поделитесь ссылкой на статью, которая Вам помогла:
BB-код (для вставки на форум)

html-код (для вставки в ЖЖ, WP, blogger и на страницы сайта)

ссылка (для отправки по почте)

Добавить комментарий