Как задать минимальную сумму заказа в корзине при оформлении заказа,

Правила раздела: faq.php?mode=okay
Модератор: Модераторы

Игорь
Игорь

Сообщение #1 Игорь » 09.09.2017, 20:00

Как задать минимальную сумму заказа в корзине при оформлении заказа?

И как задать минимальное количество товара для заказа в карточке товара?

korshunov
korshunov
Репутация: 146
Сообщения: 1854
Зарегистрирован: 03.12.2015
С нами: 8 лет 3 месяца
Skype

Сообщение #2 korshunov » 10.09.2017, 06:25

Стандартно такого, кажется, нет.
Сделать можно специальным программированием.
Если готовы оплачивать, обращайтесь в личку...

koteyka-2 M
Аватара
koteyka-2 M
Репутация: 7
Сообщения: 45
Зарегистрирован: 27.09.2016
С нами: 7 лет 6 месяцев
Откуда: Днепр
Skype

Сообщение #3 koteyka-2 » 10.09.2017, 13:59

Если готовы оплачивать, обращайтесь в личку...

За что там оплачивать, хапуга?
Решить можно разными способами. Например, можно в шаблоне cart.tpl скрывать кнопку оформления заказа

Код: Выделить всё

 {* Submit button *}
 {if $cart->total_price < 25000}
 {else}
        <input class="button" type="submit" name="checkout" data-language="cart_checkout" value="{$lang->cart_checkout}">
 {/if}           

Можно вместо нее выводить какой-то текст

Код: Выделить всё

 {* Submit button *}
 {if $cart->total_price < 25000}
       <span>Сумма заказа не должна быть меньше 25 000 руб</span>
 {else}
       <input class="button" type="submit" name="checkout" data-language="cart_checkout" value="{$lang->cart_checkout}">           
 {/if}           

И так далее, по этому принципу.

Для минимального количества в скрипте okay.js везде меняете 1 на ваше значение, например 5
В самом начале скрипта

Код: Выделить всё

/* Начальное кол-во для смены в карточке и корзине */
okay.amount = 5;

Затем чуть ниже

Код: Выделить всё

    /* Кол-во */
    if($(this).find('input[name=amount]').size()>0) {
        amount = $(this).find('input[name=amount]').val();
    } else {
        amount = 5;
    }

и почти вконце (примерно 558 строка)

Код: Выделить всё

/* Функция изменения количества товаров */
function amount_change(input, action) {
    var max_val,
        curr_val = parseFloat( input.val() ),
        step = 1,
        id = input.data('id');
        if(isNaN(curr_val)){
            curr_val = okay.amount;
        }

    /* Если включен предзаказ макс. кол-во товаров ставим 50 */
    if ( input.parent().hasClass('fn_is_preorder')) {
        max_val = 50;
    } else {
        max_val = parseFloat( input.data( 'max' ) );
    }
    /* Изменение кол-ва товара */
    if( action == 'plus' ) {
        input.val( Math.min( max_val, Math.max( 5, curr_val + step ) ) );
        input.trigger('change');
    } else if( action == 'minus' ) {
        input.val( Math.min( max_val, Math.max( 5, (curr_val - step) ) ) );
        input.trigger('change');
    } else if( action == 'keyup' ) {
        input.val( Math.min( max_val, Math.max( 5, curr_val ) ) );
        input.trigger('change');
    }
    okay.amount = parseInt( input.val() );
    /* в корзине */
    if( $('div').is('#fn_purchases') && ( (max_val != curr_val && action == 'plus' ) || ( curr_val != 1 && action == 'minus' ) ) ) {
        ajax_change_amount( input, id );
    }
}


Ну и в шаблоне product.tpl меняете value у инпута

Код: Выделить всё

                                {* Quantity *}
                                <div class="amount fn_product_amount">
                                    <span class="minus">&minus;</span>
                                    <input class="input_amount" type="text" name="amount" value="5" data-max="{$product->variant->stock}">
                                    <span class="plus">&plus;</span>
                                </div>


При желании можно каждому товару задавать свое мин. количество, но это уже сложнее.
Вот за такое уже можно и оплату попросить.
Но если мин. количество для всех товаров постоянное, то мой вариант Вам в самый раз
Последний раз редактировалось koteyka-2 10.09.2017, 17:26, всего редактировалось 4 раза.
Настройка обмена OKAY и SIMPLA с 1С 7.7 и 8.х, Мой склад и Укрсклад
Доработка, изменение функционала.

