Автор Тема: Добавление в корзину кратное минимальному количеству продукта  (Прочитано 816 раз)

09 Октябрь 2018, 23:25:01
  • Новичок
  • *
  • Сообщений: 9
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Здравствуйте,
помогите пожалуйста разобраться с кратным добавлением товара в корзину. Я уже очень много информации прочел и протестировал, знаю что правки нужно вносить в product.js, cart-summary.js и order-opc.js. Собственно в чем мне нужна помощь, перед тем как сделать кратное добавление мне понадобилось сделать значение склада товара дробью «2,23» (для продажи товара в метрах), так как я предполагал что буду использовать минимальное количество товара, это поле я тоже сделал дробовым http://prntscr.com/l45q10, значение вноситься, сохраняется, на странице товара отображается http://prntscr.com/l45qon - во только беда с кратным добавлением, правки для того что бы оно работала я внес для теста только в файл product.js и оно работает только на целое число (пример: минимальное количество товара для заказа 2,23, на странице сразу отображается это количество только при нажатие «+» к этому количеству будет добавлено «2» а не «2,23» можно посмотреть на этой странице https://pergamikupelne.com/stredny-format/6579-agatha-arena-235x58-bal-123m2.html# а при нажатие «-» отнимется тоже только «2». Нужно что бы функция работала и с дробовым числом, в итоге при нажатие на «+» я должен получить «4,46» (2,23 + 2,23)). Готов предоставить код и все что угодно.
Если есть несколько минут или вы решали подобную задачу,  помогите пожалуйста советом.
10 Октябрь 2018, 10:52:02
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 1614
  • Репутация: +32/-1
  • Сообщество PrestaShop
    • Просмотр профиля
В product.js
// The button to increment the product value
$(document).on('click', '.product_quantity_up', function(e){
e.preventDefault();
fieldName = $(this).data('field-qty');
var currentVal = parseInt($('input[name='+fieldName+']').val());
if (!allowBuyWhenOutOfStock && quantityAvailable > 0)
quantityAvailableT = quantityAvailable;
else
quantityAvailableT = 100000000;
if (!isNaN(currentVal) && currentVal < quantityAvailableT)
$('input[name='+fieldName+']').val(currentVal + 1).trigger('keyup');
else
$('input[name='+fieldName+']').val(quantityAvailableT);

$('#quantity_wanted').change();
});
 // The button to decrement the product value
$(document).on('click', '.product_quantity_down', function(e){
e.preventDefault();
fieldName = $(this).data('field-qty');
var currentVal = parseInt($('input[name='+fieldName+']').val());
if (!isNaN(currentVal) && currentVal > 1)
$('input[name='+fieldName+']').val(currentVal - 1).trigger('keyup');
else
$('input[name='+fieldName+']').val(1);

$('#quantity_wanted').change();
});
добавление товара при клике на + / - на единицу
val(currentVal -/+ 1)1 замените переменной, в которой будите передавать единицу кратности.
18 Октябрь 2018, 10:28:42
Ответ #2
  • Новичок
  • *
  • Сообщений: 9
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В product.js
// The button to increment the product value
$(document).on('click', '.product_quantity_up', function(e){
e.preventDefault();
fieldName = $(this).data('field-qty');
var currentVal = parseInt($('input[name='+fieldName+']').val());
if (!allowBuyWhenOutOfStock && quantityAvailable > 0)
quantityAvailableT = quantityAvailable;
else
quantityAvailableT = 100000000;
if (!isNaN(currentVal) && currentVal < quantityAvailableT)
$('input[name='+fieldName+']').val(currentVal + 1).trigger('keyup');
else
$('input[name='+fieldName+']').val(quantityAvailableT);

$('#quantity_wanted').change();
});
 // The button to decrement the product value
$(document).on('click', '.product_quantity_down', function(e){
e.preventDefault();
fieldName = $(this).data('field-qty');
var currentVal = parseInt($('input[name='+fieldName+']').val());
if (!isNaN(currentVal) && currentVal > 1)
$('input[name='+fieldName+']').val(currentVal - 1).trigger('keyup');
else
$('input[name='+fieldName+']').val(1);

$('#quantity_wanted').change();
});
добавление товара при клике на + / - на единицу
val(currentVal -/+ 1)1 замените переменной, в которой будите передавать единицу кратности.

