Code Monkey home page Code Monkey logo

financisto's Introduction

Financisto

Build Status

About

Financisto is an open-source personal finance tracker for Android platform.

Features

  • Multiple accounts, multiple currencies
  • Home currency and exchange rates
  • Transfers with downloadable rates
  • Scheduled & recurring transactions
  • Split transactions
  • Hierarchical categories with custom attributes
  • Recurring budgets
  • Projects and payees
  • Filtering and reporting
  • Cloud backup (Dropbox, Google Drive)
  • Automatic daily backups
  • QIF/CSV import/export

License

See License

financisto's People

Contributors

dsolonenko avatar dtruebin avatar fbartnitzek avatar rp-rising-star avatar rudloff avatar tiberiusteng avatar yetanothercoder avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

financisto's Issues

Повышение удобств использование программы

Уважаемый автор Finanacisto! Для более удобного использования Вашей программы, сделайте поиск подкатегорий также как и получателя, по ходу ввода букв. А также возможность выделить несколько транзакций для их дальнейшей обработки, например удаления. Еще пожелание - вводить сумму за купленный товар только через калькулятор, при этом возможно и сам код будет уменьшен. Спасибо за такую замечательную программу! Пользуюсь ей с 2012г!!!

SQL error at reconciling transactions: quote missing

android.database.sqlite.SQLiteException: unrecognized token: "'RC WHERE is_template=0 AND parent_id=0 AND _id IN (14274)" (code 1): , while compiling: UPDATE transactions SET status='RC WHERE is_template=0 AND parent_id=0 AND _id IN (14274)
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
at android.database.sqlite.SQLiteProgram.(SQLiteProgram.java:58)
at android.database.sqlite.SQLiteStatement.(SQLiteStatement.java:31)
at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1677)
at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1608)
at ru.orangesoftware.financisto.db.DatabaseAdapter.runInTransaction(DatabaseAdapter.java:1332)
at ru.orangesoftware.financisto.db.DatabaseAdapter.reconcileSelectedTransactions(DatabaseAdapter.java:1300)

Editing existing template causes a NullPointerException

Journal -> "+" -> Template -> "Edit":

java.lang.RuntimeException: Unable to start activity ComponentInfo{ru.orangesoftware.financisto/ru.orangesoftware.financisto.activity.TemplatesListActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageView.setVisibility(int)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2740)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2801)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1548)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:163)
at android.app.ActivityThread.main(ActivityThread.java:6356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:791)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageView.setVisibility(int)' on a null object reference
at ru.orangesoftware.financisto.activity.TemplatesListActivity.internalOnCreate(TemplatesListActivity.java:57)
at ru.orangesoftware.financisto.activity.AbstractListActivity.onCreate(AbstractListActivity.java:76)
at ru.orangesoftware.financisto.activity.BlotterActivity.onCreate(BlotterActivity.java:117)
at android.app.Activity.performCreate(Activity.java:6861)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2693)
... 9 more

Folder for photo

New photo save to /picture folder instead /financisto/picture. Old photo dont link to old transaction

Entities->Categories->Edit => NPE

Caused by my #32:

Caused by: java.lang.NullPointerException
                      at ru.orangesoftware.financisto.activity.CategoryActivity.updateIncomeExpenseType(CategoryActivity.java:177)
                      at ru.orangesoftware.financisto.activity.CategoryActivity.selectParentCategory(CategoryActivity.java:352)
                      at ru.orangesoftware.financisto.activity.CategoryActivity.onCategorySelected(CategoryActivity.java:439)
                      at ru.orangesoftware.financisto.activity.CategorySelector.selectCategory(CategorySelector.java:154)
                      at ru.orangesoftware.financisto.activity.CategoryActivity.initCategorySelector(CategoryActivity.java:151)
                      at ru.orangesoftware.financisto.activity.CategoryActivity.onCreate(CategoryActivity.java:94)
                      at android.app.Activity.performCreate(Activity.java:5231)
                      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159) 

fixing...

enter payee into filter like autofill field

if You have a lot of Payees it is a pain to select the right when creating a filter.

it would be good to have the field in the same form like at add transaction screen - autofill form - or combined drop-down combo with autofill at top.

financisto - filter drop down box

Add Transaction: Payee textbox triggers Autofill dropdown

With Android 8.0 and the new Autofill service enabled, selecting the Payee textbox in the Add Transaction screen triggers the Autofill dropdown box. After saving the transaction, I get the "Save password to ***" popup at the bottom of the screen.

I attached some screenshots, just in case if there was any confusion :)

screenshot_20180207-215418
screenshot_20180207-215507

google drive backup issues

also when case #35 is not cleared - I begun to use google drive backup option. but, something strange happens also with this kind of cloud backup.

1./ the app creates folder again even if there is already such folder = two folders financisto

2./ the app doesn't recognize backup files copied into the backup folder manually (sometimes yes, later no more) = cannot go back from external backup source

3./ folder leveling doesn't work - e.g. android/financisto creates folder called "android/financisto"

  • there are more weird things mostly when moving application from one phone to another...

Operations are not filtered by minutes in Account list

Steps to reproduce:

  1. Open some account
  2. Open Filter dialog
  3. Select Period, set User Period 29.07.2017 11:24 - 29.07.2017 23:59
  4. Press ok
  5. Select Period again and check User Period
    expected value: 29.07.2017 11:24 - 29.07.2017 23:59
    actual value: 29.07.2017 11:00 - 29.07.2017 23:59

