- Я сгенерировал каталог для retailCRM с помощью этого костыля https://github.com/retailcrm/moysklad-catalog
- В MySQL ной базе поправил у одного товара external_id сделал его таким же как и product_id
- В Моем складе у этого же товара прописал такой же внешний код
Теперь проходит заказ только по этому товару. Вывод: нужно ковырять модуль обмена c RetailCRM, что бы товар в заказе был вязался по external_id. Либо каким-то образом первоначальной выгрузке товара из Моего склада в Cs-Cart присваивать external_id = product_id
Разработчики, подскажите в каком направлении двигаться?
Дайте кусок кода Ваш, который на скрине моем чуть выше. Бэк ап слетел. И потом выложу решение
public function build($product)
{
$category_id = $product[‘category_id’];
$available = 'true';
if ($product['tracking'] == 'B' && $product['amount'] <= 0) {
$available = 'false';
}
$offer = array(
'attr' => array(
'id' => $product['product_id'],
'available' => $available
),
'items' => array(
'url' => $this->escapeUrl($product['product_url']),
'price' => !empty($product['price']) ? fn_format_price($product['price']) : '0',
'currencyId' => !empty($currency) ? $currency['currency_code'] : CART_PRIMARY_CURRENCY,
'categoryId' => $category_id
)
);
Вы это хотели?
Да. Сейчас поправлю код и будет всем счастье. Ждите
Класс.
Тогда этого действия по правке внешнего кода недостаточно. Нужно еще и передачу заказа править
Я про это и говорю. Я в PHP не силен, но похоже где то в файле app\addons\retailcrm\Tygh\Addons\Retailcrm\Converters\OrderConverter.php собака зарыта Обратите внимание на строки 137 - 139.
И еще, пока не знаю как в RetaiCRM логи API посмотреть. Поэтому правильность прохода товара в заказе можно проверить путем его отрытия в заказе. Если товар не открывается значит в заказе товар не идетифицированный, то есть его нет в каталоге CRM. Пробовал менять в строке 139 наобум на external_id. В журнале личного кабинета обмена RetailCRM - мой склад написано
Обычно
Заказ №55 не выгружен. Товар id=163 (externalId=40413) не связан с системой МойСклад
При моем кривом изменении
Заказ №58 не выгружен. Товар id=166 (внутренний id=269698) не связан с системой МойСклад
Кто-то знает из какого идентификатора retailcrm берет значение в свою переменную externalid?
А у всех вообще YML для ритейла генерируется без ошибок?
У меня огромная простыня ошибок PHP вместо лога. Пробегаюсь по итоговому YML и вижу кучу задубливаний офферов, которые наполнены с ошибками.
Стоит PHP 7.1
Ну, логи бы посмотреть, а так, это отдельную тему делать надо. Что в логах написано?
Решение оказалось полурабочим т.к. id конфликтует где-то с кодом другим и не дает парсеру отработать. Запустил спайдера на эту ночь. Посмотрим, что накопает и завтра выясним. Рабочий кусок кода выложу только после успешного результата
Да не, просто примерно знать. Если у вас всё окей, значит я даже тему создавать не буду. Надо решать быстро, а с этими темами и обращениями в ТП может выйти совсем долго.
Закрываю для себя тему всех этих правок. Этот модуль переделывать нужно под корень, как минимум генерацию ICML вынести в нечто самостоятельное. Потому что особенности генерации YML только мешают.
Сделай на своем примере экспорт Товар id=163 (externalId=40413) с параметрами id, external id и код товара. Потом посмотри, какое поле соответствует значению 40413 и напиши всем нам.
Ошибки или нотисы? Мне нотисы не мешают, если они по времени отрабатывают не по 30 минут и не вномят кучу ошибок в исходящие массивы.
Где ты логи, кстати, смотришь, о которых пишешь?
Да стандартно.
В настройках генерации прайс-листа YML стоит галка:
При нажатии на ссылку создания прайса открывается окно, и вот в нем километр вот такого:
указан файл yml2 965 строка. Что там? Ну, или сбрось модуль на ноль
И вправду уже скоро сброшу в абсолютный ноль, удалю к едрене-фене. Достало уже это вытягивание бегемота из болота.
У вас на картинке выделено было, про него и подумал. Надо глубже копать, навскидку не скажу
Product code;Language;Store;Product id;external id
“38032777”;“ru”;“Фирма”;“40413”;“40888”
“38032333”;“ru”;“Фирма”;“40414”;“40414”