• Объявления

    • dinox

      Закрытый раздел разработчиков   21.08.2017

      У нас на форуме существует закрытый раздел для разработчиков в котором мы обсуждаем нюансы работы на нашем форуме, в каталоге дополнений и другие моменты которые интересны в большинстве случаев только разработчикам. На данный момент существует лишь 2 условия для попадания:
      1. Наличие промодерированного дополнения в нашем каталоге  2. Отсуствие варезной деятельности 
      Если эти правила выполнены, пишите запрос @ArtemPitov на попадание в раздел разработчиков
pesaxofe

Установить максимальную сумму заказа в корзине

Рекомендуемые сообщения

pesaxofe    0

Здравствуйте. Подскажите пожалуйста, как установить максимальную сумму товаров в корзине, например, 10000 рублей? Объясню на примере. Есть 3 товара, за 5000, 4000 и 3000 рублей. Покупатель добавляет в корзину товар за 5000, потом добавляет товар за 4000 (итого сумма в корзине 9000) и если он хочет добавить третий товар в корзину, то он в корзину не добавляется, а вылезает что-то вроде вот такого сообщения, что максимальная сумма заказа 10000 рублей (на фото пример того, где бы хотелось, чтобы это сообщение выводилось).

 

17cb33e79911.jpg

 

Я пытался разобраться сам, но в технической части не очень силен. Начал просматривать product.tpl, в карточке товара при нажатии на кнопку "Добавить в корзину" выполняется этот код:

<script type="text/javascript"><!--
$('#button-cart').on('click', function() {
	$.ajax({
		url: 'index.php?route=checkout/cart/add',
		type: 'post',
		data: $('#product input[type=\'text\'], #product input[type=\'hidden\'], #product input[type=\'radio\']:checked, #product input[type=\'checkbox\']:checked, #product select, #product textarea'),
		dataType: 'json',
		beforeSend: function() {
			$('#button-cart').button('loading');
		},
		complete: function() {
			$('#button-cart').button('reset');
		},
		success: function(json) {
			$('.alert, .text-danger').remove();
			$('.form-group').removeClass('has-error');

			if (json['error']) {
				if (json['error']['option']) {
					for (i in json['error']['option']) {
						var element = $('#input-option' + i.replace('_', '-'));

						if (element.parent().hasClass('input-group')) {
							element.parent().after('<div class="text-danger">' + json['error']['option'][i] + '</div>');
						} else {
							element.after('<div class="text-danger">' + json['error']['option'][i] + '</div>');
						}
					}
				}

				if (json['error']['recurring']) {
					$('select[name=\'recurring_id\']').after('<div class="text-danger">' + json['error']['recurring'] + '</div>');
				}

				// Highlight any found errors
				$('.text-danger').parent().addClass('has-error');
			}

			if (json['success']) {
				$('.breadcrumb').after('<div class="alert alert-success">' + json['success'] + '<button type="button" class="close" data-dismiss="alert">×</button></div>');

				$('#cart > button').html('<span id="cart-total"><i class="fa fa-shopping-cart"></i> ' + json['total'] + '</span>');

				$('html, body').animate({ scrollTop: 0 }, 'slow');

				$('#cart > ul').load('index.php?route=common/cart/info ul li');
			}
		},
        error: function(xhr, ajaxOptions, thrownError) {
            alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
        }
	});
});
//--></script>

Кажется, что вписать это условие нужно где-то в этом коде. Возможно, я ошибаюсь. Буду благодарен за любую помощь!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
vimpel77    3

ответ я Вам не дам, но уж очень интересно.... Зачем такое ограничение???

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
AlexDW    768

еврейский ответ - а что помешает покупателю оформить несколько заказов, каждый из которых будет меньше лимита?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
pesaxofe    0

еврейский ответ - а что помешает покупателю оформить несколько заказов, каждый из которых будет меньше лимита?

 

Все верно, пусть оформляет несколько заказов.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
AlexDW    768

в помощь

 

т.е. в методе checkout/cart/add добавить условие проверки, и обрабатывать в зависимости от результата

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
pesaxofe    0

в помощь

 

т.е. в методе checkout/cart/add добавить условие проверки, и обрабатывать в зависимости от результата

 

Спасибо за наводку,

$this->cart->getTotal(); // Получение суммы цен элементов корзины с вычетом налогов

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

 

Если $this->cart->getTotal(); >10000, то выдается сообщение и товар в корзину не добавляется.

Если нет, то выполняется тот код из моего первого поста.

 

Логика правильная или надо думать в какую-то другую сторону?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
AlexDW    768

все верно

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
pesaxofe    0

все верно

 

Я проверил, похоже, что "$this->cart->getTotal();" не подходит, так как если человек зайдет на страницу товара с пустой корзиной, то есть $this->cart->getTotal() = 0 и будет добавлять этот товар несколько раз, то $this->cart->getTotal() = 0, то есть эта переменная загружается один раз при загрузке страницы и не побновляется при одобавлении товара.

 

Я так понимаю, что это условине необходимо вставить где-то в самом начале кода с первого поста, то есть где-то тут:

<script type="text/javascript"><!--
$('#button-cart').on('click', function() {
	$.ajax({

Не могли бы Вы потратить минуту своего времени и написать, как он должен выглядеть?

Изменено пользователем pesaxofe

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу