Пользователь должен быть авторизирован или это для текущей сессии любого пользователя?

Спасибо большое! Заработало как надо!

А есть ли возможность принудительно устанавливать текущий CostId без модификации costapi?
Это метод \Catalog\Model\CostApi::setSessionDefaultCost()?

Заказчик дал следующее ТЗ:
"Здравствуйте! Необходимо реализовать смену типа цены товаров и пересчет суммы корзины для текущей сессии аналогично 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. Так же не хватает событий на удаление из корзины в стандартной поставке.

Спасибо за исчерпывающий ответ!
Хорошо, что приводятся примеры кода, так как система новая, не все сразу понятно при доработке.

Возможно ли в админке сразу при загрузке страницы активировать блок фильтров по какому-либо признаку?
Пример:
Заказы только за текущий день - фильтр по дате=текущая дата.

Спасибо!
А каким образом через Jquery ?  Или делать циклом по одному?

Здравствуйте! Подскажите, пожалуйста, насчет сабжа.
Корзину очистить можно, а список по одному товару.

Понятно, что можно просто вызвать удаление 1 товара поочередно.
В контроллере блока увидел метод removeAll, в контроллере фронта такого нет.

Как в облачном сервисе, так и в движке из коробки исправления в файлах шаблонов можно делать с помощью пункта меню "Управление-шаблоны"

У системы достаточно хорошее руководство пользователя и разработчика.  Для всего остального есть "Заявки на платную поддержку". http://helpdesk.readyscript.ru/task/create/

Было бы неплохо привязывать поля (скрытие/отображение, обязательное заполнение) к способам доставки.

Например, доставка до точки вывоза не подразумевает заполнение адреса пользователя.
В данный момент адрес заполнять обязательно, даже если пользователь забирает товар в точке выдачи.

610

(2 ответов, оставленных в Вопросы по работе с системой)

http://www.smarty.net/docsv2/ru/languag … iteral.tpl
Кратко: то что в этом блоке будет обрабатываться "как есть".

Поддержу мнение Сергея. Большинство реальных покупателей оставляют все сведения о себе.

Надеюсь разработчики не будут убирать пошаговое оформление заказа и заменять его на   одностраничное оформление, так любимое в России.  На крупных зарубежных сайтах оно практически не представлено (ebay, aliexpress, computeruniverse)