titov-vv/jal

Ошибка при работе отчётов

Closed this issue · 28 comments

Некоторые отчёты не работают. Они должны работать или они в разработке?

  1. Раздел Holdings, вообще пусто, ничего не отображает при выборе любой даты
  2. Раздел Reports, опция Any accounts не выбирается
  3. Раздел Reports, если выбрать Income\Spending
    2021-04-09 14:31:50,841 - CRITICAL - EXCEPTION: ['Traceback (most recent call last):\n', ' File "C:\Users\request\AppData\Roaming\Python\Python39\site-packages\jal\widgets\main_window.py", line 255, in onRunReport\n self.reports.runReport(report_type, begin, end, self.ReportAccountBtn.account_id, group_dates)\n', ' File "C:\Users\request\AppData\Roaming\Python\Python39\site-packages\jal\reports\reports.py", line 55, in runReport\n self.model.prepare(begin, end, account_id, group_dates)\n', ' File "C:\Users\request\AppData\Roaming\Python\Python39\site-packages\jal\reports\income_spending_report.py", line 272, in prepare\n self._root = ReportTreeItem(begin, end, -1, "ROOT") # invisible root\n', ' File "C:\Users\request\AppData\Roaming\Python\Python39\site-packages\jal\reports\income_spending_report.py", line 17, in init\n self._m_s = int(datetime.utcfromtimestamp(begin).strftime('%-m'))\n', 'ValueError: Invalid format string\n']
  4. При выборе By category
    2021-04-09 14:33:32,754 - CRITICAL - EXCEPTION: ['Traceback (most recent call last):\n', ' File "C:\Users\request\AppData\Roaming\Python\Python39\site-packages\jal\widgets\main_window.py", line 253, in onRunReport\n self.reports.runReport(report_type, begin, end, self.ReportCategoryEdit.selected_id, group_dates)\n', ' File "C:\Users\request\AppData\Roaming\Python\Python39\site-packages\jal\reports\reports.py", line 55, in runReport\n self.model.prepare(begin, end, account_id, group_dates)\n', ' File "C:\Users\request\AppData\Roaming\Python\Python39\site-packages\jal\reports\category_report.py", line 51, in prepare\n self.report_failure.emit(g_tr('Reports', "You should select category to create By Category report"))\n', "AttributeError: 'CategoryReportModel' object has no attribute 'report_failure'\n"]

Обычно работают :) Но этим функционалом пока кроме меня пользуются мало, поэтому могут быть нюансы.
По пунктам:

  1. Holdings отображается только для счетов типа Ivestment - чаще всего там пусто и без ошибок, если нет ни одного такого счёта. Если есть Investment счет и на нём открытые позиции.... надо подумать, т.к. вообще в этом случае хоть часть информации должна быть.
  2. Да, что-то с ней сломалось, проверю. Не должно так быть.
  3. Если я правильно понял, то вы запускаете на Windows. Судя по ошибке это может быть связано с региональными настройки. У меня ограниченные возможности по крос-платформенному тестированию, но это думаю смогу проверить.
  4. Судя по всему вы оставили пустым собтсвенно поле "Category" - по какой именно категории сделать отчёт и это должно было вызвать сообщение об ошибке, но немного не такое. Проверю.

Вообще по хорошему отчёты надо переработать, но я пока ещё не решил как и когда. Чтобы интерфейс к ним был более единообразым.

Я с помощью отчётов хочу синхронизировать аккаунты в IB и в JAL, чтобы потом уже выгрузить итоговый для налогов. Т.к. операций много, без отчётов это будет проблематично.

  1. Не знаю что это за тип счёта, видимо у меня его нет? :) хотелось увидеть свои открытые позиции чтобы сверить с IB
  2. Ок
  3. Да, win10 x64. Если надо что-то проверить, я могу без проблем.
  4. Да, было пустое. Если выбрать работает Fees. Остальные пункты Dividends, Results of Investments пустые, ошибок нет.

Нормальное желание, отчасти по этому JAL и создавался (чтобы IB до цента совпадал было бы неплохо ещё тут голосовать )

1. Он у всех есть. Когда создавали счет в Data->Accounts слева вверху выпадающий список типов счетов. Если при выборе Investment ничего нет, то значит вы создали с другим типом. Для уже существующего можно поменять - кликнуть правой кнопкой на существующем счёте, выбрать новый тип и потом подтвердить галочкой справа вверху.

