Сообщество
Логин
Пароль
Забыли пароль?     Регистрация
Ещё проектики
Рабочее время
Минималистичный счётчик рабочего времени онлайн
Общение / Веб версия / история курсов валют

История курсов валют

Ilyan
27 января 2014 12:48
Admin Пишет:
Просто убрать галочку "Учитывать историю курсов".
А что делать с блоком "Расходы по месяцам" (динамика)?

Там тоже все цифры совершенно неверные.
Admin
 
27 января 2014 12:53
Ilyan Пишет:
А что делать с блоком "Расходы по месяцам"
Убрать галочку "Учитывать историю курсов" :).
Ilyan
27 января 2014 13:40
Admin Пишет:
Убрать галочку "Учитывать историю курсов" :).
А, да.. :)

Хотя это как-то неочевидно, что галочка из одного блока влияет на другой. Тем более, что у блока "Расходы по месяцам" есть свой фильтр "Валюта".

И все-таки, нельзя ли учитывать транзакции в валютах без кода? Хотя бы в отчетах в основной валюте: ведь в настройках безкодовых валют дан курс именно к основной валюте, а значит пересчет по курсу самый тривиальный.
Admin
 
27 января 2014 13:44
Ilyan Пишет:
нельзя ли учитывать транзакции в валютах без кода?
А как учитывать историю курсов, если её (истории) для данной валюты нет?
Ilyan
27 января 2014 13:46
И ещё одна проблема, которую я предвидел ещё вчера: если основная валюта не рубль, то при ежедневном (?) пересчете курсов, изменяются курсы безкодовых валют.

Например, вчера я исправил курс у безкодовой валюты X к основной (ILS) на 1.000000, а сегодня он изменился на 0.995663

Таким образом, валюта X оказывается привязана не к ILS, а к рублю.
Ilyan
27 января 2014 13:48
Admin Пишет:
А как учитывать историю курсов, если её (истории) для данной валюты нет?
Давайте для начала (и простоты) предположим, что указанный в настройках курс - это и есть вся история. Т. е. данный курс верен в любой момент времени.
Ilyan
27 января 2014 13:55
На мой взгляд, настройки валют должны выглядеть следующим образом:

Каждая пользовательская валюта обязана иметь одну из настроек:
1. Код из списка
2. Фиксированный курс (коэффициент) к одной из валют из списка.

* кстати, список было бы неплохо сделать выпадающим.
** курс к рублю у основной валюты - ненужный пережиток прошлого
Admin
 
27 января 2014 13:57
Ilyan Пишет:
Давайте для начала (и простоты) предположим, что указанный в настройках курс - это и есть вся история
Увы, это во-первых не верно, во-вторых - текущая реализация истории курсов изначально предполагала ряд ограничений в своей работе, см. выше в этой теме.

Сделано то, что можно было сделать в текущих обстоятельствах. Галочку можно просто не использовать, если её работа не устраивает.

Насчёт изменения курсов безкодовой валюты - есть такая вещь. Подумаем как исправить.
Ilyan
27 января 2014 14:01
Этого на 99% хватит даже мне :)

А в будущем было бы неплохо:

1. Расширять список - добавлять истории курсов различных акций, фондов, индексов и т. п.
2. Разрешить создавать собственную историю курсов (вместо фиксированного)
Ilyan
27 января 2014 14:14
Admin Пишет:
Увы, это во-первых не верно
Это гораздо более верно, чем исключать транзакции из отчетов.

Большинство моих безкодовых валют имеют курс 1.000000 к шекелю, и это верно в абсолютно любой момент времени (хотя этим валютам я теперь могу просто дать код ILS).
А для "скидочных" валют с изредка изменяющимися курсами тоже гораздо лучше немного пожертвовать точностью старых отчетов, чем вообще не иметь возможности составить хоть один точный отчет.
maskman
27 января 2014 22:39
Ilyan Пишет:
раз уж теперь можно добавить практически любую валюту, добавьте, пожалуйста, EGP (египетский фунт)
Поддерживаю.
И спасибо за историю.
Admin
 
