Jump to content
покупайте без комиссии
Search In
  • More options...
Find results that contain...
Find results in...
  • Sign Up

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


Recommended Posts

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

 

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

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

 

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

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

 

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

Edited by ValentinBLR
Link to post
Share on other sites

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

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

 

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

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

 

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

 

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

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

 

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

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

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

Link to post
Share on other sites

 

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 (на скрине "безнал") для расчета суммы.

 

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

Link to post
Share on other sites

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

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

 

Цитата

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

 

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

 

Цитата

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

 

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

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

 

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

Link to post
Share on other sites
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

Link to post
Share on other sites

Интересна данная тема. Можешь поделиться как реализовывал ?

Link to post
Share on other sites

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);
                    }
                }

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

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.