====== Скидка по купону, зависящая от количества товаров в заказе ======
Для того, чтобы сделать скидку, зависящую от количества товаров в заказе, необходимо:
- Добавить скидку от суммы заказа с требуемой величиной.
- Создать констунту с именем ''SHOP_ITEM_DISCOUNT_ID'' и задать ей значение, равное коду добавленной скидки.
- Переопределить метод ''show'' класса ''Shop_Cart_Controller_Show'' в настройках ТДС корзины с помощью наследования, код метода взять из стантартного класса и внести следующие изменения:
getDiscounts();
foreach ($aShop_Purchase_Discounts as $oShop_Purchase_Discount)
{
/**
*
* Пересчет скидки по формуле: количество товаров * SHOP_ITEM_DISCOUNT
*
* @author Zasorin Maksim, KAD Systems (©) 2015
* @date 23-09-2015
* Начало >>
*/
if (
defined('SHOP_ITEM_DISCOUNT_ID')
&&
$oShop_Purchase_Discount->id == SHOP_ITEM_DISCOUNT_ID
)
{
$discountAmount = $oShop_Purchase_Discount->getDiscountAmount();
$oShop_Purchase_Discount->discountAmount($discountAmount * $quantity);
}
/**
* << Конец
* @author Zasorin Maksim, KAD Systems (©) 2015
* @date 23-09-2015
*/
$this->addEntity($oShop_Purchase_Discount->clearEntities());
$totalDiscount += $oShop_Purchase_Discount->getDiscountAmount();
}
// ...
return Core_Controller::show();
}
// ...
}
- Переопределить метод ''_addPurchaseDiscount'' в обработчиках платежных систем, код взять из стандартного обработчика и внести следующие изменения:
getDiscounts();
foreach ($aShop_Purchase_Discounts as $oShop_Purchase_Discount)
{
/**
*
* Пересчет скидки по формуле: количество товаров * SHOP_ITEM_DISCOUNT
*
* @author Zasorin Maksim, KAD Systems (©) 2015
* @date 23-09-2015
* Начало >>
*/
if (
defined('SHOP_ITEM_DISCOUNT_ID')
&&
$oShop_Purchase_Discount->id == SHOP_ITEM_DISCOUNT_ID
)
{
$discountAmount = $oShop_Purchase_Discount->getDiscountAmount();
$oShop_Purchase_Discount->discountAmount($discountAmount * $quantity);
}
/**
* << Конец
* @author Zasorin Maksim, KAD Systems (©) 2015
* @date 23-09-2015
*/
$oShop_Order_Item = Core_Entity::factory('Shop_Order_Item');
$oShop_Order_Item->name = $oShop_Purchase_Discount->name;
$oShop_Order_Item->quantity = 1;
$discountAmount = $oShop_Purchase_Discount->getDiscountAmount();
// ...
}
// ...
}