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

Расчет прибыли


Evgenka

Recommended Posts

Доброго дня всем.

Opencart 1.5.5.1

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

 

Что уже сделано:

  • у каждого товара есть закупочная цена;
  • внесены правки в system/library/cart для расчета оптовой стоимости каждого товара и заказа в целом при оформлении заказа;
  • при оформлении заказа в таблицу order_product аналогично стоимости товара так же вносится и закупочная стоимость (order_product.price_opt и order_product.total_opt);
  • рассчитывается общая закупочная стоимость всего заказа и вносится в таблицу order.total_opt

 

Столкнулся с проблемой правильного внесения в БД профита с этого заказа. А проблема следующая: можно отнять закупочную стоимость всего заказа от sub_total заказа, но это будет не совсем верно, т.к. в заказе могут быть использованы купоны либо бонусные баллы. Отнимать закупочную стоимость заказа от total заказа так же будет не правильно, т.к. в total учитывается и платная доставка, с которой я не зарабатываю.

И вот тут у меня произошел ступор, как правильно написать расчет прибыли, т.е. учесть промежуточную стоимость заказа (sub_total), учесть купон (если он применялся) и учесть бонусные баллы (если применялись), отнять от них закупочную стоимость и все это внести в таблицу order.profit

 

Буду признателен за любую помощь, спасибо.

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


у вас есть модель catalog\model\checkout\order.php
есть 2 метода addOrder и editOrder, внутри которых есть $data['totals'] (итоги)
каждый итог имеет свой код, для доставки это shipping и стоимость - value
у заказа есть общий итог $data['total']

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


Привожу часть контроллера оформления заказа:

Спойлер



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

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

        $sort_order = array();

            $this->load->model('setting/extension');

            $results = $this->model_setting_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);

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

                if ($this->simplecheckout->getOpencartVersion() < 220) {
                    $this->{'model_total_' . $result['code']}->getTotal($totals, $total, $taxes);
                } else {
                    $this->{'model_total_' . $result['code']}->getTotal($total_data);
                }
            }

        $sort_order = array();

        foreach ($totals as $key => $value) {
            $sort_order[$key] = $value['sort_order'];
        }

        array_multisort($sort_order, SORT_ASC, $totals);

        $data = array();

            $data['totals'] = $totals;
            $data['total'] = $total;
			$data['profit'] = $total-$this->cart->getSubTotalOpt();


 

Я дилетант в этом совсем, поэтому заранее извиняюсь, за возможно написанные глупости.

Исходя из данного кода, мне не совсем понятно как формируется $total и как сформировать допустим $total_profit в котором нужно исключить доставку.

На сколько я понимаю, сразу собирается массив дополнений с типом 'total' и сортируются по порядку. Далее обрабатываются все модели по собранным 'code' и на выходе (вот тут мне не совсем понятно как) получается тот самый $total.

Вот как собрать $total_profit по тем же условиям за исключением 'code' - shipping?

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


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

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

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

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

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

Вхід

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

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

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

Important Information

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