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-”константа” в таблице конфигурации, редактируется в админке на странице свойств модуля)
Метки: oscommerce