Giter Site home page Giter Site logo

gnucash-pocket / gnucash-android Goto Github PK

View Code? Open in Web Editor NEW

This project forked from codinguser/gnucash-android

62.0 62.0 13.0 22.07 MB

GnuCash Pocket – a mobile companion app for Gnucash desktop application (https://github.com/Gnucash/gnucash). Developed independently of GnuCash.

License: Apache License 2.0

Java 92.29% Shell 0.04% Kotlin 7.67%
budget budget-app budget-tracker finance finance-application finance-management

gnucash-android's People

Contributors

agalanin avatar aint avatar aivanovski avatar alceurneto avatar avecz avatar biaji avatar cmarchi avatar codinguser avatar czan avatar djbrown avatar fefe982 avatar fmorato avatar gianpamx avatar gjanssens avatar jorgeml avatar kaligula0 avatar kosmakoff avatar lxbzmy avatar markhaanen avatar near217 avatar pbneves avatar pnemonic78 avatar reul avatar rivaldi8 avatar rutsky avatar sigurdga avatar thesebas avatar wicowyn avatar windwarrior avatar yourealwaysbe 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gnucash-android's Issues

Dropbox 500 error

when i try to connect to dropbox from this app for backup i get transfered to chrome for allowing gnucash to access dropbox folder, when i press the allow button i get 500 error, i dont know where to post this issue if you can help resolve this thanks.

Locale problem (decimal point/comma) in currency rate popup

Steps to reproduce the behaviour

When entering a transaction between accounts that use different currencies a popup appears, where user can enter currency rate. I have a locale problem. I use OS in Polish; my (Polish) decimal format is "1234,56"; the hint under the Rate text field shows "x.xx"; the keyboard that appears (number keyboard) enters "1234.56" (it has only "point", not "comma"; I tried also another keyboard) but the popups says "Invalid exchange rate".

Expected behaviour

I can input a decimal number just using my number keyboard.

Actual behaviour

Cannot enter a number without "hacking" – copying the comma from elsewhere and pasting it here.

Software specifications

  • GnuCash Android version: 2.4.0-dev3_r4caab7a
  • System Android version: 14
  • Device type: SM-S901B

Suggested Resolution

Navigation with [Back] button in Settings

Steps to reproduce the behaviour

  1. Open Settings (you may also enter any subsettings).
  2. Use your phone's [Back] button

Expected behaviour

Exits Settings. Or, in case of a subsettings, go up to Setings main page.

Actual behaviour

Nothing.

  • You have to use the [Back] button twice to exit Settings.
  • You have to use the [Back] button thrice to exit form any subsetting to Settings main page.

Software specifications

  • GnuCash Android version: 2.4.0-dev3_r4caab7a
  • System Android version: 14
  • Device type: SM-S901B

Suggested Resolution

Failing Instrumentation Test: TransactionsActivityTest#testAddMultiCurrencyTransaction

Steps to reproduce the behaviour

Run TransactionsActivityTest#testAddMultiCurrencyTransaction on recent test configuration (e.g. Pixel 7 API 33).
See CI Builds for Instrumentation Reports.
See also #25 for other confirmed configurations.

Expected behaviour

Test should pass.

Actual behaviour

Test fails with follwing error:

java.lang.AssertionError: 
Expecting:
 <["transactions-account", "transfer_account"]>
to contain:
 <["beb877ec08944dba8c335cbf899aa30d"]>
but could not find:
 <["beb877ec08944dba8c335cbf899aa30d"]>

	at org.gnucash.android.test.ui.TransactionsActivityTest.testAddMultiCurrencyTransaction(TransactionsActivityTest.java:330)

Software specifications

  • System Android version: API level 33
  • Device type: Pixel 7

Suggested Resolution

Migration crowdin to weblate

As part of the resumption of the project, we need a new translation platform for this branch. Bringing the discussion of issue codinguser#913 to weblate seems to be more appropriate and easy to use.

I wonder what translators think about. If relevant, we will create an org there to keep the new translations.

Failing Instrumentation Test: PieChartReportTest.testSelectingValue

There is one failing test in the nightly test suite (#7).
Test: org.gnucash.android.test.ui.PieChartReportTest.testSelectingValue
Error message: Instrumentation run failed due to 'Process crashed.'
Flavor: betaDebugAndroidTest

Device Log
Timestamp Level Tag Message
10-16 20:22:00.003 debug TransactionsDbAdapter 2 splits added
10-16 20:22:00.004 debug TransactionsDbAdapter 0 splits deleted
10-16 20:22:00.055 verbose AccountsDbAdapter Fetching all accounts from db where null order by full_name ASC
10-16 20:22:00.358 warn SQLiteConnectionPool A SQLiteConnection object for database '/data/user/0/org.gnucash.android/databases/cad76b596dab453599736d7ff3290644' was leaked! Please fix your application to end transactions in progress properly and to close the database when it is no longer needed.
10-16 20:22:00.358 warn SQLiteConnectionPool A SQLiteConnection object for database '/data/user/0/org.gnucash.android/databases/68cee89dfcb04f558f3b73fd7b6a3170' was leaked! Please fix your application to end transactions in progress properly and to close the database when it is no longer needed.
10-16 20:22:00.365 warn SQLiteConnectionPool A SQLiteConnection object for database '/data/user/0/org.gnucash.android/databases/e6e9d8f87ef143dbacf439a5984017fe' was leaked! Please fix your application to end transactions in progress properly and to close the database when it is no longer needed.
10-16 20:22:00.386 debug AndroidRuntime Shutting down VM
10-16 20:22:00.386 debug AndroidRuntime --------- beginning of crash
10-16 20:22:00.388 error AndroidRuntime FATAL EXCEPTION: main
10-16 20:22:00.388 error AndroidRuntime Process: org.gnucash.android, PID: 2965
10-16 20:22:00.388 error AndroidRuntime java.lang.ArrayIndexOutOfBoundsException: length=1; index=1
10-16 20:22:00.388 error AndroidRuntime at com.github.mikephil.charting.renderer.LegendRenderer.renderLegend(LegendRenderer.java:239)
10-16 20:22:00.388 error AndroidRuntime at com.github.mikephil.charting.charts.PieChart.onDraw(PieChart.java:114)
10-16 20:22:00.388 error AndroidRuntime at android.view.View.draw(View.java:19192)
10-16 20:22:00.448 error THREAD_STATE Thread[MultiThreadedHttpConnectionManager cleanup,5,main]
10-16 20:22:00.448 error THREAD_STATE java.lang.Object.wait(Native Method)
10-16 20:22:00.448 error THREAD_STATE java.lang.Object.wait(Object.java:422)
10-16 20:22:00.448 error THREAD_STATE java.l
10-16 20:22:00.448 error MonitoringInstr Dying now...
10-16 20:22:00.465 info Process Sending signal. PID: 2965 SIG: 9
Stacktrace
java.lang.ArrayIndexOutOfBoundsException: length=1; index=1
    at com.github.mikephil.charting.renderer.LegendRenderer.renderLegend(LegendRenderer.java:239)
    at com.github.mikephil.charting.charts.PieChart.onDraw(PieChart.java:114)
    at android.view.View.draw(View.java:19192)
    at android.view.View.updateDisplayListIfDirty(View.java:18142)
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4220)
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4200)
    at android.view.View.updateDisplayListIfDirty(View.java:18101)
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4220)
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4200)
    at android.view.View.updateDisplayListIfDirty(View.java:18101)
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4220)
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4200)
    at android.view.View.updateDisplayListIfDirty(View.java:18101)
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4220)
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4200)
    at android.view.View.updateDisplayListIfDirty(View.java:18101)
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4220)
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4200)
    at android.view.View.updateDisplayListIfDirty(View.java:18101)
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4220)
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4200)
    at android.view.View.updateDisplayListIfDirty(View.java:18101)
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4220)
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4200)
    at android.view.View.updateDisplayListIfDirty(View.java:18101)
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4220)
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4200)
    at android.view.View.updateDisplayListIfDirty(View.java:18101)
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4220)
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4200)
    at android.view.View.updateDisplayListIfDirty(View.java:18101)
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4220)
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4200)
    at android.view.View.updateDisplayListIfDirty(View.java:18101)
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4220)
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4200)
    at android.view.View.updateDisplayListIfDirty(View.java:18101)
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4220)
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4200)
    at android.view.View.updateDisplayListIfDirty(View.java:18101)
    at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:669)
    at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:675)
    at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:783)
    at android.view.ViewRootImpl.draw(ViewRootImpl.java:2992)
    at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2806)
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2359)
    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1392)
    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6752)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:911)
    at android.view.Choreographer.doCallbacks(Choreographer.java:723)
    at android.view.Choreographer.doFrame(Choreographer.java:658)
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897)
    at android.os.Handler.handleCallback(Handler.java:790)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6494)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

