[mSync / mSklad] Деактивация товаров при выгрузке

Здравствуйте.

Подскажите, пожалуйста, mSync по умолчанию снимает с публикации товары, которые есть на сайте, но которые не пришли в выгруке import.xml из 1С?
Если нет, как можно реализовать такой функционал?
Если да, почему товар мог не сняться с публикации, если в выгрузке его нет?

Спасибо за помощь
Giant Dad
09 сентября 2022, 15:10
modx.pro
805
0

Комментарии: 5

Alexey
09 сентября 2022, 16:09
1
0
mSync Не снимает товары с публикации перед выгрузкой. Нужно написать плагин на событие mSyncOnBeforeImport, который это делает. Как-то так:

<?php
if ($modx->event->name == 'mSyncOnBeforeImport' && $mode == 'catalog') {
    $query = $modx->newQuery('modResource');
    $query->command('update');
    $query->where(array('class_key' => 'msProduct', 'published' => 1));
    $query->set(array(
        'published' => 0
    ));
    $query->prepare();
    $query->stmt->execute();
}
    Giant Dad
    12 сентября 2022, 11:36
    0
    У меня есть только событие mskladOnProductImport На него можно повесить? Или оно срабатывает на каждом ресурсе, а не до выгрузки?
    joxi.ru/5mdEGK0IJ49952
      Alexey
      12 сентября 2022, 11:48
      0
      C mSklad не работал, не могу подсказать. Но если проводить аналогию с mSync, то да: mskladOnProductImport — это должно быть событие на обработку одного товара(а mskladOnProductOffers — обработка товарного предложения). В общем, не годится. Если других событий нет и нет соответствующих настроек, то, полагаю, нужно лезть в класс компонента и дописывать свой код.
        Giant Dad
        12 сентября 2022, 13:45
        0
        Я в классе уже дописал, но как говорится, есть нюанс. Получается, что у нас в начале выгрузки все товары с сайта пропадут, и будут появляться по мере работы выгрузки? Как-то это не очень хорошее решение. Может как-то можно сверять массивы ID товаров на сайте и в выгрузке и потом, положим, по тем ID, что нет в выгрузке пробегаться, и отключать эти товары?
          Alexey
          13 сентября 2022, 08:15
          0
          В mSync после проведения импорта возвращается массив id товаров — обновлённых и созданных. И можно через плагин отловить эти товары и опубликовать одним запросом. А здесь нужно смотреть, но подозреваю, что нет такой фичи.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    5