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


Предупреждение, если заказываешь товара больше, чем есть на складе

склад

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

#1 lagaz

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

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

Отправлено 04 April 2013 - 02:08 AM

Например на складе осталось 14 штук товара, и если заказывать 3 штуки, то всё окей.

Изображение
а как сделать так, что если заказываешь БОЛЬШЕ 14 штук (например 20), выводилось предупреждение о том, что кол-во товара в заказе автоматически изменено до того кол-ва , которое доступно на складе?
Изображение
Сейчас если заказать товара больше, чем есть на складе, то скрипт молча установит значение кол-ва товара, которое есть на складе, а покупатель может этого не заметить. (красного сообщения, как на скриншоте, не будет)

Как я понимаю, надо копашить
function cartAddToCart
, а именно переменную
$is = GetProductInStockCount( $productID );
в файле cart_functions.php
  • 0

#2 badisoft

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

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

Отправлено 04 April 2013 - 10:30 AM

Самое простое - использовать возвращаемые после ajax-запроса данные, которыми js-функция doCart() замещает содержимое блока "Корзина". Туда можно добавить массив с товарами, которых оказалось меньше, чем надо и показывать эту информацию, например, js-функцией alert().
функцию CartAddToCart тоже придется модифицировать, но не сильно, буквально пол-строки. А также cart.php и head.tpl.html (либо user.js), но тоже по чуть-чуть.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#3 badisoft

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

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

Отправлено 04 April 2013 - 06:52 PM

Самое простое - использовать возвращаемые после ajax-запроса данные, которыми js-функция doCart() замещает содержимое блока "Корзина".

Предупреждать alert-ом при нажатии кнопки "в корзину" оказалось на удивление простым в реализации.

==========================
Это дополнение выводит предупреждающее сообщение при добавлении товара в корзину если:
1. количество добавляемого товара меньше минимального количества для заказа.
2. количество добавляемого товара больше имеющегося на складе.
3. весь имеющийся на складе товар и так уже в корзине :).

Установка:

1. в файле cart_functions.php в функции cartAddToCart

заменяем


return true;


на


return $count_to_order;



2. в файле cart.php

2.1 заменяем строки


for ( $mcn = 0; $mcn < $_GET["multyaddcount"]; $mcn++ )
cartAddToCart(( int ) $_GET["addproduct"], $variants);


на


for ( $mcn = 0; $mcn < $_GET["multyaddcount"]; $mcn+=$added )
if (!$added = cartAddToCart(( int ) $_GET["addproduct"], $variants)) break;
if ($mcn == 0) $errmess = "Весь имеющийся товар уже в Вашей корзине.\nНа складе больше нет этого товара!";
elseif ($mcn < (int)$_GET["multyaddcount"]) $errmess = "На складе всего ".$mcn." единиц товара вместо желаемых ".$_GET["multyaddcount"]."!";
elseif ($mcn > (int)$_GET["multyaddcount"]) $errmess = "минимальное для заказа количество этого товара - ".$mcn." единиц!";


(заодно и вот эта штатная ошибка ShopCMS исправится)

2.2 заменяем строку


$GLOBALS['_RESULT'] = array( "shopping_cart_value" => $k, "shopping_cart_value_shown" => show_price($k), "shopping_cart_items" => $cnt );


на


$GLOBALS['_RESULT'] = array( "shopping_cart_value" => $k, "shopping_cart_value_shown" => show_price($k), "shopping_cart_items" => $cnt, "errmess" => $errmess );


3. в файле head.tpl.html

после строки


function doCart(req) {literal}{{/literal}


добавляем


if (req["errmess"]) alert(req["errmess"]);


PS. Конечно, красивше было бы оформить не дефолтовым alert-ом, а чем-то более развесистым и приятным. Но тут уж каждый сам себе яваскрипт-художник.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#4 lagaz

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

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

Отправлено 05 April 2013 - 01:10 PM

т.е. это именно при добавлении товара в корзину, а не в самой корзине, когда ставишь кол-во товара и жмёшь пересчитать?
  • 0

#5 badisoft

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

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

Отправлено 05 April 2013 - 02:09 PM

Да, при добавлении товара в корзину.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)