Navigation with [Back] button in Reports

Steps to reproduce the behaviour

  1. Open Reports.
  2. Choose any type (bar, piechart, etc.) from the top buttons
  3. Use your phone's [Back] button

Expected behaviour

App goes back to Reports main page.

Actual behaviour

App exits reports completely, opens Accounts.

Software specifications

  • GnuCash Android version: 2.4.0-dev3_r4caab7a
  • System Android version: 14
  • Device type: SM-S901B

Suggested Resolution

Update README links and references

Update links that have references with the source application (Gnucash-Android). Like Play Store and support channels.

I believe that the replacement for the support channel may be the issues themselves initially while the project is maturing.

Run static code analysis in CI

deferred from #6
fail pipeline when issues are found
-> all issues should initially be resolved

Tools:

  • ./gradlew lintDevelopmentDebug
  • sonarqube
  • ...

Transaction from 2023.12.31 exported (in CSV) as 2024.12.31

Steps to reproduce the behaviour

  1. I saved a transaction with today's date (2023.12.31 19:03:57)
  2. I exported the file succesfully as CSV

Expected behaviour

Files exported with proper data.

Actual behaviour

The transaction was exported with date 2024.12.31

Software specifications

  • GnuCash Android version: 2.4.0-dev3_r4caab7a
  • System Android version: 14
  • Device type: SM-S901B

Suggested Resolution

Date in CSV is exported using 'YYYY' which is "week year", very confusing. Properly should be 'yyyy' which is just year.

Non-currency assets are displayed as "XXX"

Steps to reproduce the behaviour

  1. Import a book or account tree with account(s) that use(s) non-currency asset(s) (stock or another custom asset, e.g. GOOGL stock)
  2. Enter a transaction in GnuCash-Pocket app using the account with such stock

Expected behaviour

App should display this stock as "currency"

Actual behaviour

App displays "XXX"
image

Software specifications

  • GnuCash Android version: 2.4.0-dev3_r4caab7a
  • System Android version: 14
  • Device type: SM-S901B

Suggested Resolution

Migration to gnucash-pocket

Make name change and references to the new project (gnucash-android -> gnucash-pocket)

Ref: gnucash-pocket/discussion#1

Create CI-Build with GitHub Actions

  • (Install Dependencies)
  • Run Unit Tests -> testDevelopmentDebugUnitTest
  • optional: Check Code Formatting
  • Analyse Code Quality -> #10

Should run on each push for every branch and pull request
Should use as much caching as possible to get fast results

Create Nightly Build with GitHub Actions

  • Run Integration Tests
  • Run UI Tests with Appium and SauceLabs
  • Build APK
  • Run Instrumentation Tests with spoon and AVD

Should run daily on every branch or pull request
Should be executable (triggerable) on demand (manually).

Timeout waiting for App to become idle in OwnCloudExportTest

