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

Создание дополнительных $total


Recommended Posts

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

 

Ситуация такая:

Стоит задача сделать отдельные цены для группы пользователей (цена нал и безнал) вывести  поля в админку и во фронте получилось относительно не сложно (сначала руками, потом нашел модуль и решил использовать его, хоть он и работает немного иначе). В общем в первом случае я параллельно добавлял две цены, во втором плагин от части дублирует функционал скидок, но все же делает то что нужно. Модуль имеет два поля (Цена и Спец цена - которые я планирую использовать как цена нал и цена безнал).  Собственно сама проблема в том, что никак не могу разделить подсчет цен и создать дополнительные total (total_nal и total_beznal), что бы один считал сумму цен обычных, а второй сумму спец цен, которые будут обязательно указаны (то есть у каждого товара будут указаны, для определенной группы пользователей, цена нал и цена безнал ).

 

Подскажите, как это сделать правильно, без шаманских заклинаний и танцев с бубном? Понятное дело что совсем без танцев не получится, но все же))

Все происходит на OcStore 2.3.0.2

 

Заранее благодарен!

Змінено користувачем ValentinBLR
Надіслати
Поділитися на інших сайтах


В 17.06.2018 в 22:49, ValentinBLR сказал:

Собственно сама проблема в том, что никак не могу разделить подсчет цен

 

Перефразируй.

Уточни, ГДЕ ты пытаешься "разделять цены".

 

Протянул ли их через весь тернистый путь корзины/оформления заказа?

 

В 17.06.2018 в 22:49, ValentinBLR сказал:

и создать дополнительные total (total_nal и total_beznal), что бы один считал сумму цен обычных, а второй сумму спец цен, которые будут обязательно указаны (то есть у каждого товара будут указаны, для определенной группы пользователей, цена нал и цена безнал ).

 

Не понятно, ибо

- все еще не понятно, что имеешь (где, в каком виде, какие цены задаешь), куда они попадают итпд;

- как-то сумбурно изложено.

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

 

5 часов назад, afwollis сказал:

 

Перефразируй.

Уточни, ГДЕ ты пытаешься "разделять цены".

 

Протянул ли их через весь тернистый путь корзины/оформления заказа?

 

 

Не понятно, ибо

- все еще не понятно, что имеешь (где, в каком виде, какие цены задаешь), куда они попадают итпд;

- как-то сумбурно изложено.

 

Извиняюсь за сумбур)

 

2018-06-19_09-19-19.thumb.png.5a889eb4cbf2a06b54386ebe6fbb472e.png

 

Цены приходят в виде обычной цены и акционной (special). То есть в каждом контроллере (cart, checkout и тд) до цикла foreach(products as product) я добавляю model (catalog/product) и в самом цикле из объекта product_info беру эти цены. То есть в самом объекте products этих цен нету, они не добавляются в него при добавлении товара в корзину.

 

5 часов назад, afwollis сказал:

Перефразируй.

Уточни, ГДЕ ты пытаешься "разделять цены".

 

Пока что нигде, так как структура модели total, не много вбивает в ступор и целиком мне не понятна. 

Как я понял, total работает по такому принципу: Если указана цена special, то она вбивается в product['price] вместо обычной цены.

Мне надо сделать так, что бы для выбранной группы пользователей, был total который берет исключительно обычную цену товара (на скрине "нал") и total, который берет только цену special (на скрине "безнал") для расчета суммы.

 

По большому счету, из-за недостатка знаний и времени пришлось наговнокодить) И с помощью костылей эти данные я получаю, но все же хотелось бы узнать, как это делается правильно)

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


9 часов назад, ValentinBLR сказал:

Пока что нигде, так как структура модели total, не много вбивает в ступор и целиком мне не понятна. 

 

Цитата

Как я понял, total работает по такому принципу: Если указана цена special, то она вбивается в product['price] вместо обычной цены.

 

Так работает отображение цен в каталоге, а не "total`ы" (если, конечно, под "total`ами" мы имеем в виду те, которые в "учитывать в заказе" - сумма, доставка, скидки, итого...).

 

Цитата

 Мне надо сделать так, что бы для выбранной группы пользователей, был total который берет исключительно обычную цену товара (на скрине "нал") и total, который берет только цену special (на скрине "безнал") для расчета суммы.

 

Это ты рассказываешь, как собираешься "решать задачу".

А ты расскажи подробнее, собственно, о самой задаче - из-за чего / для чего ты решил делать нечто такое?

 

Уточни где будешь выводить/использовать эти данные(цены).

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

1 час назад, afwollis сказал:
Цитата

 Мне надо сделать так, что бы для выбранной группы пользователей, был total который берет исключительно обычную цену товара (на скрине "нал") и total, который берет только цену special (на скрине "безнал") для расчета суммы.

 

Это ты рассказываешь, как собираешься "решать задачу".

А ты расскажи подробнее, собственно, о самой задаче - из-за чего / для чего ты решил делать нечто такое?

 

Уточни где будешь выводить/использовать эти данные(цены).

 

Задача: Для определенных групп пользователей показывать не стандартную цену, которую видят все, а отдельные - цена при расчете наличными и цена при расчете безналичным методом. + что бы все суммы считались и были видны при просмотре заказа из админки.

 

Из-за чего и для чего:  Работаю штатным фронтом в веб-студии, back-end разработчика нету + переоценил свои силы и знания opencart.

 

 

Где выводить: Везде (главная, страница категории, страница продукта, корзина, оформление заказа, админка и тд).

 

По большому счету уже все готово и можно закрывать эту тему, но для общего развития, хотелось бы знать адекватный метод дублирования модели total (controller/extansions/total), так как метод прохода танком тут не прокатил :-D

 

И вообще этот код вогнал в ступор, так как понять что и откуда и как, не вышло. Пробовал добавлять в объект $total_data необходимые элементы и принимать их в model/extansions/total/... , но ничего не вышло, получал постоянную ругань на неизвестные индексы и другие ошибки (другие ошибки, это скорее следствие предпринятого метода работы).

 

2018-06-19_20-55-12.thumb.png.ee1c45ce468f8337edca2eb38fb12799.png

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


13 часов назад, ValentinBLR сказал:

код вогнал в ступор, так как понять что и откуда и как, не вышло

создаем переменные для тоталов, налогов и основной тотал

 $totals = array();
 $taxes = $this->cart->getTaxes();
 $total = 0;

помещаем ссылки на эти переменные в массив

 

$total_data = array(
      'totals' => &$totals,
      'taxes' => &$taxes,
      'total' => &$total
);

достаем из базы все тоталы(то что в админке, учитывать в заказе)

 $results = $this->model_extension_extension->getExtensions('total');

перебираем и сортируем тоталы

 foreach ($results as $key => $value) {
     $sort_order[$key] = $this->config->get($value['code'] . '_sort_order');
 }

 array_multisort($sort_order, SORT_ASC, $results);

перебираем тоталы, если включен в адмнке подгружаем его модель и запускаем метод модели  getTotal($total_data)

и передаем в метод  $total_data.

каждая модель работает с этими данными(добалявляет свои данные в totals,  изменяет основной total)

все эти изменения будут происходить в переменных, которые мы объявили в самом начале(так как в $total_data у нас ссылки на них)

                foreach ($results as $result) {
                    if ($this->config->get($result['code'] . '_status')) {
                        $this->load->model('extension/total/' . $result['code']);

                        // We have to put the totals in an array so that they pass by reference.
                        $this->{'model_extension_total_' . $result['code']}->getTotal($total_data);
                    }
                }

как-то так в двух словах

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

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

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

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

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

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

Вхід

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

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

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

Important Information

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