<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Форум ReadyScript &mdash; Скидка на товар от количества]]></title>
	<link rel="self" href="https://forum.readyscript.ru/feed/atom/topic/960" />
	<updated>2017-02-10T12:45:17Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.readyscript.ru/topic/960/skidka-na-tovar-ot-kolichestva/</id>
		<entry>
			<title type="html"><![CDATA[Re: Скидка на товар от количества]]></title>
			<link rel="alternate" href="https://forum.readyscript.ru/post/6025/#p6025" />
			<content type="html"><![CDATA[<p>Рабочий вариант, спасибо тех.поддержке<br /></p><div class="codebox"><pre><code>&lt;?php
namespace Custom\Config;
use \RS\Orm\Type as OrmType;

class Handlers extends \RS\Event\HandlerAbstract
{
    function init()
    {
        $this
            -&gt;bind(&#039;cart.addproduct.after&#039;, null, &#039;applyCartRules&#039;)
            -&gt;bind(&#039;cart.update.after&#039;, null, &#039;applyCartRules&#039;);
    }

    /**
    * Обработчик будет вызываться, при добавлении или изменении товара в корзине
    * 
    * @param \Shop\Model\Cart $cart
    */
    public static function applyCartRules($params) 
    {
        $cart = $params[&#039;cart&#039;];
        if (!isset($cart-&gt;is_cartrules_action)) { //Защита от рекурсии
            
            $cart-&gt;is_cartrules_action = true; //Защита от рекурсии
            
            $cart_product_items = $cart-&gt;getProductItems();
            foreach($cart_product_items as $uniq =&gt; $data) {
                
                $cart-&gt;update(array(
                    $uniq =&gt; array(
                        &#039;discount&#039; =&gt; &#039;50%&#039;
                    )), null, false);             
            }
        }
    }
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Илья]]></name>
				<uri>https://forum.readyscript.ru/user/286/</uri>
			</author>
			<updated>2017-02-10T12:45:17Z</updated>
			<id>https://forum.readyscript.ru/post/6025/#p6025</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Скидка на товар от количества]]></title>
			<link rel="alternate" href="https://forum.readyscript.ru/post/5978/#p5978" />
			<content type="html"><![CDATA[<p>Обратитесь в поддержку.</p>]]></content>
			<author>
				<name><![CDATA[Закусило Александр]]></name>
				<uri>https://forum.readyscript.ru/user/20/</uri>
			</author>
			<updated>2017-02-08T13:41:57Z</updated>
			<id>https://forum.readyscript.ru/post/5978/#p5978</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Скидка на товар от количества]]></title>
			<link rel="alternate" href="https://forum.readyscript.ru/post/5970/#p5970" />
			<content type="html"><![CDATA[<p>А как это работает?Модуль создал, изменяю количество товара в корзине, но изменений ноль.<br /></p><div class="codebox"><pre><code>&lt;?php
namespace Custom\Config;
use \RS\Orm\Type as OrmType;

class Handlers extends \RS\Event\HandlerAbstract
{
    function init()
    {
        $this
            -&gt;bind(&#039;cart.addproduct.after&#039;, null, &#039;applyCartRules&#039;)
            -&gt;bind(&#039;cart.update.after&#039;, null, &#039;applyCartRules&#039;);
    }

    /**
    * Обработчик будет вызываться, при добавлении или изменении товара в корзине
    * 
    * @param \Shop\Model\Cart $cart
    */
    public static function applyCartRules($params) 
    {
        $cart = $params[&#039;cart&#039;];
        if (!isset($cart-&gt;is_cartrules_action)) { //Защита от рекурсии
            
            $cart-&gt;is_cartrules_action = true; //Защита от рекурсии
            
            $cart_product_items = $cart-&gt;getProductItems();
            foreach($cart_product_items as $uniq =&gt; $data) {
                
                //Добавляем товару Uniq скидку
                $cart-&gt;update(array(
                    $uniq =&gt; array(
                        &#039;discount&#039; =&gt; &#039;50%&#039; //Можно также в рублях, если процент в конце не ставить.
                    )
                ));
            }
        }
    }
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Илья]]></name>
				<uri>https://forum.readyscript.ru/user/286/</uri>
			</author>
			<updated>2017-02-08T05:17:08Z</updated>
			<id>https://forum.readyscript.ru/post/5970/#p5970</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Скидка на товар от количества]]></title>
			<link rel="alternate" href="https://forum.readyscript.ru/post/5261/#p5261" />
			<content type="html"><![CDATA[<p>Резюмирую, для данного функционала нужна наиболее свежая версия системы или хотя бы модуля shop.</p>]]></content>
			<author>
				<name><![CDATA[Ярослав]]></name>
				<uri>https://forum.readyscript.ru/user/74/</uri>
			</author>
			<updated>2016-11-03T16:26:09Z</updated>
			<id>https://forum.readyscript.ru/post/5261/#p5261</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Скидка на товар от количества]]></title>
			<link rel="alternate" href="https://forum.readyscript.ru/post/5248/#p5248" />
			<content type="html"><![CDATA[<p>Ждите ответа в поддержке.</p>]]></content>
			<author>
				<name><![CDATA[Закусило Александр]]></name>
				<uri>https://forum.readyscript.ru/user/20/</uri>
			</author>
			<updated>2016-11-02T07:20:20Z</updated>
			<id>https://forum.readyscript.ru/post/5248/#p5248</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Скидка на товар от количества]]></title>
			<link rel="alternate" href="https://forum.readyscript.ru/post/5244/#p5244" />
			<content type="html"><![CDATA[<p>Отписался в техподдержке. Проверял и на старой и на новой. Тестовый сайт обновил до самой свежей версии.<br />В cart.inc.php удаляются старые элементы заказа из таблицы, а новые уже без discount добавляются. <br /></p><div class="codebox"><pre><code>function saveOrderData()
    {
        \RS\Orm\Request::make()-&gt;delete()
            -&gt;from(new Orm\OrderItem())
            -&gt;where(array(&#039;order_id&#039; =&gt; $this-&gt;order[&#039;id&#039;]))
            -&gt;exec();
        
        foreach($this-&gt;order_items as $uniq =&gt; $order_item) {
            $order_item[&#039;order_id&#039;] = $this-&gt;order[&#039;id&#039;];
            $order_item-&gt;insert();
        }
        
        return true;
    }</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Ярослав]]></name>
				<uri>https://forum.readyscript.ru/user/74/</uri>
			</author>
			<updated>2016-11-01T19:14:32Z</updated>
			<id>https://forum.readyscript.ru/post/5244/#p5244</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Скидка на товар от количества]]></title>
			<link rel="alternate" href="https://forum.readyscript.ru/post/5240/#p5240" />
			<content type="html"><![CDATA[<p>Проверили, у себя не смогли воспроизвести ошибку, скидка все время сохраняется. <br />Предполагаем, что у вас не самая свежая версия модуля shop. Текущая версия модуля Shop - 2.0.0.171</p>]]></content>
			<author>
				<name><![CDATA[admin]]></name>
				<uri>https://forum.readyscript.ru/user/2/</uri>
			</author>
			<updated>2016-11-01T14:32:06Z</updated>
			<id>https://forum.readyscript.ru/post/5240/#p5240</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Скидка на товар от количества]]></title>
			<link rel="alternate" href="https://forum.readyscript.ru/post/5191/#p5191" />
			<content type="html"><![CDATA[<p>Напишите, пожалуйста, в поддержку тикет со ссылкой на текущую ветку форума.</p>]]></content>
			<author>
				<name><![CDATA[admin]]></name>
				<uri>https://forum.readyscript.ru/user/2/</uri>
			</author>
			<updated>2016-10-30T13:02:21Z</updated>
			<id>https://forum.readyscript.ru/post/5191/#p5191</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Скидка на товар от количества]]></title>
			<link rel="alternate" href="https://forum.readyscript.ru/post/5190/#p5190" />
			<content type="html"><![CDATA[<p>Проверил на самой последней версии движка с чистой базой. При сохранении заказа слетают все скидки. <br />В районе 379 строки в orderctrl.inc.php до&nbsp; $order-&gt;getCart()-&gt;saveOrderData()&nbsp; есть данные о скидках, потом уже записи заказа удаляются, а новые уже не имеют скидки.</p>]]></content>
			<author>
				<name><![CDATA[Ярослав]]></name>
				<uri>https://forum.readyscript.ru/user/74/</uri>
			</author>
			<updated>2016-10-30T00:34:58Z</updated>
			<id>https://forum.readyscript.ru/post/5190/#p5190</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Скидка на товар от количества]]></title>
			<link rel="alternate" href="https://forum.readyscript.ru/post/5170/#p5170" />
			<content type="html"><![CDATA[<p>Возникла проблема с заказами со скидкой. <br />1. Заказ создается со товарами со скидкой<br /><a href="http://joxi.ru/xAe14BbFYz5QoA">http://joxi.ru/xAe14BbFYz5QoA</a><br />2. если в заказе обновляешь, например &quot;статус&quot;, то товары пересчитываются формуле &quot;цена товара&quot;x&quot;количество&quot;, скидка пропадает и стоимость увеличивается.<br />Товар до обновления: <a href="http://joxi.ru/eAO7wWBC41DMEA">http://joxi.ru/eAO7wWBC41DMEA</a><br />Товар после: <a href="http://joxi.ru/KAg8wBeFgz7Qxr">http://joxi.ru/KAg8wBeFgz7Qxr</a></p>]]></content>
			<author>
				<name><![CDATA[Ярослав]]></name>
				<uri>https://forum.readyscript.ru/user/74/</uri>
			</author>
			<updated>2016-10-27T15:29:55Z</updated>
			<id>https://forum.readyscript.ru/post/5170/#p5170</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Скидка на товар от количества]]></title>
			<link rel="alternate" href="https://forum.readyscript.ru/post/5154/#p5154" />
			<content type="html"><![CDATA[<p>Спасибо большое! <br />Я обновил модуль shop до версии с моделью корзины, которая позволяет делать апдейт скидок (2.0.0.96 кажется)<br />и использовал Ваш код. Все получилось!</p>]]></content>
			<author>
				<name><![CDATA[Ярослав]]></name>
				<uri>https://forum.readyscript.ru/user/74/</uri>
			</author>
			<updated>2016-10-26T10:43:54Z</updated>
			<id>https://forum.readyscript.ru/post/5154/#p5154</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Скидка на товар от количества]]></title>
			<link rel="alternate" href="https://forum.readyscript.ru/post/5153/#p5153" />
			<content type="html"><![CDATA[<p>В корзину можно добавлять произвольную скидку к товару. Делается с помощью обработки события cart.update.after.</p><p>Примерный код:</p><div class="codebox"><pre><code>&lt;?php
class Handlers extends \RS\Event\HandlerAbstract
{
    function init()
    {
        $this
            -&gt;bind(&#039;cart.addproduct.after&#039;, null, &#039;applyCartRules&#039;)
            -&gt;bind(&#039;cart.update.after&#039;, null, &#039;applyCartRules&#039;);
    }

    /**
    * Обработчик будет вызываться, при добавлении или изменении товара в корзине
    * 
    * @param \Shop\Model\Cart $cart
    */
    public static function applyCartRules($params) 
    {
        $cart = $params[&#039;cart&#039;];
        if (!isset($cart-&gt;is_cartrules_action)) { //Защита от рекурсии
            
            $cart-&gt;is_cartrules_action = true; //Защита от рекурсии
            
            $cart_product_items = $cart-&gt;getProductItems();
            foreach($cart_product_items as $uniq =&gt; $data) {
                
                //Добавляем товару Uniq скидку
                $cart-&gt;update(array(
                    $uniq =&gt; array(
                        &#039;discount&#039; =&gt; &#039;50%&#039; //Можно также в рублях, если процент в конце не ставить.
                    )
                ));
            }
        }
    }
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[admin]]></name>
				<uri>https://forum.readyscript.ru/user/2/</uri>
			</author>
			<updated>2016-10-26T10:02:13Z</updated>
			<id>https://forum.readyscript.ru/post/5153/#p5153</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Скидка на товар от количества]]></title>
			<link rel="alternate" href="https://forum.readyscript.ru/post/5142/#p5142" />
			<content type="html"><![CDATA[<p>По идее в модели товара должно быть событие afterLoad, где можно будет менять параметры товара в зависимости от ситуации.<br />Опасное событие на самом деле особенно в списках товаров. Надо как-то продумать.<br />Тогда откроется путь к изменению цен и прочих параметров товара.</p>]]></content>
			<author>
				<name><![CDATA[Андрей]]></name>
				<uri>https://forum.readyscript.ru/user/495/</uri>
			</author>
			<updated>2016-10-24T22:39:08Z</updated>
			<id>https://forum.readyscript.ru/post/5142/#p5142</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Скидка на товар от количества]]></title>
			<link rel="alternate" href="https://forum.readyscript.ru/post/5141/#p5141" />
			<content type="html"><![CDATA[<p>Намного все хуже оказалось. Версия системы достаточно старая и модель корзины не поддерживает скидки на товар, индивидуальную цену.<br />Пришлось менять модель продукта(</p>]]></content>
			<author>
				<name><![CDATA[Ярослав]]></name>
				<uri>https://forum.readyscript.ru/user/74/</uri>
			</author>
			<updated>2016-10-24T20:18:15Z</updated>
			<id>https://forum.readyscript.ru/post/5141/#p5141</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Скидка на товар от количества]]></title>
			<link rel="alternate" href="https://forum.readyscript.ru/post/5120/#p5120" />
			<content type="html"><![CDATA[<p>Рассматривал, при ручном вводе правил модуль великолепен. Куплю его на другие магазины.<br />Но тут 10 000 товаров, у большинства разная скидка в зависимости от определенного количества. Еще есть и предельная скидка для товара, предельная для пользователя. <br />В итоге, чтобы модуль сработал, надо автоматом раз в день 2000-3000 правил добавлять.</p>]]></content>
			<author>
				<name><![CDATA[Ярослав]]></name>
				<uri>https://forum.readyscript.ru/user/74/</uri>
			</author>
			<updated>2016-10-21T19:58:44Z</updated>
			<id>https://forum.readyscript.ru/post/5120/#p5120</id>
		</entry>
</feed>
