Как отключить в корзине проверку на минимальное количество.

Установка, ошибки при работе с модулями, интеграции и прочее
blind
Сообщения: 36
Зарегистрирован: 25.04.2022
Поблагодарил: 2 раз
Спасибо: 1 раз

Как отключить в корзине проверку на минимальное количество.

Непрочитанное сообщение blind »

Изображение

На страницах где можно добавить товар в корзину сделан двойное минимальное количество. Если продажа с магазина то кабель например продается кратно 1 м, если на заказ от поставщика то кратно 100м.  (В  таблицу product добавлена колонка minimum_2 )/
Но далее при переходе в корзину нельзя оформить заказ из за того что в корзине береться minimum.  Хочу заблокировать поле ввода количество. Но проверка в дальнейшем не дает оформить заказ. Подскажите как можно убрать?
Аватара пользователя
nikifalex
Разработчик дополнений
Сообщения: 316
Зарегистрирован: 17.03.2022
Откуда: Россия
Поблагодарил: 4 раз
Спасибо: 38 раз
Контактная информация:

Re: Как отключить в корзине проверку на минимальное количество.

Непрочитанное сообщение nikifalex »

ничего непонятно. вы использовали minimum зачем? что такое "сделан двойное минимальное количество"
blind
Сообщения: 36
Зарегистрирован: 25.04.2022
Поблагодарил: 2 раз
Спасибо: 1 раз

Re: Как отключить в корзине проверку на минимальное количество.

Непрочитанное сообщение blind »

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

<input class="quantity-product type="text" name="quantity" onblur="btn({% if quantity_1 > 0 %}{{ minimum_km }}{% else %}{{ minimum }}{% endif %});"
 size="5" value="{% if quantity_1 > 0 %}{{ minimum_km }}{% else %}{{ minimum }}{% endif %}" id="input-quantity" 
onkeyup="validate_quantity(this,'{% if quantity_1 > 0 %}{{ minimum_km }}{% else %}{{ minimum }}{% endif %}')">
Это кнопка добавления товара в корзину. 
quantity_1 - добавлен дополнительный склад
minimum_km - добавлено дополнительное минимальное количество для этого склада. 

Если товар есть на складе магазина  quantity_1 то соответственно и кратность отгрузки одна minimum_km , если товара нет на складе магазина то береться minimum это кратность склада поставщика.(стандартное опенкарта, подгружается от поставщика) 

Все работает, кроме корзины. Там берется стандартное минимальное количество. И не дает оформить заказ.
Последний раз редактировалось blind 30 авг 2022, 11:36, всего редактировалось 1 раз.
Аватара пользователя
nikifalex
Разработчик дополнений
Сообщения: 316
Зарегистрирован: 17.03.2022
Откуда: Россия
Поблагодарил: 4 раз
Спасибо: 38 раз
Контактная информация:

Re: Как отключить в корзине проверку на минимальное количество.

Непрочитанное сообщение nikifalex »

э... ну переделайте и корзину. делов то
blind
Сообщения: 36
Зарегистрирован: 25.04.2022
Поблагодарил: 2 раз
Спасибо: 1 раз

Re: Как отключить в корзине проверку на минимальное количество.

Непрочитанное сообщение blind »

Я сегодня целый день пытался это сделать. Но мозгов не хватает. Я не понимаю как вывести на страницу simplecheckout_cart.twig вот эти переменные.
quantity_1, minimum_km. Но что то мне подсказывает что этого будет не достаточно, так как есть проверка на кратность. Изначальный вопрос состоял в том как отключить эту проверку. Где смотреть, в каких файлах. Потому как в интернете я более менее внятной инфы найти не могу.
sanyaiv
Сообщения: 49
Зарегистрирован: 11.06.2022
Спасибо: 2 раз

Re: Как отключить в корзине проверку на минимальное количество.

Непрочитанное сообщение sanyaiv »

blind писал(а): 25 авг 2022, 19:13 Я сегодня целый день пытался это сделать. Но мозгов не хватает. Я не понимаю как вывести на страницу simplecheckout_cart.twig вот эти переменные.
quantity_1, minimum_km. Но что то мне подсказывает что этого будет не достаточно, так как есть проверка на кратность. Изначальный вопрос состоял в том как отключить эту проверку. Где смотреть, в каких файлах. Потому как в интернете я более менее внятной инфы найти не могу.