org.gnucash.android.devel.test ► org.gnucash.android.test.ui.OwnCloudExportTest ► OwnCloudCredentials: app/src/androidTest/java/org/gnucash/android/test/ui/OwnCloudExportTest.java#L175
Failed test found in:
  junit-reports/emulator-5554.xml
Error:
  android.support.test.espresso.AppNotIdleException: Looped for 11 iterations over 60 SECONDS. The following Idle Conditions failed KEY_INJECT_HAS_COMPLETED.

Currency rates in a transaction – enhancements

When entering a transaction between accounts that use different currencies a popup appears, where user can enter currency rate.

  1. there should be a button to invoke the popup, because it appears only after the account is selected/changed, and user cannot open the popup after he closes it
  2. in the popup, it would be nice if the amount in the second currency was updated live, when user enters the rate; (and vice-versa)

Software specifications

  • GnuCash Android version: 2.4.0-dev3_r4caab7a
  • System Android version: 14
  • Device type: SM-S901B

build fails due to google-services.json missing

Steps to reproduce the behaviour

  1. Download the repository (at commit ceb39e3).
  2. Open the project in Android Studio.
  3. In menu select Build -> Make Project.

Expected behaviour

The app builds.

Actual behaviour

Build fails with:

> File google-services.json is missing. The Google Services Plugin cannot function without it. 
   Searched Location: 
  /home/hades/dev/gnucash-android/app/src/beta/debug/google-services.json
  /home/hades/dev/gnucash-android/app/src/debug/beta/google-services.json
  /home/hades/dev/gnucash-android/app/src/beta/google-services.json
  /home/hades/dev/gnucash-android/app/src/debug/google-services.json
  /home/hades/dev/gnucash-android/app/src/betaDebug/google-services.json
  /home/hades/dev/gnucash-android/app/google-services.json

Suggested Resolution

  • Add a dummy google-services.json that doesn't contain any secrets related to the actual production app.
  • Update README to indicate how to generate a valid google-services.json.

Many Instrumentation Tests not executed on some Test Configurations

Steps to reproduce the behaviour

Run instrumentation tests in different configurations:

  • Execution Type: local physical device, local virtual device, remote firbase device
  • Device Model
  • Android API Level

Expected behaviour

All (currently 38) Tests should be executed and reported on all configurations.
Some tests may still fail, which we could then investigate further.

Actual behaviour

Overview as of ba1d24e

Type Model API
Physical Moto G22 27 10 28 0 38
Firebase Pixel 7 33 1 37 0 38
Virtual Pixel 3a 33 36 2 0 38
Firebase Pixel 5 (Report) 30 2 3 0 5
Firebase Nokia 1 27 3 2 0 5
History (older Commits)
Commit Type Model API
5860558 Physical Moto G22 27 18 20 0 38
5860558 Virtual Pixel 3a 33 6 11 0 17
5860558 Firebase Pixel 5 30 3 2 0 5
--- --- --- --- --- --- --- ---
3cc49e2 Physical Moto G22 27 3 0 5 8
3cc49e2 Virtual Pixel 3a 33 3 0 5 8
3cc49e2 Firebase Pixel 5 30 4 11 5 20

Suggested Resolution

  • run multiple relevant configurations from instrumentation test workflow (using matrix)
    #30
  • analyse if some tests are flaky (launch with flakyness/retry flag)

Exporting crashes on multi-currency transactions

Steps to reproduce the behaviour

  1. Save a transaction between 2 accounts that use different curencies
  2. Try to export transactions (in any format, but here I tried CSV)

Expected behaviour

App exports a file.

Actual behaviour

Toast message 1 "Error exporting CSVT file. Cannot perform operation on Money inst…" (text is truncated in the toast)
Toast message 2 "There are no transactions available to export"
File is saved but has 0 bytes.

Software specifications

  • GnuCash Android version: 2.4.0-dev3_r4caab7a
  • System Android version: 14
  • Device type: SM-S901B

Suggested Resolution

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.