В примере у каждого товара 2 валюты: price - руб, и usdprice = $
2 поля в конфигурации: exchange - курс валюты для пересчета и addtprice - наценка в процентах от стоимости товара
При сохранении товара плагин возьмет начальную цену из TV поля start_price и сохранит в ресурс 2 цены в price и usd_price
<?php
/* Created by morngail.com */
$eventName = $modx->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;