Jump to content

Как реализовать кратное добавление(удаление) колличества единиц товара в корзину


Recommended Posts

Как реализовать кратное добавление(удаление) колличества единиц товара в корзину?

Есть товар в определенной упаковке, минимальное колличество для продажи ето колличество в упаковке. Упаковка не делима.

Минимальное колличество которое есть в админке не подходит нужна кратность.

Link to comment
Share on other sites

Как реализовать кратное добавление(удаление) колличества единиц товара в корзину?

Есть товар в определенной упаковке, минимальное колличество для продажи ето колличество в упаковке. Упаковка не делима.

Минимальное колличество которое есть в админке не подходит нужна кратность.

 

А если единицей измерения сделать упаковку?

Link to comment
Share on other sites

Под единицей подразумевается, всё же, единица товара. А если мы хотим продавать лотами, в каждом из которых, допустим, пять единиц товара, то добавляем в атрибуты «лот» со значением «5 единиц» и создаём комбинации с этим атрибутом. Тогда продажи товара будут возможны только лотами и в количествах кратных пяти: 5, 10, 15... единиц. А документы в этом случае будут автоматом обсчитывать покупки, исходя из цены лотов, а не содержащихся в них отдельных товаров.

Link to comment
Share on other sites

Надеюсь, на HTML5 уже перешли? Тогда на странице товара, там где "укажите количество" сделайте так:

<input type="number" step="2">
и далее по курсу.

Двойка в данном случае означает, что товары можно будет заказать в кол-ве кратном 2. Если у вас в упаковке 100 товаров, то укажите step="100". Все остальное движок магазина сделает сам.

Edited by gluck (see edit history)
Link to comment
Share on other sites

А если не перешли - то можно скриптом перехватывать значение (событие keyup), проверять кратность заданной величине (удобно использовать минимальное значение, это даёт вам гибкость в кратности, т.е где то по 4, где то по 10 можно сделать) и округлив результат возвращать его в инпут, указав пользователю на уведомление о том что товар в упаковке и можно заказать только кратно стольки то..

Link to comment
Share on other sites

вот встретил:

 

Необходимость использовать дробное значение возникает довольно часто, например, если вы продаёте весовой товар. Публикую инструкцию для разработчиков Prestashop (версии 1.4 и 1.3) по выводу количества товара дробным числом. Хочу сразу заметить, если у Вас нет соответствующих навыков в веб разработке, то лучше доверить эту работу специалистам.

1. Меняем в БД тип поля quantity на decimal(17,2) в следующих таблицах Prestashop:

Код:

- ps_cart_product

- ps_discount

- ps_orders -проверить значения total_products и

total_products_wt, они обычно уже в decimal

- ps_order_detail – кроме discount_quantity_applied,

product_quantity_discount тоже уже в decimal должно быть

- ps_order_return_detail

- ps_order_slip_detail

- ps_pack

- ps_product

- ps_product_attribute

- ps_product_sale

для 1.4 ещё

 

Код:

- ps_specific_price

- ps_stock_mvt

Теперь база данных принимает дробные числа в количестве, но нужно чтоб при валидации и записи значение количества не преобразовалось в целое.

 

2. Редактируем файлы (для Prestashop 1.4 используем override) – заменяем “intval” на “floatval” для всех значений “quantity” или “qty”

- /classes/Attribute.php – если используете атрибуты и комбинации

- /classes/Cart.php – больше всего правок, придётся набраться терпения )

- /classes/Product.php – не забудьте про правило валидации isUnsignedInt для количества

- /controllers/CartController.php – для 1.4

- /cart.php – для 1.3

- /themes/prestashop/product.tpl

- /themes/prestashop/js/cart-summary.js

 

Внимание формат цифр с точкой – XXX.XX, поэтому если в магазине нужно использовать запятую – преобразуем значение.

в CartController.php примерно 29 строка:

PHP:

$qty = (float)(abs(str_replace(“,”,”.”,Tools::getValue(‘qty’, 1))));

Проверяем на нераспрадажном товаре добавление в корзину, если количество товара записывается в БД дробным числом – правим дальше (не забываем про isFloat в фильтре в начале файла).

 

3. Реактируем оставшиеся файлы

 

Код:

- prestashop/classes/Customization.php

- prestashop/classes/Discount.php

- prestashop/classes/Order.php

- prestashop/classes/OrderDetail.php

- prestashop/classes/OrderReturn.php

- prestashop/classes/PaymentModule.php

- prestashop/classes/ProductSale.php

- prestashop/classes/QuantityDiscount.php

- prestashop/classes/StockMvt.php

- prestashop/controllers/OrderController.php – для 1.4

- prestashop/order.php – для 1.3

4. Для корректного отображения и добавления товара в админке правим файлы: AdminOrders.php и AdminProducts.php

 

После проделанных действий с файлами Prestashop должна появиться возможность вводить количество товара дробным числом. Перед внесением правок обязательно сделайте полный бэкап.

  • Sad 1
Link to comment
Share on other sites

  • 5 months later...
  • 4 months later...

А если не перешли - то можно скриптом перехватывать значение (событие keyup), проверять кратность заданной величине (удобно использовать минимальное значение, это даёт вам гибкость в кратности, т.е где то по 4, где то по 10 можно сделать) и округлив результат возвращать его в инпут, указав пользователю на уведомление о том что товар в упаковке и можно заказать только кратно стольки то..

Здравствуйте,Snegurka, можно по-подробнее?

Link to comment
Share on other sites

Смотрите если Вам нужно продавать ваш товар кратным 10, 20, 30 и у всех товаров одна и та жа кратность или допустим у товаров каждой категории своя кратность..то можно реализовать <select> с заданными значениями и подставка выбранных данных в quantity input скриптом при выборе определенного значения в <select>...делается такое довольна просто минут за 10 специалистом.

Link to comment
Share on other sites

Вообще не понятно почему автору не подходит вариант решения проблем на базе комбинаций товара?

 

Скриншот:

attachicon.gifdfgfd.jpg

этот способ работает как нужно(при выборе товара товар добавляется с нужной кратностью) , но!!! в самой корзине при добавлении еще одного лота добавляется только 1 единица. нужно реализовать именно шаг добавления лота в корзине по 10, 25, 30 кг., а не по 1 кг.

%D0%91%D0%B5%D0%B7%D1%8B%D0%BC%D1%8F%D0%

Edited by Bizoozib (see edit history)
Link to comment
Share on other sites

Дык в корзину будет писаться же типа такой то товар с 25 штуками в упаковке красного цвета..и с права когда будут кол-во выбирать будут знать что они добавляют упаковки по 25 штук..

Link to comment
Share on other sites

Удалось настроить шаг добавления в 25 единиц, но теперь корзина не пересчитывает сумму=(( . А то, что на писано "Данный товар не продается по одной единице. Вы должны выбрать по крайней мере 25 единиц данного товара." не совсем достаточно, люди все-равно пытаются добавить количество товара интересующее именно их... а так нельзя, мы не можем дербанить коробки.

Link to comment
Share on other sites

  • 3 months later...

Неужели это никак не могут реализовать в рабочей версии PrestaShop 1.6? 

В Virtuemat на Joomle это уже давно реализовано!!

Может стоит написать в сообществе? 

 

Хотя думаю они знают об этом... 

Link to comment
Share on other sites

  • 5 months later...
×
×
  • Create New...