При импорте вариаций, у них меняется дата создания

При импорте вариаций из МойСклад, по CommerceML заметил очень неприятный баг:
У всей группы товаров с вариацией, каждый раз при импорте, меняется дата создания товара на день в который был произведен импорта. У товаров без вариаций дата создания товара не меняется.
Это все несет за собой кучу последствий.

  1. Все вариации товаров всегда в списке товаров в верху, поэтому не видно свеже добавленных товаров.
  2. Все товары с вариациями, вываливаются в Хиты продаж и там висят, и никак их оттуда не убрать.

Это происходит если в модуле CommerceML, выставить пункт Загружать товары: Новые товары, количество, цены всех товаров.
Если меняю на “только обновление товаров”, “новые товары” вариации уходят вниз, новые товары вверху списка, но тогда не выгружается цена и количество товара.

1 лайк

Такой баг давно уже замечен. Должны бы исправить. У Вас какая версия cs-cart?

4.11.2

Напишите в HD cs-cart по данной проблеме. Видимо не поправили пока.

Смотрите тут
\app\addons\rus_exim_1c\Tygh\Commerceml*RusEximCommerceml.php*

Строка примерно 3648
Функция importProductOffersAsVariations

В массиве

$product_data = [
                'external_id' => $offer->getUid(),
                'tracking'    => ProductTracking::TRACK_WITHOUT_OPTIONS,
                'timestamp'   => time(),
                'amount'      => $offer->getAmount() ? $offer->getAmount() : 0,
            ];

'timestamp' => time(),

Замените на
'timestamp' => isset($base_product_data['timestamp']) ? $base_product_data['timestamp'] : time(),

Это тоже можно заменить, если доставляет проблем
'tracking' => isset($base_product_data['tracking']) ? $base_product_data['tracking'] : ProductTracking::TRACK_WITHOUT_OPTIONS,

Далее найдите функцию findProductByUid
Строка примерно 4017

В запросе SELECT добавьте timestamp

Будет так:
‘SELECT product_id, update_1c, status, tracking, product_code, external_id, timestamp FROM ?:products’
. ’ WHERE external_id LIKE ?l AND parent_product_id = ?i’,

1 лайк

А что за поле tracking, какие данные туда пишутся? По таблице в БД ничего не понятно, везде значение “B”

Спасибо, помогло.

B - Отслеживать количество товара без учета опций (значение по-умолчанию)

Исправление проблемы с изменением даты создания товаров войдет в следующую версию CS-Cart (4.11.3)

1 лайк