Перейти к содержанию
Antanel

[Решено] Нулевая цена товара при добавлении в корзину

Рекомендуемые сообщения

Один и тот-же товар продается в различных по массе/объему фасовках. Для этого заведен один товар и в качестве опций указаны его разновидности. Цена у товара установлена в 0,00. У опций цена представляется как прибавка к нулевой стоимости "основного" товара. При добавлении товара в корзину не учитывается поправка опции. В результате этого получаем нулевую стоимость товара в корзине.
Для понимания происходящего, цена "основного" продукта ставилась отличной от нулевой. В таком случае в корзине указывается эта цена без поправки на опцию.
Принимаются практические советы как добиться правильного формирования корректной цены для отображения в корзине.

PS: сильно не пинайте, с опенкартом столкнулся впервые.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну если совсем не понимаете ничего в коде, можно начать с замены файлов движка, отвечающих за добавление товара в корзину, на дефолтные

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну если совсем не понимаете ничего в коде, можно начать с замены файлов движка, отвечающих за добавление товара в корзину, на дефолтные

Пожалуй, если посидеть, то разобраться в коде и можно. Вот только кода малость дофига посему и пытаюсь уточнить у более знающих людей куда смотреть в первую очередь. Тем более, что я уже довольно узко и точно очертил саму проблему. Очень похоже на то, что при нажатии кнопки добавления в корзину получается не product_id опции товара, но самого товара.

Отправка с формы делается через json посредством jquery.

Сам механизм работает, но где-то косяки с определением идентификатора опции.

PS: прежде создания этой темы я отсеял уже с десяток проблем, приводящих к нулевой цене товара в корзине посредством "ОК, Гугл".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Этот форум жив?
to freelancer: файлы, отвечающие за добавление товара в корзину дефолтные. Тем не менее при вместо цены опции товара устанавливается цена основного лота.

Как такое лечить? OpenCart 1.5.6

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

нет, тут только зомби шатаются.

и те - редко.

начинай курение с "system/library/cart.php"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо, afwollis.

На входе функция $this->cart->add(product_id, quantity, option, profile_id) получает

2015-07-03 23:05:35 - product_id = 139

2015-07-03 23:05:35 - quantity = 1

2015-07-03 23:05:35 - option: Array ([594] => 1059)

2015-07-03 23:05:35 - (int) profile_id = 0

Как я понимаю, это функция ядра и туда лучше не вмешиваться - потому как это "череповато" проблемами с функционалом при обновлении.

После ее работы в корзине (представлена часть данных, имеющих отношение к вопросу)

2015-07-03 23:05:35 - cart: Array [

139:YToxOntpOjU5NDtzOjQ6IjEwNTkiO30=:] => Array (

[key] => 139:YToxOntpOjU5NDtzOjQ6IjEwNTkiO30=:

[product_id] => 139

[option] => Array()

[quantity] => 1

[profile_id] => 0

)

В процессе работы функции add() значение option "потерялось" и этим я могу объяснить получение цены не опции, а основного лота.

Для наблюдения за динамикой процесса использую $this->log->write() в system/logs/error.txt, но этот способ по понятным причинам не катит в определениях классов ядра.

Подскажите способ gebug/watch для этого случая.

Изменено пользователем Antanel

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сорри, в процессе в тему ушел черновик.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проблема решена.

При формировании вывода информации на страницу шаблон product.tpl смотрит на параметр option['type'].

Код ядра cart.php несколько разнится в зависимости от этого самого параметра и обработка происходит по разным веткам (см. getProducts()).

В итоге, нашлось несоответствие между реализацией вывода информации о ценах опций на страницу и типом этих самых опций в таблице option, что повлияло на сценарий обработки результатов отосланных с клиента данных.

После устранения разницы все заработало.

Всем спасибо. Вопрос закрыт.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.