Николай Савин

Николай Савин

С нами с 06 июня 2015; Место в рейтинге пользователей: #5
Николай Савин
12 ноября 2018, 09:36
0
Нет одинаковых id быть не может. В этом и смысл id — уникальный номер заказа в базе данных.
Я так понимаю у тебя заказы в базу не пишутся — зачем тогда вообще id указывать? Отправляй просто необходимые данные. Имя клиента, телефон, данные по товару, что там у тебя еще не знаю.
Николай Савин
10 ноября 2018, 08:10
0
при чем тут товар? Ты должен передавать id заказа, а не товара
Николай Савин
09 ноября 2018, 21:52
0
Ну как видишь Статус — Успех. Задача создана, id присвоен
Николай Савин
09 ноября 2018, 15:52
0
Ну значит происходит магия
Николай Савин
09 ноября 2018, 15:49
0
Ну значит у тебя либо все товары с одним и тем же именем, либо ты передаешь один и тот же id товара
Николай Савин
09 ноября 2018, 15:43
0
В этом случае ни цену, ни название товара вообще передавать не нужно, они есть в базе RetailCRM. Достаточно передавать идентификатор
Николай Савин
01 ноября 2018, 19:11
0
Не помню точно, возвращается ли ошибка от sendPulse, но Попробуй так.
$response = $modsendpulse->sendPulseAddEmailsToBook($params, $book);
$modx->log(1, print_r($response, 1));

Компонент с некоторого времени платный (290 руб) — если не получится — покупай, пиши в поддержку — поковыряем вместе уже более подробно
Николай Савин
01 ноября 2018, 18:52
0
Как передать, или где его взять?
Николай Савин
01 ноября 2018, 18:46
0
Это кардинально неправильный подход.
Нужно использовать систему плагинов. Попробуй создать плагин на событие onUserSave (не уверен, что это событие сработает). Как вариант можно создать плагин на событие msOnCreateOrder, там тоже есть доступ к данным заказчика. И уже оттуда отправлять данные в адресную книгу
Николай Савин
31 октября 2018, 18:13
0
Выше посмотри. Здесь же в комментариях несколько раз писал уже
Николай Савин
31 октября 2018, 16:21
0
А где собственно запись ответа в лог? Нужно же после запроса еще ответ в лог записать, чтобы посмотреть ошибку
Николай Савин
26 октября 2018, 11:17
0
Верно заметил. Сообщество, а не детский сад. Здесь нянечек нет. Не нравится — не используй. Сделай сам.
Николай Савин
26 октября 2018, 10:34
0
Потому что ты просишь чтобы за тебя все сделали, разжевали и готовое на блюдечке вынесли.
Николай Савин
26 октября 2018, 10:30
0
на 130 с лишним скачиваний — он почему то у тебя одного не работает. Тебе не кажется, что проблема не в компоненте, а где то еще?
Николай Савин
26 октября 2018, 10:22
0
С какой задачей? Перебрать массив опций и проверить их на пустоту? Это основа PHP: циклы и условия. Если ты не знаешь как делать подобные вещи — то лучше обратись в раздел работа.
Николай Савин
26 октября 2018, 10:11
0
Ну как я и сказал. Если у свойства товара пустое значение — RetailCRM вернет ошибку.
Можно ли сделать какое-то условие, если модификация пустая не учитывать ее?
Ответить
Можно — разрешаю.
Николай Савин
26 октября 2018, 08:44
0
Насколько я понял, у тебя что то не то с модификациями. Может просто пустые.
Попробуй, распечатай перед отправкой массив с данными, может что-то будет более ясно.

$modx->log(1, print_r($orderData, 1));
Николай Савин
26 октября 2018, 07:55
0
Вот после этой строки в плагине
$response = $modRetailCrm->request->ordersCreate($orderData, $site);
можно включить логгирование
$modx->log(1, print_r($response, 1));
Мне очень нравится как API RetailCRM возвращает ошибки. Все предельно понятно
Николай Савин
22 октября 2018, 14:11
+1
Хотя бы плюсик к статье поставьте вместе со спасибо,
По существу Не уверен что такая доработка плагина нужна. Вы пока второй на 130 загрузок, кто такое спрашивает.
Николай Савин
22 октября 2018, 12:51
0
Вообще при выгрузке нужно указывать идентификатор товара в поле ExternalID
Если Вы этого не делали, тогда отдельного специального поля для связи товаров в различных системах нет.

В таком случае, можно перед передачей заказа в RetailCRM, получить идентификаторы товара, используя поиск по товарам в CRM

Для этого в плагине, там где начинается перебор товаров заказа, можно добавить дополнительный поисковый запрос в RetailCRM
$store_response = $modRetailCrm->request->storeProducts(array('name' => $product['article']), 1, 20);  
if($store_response->getStatusCode() == 200){
        $product_id = $store_response['products'][0]['offers'][0]['id'];
  }
$orderData['items'][$key]['offer']['id'] = $product_id;
Здесь вы ищите на складе RetailCRM товар, у которого наименование совпадает с артикулом в minishop2. Если такой товар найден получаем его id.
Разумеется фокус сработает, если указанные данные у товаров в разных системах один и тот же.
Никто не мешает искать по другим общим параметрам.

Важно также понимать, что эти дополнительные запросы занимают время и заказ передается дольше, а клиент в этот момент сидит и смотрит на экран корзины.