(Не) Вести учет товаров на складе
#1
Отправлено 14 February 2013 - 09:24 PM
Как можно решить возникшую проблемку?
Нужно дать возможность заказывать товар и в то же время НЕ вести учет товаров на складе - НО так, чтобы функция "Вести учет товаров на складе" была включена.
Другими словами, когда я включаю функцию "Вести учет товаров на складе" а на складе нужного покупателю товара нет, то на странице товара высвечивается: На складе: нет и кнопка Добавить в корзину не отображается.
А мне нужно, чтобы была все таки возможность добавить товар в корзину и сделать заказ (при нулевом количестве товара на складе). Но опять же, чтобы оно все же отображало - что товара на складе нет. Как бы предварительный заказ.
Спасибо.
#2
Отправлено 14 February 2013 - 09:50 PM
Убрать в соответствующих местах проверку на нулевость количества товара.Как можно решить возникшую проблемку?
Возможно, достаточно это сделать в шаблонах краткого и полного описаний, т.е. просто "разрешить кнопку" в смарти-коде.
#3
Отправлено 14 February 2013 - 09:54 PM
В файле product_detailed.tpl.html
Вместо:
{if $smarty.const.CONF_SHOW_ADD2CART eq 1 && ( $smarty.const.CONF_CHECKSTOCK==0 || $product_info.in_stock > 0 ) }
Прописал следующее:
{if $smarty.const.CONF_SHOW_ADD2CART eq 1 && ( $smarty.const.CONF_CHECKSTOCK==-1 || $product_info.in_stock > -1 ) }
Но это не то. Потому что, товар в корзину просто не добавляется.
p.s. Спасибо за быстрый ответ но к этому дошел только что сам а вот с проблемкой описанной чуть выше так и не разобрался что делать.
#4
Отправлено 14 February 2013 - 10:17 PM
$is = GetProductInStockCount( $productID );
переменная $is, как не сложно догадаться, это текущее количество товара на складе. Она в дальнейшем в этой функции используется, не давая добавить в заказ товара больше, чем есть на складе.
Думаю, что надо будет также отследить, чтобы после разрешения добавления товара в заказ при нулевом количестве это "нулевое" количество не продолжало уменьшаться в отрицательную сторону .
#5
Отправлено 14 February 2013 - 11:36 PM
#6
Отправлено 22 February 2013 - 10:44 PM
Если вопрос еще актуален, могу выложить свое решение...может кто-нибудь подскажет ответ и на мой вопрос.
Спасибо.
#7
Отправлено 23 February 2013 - 01:23 AM
См. мое письмо выше про функцию cartAddToCart, добавляющую товар в корзину. Даже если (в Вашем случае) выбрать добавление десяти товаров, то добавится только два. Если в "оформлении заказа" заменить два на десять, то при нажатии "пересчитать заказ" все равно число единиц товара изменится на два, т.е. на имеющееся количество. Я только что на всякий случай проверил оба момента. Как Вам удалось при включенном учете товара создать заказ на большее количество товара, чем есть на складе?Однако есть вопрос, который пока не решается, например, если было на складе 2 шт. товара, то клиент может заказать без проблем хоть 10 шт....и заказ проходит.
#8
Отправлено 24 February 2013 - 02:00 PM
находим функцию function cartAddToCart, затем
находим CONF_CHECKSTOCK==0 || (встречается 4 раза)
каждый раз добавляем CONF_CHECKSTOCK==1 ||,
получается CONF_CHECKSTOCK==0 || CONF_CHECKSTOCK==1 ||
В файле product_detailed.tpl.html находим:
{if $smarty.const.CONF_OPEN_SHOPPING_CART_IN_NEW_WINDOW eq 1} {if $smarty.const.CONF_SHOW_ADD2CART eq 1 && ( $smarty.const.CONF_CHECKSTOCK==0 || $product_info.in_stock > 0 ) }
меняем на:
{if $smarty.const.CONF_OPEN_SHOPPING_CART_IN_NEW_WINDOW eq 1} {if $smarty.const.CONF_SHOW_ADD2CART eq 1 && ( $smarty.const.CONF_CHECKSTOCK==0 || CONF_CHECKSTOCK==1 || $product_info.in_stock >= 0 ) }
В файле includes\order4_confirmation.php находим:
if ( $left["in_stock"] < 1 )
меняем на:
if ( $left["in_stock"] < -100 )
тоже замена в 2-х местах, т.е. 2 раза (-100 произвольное число, т.е. сколько штук можно заказать в минус "под заказ"
такую же замену делаем и в файле includes\order4_confirmation_quick.php
#9
Отправлено 25 February 2013 - 02:21 PM
1. Какой смысл делать условие "если 1 или 0" для величины, которая только 1/0 и бывает?находим CONF_CHECKSTOCK==0 || (встречается 4 раза) каждый раз добавляем CONF_CHECKSTOCK==1 ||, получается CONF_CHECKSTOCK==0 || CONF_CHECKSTOCK==1 ||
2. какой смысл вообще как-либо отрабатывать ситуацию CONF_CHECKSTOCK==0, если это означает "не вести учет товара на складе" и можно хоть обзаказываться в минус без всех этих исправлений?
#10
Отправлено 25 February 2013 - 03:38 PM
На складе у партнера есть товар, скажем набор - "мыло и веревка".
Мой магазин продает либо со своего склада (когда товар у него на складе лежит), либо заказывает со склада партнера. Но только тогда когда покупатель делает заказ в магазине. Так как склад и товар партнера не близко, то мне проще когда покупатель сначала сделает заказ на этот товар. И его потом просто привезу. Но человек должен видеть, что в магазине товара временно нет, но он может его заказать.
В общем, это работает как предварительный заказ.
И поверь, если бы не было необходимости так сделать, то я бы и не спрашивал.
#11
Отправлено 25 February 2013 - 04:50 PM
Я может, как-то непонятно пишу? Так я разъясню, мне не сложно.И поверь, если бы не было необходимости так сделать, то я бы и не спрашивал.
1. зачем делать условие "1 или 0", если других вариантов не бывает?
Слово "зачем" относится не к общей логике работы магазина, она вполне понятна и достаточно распространена, а к смыслу программного кода "if (a==1 || а==0)", в котором условие ВСЕГДА истинно, т.к. "а" бывает только 1/0. С тем же результатом можно было написать "if (1==1)" или даже "if (1)".
#12
Отправлено 15 March 2013 - 10:40 AM
#13
Отправлено 05 June 2015 - 10:28 PM
#14
Отправлено 06 June 2015 - 11:56 AM
В случае аякс-корзины при нажатии кнопки "купить" вызывается JS-функция doLoad. В нее передается строка, содержащая количество желаемого покупателем товара, но не содержащая количество товара на складе. Надо:Подскажите, пожалуйста, как сделать, чтобы выдавалось сообщение покупателю, что товара на складе нет в таком количестве, в каком он хочет добавить в корзину.
1. в шаблонах, где имеется кнопка "купить" и задание количества (обычно это категория и подробное описание) добавить в эту строку количество товара. Как-то так - &in_stock={$product_info.in_stock}
2. в самой JS-функции doLoad добавить в начале разбор полученной строки, вынимание из нее обоих количеств (multyaddcount и in_stock), сравнение и если multyaddcount > in_stock, то выдавать табличку "на складе нет такого количества" вместо штатного добавления в корзину того количества, которое есть.
Я бы делал так. Минимальное количество файлов затрагивается исправлениями. Но вообще вариантов решения весьма не один.
Можно тем же яваскриптом просто не давать выбрать количество больше, чем есть на складе.