Перейти к содержанию

Рекомендуемые сообщения

Доброго дня! Подскажите. Есть две группы. Группа Private имеет ID=1, группа Company имеет ID2. Надо в счете для одной группы выводить "Private" для другой группы выводить "Company". Никак не получается корректно получить ID группы в сгенерированном счете.

    $customer_group_id = $this->data['customer_group_id'];



    if ($customer_group_id == 2)

    {

        $html .='Company<br />';

    }

    else

    {

        $html .='Private<br />';

    }

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
$html .= $this->config->get('config_customer_group_id') == 2 ? 'company' : 'private';

навскидку

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет, не то, не подхватывает ID групп, выводит все время private.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

    $customer_group_id = $this->data['customer_group_id'] = $this->customer->getGroupId();

    if ($customer_group_id == 2)
    {
        $html .='Company<br />';
    }
    else
    {
        $html .='Private<br />';
    }

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ошибка у вас

А так?

$customer_group_id = $this->customer->getGroupId();
  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тоже самое, выводит в обоих случаях Company.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Версия и в каком файле делаете изменения?

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

OpenCart 2.3.0.2 файл сотороннего модуля вывода счета. Я так понимаю что то где то  внем не задекларировано.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

OpenCart 2.3.0.2 файл сотороннего модуля вывода счета. Я так понимаю что то где то  внем не задекларировано.

 

Попробуйте повыводить другие параметры покупателя через $this->customer->... (system/library/customer.php) Возможно, вы просто одного и того же покупателя запрашиваете. Или кеш срабатывает.

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да вроде кеш тут не причем. Есть два счета созданные двумя пользователями из разных групп.С ними вот и пробую.

 

system/library/customer.php - нету такого файла.

Изменено пользователем evildance

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На фронте есть стандартный способ получить id группы

Это

$customer_group_id = $this->customer->getGroupId();

Но чтобы его получить вызов метода должен быть от залогиненного пользователя, например, из личного кабинета

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может каким то дебагом можно посмотреть что у меня работает на этой странице. Как?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На фронте есть стандартный способ получить id группы

Это

$customer_group_id = $this->customer->getGroupId();

Но чтобы его получить вызов метода должен быть от залогиненного пользователя, например, из личного кабинета

Прошу прощения, я в панели управления пытаюсь получить это. До фронтенда еще не дошло дело.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Прошу прощения, я в панели управления пытаюсь получить это. До фронтенда еще не дошло дело.

Тогда вам надо дописать метод в модели модуля или получить инфо о клиенте по заказу через метод getCustomer подключив в контроллере модель

model/customer/customer

Изменено пользователем thentru
  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в модели модуля указывал методы из model/customer/customer_group.php

    public function getCustomerGroup($customer_group_id) {
        $query = $this->db->query("SELECT DISTINCT * FROM " . DB_PREFIX . "customer_group cg LEFT JOIN " . DB_PREFIX . "customer_group_description cgd ON (cg.customer_group_id = cgd.customer_group_id) WHERE cg.customer_group_id = '" . (int)$customer_group_id . "' AND cgd.language_id = '" . (int)$this->config->get('config_language_id') . "'");

        return $query->row;
    }

    public function getCustomerGroups($data = array()) {
        $sql = "SELECT * FROM " . DB_PREFIX . "customer_group cg LEFT JOIN " . DB_PREFIX . "customer_group_description cgd ON (cg.customer_group_id = cgd.customer_group_id) WHERE cgd.language_id = '" . (int)$this->config->get('config_language_id') . "'";

        $sort_data = array(
            'cgd.name',
            'cg.sort_order'
        );

        if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
            $sql .= " ORDER BY " . $data['sort'];
        } else {
            $sql .= " ORDER BY cgd.name";
        }

        if (isset($data['order']) && ($data['order'] == 'DESC')) {
            $sql .= " DESC";
        } else {
            $sql .= " ASC";
        }

        if (isset($data['start']) || isset($data['limit'])) {
            if ($data['start'] < 0) {
                $data['start'] = 0;
            }

            if ($data['limit'] < 1) {
                $data['limit'] = 20;
            }

            $sql .= " LIMIT " . (int)$data['start'] . "," . (int)$data['limit'];
        }

        $query = $this->db->query($sql);

        return $query->rows;
    }

 

Далее в файле модуля указываю:

 

    $customer_group_id = $this->customer_group->getCustomerGroup();
    if ($customer_group_id == 2)

    {
        $html .='Company<br />';
    }

    else

    {
        $html .='Private<br />';
    }

 

В результате получаю:

 

Fatal error: Call to a member function getCustomerGroup() on null in

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не верный вызов метода

Для метода нужно передать customer_group_id

В ответ вы получите массив, а не число

Этот метод для получения имени группы

Изменено пользователем thentru

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подскажите как правильно передать и вызвать метод.

 

Методы я так понимаю я правильные прописал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

$this->load->model('customer/customer_group');

$this->module_customer_customer_group->getCustomerGroup();

Изменено пользователем Slavikovna
  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все равно выдает ошибку:

Fatal error: Call to a member function getCustomerGroup() on null in..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Прошу прощения, я в панели управления пытаюсь получить это. До фронтенда еще не дошло дело.

 

Так и пишите, что в админке делаете.

 

Как я понимаю, речь идет о admin/controller/sale/order.php , методе invoice

Тогда в массиве $order_info у вас должен быть customer_id, а дальше делаете

$this->load->model('sale/customer');
$customer_info = $this->model_sale_customer->getCustomer($order_info['customer_id']);

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Никак не получается корректно получить ID группы в сгенерированном счете.

где?

в invoice?

открой родное

admin/controller/sale/order.php :: public function invoice() {
...
		foreach ($orders as $order_id) {
			$order_info = $this->model_sale_order->getOrder($order_id);
...
					'email'              => $order_info['email'],
...
посмотри базу

...
$order_info['customer_group_id']
...
сделай, как тебе надо (с учетом своего кода, имен переменных)

if ($order_info['customer_group_id'] == 2) { $html .='Company<br />'; } else { $html .='Private<br />'; }
  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как я понимаю, речь идет о admin/controller/sale/order.php , методе invoice

Не совсем, сторонний модуль инвойсов используется.

 

 

$this->load->model('sale/customer');

 

тут нет ошибки?

 

if ($order_info['customer_group_id'] == 2) { $html .='Company<br />'; } else { $html .='Private<br />'; }

Как же все таки элементарно все было. :D Спасибо!

Изменено пользователем evildance

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Гость
Эта тема закрыта для публикации ответов.

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.