3. Хорошо, я посмотрю у себя, если останутся вопросы, то напишу.

4. Надо вспомнить. Этот отчёт изначально создавался для расходов - логично что комиссии попали, а остальное нет. Кажется я где-то там лишнее ограничение сделал, но надо вспомнить почему.

  1. Теперь понял. Были счета типа CASH. Правой кнопкой не сработало. Я их просто пересоздал в разделе Invesments. Но в Holdings по прежнему пусто.
    image

1. Хм... Правая кнопка могла не сработать, т.к. она не вошла ещё в релиз. Если вы с pypi 2021.04.1 ставили, то да, там её нет, не подумал. А Data->Rebuild Ledger->Full делали после пересоздания счетов? (в целом должны были после нового импорта транзакций, но вдруг забыли...)

4. Ошибку подправил, это просто остатки старого кода, когда отчёты были ужаснее. Дивиденды не попали - это ограничения того как отчёт работает - не помню по какой причине (вероятно из-за нехватки времени) он был сделан только по операциям типа Income/Spending. Запишу в TODO list переделать его независимо от типа транзакции. Так что пока это не баг, это фича... #37

  1. Не получилось сделать rebuild. С галочкой фаст и без неё ошибка
    2021-04-09 16:39:51,832 - CRITICAL - EXCEPTION: ['Traceback (most recent call last):\n', ' File "C:\Users\request\AppData\Roaming\Python\Python39\site-packages\jal\db\ledger.py", line 561, in showRebuildDialog\n self.rebuild(from_timestamp=rebuild_dialog.getTimestamp(),\n', ' File "C:\Users\request\AppData\Roaming\Python\Python39\site-packages\jal\db\ledger.py", line 554, in rebuild\n g_tr('Ledger', ", new frontier: ") + f"{datetime.utcfromtimestamp(self.current['timestamp']).strftime('%d/%m/%Y %H:%M:%S')}")\n', "KeyError: 'timestamp'\n"]

4 Ну это совсем не критично, так на будущее

  1. А вот это очень странная ошибка... У меня закралось одно подозрение... Вы написали: "Были счета типа CASH. Правой кнопкой не сработало. Я их просто пересоздал в разделе Invesments." - т.е. вы удалили старые счета, потом создали новые, правильно? Просто ошибка очень странная, такое ощущение, что в базе данных что-то не то и я думаю, что может быть при удалении счетов что-то пошло не так (прямо скажем это не самая часто используемая операция и я допускаю в ней ошибки...). Возможно каким-то образом что-то задвоилось - вы когда, в главном окне операции видите по счёту - там ничего не двоится, странностей нет?

Я бы рекомендовал в этой ситуации с нуля всё импортировать и посмотреть ещё раз (для этого достаточно файл jal.sqlite удалить, чтобы обнулить всё).

Ну если быть более точным то сначала создал в разделе Investments, потом удалил из Cash

Ну если быть более точным то сначала создал в разделе Investments, потом удалил из Cash

О, ну тогда подозрения о задвоении данных усиливаются... Я посмотрю такой случай повнимательнее.

В окне Operations теперь совсем пусто. Кажется я сломал базу окончательно. А есть способ почистить данные, но оставить настройки справочников?

В окне Operations теперь совсем пусто. Кажется я сломал базу окончательно. А есть способ почистить данные, но оставить настройки справочников?

Пока к сожалению не дошли руки сделать это. Хотя в планах есть в виде чего-то в виде стартового wizard'а, чтобы заодно перевести названия, которые хранятся в БД и сейчас без перевода.
Если не боитесь залезть в кишочки, то можно взять что-нибудь типа Sqlite Studio и я могу сказать какие таблицы почистить.
Или, если не жалко, можете выслать мне базу - я вам в ответ вышлю почищенную, а мне её внутренности подскажут что могло пойти не так при удалении счетов.

Базу могу дать, внутрь лезть нечем. Как её проще выгрузить?

Либо просто взять файл jal.sqlite в каталоге с программой, либо сделать Data->Backup

Ок, выслал

Вы знаете, а похоже с ней всё хорошо - она пустая. В том смысле, что как раз нет ни одной транзакции, а все справочные данные нормально.

Складывается впечатление, что после пересоздания счетов что-то пошло не так с импортом, либо вы случайно забыли заново импортировать транзакции (ведь когда вы удаляете счёт, jal удаляет все операции по нему...)

