Jump to content
Sign in to follow this  
Semirina7

Минимальная сумма заказа

Recommended Posts

Возможно ли это осуществить? Очееень нужно! Если такой вопрос был, извиняюсь, так как поисковик на форуме ничего не ищет.

Share this post


Link to post
Share on other sites

Не проверял, но есть в "учитывать в заказе" пункт "Затраты на минимальный заказ"

Share this post


Link to post
Share on other sites

Не проверял, но есть в "учитывать в заказе" пункт "Затраты на минимальный заказ"

Нет, это лишь прибавляет в заказ указанную сумму, а не запрещает оформлять менее какой то суммы.

Share this post


Link to post
Share on other sites

в ..catalogcontrollercheckoutcart.php

находим

if (isset($this->error['warning'])) {	$this->data['error_warning'] = $this->error['warning'];			} elseif (!$this->cart->hasStock() && !$this->config->get('config_stock_checkout')) {	$this->data['error_warning'] = $this->language->get('error_stock');} else {	$this->data['error_warning'] = '';}
заменяем на

if (isset($this->error['warning'])) {	$this->data['error_warning'] = $this->error['warning'];			} elseif (!$this->cart->hasStock() && !$this->config->get('config_stock_checkout')) {	$this->data['error_warning'] = $this->language->get('error_stock');} elseif ($this->cart->getTotal() < 9000) {	$this->data['error_warning'] = 'need more money!';} else {	$this->data['error_warning'] = '';}

в ..catalogcontrollercheckoutshipping.php

строчку

if (!$this->cart->hasProducts()  || (!$this->cart->hasStock() && !$this->config->get('config_stock_checkout'))) {
меняем на

if (!$this->cart->hasProducts() || ($this->cart->getTotal() < 9000) || (!$this->cart->hasStock() && !$this->config->get('config_stock_checkout'))) {

9000 - соответственно меняем по своему усмотрению

  • +1 8

Share this post


Link to post
Share on other sites

А если прописать код который вот нашла на форуме? /* Минимальная сумма заказа */ $sql = "SELECT SUM(goods_price * goods_number) FROM " . $ecs->table('cart') . " WHERE session_id = '" . SESS_ID . "' " . "AND parent_id = 0 AND is_gift = 0 AND rec_type = '$flow_type'"; if ($db->getOne($sql) < 50) { show_message($_LANG['not_minimum_order'], '', '', 'warning'); }

Share this post


Link to post
Share on other sites

эт ваще что?) и чем Вам не нравиться мой вариант?)

Share this post


Link to post
Share on other sites

эт ваще что?) и чем Вам не нравиться мой вариант?)

Извини, я просто когда писала, твоего сообщения еще не было) Вот пробую твой вариант

Share this post


Link to post
Share on other sites

Fix305, Ваш вариант очень помог!!!Все получилось)))) Спасибо огромнейшее!

Share this post


Link to post
Share on other sites

Fix305, Ваш вариант очень помог!!!Все получилось)))) Спасибо огромнейшее!

Ну я и не сомневался , что это fix тебе помог . :)

Share this post


Link to post
Share on other sites

При обновлении корзины с минимальной суммой, например увеличив количество товаров всплывает следующая ошибка: Warning: Cannot modify header information - headers already sent by (output started at W:\home\opencart.local\www\catalog\controller\checkout\cart.php:1) in W:\home\opencart.local\www\system\engine\controller.php on line 27

Как бороться?

UPD

Починено.

Похоже все дело было в кодировке.

Share this post


Link to post
Share on other sites

Совет от Fix305 помог, только у меня сборка ocStore 0.1.7, изменения вносила в в ..catalogcontrollercheckoutpayment.php

Только проблема в кодировке при выводе предупреждающей фразы в корзине выводится квадратиками), если сумма меньше минимального заказа. Подскажите, пожалуйста, как исправить кодировку?

Share this post


Link to post
Share on other sites

Только проблема в кодировке при выводе предупреждающей фразы в корзине выводится квадратиками), если сумма меньше минимального заказа. Подскажите, пожалуйста, как исправить кодировку?

(зевая) учитывая что начались новые сутки, сегодня я еще не давал ответа на этот вопрос... UTF-8 без BOM, я лично для редактирования пользуюсь Notepad++

Share this post


Link to post
Share on other sites

(зевая) учитывая что начались новые сутки, сегодня я еще не давал ответа на этот вопрос... UTF-8 без BOM, я лично для редактирования пользуюсь Notepad++

А не могли бы Вы поконкретнее рассказать где прописать кодировку?

Share this post


Link to post
Share on other sites