изначально в контроллере есть строка, к примеру $data['product_category']
дальше идет строка например  'minimum_km'             => $result['minimum_km'],
Значит, для вывода в нужном месте мы пишем примерно так
{% for product_id in product_category %}
наш кусок кода
<input class="quantity-product type="text" name="quantity" onblur="btn({% if quantity_1 > 0 %}{{ minimum_km }}{% else %}{{ minimum }}{% endif %});" size="5" value="{% if quantity_1 > 0 %}{{ minimum_km }}{% else %}{{ minimum }}{% endif %}" id="input-quantity" onkeyup="validate_quantity(this,'{% if quantity_1 > 0 %}{{ minimum_km }}{% else %}{{ minimum }}{% endif %}')">
{% endfor %}
примерно так...
но проще просто отключить проверку или установить минимум 0, а лучше quantity_1 ....
Для этого мы находим поле которое показывает сайту минимальное число в контроллере 
оно будет в примерно таком вот списке...
'product_option_value_id' => $product_option_value['product_option_value_id'],
               'name'             => $result['name'],
                'description'      => $result['description'],
                'meta_title'       => $result['meta_title'],
                'meta_description' => $result['meta_description'],
                'meta_keyword'     => $result['meta_keyword'],
                'minimum_km '                   => $result['minimum_km '],
                'tag'              => $result['tag']
======
далее мы меняем его значение, например на quantity_1 (ЭТО СРАБОТАЕТ ЕСЛИ В МОДЕЛИ ЗАПРОС ПОЛУЧАЕТ И ТО И ТО, ЕСЛИ НЕ ПОЛУЧАЕТ И ТО И ТО, НАДО ДОПИСАТЬ ПРИСОЕДИНЕНИЕ К БД ЧЕРЕЗ ДЖОИН, ( В СПИСКЕ ВЫШЕ ЗНАЧЕНИЯ КОТОРЫЕ ПОЛУЧАЕТ КОНТРОЛЛЕР, ДУМАЮ ОНО ТАМ БУДЕТ, СУТЬ ОДИНАКОВАЯ ЖЕ))
  'minimum_km '                   => $result['quantity_1'],
ниже оставляем кусок чтобы вернуть в случае чего
// 'minimum_km '                   => $result[''minimum_km '],
теперь это поле если оно активно, оно будет брать значение из quantity_1, которое как я понимаю, и есть число минимального заказа.
ну а из минусов, нельзя использовать значение минимального поставщика.
в каком именно контроллере не знаю, наверное у корзины, или у вариантов доставки, или в том же, в котором минимальное число для заказа идет, тоже не знаю, никогда не пользовался такой функцией.
=========================
Если слишком лениво этим всем заниматься -
идем в базу данных, пишем запрос :
UPDATE pr_tablitsa_huitsa set minimum_km = 0
таким образом мы установим минималку в 0.
Если прайс лист поставщика обновляется постоянно, к примеру раз в день, тогда идем в события базы данных, и ставим этот же запрос на цикл, и он постоянно будет ставить 0, в определенное время.
Это ленивый вариант, минус в том - пока запрос не обновит бд, то минут 10 ошибка будет мешать.
ставить надо не на точное время когда обновляется поставщик, а спустя минут 10, чтобы все обновилось.
Ну либо найти запрос в модели модуля который обновляет это поле и убрать оттуда обновление этого поля, SQL примитивный по этому я не буду писать как выглядит запрос, и так всем понятно.





 
blind
Сообщения: 36
Зарегистрирован: 25.04.2022
Поблагодарил: 2 раз
Спасибо: 1 раз

Re: Как отключить в корзине проверку на минимальное количество.

Непрочитанное сообщение blind »

Спасибо за ваш отклик. Я делаю следующее: в контроллере добавил      'minimum_km'   => $product['minimum_km'] и   'quantity_1'  => $product['quantity_1'] 
 

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

  $this->_templateData['products'][] = array(
                    'key'       => isset($product['key']) ? $product['key'] : '',
                    'cart_id'   => isset($product['cart_id']) ? $product['cart_id'] : '',
                    'thumb'     => $image,
                    'name'      => $product['name'],
                    'model'     => $product['model'],
                    'minimum'   => $product['minimum'],
					'minimum_km'   => $product['minimum_km'],
                    'option'    => $option_data,
                    'recurring' => $recurring,
                    'quantity'  => $product['quantity'],
				    'quantity_1'  => $product['quantity_1'],
                    'stock'     => $product['stock'] ? true : !(!$this->config->get('config_stock_checkout') || $this->config->get('config_stock_warning')),
                    'reward'    => ($product['reward'] ? sprintf($this->language->get('text_points'), $product['reward']) : ''),
                    'price'     => $price,
                    'old_price' => $old_price,
                    'total'     => $total,
                    'href'      => $this->url->link('product/product', 'product_id=' . $product['product_id'])
                );
Соответственно в twig  я вывел {{ product.minimum_km }} {{ product.quantity_1 }}, ошибки никакой не выдает. Но и переменные не выводит. Файлов model для корзины я не нахожу.
Последний раз редактировалось blind 26 авг 2022, 10:43, всего редактировалось 1 раз.
blind
Сообщения: 36
Зарегистрирован: 25.04.2022
Поблагодарил: 2 раз
Спасибо: 1 раз