Спасибо за ваш ответ, на почту ничего не пришло потому и отвечаю так поздно.
это уже сделал и вписал переменную "minimalQuantity" и combinationsJS[k]['minimal_quantity'] прописал "parseFloat" вместо "parseInt". и добавление по кнопке +/- работает с минимальным количеством но целым числом, пример минимальное количество у меня 2,36, в продукте будет написано что минимум который можно заказать есть 2,36 но когда я нажму на +, добавиться только 2 и тогда я смогу купить 4,36 а нужно что бы суммировало и с десятичными и получалось 4,72. Как бы за это отвечает только файл product.js если говорить о карте продукта, но не могу понять что еще я не сделал (
03 Январь 2019, 17:21:09
Ответ #3
  • Новичок
  • *
  • Сообщений: 2
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В product.js
// The button to increment the product value
$(document).on('click', '.product_quantity_up', function(e){
e.preventDefault();
fieldName = $(this).data('field-qty');
var currentVal = parseInt($('input[name='+fieldName+']').val());
if (!allowBuyWhenOutOfStock && quantityAvailable > 0)
quantityAvailableT = quantityAvailable;
else
quantityAvailableT = 100000000;
if (!isNaN(currentVal) && currentVal < quantityAvailableT)
$('input[name='+fieldName+']').val(currentVal + 1).trigger('keyup');
else
$('input[name='+fieldName+']').val(quantityAvailableT);

$('#quantity_wanted').change();
});
 // The button to decrement the product value
$(document).on('click', '.product_quantity_down', function(e){
e.preventDefault();
fieldName = $(this).data('field-qty');
var currentVal = parseInt($('input[name='+fieldName+']').val());
if (!isNaN(currentVal) && currentVal > 1)
$('input[name='+fieldName+']').val(currentVal - 1).trigger('keyup');
else
$('input[name='+fieldName+']').val(1);

$('#quantity_wanted').change();
});
добавление товара при клике на + / - на единицу
val(currentVal -/+ 1)1 замените переменной, в которой будите передавать единицу кратности.

Спасибо за ваш ответ, на почту ничего не пришло потому и отвечаю так поздно.
это уже сделал и вписал переменную "minimalQuantity" и combinationsJS[k]['minimal_quantity'] прописал "parseFloat" вместо "parseInt". и добавление по кнопке +/- работает с минимальным количеством но целым числом, пример минимальное количество у меня 2,36, в продукте будет написано что минимум который можно заказать есть 2,36 но когда я нажму на +, добавиться только 2 и тогда я смогу купить 4,36 а нужно что бы суммировало и с десятичными и получалось 4,72. Как бы за это отвечает только файл product.js если говорить о карте продукта, но не могу понять что еще я не сделал (

Всех приветствую! С Наступившим!
Прочитал о кратности все, что нашел в Гугл. Все сводится к вашему решению (читал все ветки на форуме с подобными вопросами) - на остальных же ресурсах только производные от данного решения.
Но... для Prestashop 1.7.4.2  - данное решение не подходит, к сожалению  - архитектура совершенно иная (как мне это понимается).
Подскажите, люди добрые, как кратность реализовать на PS 1.7.x.x ?
Попадаю в цейт-нот, но решения не нашел. Даже платные модули только до PS1.6 ...
27 Январь 2019, 12:33:05
Ответ #4
  • Новичок
  • *
  • Сообщений: 2
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Неужели никто так не делал Кратность для Prestashop 1.7 ? 
Загадочная тишина.... Уточню: Prestashop 1.7.5.0.
В первую очередь интересует Кратность добавления в Корзину со страницы Категории (кнопка "В Корзину"и поле с количеством имеется на странице Категории)... Из Списка товаров и из Сетки (Плитки) товаров.
Заранее всем откликнувшимся спасибо.