Closed nashyvan closed 1 year ago
Разве не получается взять $deliveryDateField из вашего же примера
и сделать что-то подобное
$order["customFields"]['ТУТ ПОЛЕ ИЗ CRM'] = $deliveryDateField;
Не получается, в catalog/model/extension/retailcrm/order.php
, в функции processOrder
после 310 строки, перед return $order;
добавил этот код:
$simpleObjectOrder = 'order'; // может быть 'customer', 'address' или 'order'
$simpleObjectOrderId = $order_id; // $order_id получаем на 93 строке, записываем его в $simpleObjectOrderId для удобства
$queryGetSimpleOrderFields = $this->db->query('SELECT * FROM `' . DB_PREFIX . $simpleObjectOrder . '_simple_fields` WHERE `'.$simpleObjectOrder.'_id` = \'' . $simpleObjectOrderId . '\' LIMIT 1'); // возвращаем набор данных из заказа (order_id) в таблице oc_order_simple_fields
$deliveryDateField = $queryGetSimpleOrderFields->row['deliverydate']; // получаем значение из поля deliverydate
$deliveryTimeField = $queryGetSimpleOrderFields->row['deliverytime']; // получаем значение из поля deliverytime
$order['customFields']['deliverydate'] = $deliveryDateField; // добавляем deliverydate в order
$order['customFields']['deliverytime'] = $deliveryTimeField; // добавляем deliverytime в order
В $order['customFields']
нужно указывать же символьный код поля из RetailCRM?
Структура таблицы oc_order_simple_fields
Добрый день. Заказ создается в CRM ? В переменных $deliveryDateField и $deliveryTimeField точно есть значение ? Что бы посмотреть данные в $order, их можно записать в файл
Да, в приведенном примере установка значений кастомных полей происходит корректно.
В $order['customFields'] нужно указывать же символьный код поля из RetailCRM?
Да, заказ создается в CRM.
Данные из кастомных полей записываются в базу данных, но, возможно, функция proccessOrder
выполняется первее, чем модуль Simple сохраняет данные.
Я пытался записать через file_put_contents
, но файл почему-то не сохраняется.
Перед return $order;
в proccessOrder()
я добавил:
file_put_contents("/home/hestia/web/domain.com/private/storage/logs/retailcrmProcessOrder.txt", print_r($order, true));
Где domain.com
- доменное имя.
Права на запись в /home/hestia/web/domain.com/private/storage/logs/
есть (775, пробовал еще с 777)
Есть ли другой способ посмотреть, что сохраняется в $order
при оформлении заказа?
В таком случае рекомендуется использовать Xdebug для отладки метода proccessOrder.
Была подобная тема https://github.com/retailcrm/opencart-module/issues/95, но с тех пор модуль RetailCRM был полностью переписан.
Нашел в документации Simple данный код, немного модифицировал и добавил его в файле
catalog/model/extension/retailcrm/order.php
после 282 строки:Как можно посмотреть что находится в самом
$order
при отправке заказа в RetailCRM и как правильно добавить в$order["customFields"]
значение из$deliveryDateField
?