В примере у каждого товара 2 валюты: price - руб, и usdprice = $
2 поля в конфигурации: exchange - курс валюты для пересчета и addtprice - наценка в процентах от стоимости товара
При сохранении товара плагин возьмет начальную цену из TV поля start_price и сохранит в ресурс 2 цены в price и usd_price
event->name; switch($eventName) { case 'OnDocFormSave': if ($mode == modSystemEvent::MODE_UPD) { $id = $resource->get('id'); $exchange = $modx->getOption('exchange'); $addprice = $modx->getOption('additprice'); $origprice = $resource->getTVValue('start_price'); $usdprice = round($origprice*(100 + $addprice)/100); $rubprice = round($usdprice*$exchange); $resource->setTVValue(71, $usdprice); $res = $modx->getObject('msProduct', $id); $res->set('price', $rubprice); $res->save(); $res->clearCache(); } break; } return true;