Т.е. сейчас надо просто попробовать сделать импорт отчёта IB - если будут ошибки это плохо. Потом rebuild - если при импорте не было ошибок, то он должен пройти успешно. И после этого смотреть Holdings.

А, ещё можно зайти в Data->Assets, выбрать Stocks и указать источником данных NYSE/Nasdaq - далее через Data->Load quotes подтянуть котировки и Hodings будет выглядеть поинтереснее (ещё там потом правая кнопка должна работать для расчёта налогов по активу)

Спасибо, загрузил заново, сделал ребилд. holdings заработало.
Стало гораздо лучше!
Единственное что у долларов, канадских долларов и рублей после запятой слишком много знаков.

image

И для активов, торгуемых в Канаде не смог выбрать биржу (если можно добавить TSE, TSX)

Со знаками руки не дошли.... там надо хорошую логику сделать. Будет, но позже.

Про биржу - я не сталкивался с этими.... надо поискать, где котировки есть, чтобы обновлять...

Т.е. остался в итоге только 3-й пункт:

3. Проблему воспроизвёл, причину понял. Думаю завтра разберусь 100%, но возможно недо будет python обновлять (пока 100% не скажу, может обойду кривой дорогой...)

1. не был ошибкой, разобрались
2, 3, 4 исправлены

  1. Теперь работает, отлично. Котировки правда не загружает пока даже с NYMEX, может ещё что-то надо настроить?

  2. Any не работает, но теперь корректно отрабатывается и просит выбрать счёт.

  3. Теперь ошибка другая
    image

  4. Работает!

  5. Ещё заметил, опция group by dates почему то срабатывает, но не до конца, некоторые запись всё равно не группирует
    image

  1. Если выбрать Profit\Loss Previous year в выборку кроме прошлого года попадает ещё январь и февраль 2021
    Аналогично если выбрать с 1 января по 31 января попадает ещё февраль

1. Котировки будет загружать если есть открытые позиции на данную дату (чтобы не раздражать лишний раз источники бесплатных котировок). Также у ЦБ должен быть укзан нужный Data Source в Data->Assets (в будущем возможно это поле будет заполняться при импорте из отчёта IB на основе биржи, где торгуется бумага - мне надо подсобрать статистику по тому, какие там есть варианты бирж)
2. Не для всех отчётов возмжоно сделать корректные данные по нескольким счетам сразу - поэтому некотоыре отчёты принимают значение "любой счёт", некоторые выдают ошибку. Это правильно
3.\ Да, тут я поспешил - это исправлено в 81912bd - там одна строчка. Можете или руками поправить или войдёт в следующий релиз вместе с канадскими котировками...
5.\ так, ну третья строка с другой датой открытия, тут правильно. Вот почему первая и вторая не сложились... так не должно быть, но чтобы разобраться мне нужны детали транзакций (как минимум точное время открытия-закрытия позиций - возможно что-то было сделано недалеко от полуточи и из-за смещения таймозон одна из операций "уехала" на другой день.... пока только предположение)
6.\ Это не совсем ошибка, скорее недоработка. В этом отчёте скорее всего ещё и пару столбцов некорректно считаются - будет время переработаю его. Пока запишу себе памятку, что даты надо проверить

5. Данные в письме получил - в причина почему 2, а не 3 строки в целом понятна. Думаю подправлю скоро.

Попробовал релиз 2021.04.3

  1. Загрузились, в том числе канадские!
  2. Deals - any (хочу по счетам в долларах и евро и тд) выдаёт ошибку
    image
  3. Работает, но от переключения счетов ничего не меняется, и цифра в total странная. Как будто иногда Total в рублях, иногда в долларах. Или складывает разные валюты, не разобрался в чём именно ошибки, т.к. цифр много и пока это не срочно.
  4. ок
  5. Без изменений ADIL 3 строки.

2. Не понял этот момент. Отчёт Deals он по конкретному счёту. То есть 2 счёта сразу не получится. А по отдельности - нужно просто выбрать нужный (вместо Any).
3. Для Income/Spending счет не влияет - этот отчёт по всем счетам сразу за период. Он пересчитывается в базовую валюту (рубль).
5. Это я пока не успел перепроверить (но как и обсуждали - на налоговый отчёт это не влияет, там всё правильно)

  1. Fixed in 3ea2048