1. Стандартная реализация БУС выводит наиболее выгодную цену в зависимости от прав пользователя, задачи с переключением цен как правило не возникает;
2. Если требуется показывать клиенту только одну, назначенную ему цену, достаточно указать в настройках комплексного компонента bitrix:catalog параметр PRICE_CODE - наименование типа цены;
3. Если очень хочется переключатель в корзине, придется получить объект корзины пользователя для текущего сайта, после чего обойти товары (BasketItems), сделав им setFields для параметров CURRENCY и (возможно) PRICE, после чего сохранить корзину и получить ее стоимость. Возможно, вам поможет
этот блог.
На самом деле, идея со сменой типа цены в корзине - бредовая. А вот п.2 делал, чтобы посетитель видел только свою, партнерскую цену.