In the account list operations prior 11:24 are not filered out

Import is broken

screenshot_2018-01-24-02-09-48-833_ru orangesoftware financisto
screenshot_2018-01-24-02-10-16-709_ru orangesoftware financisto
Wrong import path
The right path is /storage/emulated/0/Download/momentum.csv.
If I put a right path import is successful.
It doesn't work at local storage and cloud services.

Device: Xiaomi Mi Max / MIUI Global 9.1 / Android 7.0

Alternative download source

Being an open source product, would you mind making the APK available outside of Google's "walled garden" – e.g. by adding it to the releases/ page? I'd gladly pick it from there then to host it via my F-Droid compatible repo, automatic updates included (whenever you add a new release with an APK attached). I know that due to some dependencies (e.g. GMS) the official F-Droid repo wouldn't accept the app as-is – but that's what my repo is for 😉

Преобразование транзакция-перевод на лету

Буду писать на русском, т.к. мой английский ужасен.
Прошу добавить очень важную фичу - возможность преобразования транзакция-перевод на лету. Т.е. кнопочку или переключатель, по которой можно быстро из транзакции сделать перевод и наоборот.
Нужно например, когда ты купил что-то кому-то (может быть даже через sms платеж завелся), а потом тебе за него отдали деньги (надо сделать эту транзакцию переводом на кошелек).

Format for cryptocurrencies :)!

Hi!

I think it would be a good idea to support a format for cryptocurrencies, because decimals are not enough for that.

I have used this application for years and I wanted to make a donation, but I never had the opportunity because in my country (Venezuela) you can not access dollars freely and much less from bank cards. Now I have been able :), I am very grateful, it is the best application of my life.

App crashes when image is attached

Expected behavior  

The app should remain stable and not crash when users are using the app and inserting necessary info involved in a transaction such as images which serve as evidence of transaction. This is a financial app and such features supporting transaction evidence are highly important.
 
 

Actual behavior  

The app crashes when user tries to attach image in the transaction field.
 
 

How to reproduce

1.     Download the latest release of the app from playstore.
2.     Install and launch the app and grant all permissions (Camera, Storage e.t.c)
3.     Create your account. Here is how to create account:
        Tap the ‘+’ icon at the bottom left corner of the screen
        Fill in your details such as Title, Currency, Opening Amount in the provided space and click ok to save.
4.     Proceed by clicking on Blotter icon which is the icon next to Accounts at the top of the display.
5.     Tap the ‘+’ icon at the bottom left of the display.
6.     Fill in the details or you can just scroll to the Attach picture section
7.     Click on the  Attach picture
8.     Select camera or Choose images (to select from pictures already available in gallery) It will be observed that the app crashes after this action, hence, the bug
 

  • Browser/App version: app version 1.8.1
  • Operating system: Android 6.0
     

Recording Of The Bug  

https://youtu.be/1fiNYNZpquw
 

log report

