Перенос кол-ва товара из уберкарт в drupal commerce

При переносе товаров из уберкарта в коммерц я сделал специальное поле product_old_nid у товара, в которое импортировал nid на старом сайте.
Затем мне понадобилось обновить значения кол-ва товаров на складе (чтобы на новом сайте были те же значения, что и на старом).
Решение конкретной это задачи была работа напрямую только с phpmyadmin: я экспортировал таблицу uc_product_stock со старого сервера в базу нового сайта, и затем выполнил вот этот запрос:

SELECT old.entity_id, uc_product_stock.nid, stock.commerce_stock_value, uc_product_stock.stock FROM `field_data_commerce_stock` stock  INNER JOIN field_data_field_product_old_nid old ON stock.entity_id = old.entity_id AND stock.entity_type = old.entity_type INNER JOIN uc_product_stock ON old.field_node_old_nid_value = uc_product_stock.nid

Всё, значения на складе всех наших товаров обновлены.
Удачи!

Drupal 6, 7

Комментарии

Денис 19.02.2014 - 13:22

Никита, здравствуйте. Вопрос, наверное, немного не в ту ветку, но всё же. Делаю магазин на Drupal Commerce. Товары импортируются из 1С автоматически на FTP сервер. В Друпале установлен модуль Feeds. Есть два обработчика файла с товарами. Первый создаёт непосредственно сам товар, второй из этого же файла создаёт ноды (product view). Сейчас всё работает, но есть одна загвоздка: файл обрабатывается по крону (настроен на хостинге). И один раз случилось так, что первым загрузился обработчик нод, т.е. была создана нода, но товар ещё не был загружен, т.к. он загрузился позже и связь между ними настроена не была. Подскажите, как можно настроить запуск каждого обработчика из Feeds по расписанию? Либо, может, есть другой способ. Заранее спасибо.

Nikita Petrov 19.02.2014 - 14:08

Тут надо разбираться, как могло произойти так, что один из обработчиков запустился раньше. По идее такого не должно происходить, если всё в одном импорте находится. Хотя может стоит посмотреть, вдруг они в параллельных процессах пытаются выполняться. Если вы пытаетесь импортировать ноды в одном feeds import, а commerce product - в другом, то это не правильно.

Денис 19.02.2014 - 14:12

Спасибо за ответ. Я как раз импортирую commerce product одним, а ноды другим обработчиком. Нашёл в интернете такой вариант. Если это неправильно, подскажите, как сделать правильно.

Nikita Petrov 19.02.2014 - 15:58

Точно сейчас сказать не могу, надо пробовать. Я как раз имел ввиду "обработчиков", ведь их несколько можно делать в одном импорте, насколько я помню.
В вашем случае, раз уже всё работает как надо в разных импортах, просто используйте расширение для друпаловского крона. Например, elysia_cron как порекомендовали здесь. И поставьте запуск импорта нод на 5 минут позже, чем commerce products.
Сам я расширителями крона практически не пользовался, подсказать в этом вопросе мало чем смогу, читайте readme к модулям, должно быть всё понятно.

Денис 19.02.2014 - 16:50

Дело в том, что в одном обработчике нельзя создать два разных типа данных - товар и дисплей. А расширители cron отображают feeds как один процесс, не разделяя обработчиков. Пришла идея по поводу rules: загрузился товар - создали display. Обновился товар - обновили. Буду пробовать. Большое спасибо.

Добавить комментарий