Заказ товара даже если "На складе = 0"

Статус
В этой теме нельзя размещать новые ответы.

v-i-k

Создатель
Регистрация
9 Май 2008
Сообщения
48
Реакции
0
Включил "Вести учет товаров на складе"

Пропала возможность добавлять товар в корзину если его нет в наличии. Кнопка "в корзину" пропала...

Что и где нужно подправить что бы товар могли покупать (заказывать) даже если по наличии его стоит 0?

Кнопку "в корзину" в шаблоне product_brief.tpl.html включил. Убрал проверку
{if $product_info.Price>0 && ( $smarty.const.CONF_SHOW_ADD2CART eq 1 ) && ( $smarty.const.CONF_CHECKSTOCK==0 || $product_info.in_stock > 0 ) }

оставил только {if $product_info.Price>0}
при нажатии кнопки "к корзину", открывается корзина но пишет что "в корзине нет товаров".

:bc:
 
вопросы:
1. А зачем было включать "учет товара на складе"?
2. Что мешает проставить количество товара например 999999 ?
 
вопросы:
1. А зачем было включать "учет товара на складе"?
2. Что мешает проставить количество товара например 999999 ?

1. нужно так. некоторый товар только под заказ.
хочу сделать примерно так: если товар "на складе >0" - то отображается кнопка "купить". если "на складе <=0" - показываем кнопку "заказать" и оформляем заказ как обычно.
2. и что это даст?

короче, нужно в функции отвечающую за добавление товара в корзину, убрать проверку на наличие товара на складе. вот только где править? в php не очень силен...
 
1. нужно так. некоторый товар только под заказ.
хочу сделать примерно так: если товар "на складе >0" - то отображается кнопка "купить". если "на складе <=0" - показываем кнопку "заказать" и оформляем заказ как обычно.
2. и что это даст?

короче, нужно в функции отвечающую за добавление товара в корзину, убрать проверку на наличие товара на складе. вот только где править? в php не очень силен...

по первому пункту (пока теоретические размышления:(
нужно отключить "учет товаров на складе", и если количество товара 0 (ноль), то выводить просто другую кнопку с надписью "ЗАКАЗАТЬ" (правда не проверял, если количество товара ноль, то можно ли его положить в корзину...)
Единственное уточнение: то есть требуется только изменение кнопки (купить/заказать) я так понимаю?

По второму пункту: уже не важно :)

а вообще подождите, скоро будет модуль "Предварительного заказа" ;)
 
если отключить "учет товаров на складе", - тогда вообще не проверяется есть товар или нет, и в админке прячется колонка "на складе"

у меня так было настроено раньше. Почти каждый покупать спрашивает, "а товар есть в наличии?"

поковырялся немного...
нашел в cart_functions.php

Код:
function cartAddToCart( $productID, $variants )
{

	$is=GetProductInStockCount( $productID );

	$q = db_query( "select min_order_amount from ".PRODUCTS_TABLE.
		" where productID=".$productID );
	$min_order_amount = db_fetch_row( $q );
	$min_order_amount = $min_order_amount[ 0 ];

	$count_to_order = 1;

	if (!isset($_SESSION["log"])) //save shopping cart in the session variables
	{

		//$_SESSION["gids"] contains product IDs
		//$_SESSION["counts"] contains product quantities 
		//			($_SESSION["counts"][$i] corresponds to $_SESSION["gids"][$i])
		//$_SESSION["configurations"] contains variants
		//$_SESSION[gids][$i] == 0 means $i-element is 'empty'

		if (!isset($_SESSION["gids"]))
		{
			$_SESSION["gids"]		= array();
			$_SESSION["counts"]		= array();
			$_SESSION["configurations"] = array();
		}

		//check for current item in the current shopping cart content
		$item_index=SearchConfigurationInSessionVariable( $variants, $productID );

		if ( $item_index == -1 )
				$count_to_order = $min_order_amount;

		if ( $item_index!=-1 ) //increase current product's quantity
		{
			if (CONF_CHECKSTOCK==0 || $_SESSION["counts"][$item_index]+$count_to_order <= $is)
				$_SESSION["counts"][$item_index] += $count_to_order;
			else
				return false;
		}
		else if (CONF_CHECKSTOCK==0 || $is >= $count_to_order) //no item - add it to $gids array
		{
			$_SESSION["gids"][] = $productID;
			$_SESSION["counts"][] = $count_to_order;
			$_SESSION["configurations"][]=$variants;
		}
		else
			return false;
	}
	else //authorized customer - get cart from database
	{
		$itemID=SearchConfigurationInDataBase($variants, $productID );
		if ( $itemID !=-1 ) // if this configuration exists in database
		{
			$q = db_query("SELECT Quantity FROM ".
				SHOPPING_CARTS_TABLE.
				" WHERE customerID='".regGetIdByLogin($_SESSION["log"])."' AND itemID='".$itemID."'");
			$row = db_fetch_row($q);
			$quantity = $row[0];
			if (CONF_CHECKSTOCK==0 || $quantity + $count_to_order <= $is) 
				db_query("UPDATE ".SHOPPING_CARTS_TABLE.
					" SET Quantity=".($row[0]+$count_to_order).
					" WHERE customerID='".regGetIdByLogin($_SESSION["log"]).
					"' AND itemID='".$itemID."'");
			else
				return false;
		}
		else //insert new item
		{
			$count_to_order = $min_order_amount;
			if (CONF_CHECKSTOCK==0 || $is >= $count_to_order)
			{
				$itemID=InsertNewItem($variants, $productID );
				InsertItemIntoCart($itemID);
				db_query("UPDATE ".SHOPPING_CARTS_TABLE.
					" SET Quantity=".$count_to_order.
					" WHERE customerID='".regGetIdByLogin($_SESSION["log"]).
					"' AND itemID='".$itemID."'");
			}
			else
				return false;
		}
	}

	return true;
}

"if (CONF_CHECKSTOCK==0......"

подозреваю, что править код нужно тут. но php почти не знаю :(
помогите плизз.
 
методом логического тыка :) изменил

$is=GetProductInStockCount( $productID );

на

$is=10000;

мол пусть думает что там на остатке 10000 шт.

в результате в корзину товар начал добавляться.

но при попытке изменить количество, выдает сообщение что "Минимальный заказ 1 шт." Цену ставит 0 и количество тоже перескакивает на 0.
:bc:
 
В админке нужно поменять минимальное количество заказа с 1 на 0 :)
 
сделал иначе:

выключил учет товаров на складе. корзина заработала как надо.

и в шаблонах убрал проверку
if $smarty.const.CONF_CHECKSTOCK == '1'

и получилось так как мне было нужно

спасибо всем кто пытался помочь.

тема закрыта.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху