Ну, код самого магазина - грязный, да. Мне удалось выделить эту либу в чистый отдельный пакет. А изменения я делаю уже даже не из бизнес задач - в проекте и без последних изменений всё работает ЗЫ: на сайте у нас есть и разные типы продуктов, и разные виды оплаты и дофига разных типов скидок