06-01 17:51:16.909 V/WindowManager(945): Changing focus   from Window{f64e55 u0 ru.orangesoftware.financisto/ru.orangesoftware.financisto.activity.TransactionActivity}   to Window{d72fbed u0 PopupWindow:c47755d} Callers=com.android.server.wm.WindowManagerService.addWindow:2848   com.android.server.wm.Session.addToDisplay:171   android.view.IWindowSession$Stub.onTransact:124   com.android.server.wm.Session.onTransact:133    
06-01 17:51:16.910 I/WindowManager(945): Focus moving from   Window{f64e55 u0 ru.orangesoftware.financisto/ru.orangesoftware.financisto.activity.TransactionActivity} to Window{d72fbed u0   PopupWindow:c47755d}   
06-01 17:51:16.932 I/BufferQueueProducer(274):   [PopupWindow:c47755d](this:0x7f805da800,id:1370,api:1,p:7712,c:274) connect(P): api=1 producer=(7712:ru.orangesoftware.financisto) producerControlledByApp=true   
06-01 17:51:16.957 I/WindowManager(945): Losing delayed   focus: Window{f64e55 u0 ru.orangesoftware.financisto/ru.orangesoftware.financisto.activity.TransactionActivity}   
06-01 17:51:23.098 D/Resources(7789): resEntryNameFinal =   ru_orangesoftware_financisto_ic_action_tick   
06-01 17:51:23.099 D/Resources(7789): resEntryNameFinal =   ru_orangesoftware_financisto_ic_action_double_tick   
06-01 17:51:23.102 D/Resources(7789): resEntryNameFinal =   ru_orangesoftware_financisto_gd_quick_action_top_frame   
06-01 17:51:23.105 D/Resources(7789): resEntryNameFinal =   ru_orangesoftware_financisto_gd_quick_action_grid_bottom_frame   
06-01 17:51:23.105 D/Resources(7789): resEntryNameFinal =   ru_orangesoftware_financisto_gd_quick_action_arrow_up   
06-01 17:51:23.106 D/Resources(7789): resEntryNameFinal =   ru_orangesoftware_financisto_gd_quick_action_grid_arrow_down   
06-01 17:51:23.107 D/Resources(7789): resEntryNameFinal =   ru_orangesoftware_financisto_actionbar_add_big   
06-01 17:51:23.108 D/Resources(7789): resEntryNameFinal =   ru_orangesoftware_financisto_ic_action_transfer   
06-01 17:51:23.110 D/Resources(7789): resEntryNameFinal =   ru_orangesoftware_financisto_actionbar_tiles_large   
06-01 17:51:23.115 D/Resources(7789): resEntryNameFinal =   ru_orangesoftware_financisto_ic_action_arrow_left_bottom   
06-01 17:51:23.117 D/Resources(7789): resEntryNameFinal =   ru_orangesoftware_financisto_ic_action_arrow_right_top   
06-01 17:51:23.118 D/Resources(7789): resEntryNameFinal =   ru_orangesoftware_financisto_ic_action_arrow_top_down   
06-01 17:51:23.119 D/Resources(7789): resEntryNameFinal =   ru_orangesoftware_financisto_ic_action_share   
06-01 17:51:23.123 D/QUERY class   ru.orangesoftware.financisto.model.Account(7789):   select e._id as _id, e.card_issuer as e_card_issuer, e.closing_day as   e_closing_day, e.creation_date as e_creation_date, e0.decimal_separator as   e0_decimal_separator, e0.decimals as e0_decimals, e0.group_separator as   e0_group_separator, e0.is_default as e0_is_default, e0.name as e0_name, e0.symbol as e0_symbol, e0.symbol_format   as e0_symbol_format, e0._id as e0__id, e0.title as e0_title, e.is_active as   e_is_active, e.is_include_into_totals as e_is_include_into_totals, e.issuer   as e_issuer, e.last_account_id as e_last_account_id, e.last_category_id as   e_last_category_id, e.last_transaction_date as e_last_transaction_date, e.total_limit   as e_total_limit, e.note as e_note, e.number as e_number, e.payment_day as   e_payment_day, e.sort_order as e_sort_order, e.total_amount as   e_total_amount, e.type as e_type, e._id as e__id, e.title as e_title from   ACCOUNT as e inner join currency as e0 on e0._id=e.currency_id order by   e_is_active desc, e_sort_order desc, e_title asc   
06-01 17:51:23.129 D/Financisto(7789): About to update tab   accounts   
06-01 17:51:23.131 D/QUERY class   ru.orangesoftware.financisto.model.Account(7789):   select e._id as _id, e.card_issuer as e_card_issuer, e.closing_day as   e_closing_day, e.creation_date as e_creation_date, e0.decimal_separator as   e0_decimal_separator, e0.decimals as e0_decimals, e0.group_separator as   e0_group_separator, e0.is_default as e0_is_default, e0.name as e0_name, e0.symbol as e0_symbol, e0.symbol_format   as e0_symbol_format, e0._id as e0__id, e0.title as e0_title, e.is_active as   e_is_active, e.is_include_into_totals as e_is_include_into_totals, e.issuer   as e_issuer, e.last_account_id as e_last_account_id, e.last_category_id as   e_last_category_id, e.last_transaction_date as e_last_transaction_date,   e.total_limit as e_total_limit, e.note as e_note, e.number as e_number,   e.payment_day as e_payment_day, e.sort_order as e_sort_order, e.total_amount   as e_total_amount, e.type as e_type, e._id as e__id, e.title as e_title from   ACCOUNT as e inner join currency as e0 on e0._id=e.currency_id order by   e_is_active desc, e_sort_order desc, e_title asc   
06-01 17:51:23.133 D/Financisto(7789): Tab accounts updated   in 4ms   
06-01 17:51:23.134 V/ActivityThread(7789): Performing   resume of ActivityRecord{13e9f0 token=android.os.BinderProxy@961eb69 {ru.orangesoftware.financisto/ru.orangesoftware.financisto.activity.MainActivity}}   
06-01 17:51:23.134 D/QUERY class   ru.orangesoftware.financisto.model.Currency(7789):   select e._id as _id, e.decimal_separator as e_decimal_separator, e.decimals   as e_decimals, e.group_separator as e_group_separator, e.is_default as   e_is_default, e.name as e_name, e.symbol as e_symbol, e.symbol_format as   e_symbol_format, e._id as e__id, e.title as e_title from currency as e where   (e_is_default=?)   
06-01 17:51:23.135 V/ActivityThread(7789): Performing   resume of ActivityRecord{9a64e67 token=android.app.LocalActivityManager$LocalActivityRecord@25cf414   {ru.orangesoftware.financisto/ru.orangesoftware.financisto.activity.AccountListActivity}}   
06-01 17:51:23.136 D/ActivityThread(7789):   ACT-AM_ON_RESUME_CALLED ActivityRecord{9a64e67 token=android.app.LocalActivityManager$LocalActivityRecord@25cf414   {ru.orangesoftware.financisto/ru.orangesoftware.financisto.activity.AccountListActivity}}   
06-01 17:51:23.137 D/QUERY class   ru.orangesoftware.financisto.model.Account(7789):   select e._id as _id, e.card_issuer as e_card_issuer, e.closing_day as   e_closing_day, e.creation_date as e_creation_date, e0.decimal_separator as   e0_decimal_separator, e0.decimals as e0_decimals, e0.group_separator as   e0_group_separator, e0.is_default as e0_is_default, e0.name as e0_name, e0.symbol as e0_symbol, e0.symbol_format   as e0_symbol_format, e0._id as e0__id, e0.title as e0_title, e.is_active as e_is_active,   e.is_include_into_totals as e_is_include_into_totals, e.issuer as e_issuer,   e.last_account_id as e_last_account_id, e.last_category_id as   e_last_category_id, e.last_transaction_date as e_last_transaction_date,   e.total_limit as e_total_limit, e.note as e_note, e.number as e_number,   e.payment_day as e_payment_day, e.sort_order as e_sort_order, e.total_amount   as e_total_amount, e.type as e_type, e._id as e__id, e.title as e_title from   ACCOUNT as e inner join currency as e0 on e0._id=e.currency_id order by   e_is_active desc, e_sort_order desc, e_title asc   
06-01 17:51:23.142 D/ActivityThread(7789):   ACT-AM_ON_RESUME_CALLED ActivityRecord{13e9f0 token=android.os.BinderProxy@961eb69 {ru.orangesoftware.financisto/ru.orangesoftware.financisto.activity.MainActivity}}   
06-01 17:51:23.142 V/ActivityThread(7789): Resume   ActivityRecord{13e9f0 token=android.os.BinderProxy@961eb69 {ru.orangesoftware.financisto/ru.orangesoftware.financisto.activity.MainActivity}}   started activity: false, hideForNow: false, finished: false   
06-01 17:51:23.145 D/OpenGLRenderer(7789):   <ru.orangesoftware.financisto> is running.   
06-01 17:51:23.159 D/ViewRootImpl(7789): hardware   acceleration is enabled, this = ViewRoot{f30678c ru.orangesoftware.financisto/ru.orangesoftware.financisto.activity.MainActivity,ident   = 0}   
06-01 17:51:23.161 D/WindowManager(945):   addWindowToListInOrderLocked: win=Window{1ffec33 u0   ru.orangesoftware.financisto/ru.orangesoftware.financisto.activity.MainActivity} Callers=com.android.server.wm.WindowManagerService.addWindow:2808   com.android.server.wm.Session.addToDisplay:171   android.view.IWindowSession$Stub.onTransact:124   com.android.server.wm.Session.onTransact:133    
06-01 17:51:23.163 V/ActivityThread(7789): Resuming   ActivityRecord{13e9f0 token=android.os.BinderProxy@961eb69 {ru.orangesoftware.financisto/ru.orangesoftware.financisto.activity.MainActivity}}   with isForward=true   06-01 17:51:23.164 V/PhoneWindow(7789): DecorView   setVisiblity: visibility = 0 ,Parent =ViewRoot{f30678c   ru.orangesoftware.financisto/ru.orangesoftware.financisto.activity.MainActivity,ident = 0}, this   =com.android.internal.policy.PhoneWindow$DecorView{1a8c8c6   V.E...... R.....ID 0,0-0,0}   
06-01 17:51:23.164 V/ActivityThread(7789): Scheduling idle   handler for ActivityRecord{13e9f0 token=android.os.BinderProxy@961eb69 {ru.orangesoftware.financisto/ru.orangesoftware.financisto.activity.MainActivity}}   
06-01 17:51:23.164 D/ActivityThread(7789):   ACT-LAUNCH_ACTIVITY handled : 0 / ActivityRecord{13e9f0   token=android.os.BinderProxy@961eb69   {ru.orangesoftware.financisto/ru.orangesoftware.financisto.activity.MainActivity}}   
06-01 17:51:23.182 D/Resources(7789): resEntryNameFinal =   ru_orangesoftware_financisto_account_type_card_visa   
06-01 17:51:23.185 D/Resources(7789): resEntryNameFinal =   ru_orangesoftware_financisto_icon_lock   06-01 17:51:23.189 D/Resources(7789): resEntryNameFinal =   ru_orangesoftware_financisto_divider_vertical_dark   
06-01 17:51:23.194 D/Resources(7789): resEntryNameFinal =   ru_orangesoftware_financisto_progress_horizontal_budget   06-01 17:51:23.198 D/Resources(7789): resEntryNameFinal =   ru_orangesoftware_financisto_account_type_cash   
06-01 17:51:23.207 D/BufferQueueDump(274):   [ru.orangesoftware.financisto/ru.orangesoftware.financisto.activity.MainActivity] this:0x7f85429680,   value:0x7ffd7554dc, iLen:6   06-01 17:51:23.207 I/BufferQueueConsumer(274):   [ru.orangesoftware.financisto/ru.orangesoftware.financisto.activity.MainActivity](this:0x7f805d9400,id:1375,api:0,p:-1,c:274) setConsumerName: ru.orangesoftware.financisto/ru.orangesoftware.financisto.activity.MainActivity   
06-01 17:51:23.207 I/BufferQueueConsumer(274):   [ru.orangesoftware.financisto/ru.orangesoftware.financisto.activity.MainActivity](this:0x7f805d9400,id:1375,api:0,p:-1,c:274) setDefaultBufferSize: width=1 height=1   06-01 17:51:23.209 V/WindowManager(945): findFocusedWindow:   Found new focus @ 7 = Window{1ffec33 u0 ru.orangesoftware.financisto/ru.orangesoftware.financisto.activity.MainActivity}   06-01 17:51:23.209 V/WindowManager(945): Changing focus   from null to Window{1ffec33 u0 ru.orangesoftware.financisto/ru.orangesoftware.financisto.activity.MainActivity}   Callers=com.android.server.wm.WindowManagerService.relayoutWindow:3625 com.android.server.wm.Session.relayout:201 android.view.IWindowSession$Stub.onTransact:284 com.android.server.wm.Session.onTransact:133    06-01 17:51:23.209 D/WindowManager(945): Input focus has   changed to Window{1ffec33 u0 ru.orangesoftware.financisto/ru.orangesoftware.financisto.activity.MainActivity}   06-01 17:51:23.226 I/BufferQueueConsumer(274):   [ru.orangesoftware.financisto/ru.orangesoftware.financisto.activity.MainActivity](this:0x7f805d9400,id:1375,api:0,p:-1,c:274) setDefaultBufferSize: width=1080 height=1800   06-01 17:51:23.229 I/WindowManager(945): Focus moving from   null to Window{1ffec33 u0 ru.orangesoftware.financisto/ru.orangesoftware.financisto.activity.MainActivity}   06-01 17:51:23.229 I/WindowManager(945): Gaining focus:   Window{1ffec33 u0 ru.orangesoftware.financisto/ru.orangesoftware.financisto.activity.MainActivity}   06-01 17:51:23.230 D/OpenGLRenderer(7789): CanvasContext()   0x7f81e02000 initialize window=0x7f98e60c10, title=ru.orangesoftware.financisto/ru.orangesoftware.financisto.activity.MainActivity   06-01 17:51:23.241 D/Resources(7789): resEntryNameFinal =   ru_orangesoftware_financisto_account_type_cash   06-01 17:51:23.248 D/Resources(7789): resEntryNameFinal =   ru_orangesoftware_financisto_total_error   06-01 17:51:23.252 I/BufferQueueProducer(274):   [ru.orangesoftware.financisto/ru.orangesoftware.financisto.activity.MainActivity](this:0x7f805d9400,id:1375,api:1,p:7789,c:274) connect(P): api=1 producer=(7789:ru.orangesoftware.financisto) producerControlledByApp=true   06-01 17:51:23.276 I/BufferQueueProducer(274):   [ru.orangesoftware.financisto/ru.orangesoftware.financisto.activity.MainActivity](this:0x7f805d9400,id:1375,api:1,p:7789,c:274) new GraphicBuffer needed   06-01 17:51:23.299 I/ActivityManager(945): [AppLaunch]   Displayed Displayed ru.orangesoftware.financisto/.activity.MainActivity: +767ms   06-01 17:51:23.299 D/ActivityManager(945):   AP_PROF:AppLaunch_LaunchTime:ru.orangesoftware.financisto/.activity.MainActivity:767:17205444   06-01 17:51:23.301 V/WindowManager(945): findFocusedWindow:   Found new focus @ 7 = Window{1ffec33 u0 ru.orangesoftware.financisto/ru.orangesoftware.financisto.activity.MainActivity}   06-01 17:51:23.307 D/Resources(7789): resEntryNameFinal =   ru_orangesoftware_financisto_account_type_card_visa   06-01 17:51:23.308 D/Resources(7789): resEntryNameFinal =   ru_orangesoftware_financisto_icon_lock   06-01 17:51:23.308 D/Resources(7789): resEntryNameFinal = ru_orangesoftware_financisto_divider_vertical_dark   06-01 17:51:23.313 D/Resources(7789): resEntryNameFinal =   ru_orangesoftware_financisto_progress_horizontal_budget   06-01 17:51:23.314 D/Resources(7789): resEntryNameFinal =   ru_orangesoftware_financisto_account_type_cash   06-01 17:51:23.325 I/BufferQueueProducer(274):   [ru.orangesoftware.financisto/ru.orangesoftware.financisto.activity.MainActivity](this:0x7f805d9400,id:1375,api:1,p:7789,c:274) new GraphicBuffer needed   06-01 17:51:23.353 V/WindowManager(945): findFocusedWindow:   Found new focus @ 7 = Window{1ffec33 u0 ru.orangesoftware.financisto/ru.orangesoftware.financisto.activity.MainActivity}   06-01 17:51:24.382 I/BufferQueueProducer(274):   [ru.orangesoftware.financisto/ru.orangesoftware.financisto.activity.MainActivity](this:0x7f805d9400,id:1375,api:1,p:7789,c:274) new GraphicBuffer needed   06-01 17:51:24.392 I/BufferQueueProducer(274):   [ru.orangesoftware.financisto/ru.orangesoftware.financisto.activity.MainActivity](this:0x7f805d9400,id:1375,api:1,p:7789,c:274) queueBuffer: fps=1.82 dur=1097.45 max=1059.05   min=38.40   06-01 17:51:24.398 I/BufferQueueProducer(274):   [ru.orangesoftware.financisto/ru.orangesoftware.financisto.activity.MainActivity](this:0x7f805d9400,id:1375,api:1,p:7789,c:274) new GraphicBuffer needed   06-01 17:51:24.400 D/test    (1074):   >>>>>>>>>>>>>>>>>   comName:ru.orangesoftware.financisto.activity.MainActivity   06-01 17:51:24.409 D/xionghui(1074): xionghui TaskKey   pkg=ru.orangesoftware.financisto   isLocked=false   06-01 17:51:24.410 D/xionghui(1074): xionghui TaskKey   pkg=ru.orangesoftware.financisto   isLocked=false   06-01 17:51:24.519 D/test    (1074):   >>>>>>>>>>>>>>>>>   comName:ru.orangesoftware.financisto.activity.MainActivity   06-01 17:51:24.526 V/WindowManager(945): findFocusedWindow:   Found new focus @ 5 = Window{1ffec33 u0 ru.orangesoftware.financisto/ru.orangesoftware.financisto.activity.MainActivity}   06-01 17:51:24.532 V/WindowManager(945): Set focused app   to: AppWindowToken{729ea52 token=Token{b5c5edd ActivityRecord{6b2f2b4 u0   com.android.systemui/.recents.RecentsActivity   t78173}}} old focus=AppWindowToken{34bc2b1 token=Token{4fcf158   ActivityRecord{e66a63b u0 ru.orangesoftware.financisto/.activity.MainActivity t78270}}} moveFocusNow=true   06-01 17:51:24.536 V/WindowManager(945): Changing focus   from Window{1ffec33 u0 ru.orangesoftware.financisto/ru.orangesoftware.financisto.activity.MainActivity}   to null Callers=com.android.server.wm.WindowManagerService.setFocusedApp:4506 com.android.server.am.ActivityManagerService.setFocusedActivityLocked:2873   com.android.server.am.ActivityStack.moveTaskToFrontLocked:4303 com.android.server.am.ActivityStackSupervisor.startActivityUncheckedLocked:2331    06-01 17:51:24.537 I/WindowManager(945): Focus moving from   Window{1ffec33 u0 ru.orangesoftware.financisto/ru.orangesoftware.financisto.activity.MainActivity} to null   06-01 17:51:24.537 I/WindowManager(945): Losing focus:   Window{1ffec33 u0 ru.orangesoftware.financisto/ru.orangesoftware.financisto.activity.MainActivity}   06-01 17:51:24.577 D/ActivityThread(7789): ACT-AM_ON_PAUSE_CALLED   ActivityRecord{9a64e67 token=android.app.LocalActivityManager$LocalActivityRecord@25cf414 {ru.orangesoftware.financisto/ru.orangesoftware.financisto.activity.AccountListActivity}}   06-01 17:51:24.577 D/ActivityThread(7789):   ACT-AM_ON_PAUSE_CALLED ActivityRecord{13e9f0 token=android.os.BinderProxy@961eb69 {ru.orangesoftware.financisto/ru.orangesoftware.financisto.activity.MainActivity}}   06-01 17:51:24.602 V/ActivityThread(7789): Finishing stop   of ActivityRecord{13e9f0 token=android.os.BinderProxy@961eb69 {ru.orangesoftware.financisto/ru.orangesoftware.financisto.activity.MainActivity}}:   show=false win=com.android.internal.policy.PhoneWindow@b56220   06-01 17:51:24.605 V/PhoneWindow(7789): DecorView   setVisiblity: visibility = 4 ,Parent =ViewRoot{f30678c   ru.orangesoftware.financisto/ru.orangesoftware.financisto.activity.MainActivity,ident = 0}, this   =com.android.internal.policy.PhoneWindow$DecorView{1a8c8c6   I.E...... R.....ID 0,0-1080,1800}   06-01 17:51:24.611 I/BufferQueueProducer(274):   [ru.orangesoftware.financisto/ru.orangesoftware.financisto.activity.MainActivity](this:0x7f805d9400,id:1375,api:1,p:-1,c:274) disconnect(P): api 1   06-01 17:51:24.612 I/BufferQueueConsumer(274):   [ru.orangesoftware.financisto/ru.orangesoftware.financisto.activity.MainActivity](this:0x7f805d9400,id:1375,api:1,p:-1,c:274) getReleasedBuffers: returning mask   0xffffffffffffffff   06-01 17:51:24.621 I/BufferQueueProducer(274):   [ru.orangesoftware.financisto/ru.orangesoftware.financisto.activity.MainActivity](this:0x7f805d9400,id:1375,api:1,p:-1,c:274) disconnect(P): api 1   06-01 17:51:24.630 I/PPS     (945):   [notifyActivityState] ru.orangesoftware.financisto, .activity.MainActivity,   Stopped   06-01 17:51:24.630 I/PPS     (945):   [PPSNotifyAppState] nPackNum:60, pack:ru.orangesoftware.financisto, com:.activity.MainActivity, state:4, pid:7789,   last_boost_tid:7789   06-01 17:51:24.636 D/xionghui(1074): xionghui TaskKey   pkg=ru.orangesoftware.financisto   isLocked=false   06-01 17:51:24.636 D/xionghui(1074): xionghui TaskKey   pkg=ru.orangesoftware.financisto   isLocked=false   06-01 17:51:25.117 I/BufferQueueConsumer(274):   [ru.orangesoftware.financisto/ru.orangesoftware.financisto.activity.MainActivity](this:0x7f805d9400,id:1375,api:1,p:-1,c:-1) disconnect(C)   06-01 17:51:25.119 I/BufferQueue(274): [ru.orangesoftware.financisto/ru.orangesoftware.financisto.activity.MainActivity](this:0x7f805d9400,id:1375,api:1,p:-1,c:-1)   ~BufferQueueCore   06-01 17:51:25.580 D/xionghui(1074): xionghui TaskKey   pkg=ru.orangesoftware.financisto   isLocked=false   06-01 17:51:25.580 D/xionghui(1074): xionghui TaskKey   pkg=ru.orangesoftware.financisto   isLocked=false   06-01 17:51:27.174 D/GasService(2222): FG app changed: from   ru.orangesoftware.financisto to com.pluscubed.matlog   06-01 17:51:27.473 D/xionghui(1074): xionghui TaskKey   pkg=ru.orangesoftware.financisto   isLocked=false   06-01 17:51:27.473 D/xionghui(1074): xionghui TaskKey   pkg=ru.orangesoftware.financisto   isLocked=false    ```

Haptic feedback in calculator can't be turned off

For me Haptic feedback is like a damnation. Maybe i have a Hapticfeedbackophobia.
There is a setting in Settings - Protection - Haptic feedback, but it's used for a startup pin only. Could you link it with calculator's haptic feedback also?

SMS Parsing and Adding Transactions automatically by patterns

Support for parsing SMS by patterns:
<:A:> - account
<:P:> - price
<::> - all symbols/words
<:B:> - balance (planned for future)
<:D:> - date/time (planned for future)

SMS Templates are bound to Category and Account (optional).

Ex. SMS:
Pokupka. Karta *5631. Summa 250.00 RUB. NOVYY PROEKT, MOSCOW. 02.10.2017 14:19. Dostupno 34202.82 RUB. Tinkoff.ru
Template for it:
Pokupka. Karta *<:A:>. Summa <:P:> RUB. NOVYY PROEKT<::>
(if you have account of card type with number ending with 5631 - then this account will be used in transaction, otherwise - the account which is set in Template properties)
or:
<::>. Summa <:P:> RUB. NOVYY PROEKT<::> - but in this case the account will not be recognised automatically.

+Added activities/screens for editing/adding SMS templates (from Entity list or Category edit screen), status bar notifications etc., here are screenshots and the built apk: https://www.dropbox.com/sh/s6glynraohv5jbr/AABlxeyfqaKj_Dp2PueFxW1Ba?dl=0

Notifications on Oreo

Good morning, Financisto does not show any notifications on Oreo. Is it possible to fix this?

Ver 1.8.1. App crashed when I try to add photo to transaction

Application has crashed when I try to add photo from my camera to transaction.

I checked all permissions. I try to add image from gallery, the result the same, app had crashed.
I revert to the previous version 1.8.0. All work fine.
Return version 1.8.1 and application crash again.
I sent to you bug report from finansisto.
If need some thing other information I am ready to shared it.

(Но, если это возможно, я бы использовал бы русский)

Changing Category in Transaction form clears fields

For about 4-5 days every time when i select a Category for the Transaction the rest of the fields are cleared(Agent, Amount etc). The same thing happens if i modifiy the transaction and i change category. I've reinstalled the app but the behavior is the same.

Editing currency rates

Imagine we have 3 currecies: USD, EUR und BYN.
We are going to add new currency rates for all these currencies.
Currency rates dialog shows USD as left currency and BYN as right one.
If I change the left currency to EUR, I'd expect EUR and BYN currencies selected. But the dialog shows EUR and USD, the left currency moved to the right

SMS Improvements (Part 2)

After testing and usage of #12 I suggest implementing the following:

  1. Adding {{t}} placeholder to SMS pattern for capturing part of SMS-text/words

  2. Adding possibility to set a Default Sms Template to an Account (type of Card) with broad pattern capturing all SMS messages from bank of that card, e.g. ECMC{{a}} {{*}} buy {{p}}RUB {{t}} Balance: {{*}}RUB

  3. When new SMS comes from number set in Default Sms Template at Account and other Sms templates are not found for it - then process sms with default account template, create new transaction to Category defined there and after that - suggest new more specific Sms Template for it:
    e.g. SMS=ECMC5431 01.12.17 17:17 buy 550RUB TEREMOK SCHUKA Balance: 49820.45RUB
    Then template=ECMC<:A:> <::> buy <:P:>RUB TEREMOK SCHUKA Balance: <::>RUB will be suggested (via opening Sms Template edit screen filled with all of that), text - taken from <:T:> placeholder value

  4. When suggesting new Sms templates from default - automatically find corresponding Category by Attributes with special names/values
    e.g. if we have Category Food and attribute with name SmsTag bound to it with values TEREMOK, TEREMOK SCHUKA etc then Financisto will suggest that Food Category for it.
    We can check for Attribute names with special prefix Sms... here, e.g. SmsTag1, SmsFoodTag and so on.

Offer APK download

Would you mind attaching the .apk file to the releases/, so folks without Playstore can grab it? I'd then offer to make it available via my F-Droid compatible repository (including providing updates as soon as they are found here).

Of course, bringing Financisto to the official F-Droid repo would be much better even 😉

1.8.0 sms bugfixes

  1. we must support different price formats like:
    1234.56
    1234,56
    1 234.56
    1 234,56
    1,234.56
  2. and multiline sms templates
  3. add "copy" action in sms-temlate list and move up/down

Enh. Request to add wildcard char in "title" under SMS templates

Is it possible that we have an option to add a wild card char in SMS template?

For e.g. %-Citibk
where in my case % could be anything like AD,AX,AM,DM (in India - the first two letter signify provider and region or something like that). and there is no way we can guess the values.
3 possible ways :

  1. Am not an android program, but the sql statement like the following should work.
db\DatabaseAdapter.java - getSmsTemplatesByNumber2
  -                String.format("select %s from %s where %s=? order by length(%s) desc, %s",
 +                String.format("select %s from %s where ? like %s order by length(%s) desc, %s",

may be it could also be conditional i.e. inside "if/else"- when title contains "%"

  1. Also if we want higher level control may be use " WHERE name REGEXP '%s' " and the user input the string "^[A-Z]{2}CITIBK" in the Name Criteria.

  2. Make the Name not mandatory, and read every message in its own format, the templates having names getting processed first.

thank you for the Wonderful app ...
eyeVish

  • cc: @yetanothercoder - thanks for the SMS feature, but this problem is making me put many templates for the same SMS with different name.

Partial loan pay-off ?

Probably new enhancement ?

Situation. You loan some money. After a while, the man begins to pay off, but in small amounts.

After time (we speak about long time loans and pay offs) he asks for information, how much he owe. You tells him - but he is surprised and asks "really ? I tought I have made some payements and bla bla bla... You are angry, he is angry, nobody trust anybody anymore. Only for that, that the other poor (stupid) man think, You have lied to him, how much he payd back... Stupid, what ? NO MORE LOANS FOR THOSE PEOPLE !!! Like I told myself about 50 times already... :-)

And now the solution.

Add transaction, that is a partial refund of one of these loans.

For example, You have about 10 loans. These are clear to view in the LOANS account. Then You click on one of them - and one of the buttons is new - it can be called "Partial loan pay-off" or similar. And after them You only select how much and to which account (for example he pays cash) - and new record is created, that lowers the amount of owed money. And also new button to click for review all partial pay-offs for the loan. But I see here a problem, what amount should be shown at this loan record. The actual balance ? Or the original amount ? Or when there will be a switch that this record is a loan, then there should be also third number visible. Also:

  • original amount of loan
  • at that time balance
  • actual loan balance (= original minus sum of all partial pay-offs for this loan record)

Is this possible in some future time ?

QR code support

I make an API to support working with QR code receipts in Russia
If you are interested in using it for your project, please write to me

dropbox issues

linking dropbox account is not possible.

also tested more browsers and dropbox app install - no progress. cannot go past loging to dropbox...

Icon not working properly

In the reports the icon to change between Expenses, Incomes, Summary and Expenses/Incomes are not changing the color anymore to hint which view you are.

My phone is a Galaxy S8

QIF export bug

Hi

This bug is during QIF export for transfer between 2 accounts. When I import it into Home Bank, then transaction is 2 times present and Category is empty (altought I input it only one time and I set category!).

Would love if you may fix this issue.

Blotter: Filter By Account Type

I've been using Financisto for over 2 years now. It's perfect for my needs.
However, it would be very useful to have a filter by Account Type (Cash, Asset, Payable etc.) in the blotter and other reports. Thanks.

Budget widget

Absolutely love this app, and been using it daily for years. The only feature I have ever felt was missing is the ability to add a widget showing the status of a budget. This would make it much easier to see at a glance how much I can afford to spend without having to open and navigate within the app itself.

Payee field cleared after selecting Category ?

On old Android 4.4.2 when I fill the field Payee, and then select Category, all is OK.

On new Android 7.1.1 when I fill Payee field, and then when select Category, the field Payee is cleared. It is really annoying. I cannot find it anywhere in settings...

It is a bug or not ? Or wrong setting that I cannot see ?

Both Financisto are latest 1.8.0.

Please, mark sources for released versions with tags in Git

I'd like to observe the changes in the new version that I download from Google Play. So I could understand whether I need to change something in my little helper utility. Unfortunately there is no way to understand which commit was used for building the released version.

Please, mark sources for released versions with tags in Git.

achartengine maven repository broken

achartengine-1.2.0.jar.zip

$ gradlew build 
...
FAILURE: Build failed with an exception.
* What went wrong:
A problem occurred configuring project ':app'.
> Could not resolve all dependencies for configuration ':app:_debugApkCopy'.
   > Could not find org.achartengine:achartengine:1.2.0.
     Required by:
         project :app

the problem is that achartengine mave repo is broken: https://repository-achartengine.forge.cloudbees.com/snapshot/ -> 404 Not Found

Now you can only manually build this jar from github https://github.com/ddanny/achartengine (mvn clean install) and configure it as file dependency in financisto app/build.gradle like:

dependencies {
    compile 'com.android.support:support-v4:25.3.1'
...
    compile files('/path/to/org/achartengine/achartengine/1.2.0/achartengine-1.2.0.jar')

p.s. attached built achartengine-1.2.0.jar here

SMS price parsing number formating

Greetings from Serbia!

Glad to see Financisto finally got SMS handling.
(I've been dreaming of implementing this for years, but never got into Android programming...)

We need more configuration regarding price parsing in order to support different number formatting (e.g. thousand separator and decimal point).

Here is one SMS example from my bank:

Potrosnja po kartici: 544358******0763 Iznos: 1.349,92 RSD Datum: 01.02.2018. Trgovac: 214 - TEMPO 011 Raspolozivo 24.008,61 RSD br.odobr: 930641

As is currently implemented I cannot parse the text 1.349,92 into number 1349.92.

SMS List UX Improvements

  • drag'n'drop with long tap on items for changing order of sms-templates
  • left swipe for editing
  • right swipe for deleting
  • usual (short) tap - for opening full menu for item with all listed options: edit/delete/duplicate
  • filter input field - for instant filtering list by template number or text

How it looks

p.s. after successful adding such list to sms-templates - we can change all other entity lists (projects/payee/locations/etc)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.