Code Monkey home page Code Monkey logo

ekonomipuls's People

Contributors

magnusart avatar michael1976 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

ekonomipuls's Issues

Import transactions when paired with BankDroid

In EkonomipulsHome the pairing process is started if Ekonomipuls and BankDroid is not previously paired. Make sure that the transactions are imported after that process finishes successfully. Need to first load the account ID:s before able to load transactions, not implemented yet.

Grammar and spelling suggestions

From jedi about fixing grammar and spelling

"En liten petitess bara: Du skulle inte kunna förminska texten något så att å-ringen inte blir skuren i tu? Misstänker att det är av samma anledning som det står Ovriga och inte Övriga.

Du får lov att ursäkta språknörden inom mig, men undvik gärna användningen av versal begynnelsebokstav på ord som, i det här fallet, varken inleder en rubrik eller är egennamn (Nöjen/Shopping -> Nöjen/shopping, 0 Transaktioner -> 0 transaktioner).

Byt gärna ut SEK mot kr. SEK känns väldigt internationellt.

Enligt svenskt språkbruk sätts dessutom ett mellanslag före procenttecknet."

Synchronization of data with google docs

Purpose:

  1. Give the user access to the raw data in order to present/integrate this in a custom way (i.e. in a custom or shared budget)
  2. Make the data available on other platforms

Implementation:
Synchronize the raw data to a google spreadsheet through their API.
Offer a few standard templates that visualises the data in a similar way as the mobile app

Use:
Browse your visualized data on your computer or tablet.
Use function ImportRange(spreadsheet_key, sheet!range) to get the relevant data into other spreadsheets. From here imagination is the limit.

Split Categories and Tags into Income and Expense types

It is nessecary to split the tags and categories into Income and Expense types for the pie chart rendering to make sense. I initially decided not to do it this way, but I can see that that makes it harder than having this destinction in the data model.

Changes will affect:

  • Data model (Categories, Tags and maybe Report)
  • Filter rules (also needs to be different types)
  • GUI (Pie Chart)

doesnt start in 2.1

03-20 15:04:51.064: ERROR/AndroidRuntime(253): java.lang.RuntimeException: Unable to resume activity {se.ekonomipuls/se.ekonomipuls.EkonomipulsHome}: android.database.sqlite.SQLiteException: no such column: _id: , while compiling: SELECT _id, color, name FROM categories_report_view WHERE (rep_id = -1)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2950)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2965)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2516)
at android.app.ActivityThread.access$2200(ActivityThread.java:119)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4363)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.database.sqlite.SQLiteException: no such column: _id: , while compiling: SELECT _id, color, name FROM categories_report_view WHERE (rep_id = -1)
at android.database.sqlite.SQLiteProgram.native_compile(Native Method)
at android.database.sqlite.SQLiteProgram.compile(SQLiteProgram.java:110)
at android.database.sqlite.SQLiteProgram.(SQLiteProgram.java:59)
at android.database.sqlite.SQLiteQuery.(SQLiteQuery.java:49)
at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:49)
at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1221)
at android.database.sqlite.SQLiteQueryBuilder.query(SQLiteQueryBuilder.java:316)
at android.database.sqlite.SQLiteQueryBuilder.query(SQLiteQueryBuilder.java:266)
at se.ekonomipuls.database.AbstractDbFacade.query(AbstractDbFacade.java:114)
at se.ekonomipuls.database.analytics.AnalyticsCategoriesDbFacade.getCategories(AnalyticsCategoriesDbFacade.java:71)
at se.ekonomipuls.database.analytics.AnalyticsCategoriesDbFacade.getCategoriesByReport(AnalyticsCategoriesDbFacade.java:44)
at se.ekonomipuls.EkonomipulsHome.populateSeriesEntries(EkonomipulsHome.java:150)
at se.ekonomipuls.EkonomipulsHome.populateData(EkonomipulsHome.java:133)
at se.ekonomipuls.EkonomipulsHome.refreshView(EkonomipulsHome.java:58)
at se.ekonomipuls.EkonomipulsHome.onResume(EkonomipulsHome.java:93)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1149)
at android.app.Activity.performResume(Activity.java:3763)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2937)

