Синхронизация остатков по нескольким складам для дополнения mSync 1.1.0
Добрый день!
Может делал кто плагин для выгрузки остатков из 1с по нескольким складам?
Может делал кто плагин для выгрузки остатков из 1с по нескольким складам?
Поблагодарить автора
Отправить деньги
Комментарии: 3
есть вот такой плагин на событие mSyncBeforeProductOffers но он не работает
<?php
/**
* @var modX $modx
* @var msProduct $resource
* @var SimpleXMLElement $xml
* */
// опция - склад
$stockStore = [
'butovo_count' => 'Бутово',
'postav_count' => 'Склад поставщик',
'osn_count' => 'Основной склад',
'jelezo_count' => 'Планета Железяка',
];
if ($modx->event->name === 'mSyncOnProductOffers') {
/** @var array $scriptProperties */
/** @var Sync $Sync */
$corePath = $modx->getOption('sync_core_path', null,
$modx->getOption('core_path', null, MODX_CORE_PATH) . 'components/msync/');
if (!$Sync = $modx->getService('msync', 'mSync', $corePath . 'model/msync/',
['core_path' => $corePath])
) {
return;
}
$service = 'msync';
if (!$Sync->loadSyncTools($service)) {
return;
}
/** @var xPDOObject $object */
$object = $modx->getOption('object', $scriptProperties, null, true);
if (!$object OR !$Sync->isSyncObject($object, $service)) {
return;
}
$syncType = $object->get('sync_type');
$syncAction = $object->get('sync_action');
$syncData = $object->get('sync_data');
if ($syncType === 'product' AND $syncAction === 'import') {
$response = $Sync->SyncTools->getData(['stock', 'bystore'], ['product.id=' . $object->get('sync_id'), 'groupBy' => 'variant']);
if ($response->isSuccessful()) {
$tmp = $response->getResponseBody();
$tmp = isset($tmp['rows']) ? $tmp['rows'] : [];
$tmp = reset($tmp);
$tmp = isset($tmp['stockByStore']) ? $tmp['stockByStore'] : [];
$keys = array_flip($stockStore);
foreach ($tmp as $row) {
if (in_array($row['name'], $stockStore)) {
$syncData[$keys[$row['name']]] = $row['stock'];
}
}
$object->set('sync_data', $syncData);
}
}
}
if ($modx->event->name === 'OnBeforeDocFormSave') {
if (!$syncData = $resource->get('sync_data')) {
return;
}
foreach ($stockStore as $k => $v) {
if (isset($syncData[$k])) {
$resource->set($k, $syncData[$k]);
}
}
}
Это код плагина для другого компонента. Естественно с компонентом mSync он не будет работать.
Да для мой склад(ваш компонент, вы же его и исправляли не так давно), как то его надо поменять, но с синтаксисом проблема, может конечно он совсем не подходит
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.