Re: Как отключить в корзине проверку на минимальное количество.

Непрочитанное сообщение blind »

далее мы меняем его значение, например на quantity_1 (ЭТО СРАБОТАЕТ ЕСЛИ В МОДЕЛИ ЗАПРОС ПОЛУЧАЕТ И ТО И ТО, ЕСЛИ НЕ ПОЛУЧАЕТ И ТО И ТО, НАДО ДОПИСАТЬ ПРИСОЕДИНЕНИЕ К БД ЧЕРЕЗ ДЖОИН, ( В СПИСКЕ ВЫШЕ ЗНАЧЕНИЯ КОТОРЫЕ ПОЛУЧАЕТ КОНТРОЛЛЕР, ДУМАЮ ОНО ТАМ БУДЕТ, СУТЬ ОДИНАКОВАЯ ЖЕ))
  'minimum_km '                   => $result['quantity_1'],
ниже оставляем кусок чтобы вернуть в случае чего

Вот за это спасибо. Я сразу и не подумал, что можно просто минимум сделать равное количеству в корзине. Если не получиться сделать то что выше сделаю так.
Пожалуй это идеально. Остался вопрос в том как отключить проверку.  Скажем minimum = 100, а в корзину я добавил 85 и мне не дает нажать кнопку оформить заказ выдает сообщение 
Минимальное количество для заказа товара Труба гофрированная ПВХ 20мм с протяжкой серая (100м) (CTG20-20-K41-100I) составляет 100!
sanyaiv
Сообщения: 49
Зарегистрирован: 11.06.2022
Спасибо: 2 раз

Re: Как отключить в корзине проверку на минимальное количество.

Непрочитанное сообщение sanyaiv »

blind писал(а): 26 авг 2022, 10:36 Спасибо за ваш отклик. Я делаю следующее: в контроллере добавил      'minimum_km'   => $product['minimum_km'] и   'quantity_1'  => $product['quantity_1'] 
 

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

  $this->_templateData['products'][] = array(
                    'key'       => isset($product['key']) ? $product['key'] : '',
                    'cart_id'   => isset($product['cart_id']) ? $product['cart_id'] : '',
                    'thumb'     => $image,
                    'name'      => $product['name'],
                    'model'     => $product['model'],
                    'minimum'   => $product['minimum'],
					'minimum_km'   => $product['minimum_km'],
                    'option'    => $option_data,
                    'recurring' => $recurring,
                    'quantity'  => $product['quantity'],
				    'quantity_1'  => $product['quantity_1'],
                    'stock'     => $product['stock'] ? true : !(!$this->config->get('config_stock_checkout') || $this->config->get('config_stock_warning')),
                    'reward'    => ($product['reward'] ? sprintf($this->language->get('text_points'), $product['reward']) : ''),
                    'price'     => $price,
                    'old_price' => $old_price,
                    'total'     => $total,
                    'href'      => $this->url->link('product/product', 'product_id=' . $product['product_id'])
                );
Соответственно в twig  я вывел {{ product.minimum_km }} {{ product.quantity_1 }}, ошибки никакой не выдает. Но и переменные не выводит. Файлов model для корзины я не нахожу.

так их и не будет просто так выводить, в месте где они выводятся есть кусок кода 
примерно такой
{% for product in products %}
и только потом мы вставляем {{ product.minimum_km }} {{ product.quantity_1 }}
закрываем {% endfor %}
но суть какая? если мы хотим вообще отключить эту проверку, то смысл ее выводить вообще? 
{% for product in products %}  это сработает в продукте, в шаблоне корзины надо посмотреть как там это прописано, я наизусть не помню все, по аналогии прописать в общем то, и прописать в нужное место, там где стоит поле заказа , оно так же через for\if разграничено.
Судя по скрину контроллера, можно поменять $product минимум_км на продукт квартити_1
менять надо после =>  
 
blind
Сообщения: 36
Зарегистрирован: 25.04.2022
Поблагодарил: 2 раз
Спасибо: 1 раз

Непрочитанное сообщение blind »

Вы меня наверное не совсем поняли. Я пытаюсь добавить дополнительные переменные. minimum_km и quantity_1. что бы потом их использовать в шаблоне. При добавлении которые приведены ниже. Выдает ошибку Undefined index: minimum_km in , значит контроллер не видит $product['minimum_km'] верно? Если да.  Что сделать чтобы он ее увидел?

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

 $this->_templateData['products'][] = array(
                    'key'       => isset($product['key']) ? $product['key'] : '',
                    'cart_id'   => isset($product['cart_id']) ? $product['cart_id'] : '',
                    'thumb'     => $image,
                    'name'      => $product['name'],
                    'model'     => $product['model'],
				//	'minimum'   => $product['quantity'],
                    'minimum'   => $product['minimum'],
			    	'minimum_km'   => $product['minimum_km'],
                    'option'    => $option_data,
                    'recurring' => $recurring,
                    'quantity'  => $product['quantity'],
				//  'quantity_1'  => $product['quantity_1'],
                    'stock'     => $product['stock'] ? true : !(!$this->config->get('config_stock_checkout') || $this->config->get('config_stock_warning')),
                    'reward'    => ($product['reward'] ? sprintf($this->language->get('text_points'), $product['reward']) : ''),
                    'price'     => $price,
                    'old_price' => $old_price,
                    'total'     => $total,
                    'href'      => $this->url->link('product/product', 'product_id=' . $product['product_id'])
                );
