Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


Recommended Posts

Здравствуйте. Подскажите пожалуйста, как установить максимальную сумму товаров в корзине, например, 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>

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

Надіслати
Поділитися на інших сайтах


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

 

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

 

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

Надіслати
Поділитися на інших сайтах


в помощь

 

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

 

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

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

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

 

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

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

 

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

Надіслати
Поділитися на інших сайтах


все верно

 

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

 

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

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

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

Змінено користувачем pesaxofe
Надіслати
Поділитися на інших сайтах


  • 3 years later...

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.