|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
17.03.2013, 01:55 | #1 |
Пользователь
Регистрация: 18.03.2012
Сообщений: 24
|
Реализация поиска по цене с разными валютами.
Существует такой функционал, пользователь может задать при создании объявления валюту в которой он указывает цену к своему товару. Существует класс описывающий валюту, где есть коэффициент конвертации. Все бы хорошо, но возникает проблема как искать по цене, если валюты разные. У меня возникает только одна мысль, разрешить пользователю создавать объявление только в одной валюте, а уже при просмотре другие пользователе могут выбрать другую валюту. Есть ли еще какие-нибудь предложения?
|
17.03.2013, 02:16 | #2 |
somewhere else
Участник клуба
Регистрация: 17.07.2008
Сообщений: 1,409
|
Создайте базовую валюту и для всех остальных присвойте коэффициенты конвертации в базовую. Далее при поиске/добавлении любая цена конвертируется в базовую (и так же в базе и хранится кстати) и в случае чего конвертируется в соответствии с настройками отображения для пользователя итд. В данном случае само значение цены находится в модели, конечная валюта отображается во view и контроллер собственно контролирует вывод валюты (вытаскивает из модели нужное значение и передает view).
Такая схема впрочем накладывает определенные ограничения. Например так невозможно будет искать что-либо по точному значению цены (из за ошибок округления во float, хотя говорят что numeric-тип не имеет таких ограничений, так как работает не по IEEE754, а по какому-то другому стандарту/формату, короче это не "аппаратные" числа и якобы проблем с округлением у них нет). Недостаточно внимательно прочел ваше сообщение. Но в принципе все точно так же, при добавлении пользователем объявления его цена в выбранной валюте конвертируется в базовую валюту и сохраняется в базе. Это конечно дополнительные оверхеды на вычисление конечной цены, но зато более менее универсально.
"Тяжело в учении, легко в бою" - А.В. Суворов
Последний раз редактировалось Ivan_32; 17.03.2013 в 02:21. |
17.03.2013, 13:04 | #3 | |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
Цитата:
Иначе после первого изменения курса валют наступит рассогласование настоящей цены и величины, хранящейся в базе. Если что-то продается по 1000 рублей, то эта сумма не должна изменяться при смене курса, даже если в качестве базовой валюты выбрана какая-то другая. На самом деле базовая валюта нужна. Только в база должна храниться именно оригинальная валюта, а конвертироваться в базовую - по мере необходимости (например, при смене валютного курса или просто ежедневно). |
|
17.03.2013, 13:36 | #4 | |
Пользователь
Регистрация: 18.03.2012
Сообщений: 24
|
Цитата:
|
|
17.03.2013, 13:44 | #5 | |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Цитата:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
|
17.03.2013, 16:17 | #6 |
Пользователь
Регистрация: 18.03.2012
Сообщений: 24
|
|
17.03.2013, 17:11 | #7 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
Нерационально - это немного лучше, чем неправильно.
А вот когда именно осуществлять пересчет - при смене курса или при поиске - это открытый вопрос, который следует решать по-своему в зависимости от множества конкретных вещей. На мой взгляд, для большинства случаев наиболее оптимально осуществлять пересчет как раз при поиске, т.к. время выполнения этого пересчета много меньше, чем время выполнения запроса к БД. |
18.03.2013, 12:37 | #8 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,085
|
Валют много? Как на счет:
запрос на выборку от ххх рублей объединить с запрос на выборку от yyy долларов объединить с запрос на выборку от zzz евро Сам вопрос такого автоматического перевода спорен. Курсы валют не постоянны и различны в различных банках различных регионов. Если это онлайн покупки, то не фиксирована комиссия банка пользователя за конвертацию денег. Показывать и хранить цены нужно в том, что указал продавец. Поиск по другим валютам в идеале делать более интеллектуальным, т.е. если человек запросил от 1000 рублей, то не нужно делать конкретно от 32,552 долларов, ибо человека наверняка и товар за 32,5 доллара устроит в этом случае. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Лабораторная работа. Реализация алгоритмов выбора и поиска | BilliBong | Помощь студентам | 2 | 21.12.2011 01:59 |
Эл. учебник с использованием TTreeview+TWebbrowser, реализация поиска | nursak | Общие вопросы Delphi | 14 | 24.04.2011 01:59 |
Реализация функций поиска | MaxMad | Помощь студентам | 0 | 04.12.2010 15:16 |
Реализация метода поиска неисправности =\ | Minton87 | Помощь студентам | 0 | 27.12.2009 20:13 |
Реализация поиска ADO+Access | Artazzz | БД в Delphi | 5 | 13.10.2008 18:52 |