<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Форум ReadyScript &mdash; Скидка на товар от количества]]></title>
		<link>https://forum.readyscript.ru/topic/960/skidka-na-tovar-ot-kolichestva/</link>
		<atom:link href="https://forum.readyscript.ru/feed/rss/topic/960" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Скидка на товар от количества».]]></description>
		<lastBuildDate>Fri, 10 Feb 2017 12:45:17 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Скидка на товар от количества]]></title>
			<link>https://forum.readyscript.ru/post/6025/#p6025</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Илья)]]></author>
			<pubDate>Fri, 10 Feb 2017 12:45:17 +0000</pubDate>
			<guid>https://forum.readyscript.ru/post/6025/#p6025</guid>
		</item>
		<item>
			<title><![CDATA[Re: Скидка на товар от количества]]></title>
			<link>https://forum.readyscript.ru/post/5978/#p5978</link>
			<description><![CDATA[<p>Обратитесь в поддержку.</p>]]></description>
			<author><![CDATA[null@example.com (Закусило Александр)]]></author>
			<pubDate>Wed, 08 Feb 2017 13:41:57 +0000</pubDate>
			<guid>https://forum.readyscript.ru/post/5978/#p5978</guid>
		</item>
		<item>
			<title><![CDATA[Re: Скидка на товар от количества]]></title>
			<link>https://forum.readyscript.ru/post/5970/#p5970</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Илья)]]></author>
			<pubDate>Wed, 08 Feb 2017 05:17:08 +0000</pubDate>
			<guid>https://forum.readyscript.ru/post/5970/#p5970</guid>
		</item>
		<item>
			<title><![CDATA[Re: Скидка на товар от количества]]></title>
			<link>https://forum.readyscript.ru/post/5261/#p5261</link>
			<description><![CDATA[<p>Резюмирую, для данного функционала нужна наиболее свежая версия системы или хотя бы модуля shop.</p>]]></description>
			<author><![CDATA[null@example.com (Ярослав)]]></author>
			<pubDate>Thu, 03 Nov 2016 16:26:09 +0000</pubDate>
			<guid>https://forum.readyscript.ru/post/5261/#p5261</guid>
		</item>
		<item>
			<title><![CDATA[Re: Скидка на товар от количества]]></title>
			<link>https://forum.readyscript.ru/post/5248/#p5248</link>
			<description><![CDATA[<p>Ждите ответа в поддержке.</p>]]></description>
			<author><![CDATA[null@example.com (Закусило Александр)]]></author>
			<pubDate>Wed, 02 Nov 2016 07:20:20 +0000</pubDate>
			<guid>https://forum.readyscript.ru/post/5248/#p5248</guid>
		</item>
		<item>
			<title><![CDATA[Re: Скидка на товар от количества]]></title>
			<link>https://forum.readyscript.ru/post/5244/#p5244</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Ярослав)]]></author>
			<pubDate>Tue, 01 Nov 2016 19:14:32 +0000</pubDate>
			<guid>https://forum.readyscript.ru/post/5244/#p5244</guid>
		</item>
		<item>
			<title><![CDATA[Re: Скидка на товар от количества]]></title>
			<link>https://forum.readyscript.ru/post/5240/#p5240</link>
			<description><![CDATA[<p>Проверили, у себя не смогли воспроизвести ошибку, скидка все время сохраняется. <br />Предполагаем, что у вас не самая свежая версия модуля shop. Текущая версия модуля Shop - 2.0.0.171</p>]]></description>
			<author><![CDATA[null@example.com (admin)]]></author>
			<pubDate>Tue, 01 Nov 2016 14:32:06 +0000</pubDate>
			<guid>https://forum.readyscript.ru/post/5240/#p5240</guid>
		</item>
		<item>
			<title><![CDATA[Re: Скидка на товар от количества]]></title>
			<link>https://forum.readyscript.ru/post/5191/#p5191</link>
			<description><![CDATA[<p>Напишите, пожалуйста, в поддержку тикет со ссылкой на текущую ветку форума.</p>]]></description>
			<author><![CDATA[null@example.com (admin)]]></author>
			<pubDate>Sun, 30 Oct 2016 13:02:21 +0000</pubDate>
			<guid>https://forum.readyscript.ru/post/5191/#p5191</guid>
		</item>
		<item>
			<title><![CDATA[Re: Скидка на товар от количества]]></title>
			<link>https://forum.readyscript.ru/post/5190/#p5190</link>
			<description><![CDATA[<p>Проверил на самой последней версии движка с чистой базой. При сохранении заказа слетают все скидки. <br />В районе 379 строки в orderctrl.inc.php до&nbsp; $order-&gt;getCart()-&gt;saveOrderData()&nbsp; есть данные о скидках, потом уже записи заказа удаляются, а новые уже не имеют скидки.</p>]]></description>
			<author><![CDATA[null@example.com (Ярослав)]]></author>
			<pubDate>Sun, 30 Oct 2016 00:34:58 +0000</pubDate>
			<guid>https://forum.readyscript.ru/post/5190/#p5190</guid>
		</item>
		<item>
			<title><![CDATA[Re: Скидка на товар от количества]]></title>
			<link>https://forum.readyscript.ru/post/5170/#p5170</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Ярослав)]]></author>
			<pubDate>Thu, 27 Oct 2016 15:29:55 +0000</pubDate>
			<guid>https://forum.readyscript.ru/post/5170/#p5170</guid>
		</item>
		<item>
			<title><![CDATA[Re: Скидка на товар от количества]]></title>
			<link>https://forum.readyscript.ru/post/5154/#p5154</link>
			<description><![CDATA[<p>Спасибо большое! <br />Я обновил модуль shop до версии с моделью корзины, которая позволяет делать апдейт скидок (2.0.0.96 кажется)<br />и использовал Ваш код. Все получилось!</p>]]></description>
			<author><![CDATA[null@example.com (Ярослав)]]></author>
			<pubDate>Wed, 26 Oct 2016 10:43:54 +0000</pubDate>
			<guid>https://forum.readyscript.ru/post/5154/#p5154</guid>
		</item>
		<item>
			<title><![CDATA[Re: Скидка на товар от количества]]></title>
			<link>https://forum.readyscript.ru/post/5153/#p5153</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (admin)]]></author>
			<pubDate>Wed, 26 Oct 2016 10:02:13 +0000</pubDate>
			<guid>https://forum.readyscript.ru/post/5153/#p5153</guid>
		</item>
		<item>
			<title><![CDATA[Re: Скидка на товар от количества]]></title>
			<link>https://forum.readyscript.ru/post/5142/#p5142</link>
			<description><![CDATA[<p>По идее в модели товара должно быть событие afterLoad, где можно будет менять параметры товара в зависимости от ситуации.<br />Опасное событие на самом деле особенно в списках товаров. Надо как-то продумать.<br />Тогда откроется путь к изменению цен и прочих параметров товара.</p>]]></description>
			<author><![CDATA[null@example.com (Андрей)]]></author>
			<pubDate>Mon, 24 Oct 2016 22:39:08 +0000</pubDate>
			<guid>https://forum.readyscript.ru/post/5142/#p5142</guid>
		</item>
		<item>
			<title><![CDATA[Re: Скидка на товар от количества]]></title>
			<link>https://forum.readyscript.ru/post/5141/#p5141</link>
			<description><![CDATA[<p>Намного все хуже оказалось. Версия системы достаточно старая и модель корзины не поддерживает скидки на товар, индивидуальную цену.<br />Пришлось менять модель продукта(</p>]]></description>
			<author><![CDATA[null@example.com (Ярослав)]]></author>
			<pubDate>Mon, 24 Oct 2016 20:18:15 +0000</pubDate>
			<guid>https://forum.readyscript.ru/post/5141/#p5141</guid>
		</item>
		<item>
			<title><![CDATA[Re: Скидка на товар от количества]]></title>
			<link>https://forum.readyscript.ru/post/5120/#p5120</link>
			<description><![CDATA[<p>Рассматривал, при ручном вводе правил модуль великолепен. Куплю его на другие магазины.<br />Но тут 10 000 товаров, у большинства разная скидка в зависимости от определенного количества. Еще есть и предельная скидка для товара, предельная для пользователя. <br />В итоге, чтобы модуль сработал, надо автоматом раз в день 2000-3000 правил добавлять.</p>]]></description>
			<author><![CDATA[null@example.com (Ярослав)]]></author>
			<pubDate>Fri, 21 Oct 2016 19:58:44 +0000</pubDate>
			<guid>https://forum.readyscript.ru/post/5120/#p5120</guid>
		</item>
	</channel>
</rss>
