Тема: Скидка от суммы и подытога корзины
Заказчик дал следующее ТЗ:
"Здравствуйте! Необходимо реализовать смену типа цены товаров и пересчет суммы корзины для текущей сессии аналогично sotomore.ru
1. Тип цены текущего пользователя зависит от подытога текущей корзины.
Например:
0-10 000 = тип цены розничная с ID=2
10001-50000 = тип цены опт1 с ID=3
50001-100000 = тип цены опт2 с ID=23"
Немного изменил cost.api, чтобы тип цены по-умолчанию брался из сессии.
Далее написал обработчик события:
<?php
namespace Opt\Config;
class Handlers extends \RS\Event\HandlerAbstract
{
function init()
{
$this->bind('cart.addproduct.after1')
->bind('cart.update.after');
}
public static function checkprice($info)
{
//\Catalog\Model\CostApi::setSessionDefaultCost(2);
if (!$_SESSION['user_cost_id']) {
$_SESSION['user_default_cost_id']=\Catalog\Model\CostApi::getDefaultCostId();
$cost_id=\Catalog\Model\CostApi::getDefaultCostId() ;
}
else $cost_id=$_SESSION['user_cost_id'];
$cart=$info['cart'];
$cartinfo = $cart->getCartData(false,false);
flog($cost_id); //вывод в консоль firebug
flog( $cartinfo['total']);
if (( $cartinfo['total']<50000) &&( $cost_id!=1))
{
flog('yes');
$_SESSION['user_cost_id']=1;
//здесь необходимо обновить корзину
}
elseif (( $cartinfo['total']>=50000)&&( $cost_id!=2))
{
flog('yes2');
$_SESSION['user_cost_id']=2;
//здесь необходимо обновить корзину
};
return $info;
}
public static function cartUpdateAfter ($info)
{
$result=self::checkprice($info);
return $result;
}
public static function cartAddproductAfter ($info)
{
$result=self::checkprice($info);
return $result;
}
}
====
но не ясно как перерасчитать корзину после смены ID типа цены в сессии $_SESSION['user_cost_id'] .
Пробовал разные методы модели корзины, но итог меняется только при следующем изменении корзины.
Например:
Товар с ценой 1=12000 и ценой2 = 10000. Цена1 меняется на цену2 после 50 000 руб.
при количестве 4 в корзине Итог= 48 000 руб
при количестве 5 в корзине Итог= 60 000 руб (меняется тип цены=цена2=10000)
при количестве 6 в корзине Итог= 60 000 руб
уменьшаем
при количестве 5 в корзине Итог= 50 000 руб
при количестве 4 в корзине Итог= 40 000 руб(тип цены меняется цена=цена1=12000)
Подскажите, пожалуйста, как же пересчитать элементы корзины и итог при изменении типа цены?
p.s. Так же не хватает событий на удаление из корзины в стандартной поставке.