[Помогите] Проблема с модулем

Тема в разделе "OpenCart", создана пользователем DeLeon, 4 фев 2017.

  1. DeLeon

    DeLeon

    Регистрация:
    27 окт 2016
    Сообщения:
    11
    Симпатии:
    1
    Здравствуйте, у меня проблема с одним модулем он мне очень нужен не знаю как найти решение. Поставил данный модуль category-discounts-oc2 на ocStore 2.1.0.2.1 Перевёл его настроил всё впорядке, но дело в том когда добавляешь товар в корзину он выдаёт ошибку и ссылается он-лине 57 следующего файла
    Код:
     <?php
    class ModelTotalCategoryDiscount extends Model {
        public function getTotal($total) {
            if ($this->config->get('discounts_status') && $this->cart->hasProducts() && $this->config->get('category_discount_status')) {
                $this->load->language('total/category_discount');
                $this->load->model('catalog/discount');
               
                $discount_total = 0;
                           
                foreach ($this->cart->getProducts() as $product) {
                    $discount = 0;
    
                    $category_discount = $this->model_catalog_discount->getCategoryDiscount($product['product_id']);
    
                    if ($category_discount) {
                        $discount = $product['total'] / 100 * $category_discount['percentage'];
    
                        if ($product['tax_class_id']) {
                            $tax_rates = $this->tax->getRates($product['total'] - ($product['total'] - $discount), $product['tax_class_id']);
    
                            foreach ($tax_rates as $tax_rate) {
                                if ($tax_rate['type'] == 'P') {
                                    $total['taxes'][$tax_rate['tax_rate_id']] -= $tax_rate['amount'];
                                }
                            }
               
                        }
               
                        if (empty($discount_data[strtolower($category_discount['name'])])) {
                           
                            $parts = explode('.', $category_discount['percentage']);
                            $discount_data[strtolower($category_discount['name'])] = array(
                                'code'       => 'category_discount',
                                'title'      => sprintf($this->language->get('text_category_discount'), '-' . (($parts[1]) == '0000' ? $parts[0] : number_format($category_discount['percentage'], 2)). '%', $category_discount['name']),
                                'value'      => -$discount,
                                'sort_order' => $this->config->get('category_discount_sort_order')
                            );   
                        } else {
                            $discount_data[strtolower($category_discount['name'])]['value'] += -$discount;
               
                        }
               
                        $discount_total += $discount;
                    }
                }
                if (!empty($discount_data)) {
                    foreach ($discount_data as $key) {
                        $total['totals'][] = array(
                            'code'       => $key['code'],
                            'title'      => $key['title'],
                            'value'      => $key['value'],
                            'sort_order' => $key['sort_order']
                        );
               
                    }
                }
                $total['total'] -= $discount_total;
            }
        }
    }
    
    т.е. на эту строку $total['total'] -= $discount_total; если её убрать всё нормально, но в корзине самой скидки нет цена обычная и итог обычный, а надо чтобы подсчитывало скидку. Что-то в этом коде не ладное помогите пожалуйста исправить.
     
  2. ISomeInterface

    ISomeInterface

    Регистрация:
    4 окт 2016
    Сообщения:
    106
    Симпатии:
    76
    Код ошибки покажите.
     
  3. DeLeon

    DeLeon

    Регистрация:
    27 окт 2016
    Сообщения:
    11
    Симпатии:
    1
  4. ISomeInterface

    ISomeInterface

    Регистрация:
    4 окт 2016
    Сообщения:
    106
    Симпатии:
    76
    Массив $total передаваемый в модель не содержит переменной "total", от сюда notice. Почему, нужно смотреть код вызова метода. Метод getTotal() еще содержит какой то код? Потому что в данной ситуации он ничего не делает: 1)параметр передан не по ссылке; 2) нет возвращаемого значения; 3) в базу ничего не пишется. Так что вызов этого метода бесполезен в том виде что вы предоставили.
     
  5. DeLeon

    DeLeon

    Регистрация:
    27 окт 2016
    Сообщения:
    11
    Симпатии:
    1
    Ничего не понял( что-то нужно дописать где-то? Где посмотреть код вызова метода?
     
  6. ISomeInterface

    ISomeInterface

    Регистрация:
    4 окт 2016
    Сообщения:
    106
    Симпатии:
    76
    Мой ответ пропорционален полученной информации, что бы быть более точным нужно иметь на руках этот модуль, возможно провести отладку, посмотреть какие ошибки были допущены при модифицировании файлов. Этим нужно заниматься более плотно.
     
  7. DeLeon

    DeLeon

    Регистрация:
    27 окт 2016
    Сообщения:
    11
    Симпатии:
    1
    Можете помочь? Можно обсудить за вознаграждение. Модуль был взят от сюда
    --- Добавлено, 4 фев 2017 ---
    Всё спасибо проблема решена всё работает.