Форум русской поддержки Joomla!® CMS
10.12.2016, 14:45:37 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Подсчёт при дробном количестве товара

 (Прочитано 4633 раз)
0 Пользователей и 1 Гость смотрят эту тему.
ajr
Захожу иногда
**

Репутация: +1/-0
Offline Offline

Сообщений: 12


« : 31.03.2007, 21:09:12 »

Мне нужно сделать, чтобы пользователь мог задавать дробное количество товара. Сделать так, чтобы форма, в которую вносится количество, воспринимала дробные числа оказалось не трудно. Но подсчёт общей суммы (количество умножить на цену) производится в этом случае неправильно. И никак не могу найти в каком файле и какой фрагмент кода производит эту калькуляцию.
Может кто сталкивался... Подскажите.
Записан
ajr
Захожу иногда
**

Репутация: +1/-0
Offline Offline

Сообщений: 12


« Ответ #1 : 01.04.2007, 07:25:37 »

Ну что, никто не знает?
Перешлю 50 WMR тому кто первый реально поможет в этой ветке:)))
Записан
tug
Давно я тут
****

Репутация: +40/-4
Offline Offline

Пол: Мужской
Сообщений: 333


« Ответ #2 : 01.04.2007, 09:29:15 »

=) Поле в базе исправили?
Записан
ajr
Захожу иногда
**

Репутация: +1/-0
Offline Offline

Сообщений: 12


« Ответ #3 : 01.04.2007, 10:59:04 »

По-моему база здесь пока непричём. Меня интересует та стадия, когда пользователь выбирает товар, добавляет его в корзину, а заказ ещё не оформлен. Но сумму он уже видит. По-моему, на этом этапе количество, заданное пользователем и эта сумма хранятся где-то в сессиях, а не в базе. Если я не прав, то поправьте...
Вот где эта калькуляция происходит(количество * на цену)?
Записан
ajr
Захожу иногда
**

Репутация: +1/-0
Offline Offline

Сообщений: 12


« Ответ #4 : 01.04.2007, 21:44:54 »

Проблема решена. Вопрос снимается.
Записан
tug
Давно я тут
****

Репутация: +40/-4
Offline Offline

Пол: Мужской
Сообщений: 333


« Ответ #5 : 02.04.2007, 11:01:14 »

Вы правы конечно, база тут ни при чем, это я ступил...
Расскажите тогда уж всем =)
Записан
ajr
Захожу иногда
**

Репутация: +1/-0
Offline Offline

Сообщений: 12


« Ответ #6 : 02.04.2007, 21:29:06 »

Вряд ли кому-то это понадобится...)
Всё оказалось довольно просто.
Сначала надо подправить регулярные выражения в файле ps_cart.php , чтобы форма не отказывалась дробные числа принимать
if (!ereg("^[0-9.0-9]*$", $quantity))
в двух местах, в функциях add и update
и прямо перед этими регулярными выражениями вставить
$quantity = str_replace(",",".",$quantity);
чтобы вместо точки пользователь мог и запятую ставить.
И всё работает.
А потом, чтобы правильно отображалась инфа в разделе "Мои заказы" надо изменить поле в базе с INT на DECIMAL (tab. vm_order_item, поле product_quantity)
Записан
Balex777
Новичок
*

Репутация: +1/-0
Offline Offline

Сообщений: 8


« Ответ #7 : 05.03.2009, 03:28:24 »

Вряд ли кому-то это понадобится...)
Всё оказалось довольно просто.
Сначала надо подправить регулярные выражения в файле ps_cart.php , чтобы форма не отказывалась дробные числа принимать
if (!ereg("^[0-9.0-9]*$", $quantity))
в двух местах, в функциях add и update
и прямо перед этими регулярными выражениями вставить
$quantity = str_replace(",",".",$quantity);
чтобы вместо точки пользователь мог и запятую ставить.
И всё работает.
А потом, чтобы правильно отображалась инфа в разделе "Мои заказы" надо изменить поле в базе с INT на DECIMAL (tab. vm_order_item, поле product_quantity)
Здесь все правильно описано, но не работает в лоб в VM 1.1.3. В файле cart.php нужно еще переменную quantity объявить типа DOUBLE и в базе данных соответственно полю product_quantity тоже присвоить тип DOUBLE. Работает.
Записан
Albert
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 7