Build Web Application that holds common configuration

Build a Web App that holds common configuration and allows admins to manage filter rules and categories. Anonymous users should be able to submit new filter rule suggestions or categories from the Android App.

Social media integration

Functionality to share individual transactions, monthly budget status or a user report to social media like Facebook, Twitter etc.

Ie.
Subject: Ekonomipuls - Kalle Kallesson handlade för 300kr på Awesome Rags.
Comment: Ny skjorta.

Subject: Ekonomipuls - Kalle Kallesson har spenderat 50% av sin månadsbudget.
Comment: Efter tre dagar... börjar bra.

Option to exclude amount should be user configurable.

Implement a backup to SD-card procedure for the database

For debugging purposes.

try {
File sd = Environment.getExternalStorageDirectory();
File data = Environment.getDataDirectory();
if (sd.canWrite()) {
String currentDBPath = "\\data\\{package name}\\databases\\{database name}";
String backupDBPath = "{database name}";
File currentDB = new File(data, currentDBPath);
File backupDB = new File(sd, backupDBPath);
if (currentDB.exists()) {
FileChannel src = new FileInputStream(currentDB).getChannel();
FileChannel dst = new FileOutputStream(backupDB).getChannel();
dst.transferFrom(src, 0, src.size());
src.close();
dst.close();
}
} catch (Exception e) {}

Add KeyLock or Password screen to Ekonomipuls

Since BankDroid is protected by a KeyLock screen, Ekonomipuls should be as well to make sure that no information easily can be gained by opening Ekonomipuls and synchronizing data.

Peer review functionality for accepting new filter rules

From Ziq:

Jag har också lite tankar kring kategoriseringar i framtiden. Det finns allför många små butiker i sverige för att ett fåtal männinskor rimligtvis kan skapa en databas över dem.

Rimligtvis så borde man kunna gå in i en lista på ej kategoriserade transaktioner och klicka på en och skapa en regel utifrån den. Den regeln hamnar laddas då upp till en förslagsdatabas och nästa person som klickar på en okategoriserad transaktion som matchar förslaget får då välja att acceptera eller döma ut det.

Om 5-10 personer godkänd förslaget så överförs det till den automatiska kategoriseringen. Om man inte godkänner det så får man välja om man ska döma ut det eller avbryta. Om 3 personer dömer ut en regel så försvinner den.

Vad tror ni andra om en sådan lösning?

Just att kategoriseringen funkar bra är ju en förutsättning för användbarheten.

Possibility to split a purchase into different budget labels

A purchase made at the local supermarket is often food, but could also be other things. It is not uncommon that both food and others end up on the same purchase.

In order to get the figures under the correct budget label the user should be able to split the purchase into several labels.

Most commonly > Move x kr to other label
Also usable > Move x percentage to other label (Sometimes one thing can have multiple uses and it's conveniant not to have to calculate the sum)

Filter rule client that send proposed filters to WebApp

A functionality that allows for creation of fiter rules and then sends them to a peer review app where they can be included and then synced back into the application. Filter rule needs a GUID so that it can both be stored locally and then matched back when implemented.

Purge transactions without a Global ID before importing new transactions

Because transactions from BankDroid will not always have Global Unique ID:s, Ekonomipuls should always discard any existing transactions that does not have a global ID. Example a transaction "SKYDDAT BELOPP" would later become a normal normal transaction with proper description.

This will ensure that there are no duplicate transactions in Ekonomipuls.

Database locking because of multiple DbHelper instances

If an import from BankDroid is under way in the background at the same time as the gui requests data the database locks up and the application crashes.

Should be fixed by using a content provider in the bottom instead of using the DbHelper directly.

Import summary screen

The import summary screen should list which transactions are imported grouped by category. Checkboxes can set Transactions to hidden/ignored.

Transactions between users own accounts shows up as income and expenses adds to total amount

The total amount is way to much for these transaction they should cancel each other out. Should be a rule or step in the import that handles these.

From Ziq:

Pie-charten visar upp både inkomster och utgifter i samma, jag antar att planen är att ha en för inkomster och en för utgifter i framtiden? Inkomsterna har jag rätt bra koll på så för min del så får de gärna vara en valbar visning.

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.