Пробовал это
на сколько я понимаю, в таком виде каждый раз при событии у него будет писаться новая цена в old_price, собственно у меня вопрос, зачем?
Поясню. С ценами сделал бы так. На сколько я понимаю old_price у тебя все равно не используется.
Создаем плагин, вешаем на OnDocFormSave, в нем
if ($modx->event->name=="OnDocFormSave") // проверяем событие
if($resource->get('class_key') == 'msProduct'){ // проверяем что это товар
$id = $resource->get('id'); // получаем его id
$product = $modx->getObject('msProduct', $id); // получаем его содержимое
$price = $product->get('price'); // получаем его цену
$uah = ($modx->getOption('ms2_usd_value') * $price; // требуемые тебе манипуляции
$product ->set('old_price', $uah); // пишем в old_price твою скорректированную цену
$product->save(); // сохраняем, но на OnDocFormSave эт не надо помоему
Таким образом цена у тебя будет писаться только при сохранении товара (тут над учитывать что ms2_usd_value не будет менятся иначе все товары придется пересохранять)
И дальш уже расширяешь фильтр, хотя там просто сортировку по old_price надо сделать вроде