28 января 2014 12:56
maskman Пишет:
раз уж теперь можно добавить практически любую валюту, добавьте, пожалуйста, EGP (египетский фунт)
Готово.
Ilyan
28 января 2014 15:14
Кстати, решение Кирилла можно немного изменить для неполных таблиц курсов, чтобы для дней без курса использовался ближайший предыдущий курс:


SELECT sum(e.Val * r1.RateToRur / r2.RateToRur) FROM Expenses e
LEFT OUTER JOIN Rates AS r1
ON (SELECT MAX(DateID) FROM Rates WHERE CurrencyID = e.CurrencyID and DateID <= e.DateID) = r1.DateID AND e.CurrencyID = r1.CurrencyID
LEFT OUTER JOIN Rates AS r2
ON (SELECT MAX(DateID) FROM Rates WHERE CurrencyID = e.CurrencyID and DateID <= e.DateID) = r2.DateID AND r2.CurrencyID = 840;


Тогда можно позволить пользователям самим создавать свои истории курсов, сохраняя в БД курсы не на каждый день, а только на (обычно) небольшое количество указанных пользователем дат. А если вдруг кто-то слишком увлечется, можно ограничить общее количество курсов на пользователя.
Ilyan
28 января 2014 15:18
Заодно это решит и проблему с тратами в будущем - для них будет использоваться текущий курс.

* кстати, я не проверял, но если сейчас внести трату сразу после полуночи и создать отчет, результат точно будет определён?
Admin
 
28 января 2014 16:38
Ilyan Пишет:
если сейчас внести трату сразу после полуночи
Всё будет хорошо.
Ilyan
28 января 2014 20:13
Ещё можно попробовать оптимизировать наиболее частый случай отчетов в основной валюте, в которой обычно и сделано большинство трат:

Заменить

e.Val * r1.RateToRur / r2.RateToRur

на

CASE WHEN e.CurrencyID = 840 THEN e.Val ELSE e.Val * r1.RateToRur / r2.RateToRur END
Ilyan
29 января 2014 12:25
Admin Пишет:
Насчёт изменения курсов безкодовой валюты - есть такая вещь. Подумаем как исправить.
Неужели вам и над этим надо подумать годика 4?!

Алгоритм простой: автоматически обновлять курс валют надо только у валют с выставленной галочкой "Обновлять курс автоматически".

Из-за безкодовых валют я не могу пользоваться ни отчетами с историей (из-за неучитываемых трат), ни отчетами без истории (из-за ежедневно сбивающихся курсов)!
bdox
4 февраля 2014 17:41
Добрый день,

Возможно я что то не правильно делаю и постю(пощу) не там
Есть проблема я купил валюту (указала в обмене за сколько купил т.е. вычислился курс), можно ли к этим деньгам прикрутить этот курс, т.е. если я расходую и делаю отчет в рублях что бы использовался этот курс для рубля(а не тот который автоматический или тот который статический глобальный)? Сейчас можно указать глобальный статический курс, и изменение его будет сказываться на других курсах.
maskman
4 февраля 2014 17:59
Алмаз Пишет:
Возможно я что то не правильно делаю и постю(пощу) не там
Не давно начали обсуждать похожую тему
http://www.drebedengi.ru/?module=forumMessageList&topic_id=7316
Admin
 
4 февраля 2014 18:17
Алмаз Пишет:
можно ли к этим деньгам прикрутить этот курс
Здравствуйте,
вопрос не совсем понятен, уточните что значит "прикрутить"? Когда вы фиксируете обмен в системе, вы явно указываете сколько купили и сколько продали, и на основе этих данных автоматически вычисляется курс данной операции.

К курсам валют, задаваемых в настройках валют (вручную или через автообновление) это не имеет никакого отношения.
Ilyan
5 февраля 2014 10:40
Admin Пишет:
Насчёт изменения курсов безкодовой валюты - есть такая вещь. Подумаем как исправить.
А воз и ныне там.

