Добавление external_id в xml файл выгрузки YML-экспорт

  1. Я сгенерировал каталог для retailCRM с помощью этого костыля https://github.com/retailcrm/moysklad-catalog
  2. В MySQL ной базе поправил у одного товара external_id сделал его таким же как и product_id
  3. В Моем складе у этого же товара прописал такой же внешний код
    Теперь проходит заказ только по этому товару. Вывод: нужно ковырять модуль обмена 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 конфликтует где-то с кодом другим и не дает парсеру отработать. Запустил спайдера на эту ночь. Посмотрим, что накопает и завтра выясним. Рабочий кусок кода выложу только после успешного результата

1 лайк

Да не, просто примерно знать. Если у вас всё окей, значит я даже тему создавать не буду. Надо решать быстро, а с этими темами и обращениями в ТП может выйти совсем долго.

Закрываю для себя тему всех этих правок. Этот модуль переделывать нужно под корень, как минимум генерацию ICML вынести в нечто самостоятельное. Потому что особенности генерации YML только мешают.

Сделай на своем примере экспорт Товар id=163 (externalId=40413) с параметрами id, external id и код товара. Потом посмотри, какое поле соответствует значению 40413 и напиши всем нам.

Ошибки или нотисы? Мне нотисы не мешают, если они по времени отрабатывают не по 30 минут и не вномят кучу ошибок в исходящие массивы.

Где ты логи, кстати, смотришь, о которых пишешь?

Да стандартно.
В настройках генерации прайс-листа YML стоит галка:
image

При нажатии на ссылку создания прайса открывается окно, и вот в нем километр вот такого:

указан файл yml2 965 строка. Что там? Ну, или сбрось модуль на ноль

И вправду уже скоро сброшу в абсолютный ноль, удалю к едрене-фене. Достало уже это вытягивание бегемота из болота.

У вас на картинке выделено было, про него и подумал. Надо глубже копать, навскидку не скажу

Product code;Language;Store;Product id;external id
“38032777”;“ru”;“Фирма”;“40413”;“40888”
“38032333”;“ru”;“Фирма”;“40414”;“40414”