07.05.2014 16:19
|
|
yuriyolkin
Name: Yuriy
23.04.2014
Posts: 11
|
Уменьшить остаток при добавлении в корзину.
Здравствуйте,
появилась необходимость уменьшать остаток "на складе" в момент добавления товара в корзину.
Честно говоря я не в курсе в какой момент сейчас Joomshoping уменьшает остаток товара. Вероятно после окончания покупки (?).
Не могли бы вы помочь сделать такое изменение, можно непосредственно в коде магазина. То есть без разработки отдельного расширения (хотя, я не в курсе - как вам удобнее). Насколько я понимаю - процедура уменьшения остатка уже есть, только она вызывается в момент "после оплаты" (если не ошибаюсь). А мне нужно вызвать её в момент "добавления товара в корзину". То есть вызов перенести (в старом месте убрать/закомментировать).
Помогите пожалуйста. Можно за оплату. Или полностью сделать исправление, или хотя бы проконсультировать-подсказать где эти места.
- - - - - -
Я понимаю, что как следствие возникает вторая задача - "забытые (больше 30 мин)" корзины очищать и возвращать товар в "остаток на складе". Это вторая задача, её можно решать после первой.
Поскольку это практически личный заказ, то можно ответить на yuriyolkinwork [@] yahoo.com
Заранее - спасибо.
Юрий Ёлкин
PS. We can switch to English, if you wish.
Joomla: 3.3.0 JoomShopping: 4.4.0 PHP: 5.4.28 MySQL: 5.1.73 Website Url: torontella.com
Last change: 07.05.2014 16:21
|
|
07.05.2014 20:33
|
|
admin
(Support Team)
Name: Admin
05.08.2010
Posts: 25850
|
Aw: Уменьшить остаток при добавлении в корзину.
Я думаю что не все так просто (нет простого решения)
1. Клиент может поменять количество товара в корзине.
2. Клиент добавил в корзину и закрыл броузер.
Я не совсем понимаю зачем вам такие изменения. (Есть проверка после подтверждения заказа)
|
|
07.05.2014 22:56
|
|
yuriyolkin
Name: Yuriy
23.04.2014
Posts: 11
|
Aw: Уменьшить остаток при добавлении в корзину.
Веб-сайт продаёт билеты на фестиваль, то есть "палатко-места". И если два-три человека купят одно и тоже место, то будет проблема. Детали, кемпинг разбит на квадраты, на одном квадрате может "устроиться" восемь человек, вот этот квадрат у меня = товар, в количестве восемь штук "на складе". Квадраты (из-за рельефа) разные, где-то 8, где то 6, где то 4 человека. У квадрата есть "имя", по нему его и находят на карте (на месте).
- - - - -
1) Да, про изменение в корзине я не подумал. Но там тоже есть событие, нажатие на кнопку, "пересчитать сумму". То есть тоже есть куда вставить дополнительный вызов. Или я не прав.
Я, конечно, не знаю движка (да и РНР тоже, по большому счёту), но я больших проблем не вижу.
Количество "старое" есть, "новое" тоже есть, нужно организовать вызов процедуры корректировки, закомментарить в старом месте.
2) Ситуацию с "брошенной" корзиной, можно отложить на второй план. Я вообще планировал запасной вариант, когда все количества считать сторонней программой и править сразу в базе. Это не очень хороший вариант, но для брошенных корзин - он вообще почти идеальный (для меня).
Тут ещё "веселей", даже если пользователь не закрыл браузер, а пошёл пообедать, мне всё равно (по ТЗ) надо ликвидировать его корзину через 30 мин.
А вы не могли бы подсказать - в каких модулях это происходит?
- добавление в корзину
- изменение количества в корзине
- изменение количества остатка после покупки
Спасибо!
Last change: 07.05.2014 22:59
|
|
08.05.2014 07:52
|
|
admin
(Support Team)
Name: Admin
05.08.2010
Posts: 25850
|
Aw: Уменьшить остаток при добавлении в корзину.
1. В магазине уже есть проверка - она перед сохранением заказа.
2. Я имел ввиду что просто скопировать код - не получится.
components\com_jshopping\models\cart.php
function add
function refresh
function delete
\components\com_jshopping\tables\order.php
function changeProductQTYinStock
|
|
10.05.2014 04:41
|
|
yuriyolkin
Name: Yuriy
23.04.2014
Posts: 11
|
Aw: Уменьшить остаток при добавлении в корзину.
О! Спасибо большое! Пороюсь, что можно сделать.
Да, конечно, я понимаю копи-пейст тут не прокатит, надо вникать.
Ну мне проще, я же не универсальное решение-компонент делаю, так заплатку на раз )))
Да-да, из тех самых "разовых", которые потом на всю жизнь ))) Пятый год сопровождаем и правим приложение, которое называется "шесть-недель" , без шуток, прямо такое название, тоже заплатка была, вот прижилась.
|
|
10.05.2014 04:53
|
|
yuriyolkin
Name: Yuriy
23.04.2014
Posts: 11
|
Aw: Уменьшить остаток при добавлении в корзину.
Там количество оказывается влоб правится, внутри changeProductQTYinStock
$query = "UPDATE `#__jshopping_products` SET product_quantity = product_quantity ".$change." ".$item->product_quantity." WHERE product_id = '".intval($item->product_id)."'";
$db->setQuery($query);
$db->query();
У меня депендент аттрибутов нет, это тоже упрощает.
Надо будет только поколдлвать над "изменением количества", и удалением из корзины.
Посмотрим конечно, чем "простота" эта кончится )))
Anyway, спасибо большое за наводку.
Last change: 10.05.2014 04:54
|
|
13.05.2014 22:32
|
|
yuriyolkin
Name: Yuriy
23.04.2014
Posts: 11
|
Aw: Уменьшить остаток при добавлении в корзину.
Можно ещё вопрос.
Я обратил внимание, что корзина, если произвести оплату, через некоторое время очищается.
В каком модуле это происходит?
|
|
14.05.2014 07:41
|
|
admin
(Support Team)
Name: Admin
05.08.2010
Posts: 25850
|
Aw: Уменьшить остаток при добавлении в корзину.
controller/checkout.php
function finish(){
...
$cart->clear();
$checkout->deleteSession();
}
|
|
14.05.2014 17:57
|
|
yuriyolkin
Name: Yuriy
23.04.2014
Posts: 11
|
Aw: Уменьшить остаток при добавлении в корзину.
Большое спасибо за ответ!
И прошу прощения. Я ошибся в предыдущем сообщении: я забыл "НЕ"
Я обратил внимание, что корзина, если НЕ произвести оплату, через некоторое время очищается.
То есть добавил товар, и так и оставил корзину, без оплаты.
В каком модуле это происходит?
(Вообще, такая очистка - очень нужно-полезная функция, на мой взгляд)
|
|
14.05.2014 18:56
|
|
admin
(Support Team)
Name: Admin
05.08.2010
Posts: 25850
|
Aw: Уменьшить остаток при добавлении в корзину.
Корзина сохраняется в сессии.
|
|
14.05.2014 20:18
|
|
yuriyolkin
Name: Yuriy
23.04.2014
Posts: 11
|
Aw: Уменьшить остаток при добавлении в корзину.
Правильно ли я вас понял, должно быть два места когда удаляется(очищается) корзина:
1) - при совершении покупки
Это видимо то что вы мне написали: controller/checkout.php function finish(){...
2) - при срабатывании таймаута сессии. Извиняюсь я тутне владею точными знаниями. Видимо сессия имеет время жизни. И когда оно наступает, то сессия удаляется со всеми сохранёнными в ней данными, в т.ч. содержимым корзины.
- - - -
Скажите пожалуйста, в коде магазина есть место, которое выполняется при завершении сессии по таймауту, т.е. перед удалением сессии "по истекло время жизни"?
Можно ли как то перехватить этот момент - перед удалением?
|
|
14.05.2014 20:34
|
|
admin
(Support Team)
Name: Admin
05.08.2010
Posts: 25850
|
Aw: Уменьшить остаток при добавлении в корзину.
1. код где очищається корзина
Время сессии можно менять в настройках joomla
|
|
15.05.2014 15:50
|
|
yuriyolkin
Name: Yuriy
23.04.2014
Posts: 11
|
Aw: Уменьшить остаток при добавлении в корзину.
Добрый день,
В метод который вы указали
я добавил отладочный "трейсинг":
controller/checkout.php
function finish(){
$db = JFactory::getDBO();
$query = "INSERT INTO `yy` VALUES ('конец сессии')";
$db->setQuery($query);
$db->query();
но он не срабатывает в момент окончания сессии.
То есть, я поставил время сессии 2 мин.
Запускаю отдельный (другой) браузер, чтобы по куки не было точно пересечений.
В нём добавляю товар в корзину, жду 2 мин (чуть больше на самом деле):
корзина очищается, а мой "трейсинг" не срабатывает.
Или я что-то делаю не правильно?
(Прим. он работает во всех других местах, на добавлении, изменении, удалении товара, поэтому думаю сам "трейсинг" рабочий)
- - - -
Повторю мой вопрос:
Скажите пожалуйста, есть ли в коде магазина место, которое выполняется при завершении СЕССИИ ПО ТАЙМАУТУ, т.е. перед удалением сессии "по истекло время жизни"?
(Завершение по checkout - когда товар уходит в ордер и на оплату - не надо)
Last change: 15.05.2014 15:50
|
|
15.05.2014 21:35
|
|
admin
(Support Team)
Name: Admin
05.08.2010
Posts: 25850
|
Aw: Уменьшить остаток при добавлении в корзину.
--Скажите пожалуйста, есть ли в коде магазина место, которое выполняется при завершении СЕССИИ ПО ТАЙМАУТУ, т.е. перед удалением сессии "по истекло время жизни"?
Такого кода не существуєт.
|
|
10.01.2015 15:42
|
|
iliya.wys
Name: IIlll
10.01.2015
Posts: 1
|
Aw: Уменьшить остаток при добавлении в корзину.
А возможно сделать, либо настроить в конфиге, чтобы со склада списывалось только в случае успешной оплаты, а не при добавлении в корзину(добавил в корзину, оформил заказ, оплатил и только тогда списалось)?
|
|
10.01.2015 20:53
|
|
admin
(Support Team)
Name: Admin
05.08.2010
Posts: 25850
|
Aw: Уменьшить остаток при добавлении в корзину.
Joomshopping 3.20.0 / 4.8.0
lib/default_config.php
$config->order_stock_removed_only_paid_status = 1;
|
|
10.01.2015 22:01
|
|
jbstudio
Name: Jb
16.07.2013
Posts: 14
|
Aw: Уменьшить остаток при добавлении в корзину.
Не нашел такой строки в конфиге
$config->order_stock_removed_only_paid_status = 1;
Попробовал создать такую строку но ничего не сработало товары все равно
списываются до того как пришла оплата
Подскажите пожалуйста как решить проблему!
|
|
10.01.2015 22:17
|
|
admin
(Support Team)
Name: Admin
05.08.2010
Posts: 25850
|
Aw: Уменьшить остаток при добавлении в корзину.
Я писал выше версию.
Какая версия.
|
|
10.01.2015 22:25
|
|
jbstudio
Name: Jb
16.07.2013
Posts: 14
|
Aw: Уменьшить остаток при добавлении в корзину.
Version 4.8.0
|
|
10.01.2015 22:35
|
|
jbstudio
Name: Jb
16.07.2013
Posts: 14
|
Aw: Уменьшить остаток при добавлении в корзину.
Прошу прощения!
Не туда посмотрел
Строку эту нашел
$config->order_stock_removed_only_paid_status = 0;
Заменил на
$config->order_stock_removed_only_paid_status = 1;
Но все равно почему-то списываются товары даже если заказ не был оплачен
Списываются сразу как только нажимаю кнопку ОФОРМИТЬ ЗАКАЗ
|
|