Неужели этот баг окажется тем самым, который "не исправляется по полгода" (из темы "Альтернатива дребеденьгам"?
Admin
 
5 февраля 2014 12:25
Ilyan Пишет:
Неужели этот баг окажется тем самым
Вполне возможно. Это не простая проблема.
Maxim Hegel
5 февраля 2014 17:04
Admin Пишет:
Вполне возможно. Это не простая проблема.
И в чём же сложность, простите?
Вам же уже даже варианты предложили.
Admin
 
5 февраля 2014 18:10
Maxim Hegel Пишет:
И в чём же сложность, простите?
В том, что внутри системы все курсы хранятся в рублях и на это повязано много разной логики.
Ilyan
6 февраля 2014 12:15
Может быть опять зал сможет помочь?

Ежедневное обновление курсов - все-таки, довольно обособленная операция, насколько я понимаю.

Для валют с кодом вы храните всю историю (тысячи курсов для каждой) к рублю. Логично предположить, что при ежедневном обновлении просто добавляется 1 новый курс. И он же используется для отчетов с выключенной историей. (пожалуйста, не разочаруйте меня, сказав, что вся история каждый день перегружается полностью.)

Судя по тому, что транзакции в валютах без кода безжалостно отбрасываются в отчетах с включенной историей, для этих валют нет вообще никакой истории курсов, а есть только "текущий курс". Значит, скорее всего существует отдельная таблица "текущих курсов", которая используется при составлении отчетов с выключенной историей.

И судя по всему, в этой таблице вы храните не сам курс к основной валюте, который вводит пользователь, а курс к рублю, пересчитанный на его основе. И проблема в том, что
этот курс вы сами никогда не обновляете, а курс, который я вижу в настройках меняется из-за того, что изменился курс моей основной валюты к рублю.

Что, на мой взгляд, можно сделать:

1. Для валют без указанного пользователем кода, хранить код основной валюты (если у основной валюты он есть).

2. Для каждой валюты хранить дополнительный "курс": для валют с кодом он всегда будет 1, для валют без кода - тот курс, что вводит пользователь.

3. Теперь, при обновлении таблицы "текущих курсов", надо просто взять курс валюты по коду (а он теперь будет у ~100% валют), умножить на дополнительный курс - и voilà.

P.S. Да, я знаю, что в каких-то мелочах решение неполное (например, надо ещё что-то делать при смене пользователем основной валюты), но если мои основные предлоложения верны, а вы вместо решения проблемы собираетесь придираться, то сэкономьте свое время, не отвечайте.
Ilyan
20 февраля 2014 19:19
Если вы не собираетесь исправлять автообновление курсов валют без кода, я не буду продлевать Premuim в течении 2.4 месяца (с 15 марта)

100 рублей, конечно, не деньги, но должен же я как-то выразить свой протест :)
Ilyan
17 марта 2014 10:17
На всякий случай, напоминаю, что уже 2 дня сервис несет убытки от непродления моей подписки :)
Admin
 
17 марта 2014 10:53
Ilyan Пишет:
но должен же я как-то выразить свой протест
Протест принят, будем иметь ввиду, но пока нет возможности что-то обещать.
Ilyan
16 декабря 2014 17:18
В связи с нестабильностью рубля проблема становится очень актуальной - валюты, которые должны быть привязаны к основной валюте (шекелю), на самом деле привязаны к рублю.
Admin
 
16 декабря 2014 17:33
Ilyan Пишет:
валюты, которые должны быть привязаны к основной валюте (шекелю), на самом деле привязаны к рублю.
Здравствуйте.
Уточните, в чём именно проблема проявляется?
Ilyan
16 декабря 2014 19:01
Для бухгалтерий с основной валютой отличной от RUB у валют БЕЗ автоматического обновления курса курс ежедневно сбивается.

https://drive.google.com/file/d/0By50NczJWxY2TEtaX0pCT3ZjSU0/view?usp=sharing
Admin
 
16 декабря 2014 19:04
Да, плохо.
Надо что-то думать.
Ilyan
16 декабря 2014 19:33
Admin Пишет:
Надо что-то думать.
Посмотрите пост от 6 февраля 12:15
  Сюда 1 2 3
Чтобы отвечать на сообщения - зарегистрируйтесь и войдите в личный кабинет.