[РЕШЕНО] Передача данных при оформлении заказа Opencart/OcStore 3.x

Тема в разделе "Общие вопросы", создана пользователем Иван Николаев, 30 ноя 2022.

  1. Иван Николаев

    Иван Николаев Пользователь

    Сообщения:
    108
    Симпатии:
    7
    Всем привет.

    Не могу найти в коде где передаются данные из данных клиента в заказ, а именно:
    С таблицы customer, поле firstname, в таблицу order, в поле firstname
    С таблицы address, поле address_1 в таблицу order, в поле payment_address_1

    Подскажите где искать. Спасибо.
     
  2. Иван Николаев

    Иван Николаев Пользователь

    Сообщения:
    108
    Симпатии:
    7
    Нашёл файлы, но судя по всему, это не они

    /catalog/controller/checkout/confirm.php
    $order_data['payment_address_1'] = $this->session->data['payment_address']['address_1'];

    /catalog/controller/api/order.php
    $order_data['payment_address_1'] = $this->session->data['payment_address']['address_1'];
     
  3. Иван Николаев

    Иван Николаев Пользователь

    Сообщения:
    108
    Симпатии:
    7
    Задача вывести дополнительные данные в order, чтобы вытягивать их в личный кабинет клиента и у администратора.
     
  4. Ravilr

    Ravilr Специалист

    Сообщения:
    3.876
    Симпатии:
    1.064
    что это?

    Да и вообще, как то у Вас все непонятно. Вы всегда делаете наугад.. и каждая задача превращается в несколько страниц переписок и объяснений. Такое никому не нравится. Попробуйте поставить задачу более нормально. Типа вот файл, вот так получаю, тут вижу, а тут нет. Что находится в массиве посмотрел, что в переменной тоже итд.
     
    Иван Николаев нравится это.
  5. Иван Николаев

    Иван Николаев Пользователь

    Сообщения:
    108
    Симпатии:
    7
    Заранее хочу сказать, что знаю про существование кастомных полей для пользователей, но они не подходят для меня.

    Я просто новичок в этом деле и поэтому простите, если не правильно задаю свои вопросы, но очень рад, что на них отвечают.

    Задача: Вывести значение дополнительного поля у клиента в заказ.

    Я создал доп поле messenger у клиента, сделал связку контроллер-модель-шаблон. В базе данных customer эта информация появляется в поле messenger, всё хорошо. Создал такое же поле в таблице order. Теперь хочу их связать, чтобы при оформлении заказа в поле messenger сохранялась информация, которая была в таблице customer (поле messenger).

    Вот я и не могу найти файлы, которые отвечают за сохранение заказа.
    Вот это я пока не умею делать(
     
  6. Иван Николаев

    Иван Николаев Пользователь

    Сообщения:
    108
    Симпатии:
    7
  7. Ravilr

    Ravilr Специалист

    Сообщения:
    3.876
    Симпатии:
    1.064
  8. Иван Николаев

    Иван Николаев Пользователь

    Сообщения:
    108
    Симпатии:
    7
    Вопрос почти решил.

    Файлы, которые отвечают за это:

    1. /catalog/controller/api/order.php находим $order_data['telephone'] = $this->session->data['customer']['telephone']; вставляем после
    Код:
    $order_data['telegram'] = $this->session->data['customer']['telegram'];
    2. /catalog/controller/checkout/confirm.php
    Ищем if ($this->customer->isLogged()) {, затем находим $order_data['telephone'] = $customer_info['telephone']; вставляем после
    Код:
    $order_data['telegram'] = $customer_info['telegram'];
    3. /catalog/model/checkout/order.php
    Находим функции addOrder и editOrder, вставляем после telephone = '" . $this->db->escape($data['telephone']) . "',
    Код:
    telegram = '" . $this->db->escape($data['telegram']) . "',
    Функция getOrder, вставляем 'telephone' => $order_query->row['telephone'],
    Код:
    'telegram'                     => $order_query->row['telegram'],
    Данные в бд появляются, но теперь заказ дублируется.
     
    Последнее редактирование: 2 дек 2022
    Ravilr нравится это.
  9. Ravilr

    Ravilr Специалист

    Сообщения:
    3.876
    Симпатии:
    1.064
    По описанию выше указанного решения, Вы ничего не сделали, чтобы дублировалось.
     
  10. Иван Николаев

    Иван Николаев Пользователь

    Сообщения:
    108
    Симпатии:
    7
    После некоторого время всё само прошло. Странно конечно)