« Ответ #8 : 14.03.2009, 00:45:55 »

Здесь все правильно описано, но не работает в лоб в VM 1.1.3. В файле cart.php нужно еще переменную quantity объявить типа DOUBLE и в базе данных соответственно полю product_quantity тоже присвоить тип DOUBLE. Работает.

А в связке Joomla 1.5 и VirtueMart 1.1.3 дробное количество товара работает?
Записан
Albert
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 7


« Ответ #9 : 15.03.2009, 17:27:20 »

Код:
$quantity = str_replace(",", ".", $quantity);
if (!ereg("^[0-9.0-9]*$", $quantity)) {


дробное количество работает, а вот запятая вместо точки не ставися. Если поставить запятую, то дробная часть откидывается.

А как сделать, чтобы и запятые ставить можно было?
Записан
Balex777
Новичок
*

Репутация: +1/-0
Offline Offline

Сообщений: 8


« Ответ #10 : 17.03.2009, 09:24:59 »

А в связке Joomla 1.5 и VirtueMart 1.1.3 дробное количество товара работает?

Работает. Именно на такой связке и тестировал.
Записан
Balex777
Новичок
*

Репутация: +1/-0
Offline Offline

Сообщений: 8


« Ответ #11 : 17.03.2009, 09:28:47 »

Код:
$quantity = str_replace(",", ".", $quantity);
if (!ereg("^[0-9.0-9]*$", $quantity)) {


дробное количество работает, а вот запятая вместо точки не ставися. Если поставить запятую, то дробная часть откидывается.

А как сделать, чтобы и запятые ставить можно было?

Я тоже столкнулся с этим. Причем первоначально вроде бы работало. После перезапуска web-сервера осталась возможность ставить только точку. Пока не понял как сделать запятую. Может автор кода (Ajr) поможет с этим?
Записан
jukov_b1
Осваиваюсь на форуме
***

Репутация: +6/-0
Offline Offline

Сообщений: 32



« Ответ #12 : 11.11.2009, 15:38:51 »

Всем привет! Для того что бы корректно обрабатывалась запятая и добавление 0.5 товара необходимо еще подкорректировать ps_cart.php: в местах инициализации $quantity заменить (int) на (double) и замену на запятую поставить перед этими инициализациями. Скорректированный файлик прилагается  Smiley .

Еще обратите внимание что нужно заменить тип данных поля product_in_stock таблицы jos_vm_product, на случай если магазин будет вычитать из общего количества товара на складе заказанное дробное количество  Smiley
Я заменил на тип данных double(15,2) а не просто double, не уверен нужно ли это, но на всякий случай, чтобы  mysql возвращаю с 2мя знаками после запятой (тоже касается tab. vm_order_item, поле product_quantity)

Примечание: глючат кнопки вверх вниз напротив количества товара, если введено количество с запятой а не точкой, нужно js подправлять, не разбирался какой.



[вложение удалено Администратором]
Записан
Alexandr14
Новичок
*

Репутация: +1/-0
Offline Offline

Сообщений: 9



« Ответ #13 : 25.11.2010, 22:47:50 »

 Подскажите как и в каком файле переделать, чтобы  AlphaUserPoints принимал дробные числа!
Записан
jazzauto
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 1


« Ответ #14 : 13.12.2015, 14:49:37 »

Интернет-магазин продает некоторые товары метрами квадратными - дробное число. Другие товары продаются штучно, а не метрами квадратными. Это целое число. То есть, скрипт должен интуитивно понимать, какой товар в целых числах, а какой товар в дробных числах.
Магазин на Virtuemart-2.6.x Joomla 2.5
Профессиональное решение этой задачи выложено здесь
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet