====== Скидка по купону, зависящая от количества товаров в заказе ====== Для того, чтобы сделать скидку, зависящую от количества товаров в заказе, необходимо: - Добавить скидку от суммы заказа с требуемой величиной. - Создать констунту с именем ''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(); // ... } // ... }