kikaridza
kikaridza
Репутация: 0
Сообщения: 5
Зарегистрирован: 10.09.2017
С нами: 6 лет 6 месяцев

Сообщение #4 kikaridza » 10.09.2017, 14:04

koteyka-2 писал(а):
Если готовы оплачивать, обращайтесь в личку...

За что там оплачивать, хапуга?



Спасибо большое вам!

koteyka-2 M
Аватара
koteyka-2 M
Репутация: 7
Сообщения: 45
Зарегистрирован: 27.09.2016
С нами: 7 лет 6 месяцев
Откуда: Днепр
Skype

Сообщение #5 koteyka-2 » 10.09.2017, 14:16

Спасибо большое вам!
Я там дополнил свой пост, расписав мин. количество
Настройка обмена OKAY и SIMPLA с 1С 7.7 и 8.х, Мой склад и Укрсклад
Доработка, изменение функционала.

kikaridza
kikaridza
Репутация: 0
Сообщения: 5
Зарегистрирован: 10.09.2017
С нами: 6 лет 6 месяцев

Сообщение #6 kikaridza » 10.09.2017, 14:27

koteyka-2 писал(а):
Спасибо большое вам!
Я там дополнил свой пост, расписав мин. количество
Спасибо, буду пробовать.
Большое спасибо!

korshunov
korshunov
Репутация: 146
Сообщения: 1854
Зарегистрирован: 03.12.2015
С нами: 8 лет 3 месяца
Skype

Сообщение #7 korshunov » 10.09.2017, 16:03

koteyka-2 писал(а):
Если готовы оплачивать, обращайтесь в личку...
Решить можно разными способами. Например, можно в шаблоне cart.tpl скрывать кнопку оформления заказа

Предлагаемые Вами решения содержат массу ошибок.

Самая простая ошибка состоит в том, что условие {if $cart->purchases->total_price >= 25000} не выполняется НИКОГДА, в результате НИКОГДА не будет показана кнопка отправки заказа. Для реально работающего магазина такой способ смерти подобен...

koteyka-2 писал(а):Для минимального количества в скрипте okay.js везде меняете 1 на ваше значение, например 5
Это только для минимального количества в СКРИПТЕ. А задание-то другие - для для минимального количества в ЗАКАЗЕ!
При современном развитии интернета простой покупатель может обойти Ваши ограничения и с легкостью сделать заказ из 1 шт товара.

Подобная тема:
http://forum.simplacms.ru/topic/1245-минимальная-сумма-заказа/

koteyka-2 писал(а):За что там оплачивать, хапуга?

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

koteyka-2 M
Аватара
koteyka-2 M
Репутация: 7
Сообщения: 45
Зарегистрирован: 27.09.2016
С нами: 7 лет 6 месяцев
Откуда: Днепр
Skype

Сообщение #8 koteyka-2 » 10.09.2017, 16:17

Самая простая ошибка состоит в том, что условие {if $cart->purchases->total_price >= 25000} не выполняется НИКОГДА
Да. Верно.
Изначально прописал {if $cart->purchases->total_price < 25000}, а потом вместо того, чтобы перенести вывод кнопки в else сменил сравнение, не просчитав последствия.
Спасибо за замечание.
Исправил.

А задание-то другие - для для минимального количества в ЗАКАЗЕ!
Читайте внимательно
И как задать минимальное количество товара для заказа в карточке товара?
Где здесь речь о заказе?

При современном развитии интернета простой покупатель может обойти Ваши ограничения и с легкостью сделать заказ из 1 шт товара.
Ну, с такой постановкой вопроса, совсем не сложно прописать пару строк для проверки количества при отправке формы. Или при ручном вводе в поле количества проверять минимум. Вариантов тьма.
Не усложняйте себе жизнь.
Я понимаю, просить оплату если нужно потратить хотя бы пару часов на работу, но здесь весь вопрос решался за 10-15 мин.
Какая оплата за это может быть?
Вполне достаточно "Спасибо"
Настройка обмена OKAY и SIMPLA с 1С 7.7 и 8.х, Мой склад и Укрсклад
Доработка, изменение функционала.

korshunov
korshunov
Репутация: 146
Сообщения: 1854
Зарегистрирован: 03.12.2015
С нами: 8 лет 3 месяца
Skype

Сообщение #9 korshunov » 10.09.2017, 16:56

koteyka-2 писал(а):Да. Верно.
Изначально прописал {if $cart->purchases->total_price < 25000}, а потом вместо того, чтобы перенести вывод кнопки в else сменил сравнение, не просчитав последствия.
Спасибо за замечание.
Исправил.

Во втором варианте у Вас результат тот же - всегда, независимо от суммы заказа, кнопка Заказать НЕ ПОКАЗЫВАЕТСЯ, а пишется фраза Сумма заказа не должна быть меньше 25 000 руб, хоть на миллион набери товаров. Может, Вы шпион-диверсант-недоброжелатель из конкурирующего магазина?


koteyka-2 писал(а):Ну, с такой постановкой вопроса, совсем не сложно прописать пару строк для проверки количества при отправке формы. Или при ручном вводе в поле количества проверять минимум. Вариантов тьма.

Вот и напишите один вариант из тьмы полностью. Посмотрим, получится ли у Вас с первого раза без ошибки. Заранее спасибо...

koteyka-2 M
Аватара
koteyka-2 M
Репутация: 7
Сообщения: 45
Зарегистрирован: 27.09.2016
С нами: 7 лет 6 месяцев
Откуда: Днепр
Skype

Сообщение #10 koteyka-2 » 10.09.2017, 17:27

Вы шпион-диверсант-недоброжелатель из конкурирующего магазина?

Бляяя. Туплю. Сказывается бессонная ночь, пожалуй.
total_price же в $cart сидит, а не в $cart->purchases
Исправил.
Настройка обмена OKAY и SIMPLA с 1С 7.7 и 8.х, Мой склад и Укрсклад
Доработка, изменение функционала.

korshunov
korshunov
Репутация: 146
Сообщения: 1854
Зарегистрирован: 03.12.2015
С нами: 8 лет 3 месяца
Skype

Сообщение #11 korshunov » 10.09.2017, 17:41

Теперь можете перейти к следующей ошибке.
Сделайте так, чтобы сообщение
<span>Сумма заказа не должна быть меньше 25 000 руб</span>
показывалось верно, то есть не в рублях, а в выбранной валюте...

koteyka-2 M
Аватара
koteyka-2 M
Репутация: 7
Сообщения: 45
Зарегистрирован: 27.09.2016
С нами: 7 лет 6 месяцев
Откуда: Днепр
Skype

Сообщение #12 koteyka-2 » 10.09.2017, 18:27

показывалось верно, то есть не в рублях, а в выбранной валюте...
Пипец Вы геморный. Паранойя, что отобрал потенциальный заработок?

Код: Выделить всё

<span>Сумма заказа не должна быть меньше {25000|convert} {$currency->sign|escape}</span>


Вот и напишите один вариант из тьмы полностью.

В okay.js находим строку

Код: Выделить всё

/* Аяксовое изменение кол-ва товаров в корзине */

и перед ней вставляем

Код: Выделить всё

/* Контроль минимального количества для заказа */
function control() {
    var amount = $('.input_amount').val();
   if(amount < 5)
   {
      $('.input_amount').val(5);
   }
}

В product.tpl находим строку

Код: Выделить всё

<input class="input_amount" type="text" name="amount" value="1" data-max="{$product->variant->stock}">

и меняем на

Код: Выделить всё

<input class="input_amount" type="text" name="amount" value="5" data-max="{$product->variant->stock}" onblur="control();">

Это контроль мин. количества в товаре.
Теперь для корзины.
Находим в okay.js

Код: Выделить всё

/* Аяксовое изменение кол-ва товаров в корзине */
function ajax_change_amount(object, variant_id) {
    var amount = $( object ).val(),
        coupon_code = $( 'input[name="coupon_code"]' ).val(),
        delivery_id = $( 'input[name="delivery_id"]:checked' ).val(),
        payment_id = $( 'input[name="payment_method_id"]:checked' ).val();

    /* ajax запрос */
    $.ajax( {
        url: 'ajax/cart_ajax.php',
        data: {
            coupon_code: coupon_code,
            action: 'update_citem',
            variant_id: variant_id,
            amount: amount
        },
        dataType: 'json',
        success: function(data) {
            if( data.result == 1 ) {
                ajax_set_result( data );
                $( '#deliveries_' + delivery_id ).trigger( 'click' );
                $( '#payment_' + delivery_id + '_' + payment_id ).trigger( 'click' );
            } else {
                $( '#cart_informer' ).html( data.cart_informer );
                $(".fn_ajax_content").html( data.content );
            }
        }
    } );
}

