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

Тема в разделе "Shop-script", создана пользователем v-i-k, 28 сен 2008.

Статус темы:
Закрыта.
  1. v-i-k

    v-i-k Создатель

    Регистр.:
    10 май 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:
     
  2. Welho®

    Welho® Предвестник пьянки

    Регистр.:
    4 дек 2007
    Сообщения:
    855
    Симпатии:
    331
    вопросы:
    1. А зачем было включать "учет товара на складе"?
    2. Что мешает проставить количество товара например 999999 ?
     
  3. v-i-k

    v-i-k Создатель

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

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

    Welho® Предвестник пьянки

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

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

    а вообще подождите, скоро будет модуль "Предварительного заказа" ;)
     
  5. v-i-k

    v-i-k Создатель

    Регистр.:
    10 май 2008
    Сообщения:
    48
    Симпатии:
    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 почти не знаю :(
    помогите плизз.
     
  6. v-i-k

    v-i-k Создатель

    Регистр.:
    10 май 2008
    Сообщения:
    48
    Симпатии:
    0
    ?????

    ничего похожего не нашел в настройках.
    уточни плиз!?
     
  7. v-i-k

    v-i-k Создатель

    Регистр.:
    10 май 2008
    Сообщения:
    48
    Симпатии:
    0
    методом логического тыка :) изменил

    $is=GetProductInStockCount( $productID );

    на

    $is=10000;

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

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

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

    sounde

    Регистр.:
    12 сен 2008
    Сообщения:
    391
    Симпатии:
    64
    В админке нужно поменять минимальное количество заказа с 1 на 0 :)
     
  9. nafanyaa

    nafanyaa

    Регистр.:
    23 авг 2006
    Сообщения:
    286
    Симпатии:
    170
    ядро не даст, вернет все равно на 1
     
  10. v-i-k

    v-i-k Создатель

    Регистр.:
    10 май 2008
    Сообщения:
    48
    Симпатии:
    0
    сделал иначе:

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

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

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

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

    тема закрыта.
     
Статус темы:
Закрыта.