Страница 1 из 1

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

Добавлено: 09.09.2017, 20:00
Игорь
Как задать минимальную сумму заказа в корзине при оформлении заказа?

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

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

Добавлено: 10.09.2017, 13:59
koteyka-2
Если готовы оплачивать, обращайтесь в личку...

За что там оплачивать, хапуга?
Решить можно разными способами. Например, можно в шаблоне 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>


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

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

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



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

Добавлено: 10.09.2017, 14:16
koteyka-2
Спасибо большое вам!
Я там дополнил свой пост, расписав мин. количество

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

Добавлено: 10.09.2017, 16:03
korshunov
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 писал(а):За что там оплачивать, хапуга?

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

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

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

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

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

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


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

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

Добавлено: 10.09.2017, 17:27
koteyka-2
Вы шпион-диверсант-недоброжелатель из конкурирующего магазина?

Бляяя. Туплю. Сказывается бессонная ночь, пожалуй.
total_price же в $cart сидит, а не в $cart->purchases
Исправил.

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

Добавлено: 10.09.2017, 18:27
koteyka-2
показывалось верно, то есть не в рублях, а в выбранной валюте...
Пипец Вы геморный. Паранойя, что отобрал потенциальный заработок?

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

<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 );
            }
        }
    } );
}

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

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

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

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

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

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

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

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

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

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


Ошибка 3. Простой пользователь без особых навыков может легко сделать заказ с 1 товаром.
Вы сделайте для начала, а я посмотрю, так ли это.
Тем более без навыков. Тут с навыками сложновато.

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

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

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

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

Добавлено: 11.09.2017, 07:09
korshunov
Виноват, недосмотрел. Ошибка 2 исправлена.

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

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

Добавлено: 11.09.2017, 10:54
koteyka-2
показывается одинаково на всех языках
А Вы много людей знаете, которые используют многоязычность?
Я, например, пока не встречал. За всё время фриланса один эстонец был, да и то на симпле.

Добавлено: 11.09.2017, 11:31
korshunov
Вопрос Ваш не по теме. Если он Вам интересен, лучше завести отдельную тему под него.

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

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

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

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