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

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

С нами с 06 июня 2015; Место в рейтинге пользователей: #5
Николай Савин
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.
Разумеется фокус сработает, если указанные данные у товаров в разных системах один и тот же.
Никто не мешает искать по другим общим параметрам.

Важно также понимать, что эти дополнительные запросы занимают время и заказ передается дольше, а клиент в этот момент сидит и смотрит на экран корзины.
Николай Савин
19 октября 2018, 18:38
0
В конце плагина есть закомментированная строчка записи результата в лог. Нужно раскомментировать и посмотреть какая будет ошибка
Николай Савин
19 октября 2018, 12:55
0
Да, почему бы и нет. Правильнее было бы не TV использовать, а добавить новое свойство товара. Это уменьшит время оформления заказа. Ну и подставляйте новый идентификатор в массив товаров, поле externalID, в плагине
Николай Савин
17 октября 2018, 13:11
0
В плагине, в самом конце есть закомментированная строчка логгирования.
Достаточно ее раскомментировать и будет запись в журнал, с достаточно подробным описанием ошибки.
Николай Савин
17 октября 2018, 12:48
0
Нет не правильно.
Если товар в CRM не создан, то заказ все равно создается на основе присылаемых данных (название, цена, опции)
Если товары в базе CRM уже есть, то достаточно послать идентификатор товара, а все данные подтянутся из базы
Николай Савин
17 октября 2018, 08:55
+4
Видишь какую тему больную поднял. По любому нужно что то придумать в ядре
Николай Савин
17 октября 2018, 05:09
+3
Я что то упустил?
Разве на данный момент, метод getCustomerId() не регистрирует пользователя в обязательном порядке? Если да, регистрирует — то по идее уведомление пользователю обязательно должно быть. Это как минимум хороший тон, а местами и соответствие законодательству.

Если нет, не обязательна регистрация — то КОГДА ЭТО СЛУЧИЛОСЬ черт побери?
Николай Савин
16 октября 2018, 18:59
0
Твой вариант может и проще и правильнее. Но уж точно это не то решение, которое будет работать из коробки при минимуме затрат.
А вообще я же не претендую на максимальную точность. Просто рассказал о том, как я сделал, показал возможное решение вопроса, и примерно дал понять в какую сторону думать, при кастомизации.
Николай Савин
16 октября 2018, 18:56
0
Боюсь Володя не пропустит, вон ругаться уже начал
Николай Савин
16 октября 2018, 13:47
0
Думаешь быстрее будет? Все равно же запрос в базу. Или это ближе к Join чем к запросу?