blind
Сообщения: 36
Зарегистрирован: 25.04.2022
Поблагодарил: 2 раз
Спасибо: 1 раз

Re: Как отключить в корзине проверку на минимальное количество.

Непрочитанное сообщение blind »

В принципе кажется получилось. Отключил проверку на кратность. И сделал блокировку поля ввода если товар добавленный в корзину меньше чем кратность его отгрузки. 
https://disk.yandex.ru/i/63ty1F_YamXwkQ
Единственный минус в том что если товара на складе скажем 55, то можно его накидать в корзину отрезками по 20, 30, 40, 50, и в итоге все равно получается больше чем количество на складе.
blind
Сообщения: 36
Зарегистрирован: 25.04.2022
Поблагодарил: 2 раз
Спасибо: 1 раз

Непрочитанное сообщение blind »

Так оказывается для корзины надо было еще добавить в контроллер для  system\library\cart\cart.php переменные я вывел но теперь не работают конструкции  {% if  (product.minimum > 1 and product.quantity_1 <= 0) or  (product.minimum_km > 1) %} btn-dangerr {% else %} {% endif %}
Подскажите что нужно сделать что бы условия заработали?
blind
Сообщения: 36
Зарегистрирован: 25.04.2022
Поблагодарил: 2 раз
Спасибо: 1 раз

Re: Как отключить в корзине проверку на минимальное количество.

Непрочитанное сообщение blind »

sanyaiv писал(а): 26 авг 2022, 11:16
blind писал(а): 26 авг 2022, 10:36 Спасибо за ваш отклик. Я делаю следующее: в контроллере добавил      'minimum_km'   => $product['minimum_km'] и   'quantity_1'  => $product['quantity_1'] 
 

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

  $this->_templateData['products'][] = array(
                    'key'       => isset($product['key']) ? $product['key'] : '',
                    'cart_id'   => isset($product['cart_id']) ? $product['cart_id'] : '',
                    'thumb'     => $image,
                    'name'      => $product['name'],
                    'model'     => $product['model'],
                    'minimum'   => $product['minimum'],
					'minimum_km'   => $product['minimum_km'],
                    'option'    => $option_data,
                    'recurring' => $recurring,
                    'quantity'  => $product['quantity'],
				    'quantity_1'  => $product['quantity_1'],
                    'stock'     => $product['stock'] ? true : !(!$this->config->get('config_stock_checkout') || $this->config->get('config_stock_warning')),
                    'reward'    => ($product['reward'] ? sprintf($this->language->get('text_points'), $product['reward']) : ''),
                    'price'     => $price,
                    'old_price' => $old_price,
                    'total'     => $total,
                    'href'      => $this->url->link('product/product', 'product_id=' . $product['product_id'])
                );
Соответственно в twig  я вывел {{ product.minimum_km }} {{ product.quantity_1 }}, ошибки никакой не выдает. Но и переменные не выводит. Файлов model для корзины я не нахожу.

так их и не будет просто так выводить, в месте где они выводятся есть кусок кода 
примерно такой
{% for product in products %}
и только потом мы вставляем {{ product.minimum_km }} {{ product.quantity_1 }}
закрываем {% endfor %}
но суть какая? если мы хотим вообще отключить эту проверку, то смысл ее выводить вообще? 
{% for product in products %}  это сработает в продукте, в шаблоне корзины надо посмотреть как там это прописано, я наизусть не помню все, по аналогии прописать в общем то, и прописать в нужное место, там где стоит поле заказа , оно так же через for\if разграничено.
Судя по скрину контроллера, можно поменять $product минимум_км на продукт квартити_1
менять надо после =>  

Спасибо большое за помощь, я разобрался и сделал именно так как мне надо!
sanyaiv
Сообщения: 49
Зарегистрирован: 11.06.2022
Спасибо: 2 раз

Re: Как отключить в корзине проверку на минимальное количество.

Непрочитанное сообщение sanyaiv »

blind писал(а): 26 авг 2022, 18:59
sanyaiv писал(а): 26 авг 2022, 11:16 Помощь
Спасибо большое за помощь, я разобрался и сделал именно так как мне надо!

Наздоровье )
Ответить