[Помогите] Вывод информации о незарегистрированных покупателях списком

Тема в разделе "OpenCart", создана пользователем proleg, 21 фев 2013.

  1. proleg

    proleg

    Регистрация:
    3 окт 2012
    Сообщения:
    67
    Симпатии:
    82
    Есть необходимость получения из списка заказов информации о покупателях(ФИО, адрес электронной почты, телефон, компания) например для рассылки по электронной почте. Если покупатель зарегистрирован, то это решается проще. А вот если заказ был сделан без регистрации(а таких примерно 80%), то тут возникает проблема. Конечно ВСЯ эта информация сохранена в заказах, но получить эти данные списком стандартными средствами не представляется возможным, а лопатить базу по одному заказу... адский труд. Может кто подскажет решение или натолкнет на мысль.
     
  2. kur1977

    kur1977

    Регистрация:
    11 фев 2013
    Сообщения:
    123
    Симпатии:
    59
    Код:
    SELECT firstname, lastname, email, telephone, fax, payment_company AS company
    FROM oc_order
    Или я чо то недопонимаю?

    А насчет рассылок - так в админке есть мегаудобный инструмент для этого. В ПРОДАЖИ-ПОЧТА
     
  3. SpresscodE

    SpresscodE

    Регистрация:
    2 ноя 2012
    Сообщения:
    258
    Симпатии:
    58
    Зачем это все... Ставь водуль заказ в один клик и все... Можешь его чуть под себя переделать... чтобы было и ФИО
     
  4. proleg

    proleg

    Регистрация:
    3 окт 2012
    Сообщения:
    67
    Симпатии:
    82
    я так понимаю это запрос к базе данных, ну а вывод-то куда?
    а про рассылки - про этот инструмент я знаю, но он только для зарегистрированных пользователей и то тех. что поставил "галочку" в "подписаться на рассылку"
    --- добавлено: 22 фев 2013 в 17:17 ---
    Здесь я уже поставлен в тупик. Не знаю что ответить... Модуль только собирает данные, все-равно они попадают в БД. Вывод из базы теми же стандартными средствами админки... Про которые и вопрос.
     
  5. kur1977

    kur1977

    Регистрация:
    11 фев 2013
    Сообщения:
    123
    Симпатии:
    59
    Ну можно на коленке простой модуль склепать. Или добавить эту фишку куданить. Впринципе сложного ничего нет.
    Ну например в OcStore 5.3.1 там есть поле с выбором
    <select name="to">
    <option value="newsletter">Подписчики на новости</option>
    <option value="customer_all">Все покупатели</option>
    <option value="customer_group">Группа покупателей</option>
    <option value="customer">Покупатели</option>
    <option value="affiliate_all">Все партнёры</option>
    <option value="affiliate">Партнёры</option>
    <option value="product">Товары</option>
    </select>

    Так что выбор адресавтов довольно широкий.
     
  6. proleg

    proleg

    Регистрация:
    3 окт 2012
    Сообщения:
    67
    Симпатии:
    82
    Выбор-то широкий, только(и в этом суть основного вопроса) он касаестя покупателей, а к Покупателям относятся ТОЛЬКО зарегистрированные пользователи, сделавшие заказ. А таких немного
    Я то видел решение в установке какого-нибудь модуля(про который пока не знаю), или правкой соответствующего файла для изменения выводимых поля в Продажи-Заказы, или какой-нибудь Отчет.
     
  7. kur1977

    kur1977

    Регистрация:
    11 фев 2013
    Сообщения:
    123
    Симпатии:
    59
    Давайте добавим в функционал отправки писем еще один пункт выбора "Все, в том числе и незарегистрированные".
    Расписую по порядку:

    1. admin\controller\sale\contact.php
    После
    PHP:
    case 'customer_all':
                        
    $results $this->model_sale_customer->getCustomers();
     
                        foreach (
    $results as $result) {
                            
    $emails[] = $result['email'];
                        }                    
                        break;
    добавить
    PHP:
    //////// add all
     
                    
    case 'customer_all_all':
                        
    $results $this->model_sale_customer->getAllCustomers();
     
                        foreach (
    $results as $result) {
                            
    $emails[] = $result['email'];
                        }                    
                        break;
     
                    
    ////////
    После
    PHP:
    $this->data['text_customer_all'] = $this->language->get('text_customer_all');
    Добавить
    PHP:
    /// add all
            
    $this->data['text_customer_all_all'] = $this->language->get('text_customer_all_all');
            
    ///
    2. admin\model\sale\customer.php
    После
    PHP:
    public function getCustomerByEmail($email) {
            
    $query $this->db->query("SELECT DISTINCT * FROM " DB_PREFIX "customer WHERE email = '" $this->db->escape($email) . "'");
     
            return 
    $query->row;
        }
    добавить
    PHP:
    /////// add all
     
        
    public function getAllCustomers($email) {
            
    $query $this->db->query("SELECT firstname, lastname, email, telephone, fax, payment_company AS company FROM " DB_PREFIX "order");
     
            return 
    $query->row;
        }
     
        
    ///////
    3. admin\language\russian\sale\contact.php

    После
    PHP:
    $_['text_customer_all']        = 'Все покупатели';[/code]
    добавить
    [code]/// add all
    $_['text_customer_all_all']        = 'В том числе и незарегистрированные';
    ///
    4. admin\view\template\sale\contact.tpl

    После
    PHP:
    <?php if ($to == 'customer_all') { ?>
                    <option value="customer_all" selected="selected"><?php echo $text_customer_all?></option>
                    <?php } else { ?>
                    <option value="customer_all"><?php echo $text_customer_all?></option>
                    <?php ?>
    Добавить
    PHP:
    <!---- add all -->
                    <?php if ($to == 'customer_all_all') { ?>
                    <option value="customer_all_all" selected="selected"><?php echo $text_customer_all_all?></option>
                    <?php } else { ?>
                    <option value="customer_all_all"><?php echo $text_customer_all_all?></option>
                    <?php ?>
                    <!-- end add all -->
    Все.

    Обратите внимание -
    - это ключевой момент. О котором я написал выше. Все остальное - это обвязка.
    В общем , то, что в этом посте - это готовое решение.
     
    Пумпоша и proleg нравится это.
  8. proleg

    proleg

    Регистрация:
    3 окт 2012
    Сообщения:
    67
    Симпатии:
    82
    ОГРОМНОЕ СПАСИБО!
    Честно говоря, задавая вопрос, я имел ввиду ТАКОЕ решение(стал копаться-ковыряться и нашел такой модуль).
    То, что делает этот модуль - визуализация, а ВАШЕ решение - автоматизация!