*

Gev

  • *
  • 4

Минимальная сумма заказа. Баг. Как исправить?

Нашел баг.
(Здесь есть изображение, скрытое от гостей. Для просмотра зарегистрируйтесь или залогиньтесь)

VamShop 1.69

Установлено для группы юзеров минимальная сумма заказа 25
По умолчанию магазин использует валюту USD
Когда юзер покупает под долларом, граница работает.
Когда юзер переключает валюты, например на гривну, магазин пропускает заказ больше 25 грн.

Как сделать так, чтобы при использовании юзером любой валюты, минимальна сумма заказа была эквивалентна $25 (например)

*

Spido

  • *
  • 1588

(здесь есть ссылка, которая гостям не доступна зарегистрируйтесь или залогиньтесь)
Когда юзер переключает валюты, например на гривну, магазин пропускает заказ больше 25 грн.

27 грн меньше, чем 25 USD, вот и проходит заказ.
Всё верно, никакого бага нет.

*

Gev

  • *
  • 4

Может я что-то не так объяснил, извиняюсь.
(Здесь есть изображение, скрытое от гостей. Для просмотра зарегистрируйтесь или залогиньтесь)


Минимальный заказ $25, т.е. примерно 200 грн
Клиент делает заказ на 50-100-150 грн - и движок его пропускает.

+ ко всему, движок считает общую статистику тоже просто по цифрам, не учитывая валюту.
Например, для движка 100 грн и $100 - одинаковая цифра.
Баг в том, что магазину в некоторых случаях пофиг валюта.

*

Spido

  • *
  • 1588

Обновитесь до версии 1.70.
Может там чё пофиксили.

*

Gev

  • *
  • 4

Неа, не пофиксили.
А что, Саша сюда не заглядывает?

*

Gev

  • *
  • 4

Баг (здесь есть ссылка, которая гостям не доступна зарегистрируйтесь или залогиньтесь). До сих пор не пофиксен.

Цитировать
в /shopping_cart.php нужно править
Код: (здесь есть ссылка, которая гостям не доступна зарегистрируйтесь или залогиньтесь)
if ($_SESSION['cart']->show_total() < $_SESSION['customers_status']['customers_status_min_order'] ) {
  $_SESSION['allow_checkout'] = 'false';
  $more_to_buy = $_SESSION['customers_status']['customers_status_min_order'] - $_SESSION['cart']->show_total();
  $order_amount=$vamPrice->Format($more_to_buy, true);
  $min_order=$vamPrice->Format($_SESSION['customers_status']['customers_status_min_order'], true);
  $vamTemplate->assign('info_message_1', MINIMUM_ORDER_VALUE_NOT_REACHED_1);
  $vamTemplate->assign('info_message_2', MINIMUM_ORDER_VALUE_NOT_REACHED_2);
  $vamTemplate->assign('order_amount', $order_amount);
  $vamTemplate->assign('min_order', $min_order);
 }
 if  ($_SESSION['customers_status']['customers_status_max_order'] != 0) {
  if ($_SESSION['cart']->show_total() > $_SESSION['customers_status']['customers_status_max_order'] ) {
  $_SESSION['allow_checkout'] = 'false';
  $less_to_buy = $_SESSION['cart']->show_total() - $_SESSION['customers_status']['customers_status_max_order'];
  $max_order=$vamPrice->Format($_SESSION['customers_status']['customers_status_max_order'], true);
  $order_amount=$vamPrice->Format($less_to_buy, true);
  $vamTemplate->assign('info_message_1', MAXIMUM_ORDER_VALUE_REACHED_1);
  $vamTemplate->assign('info_message_2', MAXIMUM_ORDER_VALUE_REACHED_2);
  $vamTemplate->assign('order_amount', $order_amount);
  $vamTemplate->assign('min_order', $max_order);
  }
 }
тоесть нужно в этом коде для $_SESSION['customers_status']['customers_status_max_order'], $_SESSION['customers_status']['customers_status_min_order'] делать пересчет в текущую валюту $_session['currency_id'].

сделать это не очень сложно, разберешся если срочно  нужно)

думаю это нужно сделать и по умолчанию, типа баг..

В последней версии 1.7 этот кусок кода выглядит по другому:

Код: (здесь есть ссылка, которая гостям не доступна зарегистрируйтесь или залогиньтесь)
// minimum/maximum order value
$checkout = true;
$total =$_SESSION['cart']->show_total();
if ($total > 0 ) {
 if ($total < $_SESSION['customers_status']['customers_status_min_order'] ) {
  $_SESSION['allow_checkout'] = 'false';
  $more_to_buy = $_SESSION['customers_status']['customers_status_min_order'] - $total;
  $order_amount=$vamPrice->Format($more_to_buy, true);
  $min_order=$vamPrice->Format($_SESSION['customers_status']['customers_status_min_order'], true);
  $vamTemplate->assign('info_message_1', MINIMUM_ORDER_VALUE_NOT_REACHED_1);
  $vamTemplate->assign('info_message_2', MINIMUM_ORDER_VALUE_NOT_REACHED_2);
  $vamTemplate->assign('order_amount', $order_amount);
  $vamTemplate->assign('min_order', $min_order);
 }
 if  ($_SESSION['customers_status']['customers_status_max_order'] != 0) {
  if ($total > $_SESSION['customers_status']['customers_status_max_order'] ) {
  $_SESSION['allow_checkout'] = 'false';
  $less_to_buy = $total - $_SESSION['customers_status']['customers_status_max_order'];
  $max_order=$vamPrice->Format($_SESSION['customers_status']['customers_status_max_order'], true);
  $order_amount=$vamPrice->Format($less_to_buy, true);
  $vamTemplate->assign('info_message_1', MAXIMUM_ORDER_VALUE_REACHED_1);
  $vamTemplate->assign('info_message_2', MAXIMUM_ORDER_VALUE_REACHED_2);
  $vamTemplate->assign('order_amount', $order_amount);
  $vamTemplate->assign('min_order', $max_order);
  }
 }
}

Я не знаю что в этом коде надо исправить. Помогите пожалуйста! 
(Здесь есть изображение, скрытое от гостей. Для просмотра зарегистрируйтесь или залогиньтесь)