Плагин на событие mSyncOnProductOffers
Добрый день!
Помогите написать не большой плагин на событие mSyncOnProductOffers.
Что бы при выгрузке из 1с обновлялось поле у товара, созданное через msFieldsManager (поле называется remain).
Установлен компонент для учета остатков msProductRemains (он работает по такому-же событию и обновляет свои остатки)
Есть плагин, которые работает при сохранении товара.
Помогите написать не большой плагин на событие mSyncOnProductOffers.
Что бы при выгрузке из 1с обновлялось поле у товара, созданное через msFieldsManager (поле называется remain).
Установлен компонент для учета остатков msProductRemains (он работает по такому-же событию и обновляет свои остатки)
case 'mSyncOnProductOffers':
$xml = $modx->getOption('xml', $scriptProperties);
$field = $modx->getOption('mspr_msync_field', $scriptProperties, 'Количество');
if ( !is_object($xml) || !isset($xml->$field) ) break;
$product = $modx->getOption('resource', $scriptProperties);
$msProductRemains->saveRemains(array_merge($product->get('options')?:array(), array(
'product_id' => $product->get('id')
,'count' => (float) $xml->$field
,'set' => true
)));
break;
Нужно что бы при обновлении товара, добавлялось количество в поле remain, сейчас это работает на сохранение товара.Есть плагин, которые работает при сохранении товара.
<?php
$eventName = $modx->event->name;
switch($eventName) {
case 'OnDocFormSave':
if ($resource->get('class_key') == 'msProduct') {
$modx->addPackage('msproductremains', $modx->getOption('msproductremains.core_path',null,$modx->getOption('core_path').'components/msproductremains/').'model/');
$stock = 0;
$sql = "SELECT remains FROM {$modx->getTableName('msprRemains')} WHERE product_id = ".$id;
$query = $modx->prepare($sql);
$query->execute(array(0));
$remains = $query->fetchAll(PDO::FETCH_ASSOC);
foreach ($remains as $remain) {
$stock += $remain['remains'];
}
// $resource->setTVValue('stock', $stock);
$resource->set('remain', $stock);
$resource->save();
}
break;
}
Комментарии: 1
Может кому пригодится.
<?php
if ($modx->event->name == 'mSyncOnProductOffers') {
$remain = json_decode(json_encode($xml->Количество), TRUE);
$remain = $remain['0'];
$remain_temp = $resource->get('remain');
if ($remain != $remain_temp && $remain_temp != '') {
$resource->set('remain', $remain);
$resource->save();
}
}
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.