Дробная корзина позволят покупать товар в количестве дробного типа (пример кол-во: 2.55), может пригодится если вы планируете продавать весовой или метражный товар, а так же для работы в паре с калькулятором, например для расчета ламината в м2 и упаковках.
Для начала необходимо выполнить следующие запросы в базу данных, для этого меню Open Server или на хостинге откроем phpMyAdmin и перейдем в нашу базу на вкладку SQL и выполним запросы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
ALTER TABLE `ps_cart_product` CHANGE `quantity` `quantity` DECIMAL(15,2) UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `ps_cart_rule` CHANGE `quantity` `quantity` DECIMAL(15,2) UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `ps_cart_rule` CHANGE `quantity_per_user` `quantity_per_user` DECIMAL(15,2) UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `ps_cart_rule_product_rule_group` CHANGE `quantity` `quantity` DECIMAL(15,2) UNSIGNED NOT NULL DEFAULT '1'; ALTER TABLE `ps_order_detail` CHANGE `product_quantity` `product_quantity` DECIMAL(15,2) UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `ps_order_detail` CHANGE `product_quantity_in_stock` `product_quantity_in_stock` DECIMAL(15,2) NOT NULL DEFAULT '0'; ALTER TABLE `ps_order_detail` CHANGE `product_quantity_reinjected` `product_quantity_reinjected` DECIMAL(15,2) UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `ps_order_detail` CHANGE `product_quantity_refunded` `product_quantity_refunded` DECIMAL(15,2) UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `ps_order_detail` CHANGE `product_quantity_return` `product_quantity_return` DECIMAL(15,2) UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `ps_order_return_detail` CHANGE `product_quantity` `product_quantity` DECIMAL(15,2) UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `ps_order_slip_detail` CHANGE `product_quantity` `product_quantity` DECIMAL(15,2) UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `ps_pack` CHANGE `quantity` `quantity` DECIMAL(15,2) UNSIGNED NOT NULL DEFAULT '1'; ALTER TABLE `ps_product` CHANGE `quantity` `quantity` DECIMAL(15,2) NOT NULL DEFAULT '0'; ALTER TABLE `ps_product_sale` CHANGE `quantity` `quantity` DECIMAL(15,2) UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `ps_product_attribute` CHANGE `quantity` `quantity` DECIMAL(15,2) NOT NULL DEFAULT '0'; ALTER TABLE `ps_specific_price_rule` CHANGE `from_quantity` `from_quantity` DECIMAL(15,2) UNSIGNED NOT NULL; ALTER TABLE `ps_stock` CHANGE `physical_quantity` `physical_quantity` DECIMAL(15,2) UNSIGNED NOT NULL; ALTER TABLE `ps_stock` CHANGE `usable_quantity` `usable_quantity` DECIMAL(15,2) UNSIGNED NOT NULL; ALTER TABLE `ps_stock_available` CHANGE `quantity` `quantity` DECIMAL(15,2) NOT NULL DEFAULT '0'; ALTER TABLE `ps_stock_mvt` CHANGE `physical_quantity` `physical_quantity` DECIMAL(15,2) UNSIGNED NOT NULL; ALTER TABLE `ps_customization` CHANGE `quantity` `quantity` DECIMAL(15,2) NOT NULL; ALTER TABLE `ps_customization` CHANGE `quantity_refunded` `quantity_refunded` DECIMAL(15,2) NOT NULL DEFAULT '0'; ALTER TABLE `ps_customization` CHANGE `quantity_returned` `quantity_returned` DECIMAL(15,2) NOT NULL DEFAULT '0'; ALTER TABLE `ps_product` CHANGE `minimal_quantity` `minimal_quantity` DECIMAL(15,2) NOT NULL DEFAULT '0'; ALTER TABLE `ps_product_attribute` CHANGE `minimal_quantity` `minimal_quantity` DECIMAL(15,2) UNSIGNED NOT NULL DEFAULT '1'; ALTER TABLE `ps_product_attribute_shop` CHANGE `minimal_quantity` `minimal_quantity` DECIMAL(15,2) UNSIGNED NOT NULL DEFAULT '1'; ALTER TABLE `ps_product` CHANGE `reference` `reference` VARCHAR(128) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL; |
Последний запрос увеличивает поля артикула до 128 символов, не по теме, но тоже может пригодится.
Далее я много чего менял в файлах (int на float в файлах темы и системы…), расписывать не буду, предложу просто скачать мою готовую версию корзины с дробями для стандартного шаблона Prestashop. Бонусом в ней правки шаблона из предыдущих статей.
Из папки admin нужно кинуть файлы в вашу папку вида admin8947. Если все сделали верно, проводник предложит перезаписать файлы. Если интересно как это сделал, советую воспользоваться программой Meld и сравнить файлы до копирования в ваш проект.
Итак качаем, тестируем, отписываемся.
P.S. версия для стандартного шаблона и версии 1.6.1.24
Здравствуйте Вячеслав, спасибо за проделанную работу и за то что поделились безвозмездно этой информацией, воспользовался практически всеми вашими наработками. Вот только в моем случае нужно еще и минимальное количество продаваемого товара делать дробью. А этого в ваших изменениях не было. Мог бы вас попросить помочь разобраться?
В базе попробуйте в таблице ps_product изменить minimal_quantity
ALTER TABLE `ps_product` CHANGE `minimal_quantity` `minimal_quantity` DECIMAL(15,2) UNSIGNED NOT NULL DEFAULT ‘0’;
Если не помогло — пишите, возможно еще где то в файлах, я изначально так и сделал, потом вернул минимальное кол-во на 1.
здравствуйте, спасибо за ваш ответ. В базе изменения внес, в контролерах для андмин части тоже внес, и в классы где это было нужно также внес. Осталось доделать последнюю вещь… У меня в шаблоне темы в файле «product.js» были внесены изменения касательно «добавления в корзину кнопкой «+» кратно минимальному количеству», с дробью минимального количества это изменение не полноценно работает, проблема в тому что при нажатие на «+» к товару добавляется минимальное количество не дробью а целое число например мин. кол. 2.36 при нажатие на «+» оно поменяется на 4.36 а должно «4.72».
Здравствуйте Вячеслав, очень помогла ваша инструкция с файлами. Если у вас есть возможность и желание помочь мне доработать вашу наработку. Кратному добавлению в корзину «минимального количества» продукта когда поле «минимальное количество» дробное.
Здравствуйте Вячеслав, очень помогла ваша инструкция с файлами. Если у вас есть возможность и желание помочь мне доработать вашу наработку. Кратному добавлению в корзину «минимального количества» продукта когда поле «минимальное количество» — дробное.
Вячеслав, добрый день! Большое спасибо за проделанную работу!
Все работает отлично, за исключением одного момента: при редактировании количества непосредственно на странице корзины, количество товара обнуляется и не принимает новых значений. Возможно и Вы сталкивались с такой проблемой?
Здравствуйте Иван, не могу воспроизвести вашу ошибку — на чистой presta 1.6.24 все работает, временное решение отключить кнопки +- в корзине, закомментируйте
в файле темы shopping-cart-product-line.tpl
Hello. Everything works perfect except when you edit the order.
If I edit the order and change the value from 2.20 to 2.50 for example, it says «Inavlid valule». Do you think another controller or template should be edited so I can edit the orders? Thank you!
Hi, I’m currently working on a fractional bucket in Prestashop 1.6, I want to do it as a module, I think I’ll post my result here soon.
Zdrastvujte Vja4eslav,
Nashel Vash blog. Spasybo za rabotu! y tozhe hotelos by posmotret na vash modul.
Еще недельку думаю, он готов, но я туда напихал лишнего, нужного только мне функционала.
Здравствуйте!
Подскажите пжлста, будет ли версия для Prestashop 1.7 ?
Пока нет, там совсем другая структура файлов.
Hello Vyacheslav Thank a lot for your work
you save me thank you verymuch.
i have juste one probleme if the quantity < 1 my car has been emptied why please ??
Hello Mehdi, for my project, I needed a fractional basket and a minimum order of 1 piece. That’s why. I’ve already converted it to a module, but you still can’t buy less than 1 there.
Большое спасибо, Вячеслав, пишу вам из Мериды Венесуэла, я получил это решение на вашем сайте, что мне не пришлось доводить дело до конца. Вы — трещина и очень благородны, когда делитесь такой информацией, которую я не получил ни на моем языке, ни бесплатно. Спасибо, большое спасибо.
И вам спасибо, за добрые слова, я все еще разрабатываю свой модуль для дробной корзины, надеюсь скоро найду время и силы, чтобы закончить его и выложить, полноценный как модуль.