Fix305 дал хорошее решение, ему респект. Но было бы лучше минимальную сумму заказа хранить в БД, а из интерфейса админки менять ее значение. Как это можно сделать?

Share this post


Link to post
Share on other sites

посмотрите так сделаны в админке "Настройки", достаточно добавить свое поле с name="min_price_order" в шаблоне (даже контроллер, модель трогать не придется)

а значение можно получить как

$this->config->get('min_price_order');

Share this post


Link to post
Share on other sites

Задача управления минимальной суммой заказа из интерфейса администратора решается просто для версии ocStore 0.1.9

1) в файле ..\admin\controller\setting\setting.php

в массив $settings добавляем элемент 'min_price_order'

		$settings = array(
			'config_name',
			'config_url',
                         ............
                         ............
                         ............
			'min_price_order',
		);

2) в ..\admin\view\template\setting\setting.tpl

добавляем, например, внутри тега <div id="tab_general"><table class="form"> ... </table></div>

<div id="tab_general">
   <table class="form">
    ............................
        <tr>
            <td>Минимальная сумма заказа</td>
            <td><input type="text" name="min_price_order" value="<?php echo $min_price_order; ?>" size=9" />
         </td>
          </tr>
    </table>
</div>

Выполнив эти два действия, имеем возможность устанавливать параметр min_price_order в интерфейсе администратора (меню: Настройки, закладка: Общие) и использовать его в любом месте кода

$this->config->get('min_price_order')

3) в ../catalog/controller/checkout/cart.php

находим

if (isset($this->error['warning'])) {
        $this->data['error_warning'] = $this->error['warning'];                 
} elseif (!$this->cart->hasStock() && !$this->config->get('config_stock_checkout')) {
        $this->data['error_warning'] = $this->language->get('error_stock');
} else {
        $this->data['error_warning'] = '';
}

заменяем на

if (isset($this->error['warning'])) {
        $this->data['error_warning'] = $this->error['warning'];                 
} elseif (!$this->cart->hasStock() && !$this->config->get('config_stock_checkout')) {
        $this->data['error_warning'] = $this->language->get('error_stock');
} elseif ($this->cart->getTotal() < ((float)$this->config->get('min_price_order'))) {
        $this->data['error_warning'] = 'Минимальная сумма заказа '. $this->config->get('min_price_order').' руб!';
} else {
        $this->data['error_warning'] = '';
}

4) в ../catalog/controller/checkout/shipping.php

строчку

if (!$this->cart->hasProducts()  || (!$this->cart->hasStock() && !$this->config->get('config_stock_checkout'))) {

меняем на

if (!$this->cart->hasProducts() || ($this->cart->getTotal() < (float)$this->config->get('min_price_order')) || (!$this->cart->hasStock() && !$this->config->get('config_stock_checkout'))) {

Вот и все

Fix305, спасибо за консультацию

  • +1 1

Share this post


Link to post
Share on other sites

Fix305 дал хорошее решение, ему респект. Но было бы лучше минимальную сумму заказа хранить в БД, а из интерфейса админки менять ее значение. Как это можно сделать?

Есть модуль доставки. Там всё настраивается из админки. Но линк на него вставить не получается. Видимо, кто-то из модеров этого форума обиделся на тот сайт и поставил фильтр. :lol:

Share this post


Link to post
Share on other sites

Есть модуль доставки. Там всё настраивается из админки. Но линк на него вставить не получается. Видимо, кто-то из модеров этого форума обиделся на тот сайт и поставил фильтр. :lol:

вы путаете задачи

Share this post


Link to post
Share on other sites

Возможно. Если здесь имеется в виду, что меньше определённой суммы вообще не получится оформить заказ - то да, в том модуле решение другой задачи. Там выставляется сумма, меньше которой автоматически взимается (вписывается в счёт) дополнительная плата за доставку.

Возможно, я не до конца вник в суть этого топика. :)

ЗЫ. Кстати, нашёл этот модуль, о котором я писал, и на этом форуме. Вот здесь.

Share this post


Link to post
Share on other sites

Здесь имеется в виду задача о запрете формирования заказа на общую сумму менее заданной. Такая задача достаточно актуальна для оптовой торговли в оффлайне. В онлайне задача также актуальна, например, если торговые издержки покрываются прибылью только при достижении оборота реализации не менее заданного (точка безубыточности торговой операции).

Во многих скриптах интернет магазинов, например, VirtueMart, настройка "минимальная сумма заказа" предусмотрена.

Share this post


Link to post
Share on other sites

странно что это не стандартная функция

Share this post


Link to post
Share on other sites

Задача управления минимальной суммой заказа из интерфейса администратора решается просто для версии ocStore 0.1.9

спасибо, всё замечательно работает, +1 =)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.