Перейти к содержимому


(Не) Вести учет товаров на складе


  • Вы не можете ответить в тему
Сообщений в теме: 13

#1 FusSheva

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 210 сообщений
Репутация: 7
Начинающий

Отправлено 14 February 2013 - 09:24 PM

Доброго времени суток уважаемые форумчане.

Как можно решить возникшую проблемку?
Нужно дать возможность заказывать товар и в то же время НЕ вести учет товаров на складе - НО так, чтобы функция "Вести учет товаров на складе" была включена.

Другими словами, когда я включаю функцию "Вести учет товаров на складе" а на складе нужного покупателю товара нет, то на странице товара высвечивается: На складе: нет и кнопка Добавить в корзину не отображается.

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

Спасибо.
  • 0
Каждый человек способен на многое. Но к сожалению, не каждый знает на что он способен.

#2 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 14 February 2013 - 09:50 PM

Как можно решить возникшую проблемку?

Убрать в соответствующих местах проверку на нулевость количества товара.
Возможно, достаточно это сделать в шаблонах краткого и полного описаний, т.е. просто "разрешить кнопку" в смарти-коде.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#3 FusSheva

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 210 сообщений
Репутация: 7
Начинающий

Отправлено 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. Спасибо за быстрый ответ но к этому дошел только что сам а вот с проблемкой описанной чуть выше так и не разобрался что делать.
  • 0
Каждый человек способен на многое. Но к сожалению, не каждый знает на что он способен.

#4 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 14 February 2013 - 10:17 PM

Посмотрите функцию cartAddToCart, в ней есть строка

$is = GetProductInStockCount( $productID );

переменная $is, как не сложно догадаться, это текущее количество товара на складе. Она в дальнейшем в этой функции используется, не давая добавить в заказ товара больше, чем есть на складе.

Думаю, что надо будет также отследить, чтобы после разрешения добавления товара в заказ при нулевом количестве это "нулевое" количество не продолжало уменьшаться в отрицательную сторону :).
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#5 FusSheva

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 210 сообщений
Репутация: 7
Начинающий

Отправлено 14 February 2013 - 11:36 PM

Спасибо за помощь, покопаюсь на досуге.
  • 0
Каждый человек способен на многое. Но к сожалению, не каждый знает на что он способен.

#6 Leon

    Новичок

  • Пользователи
  • Pip
  • 2 сообщений
Репутация: 0
Начинающий

Отправлено 22 February 2013 - 10:44 PM

Добрый вечер всем. Есть решение, насколько получилось, нужно еще протестировать. Однако есть вопрос, который пока не решается, например, если было на складе 2 шт. товара, то клиент может заказать без проблем хоть 10 шт....и заказ проходит.
Если вопрос еще актуален, могу выложить свое решение...может кто-нибудь подскажет ответ и на мой вопрос.
Спасибо.
  • 0

#7 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 23 February 2013 - 01:23 AM

Однако есть вопрос, который пока не решается, например, если было на складе 2 шт. товара, то клиент может заказать без проблем хоть 10 шт....и заказ проходит.

См. мое письмо выше про функцию cartAddToCart, добавляющую товар в корзину. Даже если (в Вашем случае) выбрать добавление десяти товаров, то добавится только два. Если в "оформлении заказа" заменить два на десять, то при нажатии "пересчитать заказ" все равно число единиц товара изменится на два, т.е. на имеющееся количество. Я только что на всякий случай проверил оба момента. Как Вам удалось при включенном учете товара создать заказ на большее количество товара, чем есть на складе? :)
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#8 Leon

    Новичок

  • Пользователи
  • Pip
  • 2 сообщений
Репутация: 0
Начинающий

Отправлено 24 February 2013 - 02:00 PM

В файле core_functions\cart_functions.php
находим функцию 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
  • 0

#9 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 25 February 2013 - 02:21 PM

находим CONF_CHECKSTOCK==0 || (встречается 4 раза) каждый раз добавляем CONF_CHECKSTOCK==1 ||, получается CONF_CHECKSTOCK==0 || CONF_CHECKSTOCK==1 ||

1. Какой смысл делать условие "если 1 или 0" для величины, которая только 1/0 и бывает?
2. какой смысл вообще как-либо отрабатывать ситуацию CONF_CHECKSTOCK==0, если это означает "не вести учет товара на складе" и можно хоть обзаказываться в минус без всех этих исправлений?
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#10 FusSheva

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 210 сообщений
Репутация: 7
Начинающий

Отправлено 25 February 2013 - 03:38 PM

В двух словах...
На складе у партнера есть товар, скажем набор - "мыло и веревка".
Мой магазин продает либо со своего склада (когда товар у него на складе лежит), либо заказывает со склада партнера. Но только тогда когда покупатель делает заказ в магазине. Так как склад и товар партнера не близко, то мне проще когда покупатель сначала сделает заказ на этот товар. И его потом просто привезу. Но человек должен видеть, что в магазине товара временно нет, но он может его заказать.
В общем, это работает как предварительный заказ.

И поверь, если бы не было необходимости так сделать, то я бы и не спрашивал.
  • 0
Каждый человек способен на многое. Но к сожалению, не каждый знает на что он способен.

#11 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 25 February 2013 - 04:50 PM

И поверь, если бы не было необходимости так сделать, то я бы и не спрашивал.

Я может, как-то непонятно пишу? Так я разъясню, мне не сложно.

1. зачем делать условие "1 или 0", если других вариантов не бывает?
Слово "зачем" относится не к общей логике работы магазина, она вполне понятна и достаточно распространена, а к смыслу программного кода "if (a==1 || а==0)", в котором условие ВСЕГДА истинно, т.к. "а" бывает только 1/0. С тем же результатом можно было написать "if (1==1)" или даже "if (1)".
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#12 dgimmibos

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 126 сообщений
Репутация: 12
Начинающий

Отправлено 15 March 2013 - 10:40 AM

Не просче вывести колонку срок поставки такойто.
  • 0

#13 bambi35

    Пользователь

  • Пользователи
  • PipPip
  • 10 сообщений
Репутация: 0
Начинающий
  • ГородЧереповец

Отправлено 05 June 2015 - 10:28 PM

Подскажите, пожалуйста, как сделать, чтобы выдавалось сообщение покупателю, что товара на складе нет в таком количестве, в каком он хочет добавить в корзину.
  • 0
Интернет-магазин БЭМБИ http://bambi35.ru

#14 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 06 June 2015 - 11:56 AM

Подскажите, пожалуйста, как сделать, чтобы выдавалось сообщение покупателю, что товара на складе нет в таком количестве, в каком он хочет добавить в корзину.

В случае аякс-корзины при нажатии кнопки "купить" вызывается JS-функция doLoad. В нее передается строка, содержащая количество желаемого покупателем товара, но не содержащая количество товара на складе. Надо:
1. в шаблонах, где имеется кнопка "купить" и задание количества (обычно это категория и подробное описание) добавить в эту строку количество товара. Как-то так - &amp;in_stock={$product_info.in_stock}
2. в самой JS-функции doLoad добавить в начале разбор полученной строки, вынимание из нее обоих количеств (multyaddcount и in_stock), сравнение и если multyaddcount > in_stock, то выдавать табличку "на складе нет такого количества" вместо штатного добавления в корзину того количества, которое есть.
Я бы делал так. Минимальное количество файлов затрагивается исправлениями. Но вообще вариантов решения весьма не один.
Можно тем же яваскриптом просто не давать выбрать количество больше, чем есть на складе.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)