Обработчик получает на вход все параметры функции CCatalogProduct::GetOptimalPrice. В ответ он должен вернуть:
1. true - в этом случае работа метода будет продолжена и будет выбрана минимальная цена из возможных.
2. false - обработчик сообщает, что для заданных условий цен не найдено
3. массив, описывающий цену (стурктура дана по ссылке)
В Вашем примере я вижу только один параметр для функции обработчика, который к тому же ничего не возвращает. Это ошибочное поведение.