Перейти к содержанию
Официальный форум поддержки Simpla

Обновление количество товара при принятии заказа


Рекомендуемые сообщения

При принятии админом заказа, кол-во товара, что в этом заказе, автоматически уменьшается в базе магазина.

Подскажите пожалуйста - в каком месте кода это делается.

Есть нужда иметь возможность отключить эту опцию.

Ссылка на сообщение
Поделиться на другие сайты

Вдогонку сопутствующий вопрос - как показывать цену на странице товара, даже если товар кончился?

В этом случае $product->variants перестает содержать данные - в том числе и цену при выводе данных в product.tpl и product_block.tpl

Где это в коде логичнее поправить?

Ссылка на сообщение
Поделиться на другие сайты

При принятии админом заказа, кол-во товара, что в этом заказе, автоматически уменьшается в базе магазина.

Подскажите пожалуйста - в каком месте кода это делается.

Есть нужда иметь возможность отключить эту опцию.

 

api/Orders.php

public function open($order_id)

public function close($order_id)

Ссылка на сообщение
Поделиться на другие сайты

Вдогонку сопутствующий вопрос - как показывать цену на странице товара, даже если товар кончился?

В этом случае $product->variants перестает содержать данные - в том числе и цену при выводе данных в product.tpl и product_block.tpl

Где это в коде логичнее поправить?

 

Пробуйте во view/ProductView.php заменить

        foreach($this->variants->get_variants(array('product_id'=>$product->id, 'in_stock'=>true)) as $v)

на

        foreach($this->variants->get_variants(array('product_id'=>$product->id)) as $v)

 

При этом возникают недостатки - можно отсутствующий товар положить в корзину.

И аналогичные изменения надо делать для списка товаров...

 

 

Вопрос время от времени всплывает на форуме. Но полностью хорошего простого решения пока не найдено.

http://simpla-tuning.com/pokazyvat-tsenu-dazhe-esli-tovara-net-v-nalichii

Ссылка на сообщение
Поделиться на другие сайты

Вдогонку сопутствующий вопрос - как показывать цену на странице товара, даже если товар кончился?

В этом случае $product->variants перестает содержать данные - в том числе и цену при выводе данных в product.tpl и product_block.tpl

Где это в коде логичнее поправить?

Для этого надо чуть-чуть поломать api  :)

В файле api/Variants.php находим

$variant_id_filter = $this->db->placehold('AND (v.stock>0 OR v.stock IS NULL)');

И добавляем, чтобы и при нулевом значении, тоже думало, что товар in_stock, вот так:

$variant_id_filter = $this->db->placehold('AND (v.stock>0 OR v.stock IS NULL OR v.stock = 0)');

Получится что везде где товара 0, всё равно будет возможность отображать цену и отображать кнопочку "в корзину", поэтому везде в шаблонах надо изменить условия вывода кнопки, и надписи "нет в наличии". 

 

Стандартное:

{if $product->variants|count > 0}
<!-- Выбор варианта товара -->
<form class="variants" action="/cart">
<table>
	{foreach $product->variants as $v}
	<tr class="variant">
	<td>
	<input id="product_{$v->id}" name="variant" value="{$v->id}" type="radio" class="variant_radiobutton" {if $product->variant->id==$v->id}checked{/if} {if $product->variants|count<2}style="display:none;"{/if}/>
	</td>
	<td>
	{if $v->name}<label class="variant_name" for="product_{$v->id}">{$v->name}</label>{/if}
	</td>
	<td>
	{if $v->compare_price > 0}<span class="compare_price">{$v->compare_price|convert}</span>{/if}
	<span class="price">{$v->price|convert} <span class="currency">{$currency->sign|escape}</span></span>
	</td>
	</tr>
	{/foreach}
	</table>
	<input type="submit" class="button" value="в корзину" data-result-text="добавлено"/>
</form>
<!-- Выбор варианта товара (The End) -->
{else}
	Нет в наличии
{/if}

Меняем на:

<!-- Выбор варианта товара -->
<form class="variants" action="/cart">
<table>
	{foreach $product->variants as $v}
	<tr class="variant">
	<td>
	<input id="product_{$v->id}" name="variant" value="{$v->id}" type="radio" class="variant_radiobutton" {if $product->variant->id==$v->id}checked{/if} {if $product->variants|count<2}style="display:none;"{/if}/>
	</td>
	<td>
	{if $v->name}<label class="variant_name" for="product_{$v->id}">{$v->name}</label>{/if}
	</td>
	<td>
	{if $v->compare_price > 0}<span class="compare_price">{$v->compare_price|convert}</span>{/if}
	<span class="price">{$v->price|convert} <span class="currency">{$currency->sign|escape}</span></span>
	</td>
	</tr>
	{/foreach}
	</table>
{if $product->variant->stock > 0}
	<input type="submit" class="button" value="в корзину" data-result-text="добавлено"/>
{/if}
</form>
<!-- Выбор варианта товара (The End) -->
{if $product->variant->stock = 0}
	Нет в наличии
{/if}

Получается удаляем стандартную проверку на заполненность массивна, потому что он у нас в любом случае будет заполнен, и вставляет два условия: в случае если товаров больше чем 0 (if $product->variant->stock > 0) — показываем кнопку заказа, в случае если количество товаров 0, показываем "нет в наличии". 

 

На мой взгляд решение довольно простое, но возможно с "косяками" :)

Ссылка на сообщение
Поделиться на другие сайты

Для этого надо чуть-чуть поломать api  :)

В файле api/Variants.php находим

$variant_id_filter = $this->db->placehold('AND (v.stock>0 OR v.stock IS NULL)');

И добавляем, чтобы и при нулевом значении, тоже думало, что товар in_stock, вот так:

$variant_id_filter = $this->db->placehold('AND (v.stock>0 OR v.stock IS NULL OR v.stock = 0)');

Получится что везде где товара 0, всё равно будет возможность отображать цену и отображать кнопочку "в корзину", поэтому везде в шаблонах надо изменить условия вывода кнопки, и надписи "нет в наличии". 

 

Получается удаляем стандартную проверку на заполненность массивна, потому что он у нас в любом случае будет заполнен, и вставляет два условия: в случае если товаров больше чем 0 (if $product->variant->stock > 0) — показываем кнопку заказа, в случае если количество товаров 0, показываем "нет в наличии". 

 

На мой взгляд решение довольно простое, но возможно с "косяками" :)

 

а зачем? достаточно не передавать $filter['in_stock'] для метода get_variants в view/ProductView.php, view/ProductsView.php

Ссылка на сообщение
Поделиться на другие сайты

1. Упоминаемая Вами строка 34 совсем не такая. То, что написано у Вас - смесь двух недалеко расположенных строк.
2. Как заметил ранее mishanya, предложенное новое условие для строки 34
(v.stock>0 OR v.stock IS NULL OR v.stock = 0)
довольно бессмысленно, оно выполняется практически ВСЕГДА. Не выполняется лишь для v.stock<0, но это для Simpla - ситуация нештатная, которая при нормальной работе возникать не должна...
3. Предложенное изменение в шаблоне - совсем негодное. Например,
3.1 если у товара два варианта с кол-вами 0 и 7, то будет показано Нет в наличии.
3.2 а если у товара два варианта с кол-вами 7 и 0, то будет показано В корзину.
3.3 В то время как по сути 3.1 и 3.2 представляют ОДИНАКОВЫЕ ситуации.

По моим наблюдения, ситуация 3.1 для владельцев магазинов просто нетерпима. И их можно понять - товар есть, а программист его прячет из-за своих фокусов...

 

Для этого надо чуть-чуть поломать api :)
...
На мой взгляд решение довольно простое, но возможно с "косяками" :)

 

Поломать API Вашему решению удалось превосходно.
С "косяками" - не просто возможно, а гарантированно...

 

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...