mSync и Сбис - импорт остатков по складам

Здравствуйте!
К сожалению, период бесплатной поддержки автора закончился, поэтому пишу сюда. Есть ли здесь люди, разбирающиеся в мСинке? Нужен совет.
Задача была такая — синхронизировать Сбис и сайт. mSync для этого вполне подошел. Затем клиенту понадобилось выгружать остатки отдельно по каждому складу. И тут возник вопрос, как это сделать.
В файлах выгрузки сбиса нет списка складов с названиями и айдишками, в плагине пришлось намертво прописать айдишки складов. Дальше написал так:

// bdcb7226-8d84-434a-bb10-161dbd4c7896 - На Ленина
// 0a98ea85-fd18-42ec-8629-ab7c420c93b8 - На Столбова

if ($modx->event->name == 'mSyncOnProductOffers') {
    if (!isset($xml->Склад)) return;
    foreach ($xml->Склад as $warehouse) {
        $warehouseId = (string)$warehouse->attributes()->ИдСклада;
        $count = (string)$warehouse->attributes()->КоличествоНаСкладе;
        
        if ($warehouseId == 'bdcb7226-8d84-434a-bb10-161dbd4c7896') {
            $resource->set('sklad1', $count);
        }
        elseif ($warehouseId == '0a98ea85-fd18-42ec-8629-ab7c420c93b8') {
            $resource->set('sklad2', $count);
        }
    }

    $resource->save();
}
Сам оффер выглядит так:
<Предложение>
				<Ид>32efa14d-6eb7-48dc-86e1-ffa90e50f8b2</Ид>
				<Наименование>Духи концентрированные "14" Кожа, Черный перец, Табак (10мл)</Наименование>
				<БазоваяЕдиница Код="796" НаименованиеПолное="шт" МеждународноеСокращение="PCE">шт</БазоваяЕдиница>
				<Штрихкод>4650139030070</Штрихкод>
				<Цены>
					<Цена>
						<Представление> 0 RUB за PCE</Представление>
						<ИдТипаЦены>Базовая</ИдТипаЦены>
						<ЦенаЗаЕдиницу>2200.00</ЦенаЗаЕдиницу>
						<Валюта>RUB</Валюта>
						<Единица>PCE</Единица>
						<Коэффициент>1</Коэффициент>
					</Цена>
					<Цена>
						<Представление> 0 RUB за PCE</Представление>
						<ИдТипаЦены>Основной прайс</ИдТипаЦены>
						<ЦенаЗаЕдиницу>2200.00</ЦенаЗаЕдиницу>
						<Валюта>RUB</Валюта>
						<Единица>PCE</Единица>
						<Коэффициент>1</Коэффициент>
					</Цена>
				</Цены>
				<Склад ИдСклада="bdcb7226-8d84-434a-bb10-161dbd4c7896" КоличествоНаСкладе="11.0"/>
				<Количество>11.0</Количество>
			</Предложение>
Но ничего не работает. В логах модкса ошибки /core/xpdo/om/xpdoobject.class.php: 1333) Attempt to save lazy object: И далее — объект товара, но без склада. И все. В настройках импорта настроил связь Склад — поле товара sklad1.
Может, кто-нибудь писал уже подобные плагины? Можете подсказать, в чем я ошибаюсь?
pandaworks
06 сентября 2023, 12:24
modx.pro
1
334
0

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

pandaworks
06 сентября 2023, 13:33
0
Как оказалось, дело было не в плагине) Плагин работает. Оставляю решение для потомков)
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    1