Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Вывод скидки и старой цены в корзину и письма покупателю и менеджеру


Recommended Posts

Доброго времени суток.

Есть такая штука, как скидка на определенные позиции. В списке товаров и карточке показывается старая цена, скидка и новая цена.

Так вот. Эти данные нужно поместить в таблицу в корзине и еще плюсом добавить в письма покупателю и менеджеру.

Перерыл и перепробовал уйму всего, но так и не нашел, где взять эти переменные и как их передать.

Может, кто делал? Подскажите, плиз.

 

ocStore 1.5.5.1.1

 

Надіслати
Поділитися на інших сайтах


Добрый день.

Т.к. тема в разделе для разработчиков, опишу основной алогоритм.

 

Реализация для корзины:

1) В либе корзины сохраняете цену товара до применения скидок и акций

2) В коде отдачи данных о товаре доавляете перменную old_price (название для примера). Если цена равна цене после обработки скидок и акций, то возвращаете false.

3) В контроллере корзины обрабатываете переменную из либы корзины. Если там не false, то готовите форматированную цену, иначе отаёте false

4) В шаблоне корзины, если не false, то выводите старую цену.

5) Profit.

 

Реализация для писем:

1,2) Уже готово из предыдущего пункта.

3) Принимаем старую цену в контроллере письма. Если не false, то готовим строчное представление цены, иначе возвращаем false.

4) В шаблоне письма выводим старую цену. если она не false.

5) Profit.

 

 

  • +1 1
Надіслати
Поділитися на інших сайтах

10 минут назад, Designer сказал:

mpn2005, и надо было Вам засорять мозг человека, своими fal_сами...

 

Обязательно.

 

Т.к. ваше:

'special' 	 => $this->currency->format($special + ($this->config->get('config_tax') ? $product['tax'] : 0), $order_info['currency_code'], $order_info['currency_value']),

При отсутствии акции выведет '0 руб'

Т.к. $special у вас будет = 0

 

И в шаблоне не отработает:

<?php if (!$product['special']) { ?>

Т.к. там не пустая строка '0 руб'

Надіслати
Поділитися на інших сайтах

И нет смысла делать лиший запрос в

catalog/model/checkout/order.php

Т.к. там все данные достаются из корзины getProducts. И более правильный вариант - это реализовать на уровне корзины.

И просто забирать данные из нужного поля.

 

Надіслати
Поділитися на інших сайтах

5 минут назад, Designer сказал:

 

В смысле лишний? Корзина отчищается, после того, как данные передаются в функцию confirm

Точно. Запамятовал уже.

Но более правильный вариант - это сохранить в таблице заказа акционную цену товара из корзины.

Т.к. прямой запрос отрежет возможную совместимостть модулей влияющих на акции.

Например модули - "Акции в процентах" и т.д.

Надіслати
Поділитися на інших сайтах

28 минут назад, Designer сказал:

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

Да. Но есть ещё интервал ожидании оплаты. Теоретически может пройти некторое время до подтверждения заказа (пока проходит оплата).

В этот момент могут поменятся цены акции, или пропасть акции. И на момент подтверждения данные будут не валидны.

Поэтому всё же лучше сохранять копию данных, как это предусмотрено в движке.

Надіслати
Поділитися на інших сайтах

4 минуты назад, Designer сказал:

mpn2005, кому это будет нужно, может временно записать в сессию и выводить уже данные из сессии.
Еще лучше, не указывать в письме не каких цен по акции, если используются какие-либо модули по пересчету скидки у товара.

В сессию не получится. От платёжки подтверждение идёт сосвем с другого адреса и будет другая сессия.

Вообще согласен, задача весьма сомнительная.

Надіслати
Поділитися на інших сайтах

5 минут назад, Designer сказал:

 

Сохранная сессия никуда не денется, после callback платежной системы.

Она то сохранится для покупателя. Но при приходе callback к сессии покупателя не будет доступа.

А письмо уходит именно при приходе callback, если используется метод автоматической оплаты.

Надіслати
Поділитися на інших сайтах

9 минут назад, Designer сказал:

mpn2005, callback функция имеется ввиду, если оплата производиться при помощи какого-то платежного агрегатора. При том и другом варианте, сессия как была, так останется, до тех пор, пока эту сессию не убьют искусственно в коде, либо время жизни сессии
Письмо уходит только, после всех успешных манипуляций оплаты. 
 

Не могу с этим согласиться.

1) Покупатель оформляет заказ.

2) Заказ создаётся с нулевым статусом. И покупатель перенаправляется в платёжную систему.

3) После успешной оплаты покупатель попадает на страницу завершения заказа. (тут сессия живая)

4) Платёжная система со своего сервера делает callback запрос для подтверждения оплаты. И при корректном key и всех данных, статус заказа меняется на оплаченный. Вот тут уже нет никакой сесии покупателя, это совсем отдельный запрос со своей сессией. И именно тут меняется статус заказа и отправляется письмо.

 

 

Надіслати
Поділитися на інших сайтах

В общем тут много вопросов в реализации. И всё действительно зависит от множества факторов.

Поэтому самое оптимальное вывести в корзине и глубже не лезть. Особенно если учесть всё нюансы упоминаемые в обсуждении.

 

P.S.: Лишние запросы для такой сомнительной функции тоже не стоит добавлять в движок. Т.к. если будут кидать в корзину по 100 товаров, то тут и штатные запросы корзины придётся минимизировать. Но это касается магазинов с кучей мелких товаров.

Надіслати
Поділитися на інших сайтах

3 минуты назад, Designer сказал:

 

Почему же, можно закинуть, хоть 1000 товаров, то проблем не каких не будет, так как такие запросы направленные на конкретное значение в таблице с первичным ключом. Если бы, такого рода запросы были тяжелыми, тогда магазин бы при 100 товарах уже загнулся... Ради интереса, можете проверить на 1000 разных товарах в корзине.

Я как раз таки очень плотно с этим работал. И скажу Вам, что это не так всё весело, как кажется.

Возьмите товаров с опциями и закиньте в корзину 100-300 штук. И штатный движок ляжет. Ну уж точно не потянет на виртуальном хостинге.

Тут недавно проскакивала длинная тема по обсуждению этого вопроса.

Надіслати
Поділитися на інших сайтах

Я говорю, что из коробки не взлетит. И прилично пришлось переписать, что бы на виртуальном хостинге это работало.

И только индексами и настройками не обойтись.

Это на Ваше голословное заявляние, хоть 1000.

В общем хватит оффтопить.

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.