Она получится чуть ниже нашей добавленной функции
Заменим ее на

Код: Выделить всё

/* Аяксовое изменение кол-ва товаров в корзине */
function ajax_change_amount(object, variant_id) {
    var amount = $( object ).val(),
        coupon_code = $( 'input[name="coupon_code"]' ).val(),
        delivery_id = $( 'input[name="delivery_id"]:checked' ).val(),
        payment_id = $( 'input[name="payment_method_id"]:checked' ).val();
      if(amount < 5)
      {
         $( object ).value = 5;
         amount = 5;
      }
    /* ajax запрос */
    $.ajax( {
        url: 'ajax/cart_ajax.php',
        data: {
            coupon_code: coupon_code,
            action: 'update_citem',
            variant_id: variant_id,
            amount: amount
        },
        dataType: 'json',
        success: function(data) {
            if( data.result == 1 ) {
                ajax_set_result( data );
                $( '#deliveries_' + delivery_id ).trigger( 'click' );
                $( '#payment_' + delivery_id + '_' + payment_id ).trigger( 'click' );
            } else {
                $( '#cart_informer' ).html( data.cart_informer );
                $(".fn_ajax_content").html( data.content );
            }
        }
    } );
}
Настройка обмена OKAY и SIMPLA с 1С 7.7 и 8.х, Мой склад и Укрсклад
Доработка, изменение функционала.

korshunov
korshunov
Репутация: 146
Сообщения: 1854
Зарегистрирован: 03.12.2015
С нами: 8 лет 3 месяца
Skype

Сообщение #13 korshunov » 11.09.2017, 06:20

koteyka-2 писал(а):Паранойя, что отобрал потенциальный заработок?

Как раз наоборот. Пока Ваше "решение" в текущем качестве, моему заработку оно не угрожает.
А пока бесплатно занимаюсь тем, что толкаю Вас, как слепого котенка, в нужном направлении.
Если удастся довести до конца, тогда уж и возникнет вопрос о том, что "отобрал потенциальный заработок". Но, судя по Вашим манерам, до этого далеко.

Была указана ошибка, повторю

Ошибка 2. Надо, чтобы сообщение
<span>Сумма заказа не должна быть меньше 25 000 руб</span>
показывалось не в рублях, а в выбранной валюте...

Как насчет этого? Можете потратить пару минут, чтоб вместо флуда написать исправление?

Что касается Ваших последних исправлений по количеству, то они полностью задачу не решают. По прежнему имеет место

Ошибка 3. Простой пользователь без особых навыков может легко сделать заказ с 1 товаром.

koteyka-2 M
Аватара
koteyka-2 M
Репутация: 7
Сообщения: 45
Зарегистрирован: 27.09.2016
С нами: 7 лет 6 месяцев
Откуда: Днепр
Skype

Сообщение #14 koteyka-2 » 11.09.2017, 06:40

Ошибка 2. Надо, чтобы сообщение
<span>Сумма заказа не должна быть меньше 25 000 руб</span>
показывалось не в рублях, а в выбранной валюте...
Вы слепы, старче :-)
Смотрите выше

Код: Выделить всё

<span>Сумма заказа не должна быть меньше {25000|convert} {$currency->sign|escape}</span>


Ошибка 3. Простой пользователь без особых навыков может легко сделать заказ с 1 товаром.
Вы сделайте для начала, а я посмотрю, так ли это.
Тем более без навыков. Тут с навыками сложновато.
Последний раз редактировалось koteyka-2 11.09.2017, 06:44, всего редактировалось 1 раз.
Настройка обмена OKAY и SIMPLA с 1С 7.7 и 8.х, Мой склад и Укрсклад
Доработка, изменение функционала.

korshunov
korshunov
Репутация: 146
Сообщения: 1854
Зарегистрирован: 03.12.2015
С нами: 8 лет 3 месяца
Skype

Сообщение #15 korshunov » 11.09.2017, 06:44

Что хотите этим сказать?
Имеете в виду, что это не ошибка, а Вы считает, что и так сойдет? Кому надо, калькулятором посчитает?

koteyka-2 M
Аватара
koteyka-2 M
Репутация: 7
Сообщения: 45
Зарегистрирован: 27.09.2016
С нами: 7 лет 6 месяцев
Откуда: Днепр
Skype

Сообщение #16 koteyka-2 » 11.09.2017, 06:47

Кому надо, калькулятором посчитает?
Что за бред Вы несете?
Какой калькулятор? Что считать, строку с надписью?
показывалось не в рублях, а в выбранной валюте...
Показывается. Смените валюту и увидите.

По ходу, я догадываюсь, кто Вы на форуме симплы )))))
Здесь под тем же ником очко сыграло зарегиться?

Добавлено спустя 4 минуты 15 секунд:
Вместо того, чтобы сидеть и умничать, расписали бы свой вариант решения.
Ах да, нам же эго не позволяет бесплатные советы давать.
А вот сидеть трындеть, так это нас хлебом не корми.
Терпеть не могу таких умников.
Если человеку нужно, он сам отпишется, что то-то и то-то работает не совсем правильно. Я поправлю.
Не нужно из себя супер-диву создавать. По крайней мере, это не красиво, как минимум.
Настройка обмена OKAY и SIMPLA с 1С 7.7 и 8.х, Мой склад и Укрсклад
Доработка, изменение функционала.

korshunov
korshunov
Репутация: 146
Сообщения: 1854
Зарегистрирован: 03.12.2015
С нами: 8 лет 3 месяца
Skype

Сообщение #17 korshunov » 11.09.2017, 07:09

Виноват, недосмотрел. Ошибка 2 исправлена.

Продолжаем разговор, как говорил Карлсон.

Ошибка 4. Сообщение
<span>Сумма заказа не должна быть меньше {25000|convert} {$currency->sign|escape}</span>
показывается одинаково на всех языках. Сделайте пожалуйста, как положено по стандартам Okay, чтобы были разные фразы на разных языках.

koteyka-2 M
Аватара
koteyka-2 M
Репутация: 7
Сообщения: 45
Зарегистрирован: 27.09.2016
С нами: 7 лет 6 месяцев
Откуда: Днепр
Skype

Сообщение #18 koteyka-2 » 11.09.2017, 10:54

показывается одинаково на всех языках
А Вы много людей знаете, которые используют многоязычность?
Я, например, пока не встречал. За всё время фриланса один эстонец был, да и то на симпле.
Настройка обмена OKAY и SIMPLA с 1С 7.7 и 8.х, Мой склад и Укрсклад
Доработка, изменение функционала.

korshunov
korshunov
Репутация: 146
Сообщения: 1854
Зарегистрирован: 03.12.2015
С нами: 8 лет 3 месяца
Skype

Сообщение #19 korshunov » 11.09.2017, 11:31

Вопрос Ваш не по теме. Если он Вам интересен, лучше завести отдельную тему под него.

В этой теме обсуждается конкретная разработка для OkayCMS, а обычно подразумевается, что все разработки должны вписываться в текущий функционал.

Если Ваша разработка в этом плане нестандартная, тогда надо бы написать в самом начале в описании разработки честно, что, мол, данная разработка НЕ поддерживает стандартную мультиязычность OkayCMS и работает правильно ТОЛЬКО когда используется один язык.

Ошибка 5. Разработка совсем неправильно функционирует, если валюта по умолчанию - не RUB. Надеюсь, этот момент Вы сочтете достаточно важным и достойным исправления, ибо очень многие работают с несколькими валютами.

seo-deluxe.ru
seo-deluxe.ru
Репутация: 2
Сообщения: 35
Зарегистрирован: 20.04.2019
С нами: 4 года 11 месяцев

Сообщение #20 seo-deluxe.ru » 03.07.2019, 05:24

Подниму старую тему.
Ребята, подскажите как сделать так что бы без перезагрузки страницы шла проверка, т.е. Человек взял товар на 880 рублей, я поставил проверку на 1000. У меня сообщение что мол, ходи по сайту и заказывай еще так как нам надо больше сумму положить в корман.
Но человек вместо того что бы заказывать дополнительный товар, он просто меняет количество товара к примеру было 4 поставил 5 и сумма автоматически сменилась, было 880 стало 1100, но сообщение осталось то же самое, вместо кнопки.
Вот как сделать так, что бы при изменение самой цены в карточки товара, сообщение заменялась кнопкой?


Название раздела: Вопросы по работе с OkayCMS
Правила раздела: faq.php?mode=okay

Быстрый ответ


Введите код в точности так, как вы его видите. Регистр символов не имеет значения.
Код подтверждения

   

Вернуться в «Вопросы по работе с OkayCMS»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 33 гостя