Coder Social home page Coder Social logo

sfttech / abrechnung Goto Github PK

View Code? Open in Web Editor NEW
110.0 9.0 14.0 6.81 MB

Payment tracking and money splitting for groups :money_with_wings:

Home Page: https://abrechnung.readthedocs.io

License: GNU Affero General Public License v3.0

Python 23.00% PLpgSQL 3.96% HTML 0.03% CSS 0.04% JavaScript 0.37% Makefile 0.07% Shell 0.16% TypeScript 71.18% Ruby 0.20% Java 0.72% Objective-C 0.20% Objective-C++ 0.07%
payment money-management reckoning accounting expense-tracker multi-tenant bill-splitting split-expenses splitwise events

abrechnung's People

Contributors

kasimos avatar leofah avatar mic-e avatar mikonse avatar raupinger avatar returntoreality avatar ricardojeronimo avatar thejj avatar ymeiron 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

abrechnung's Issues

Sortable/searchable positions in a purchase

When assigning positions of a purchase to clearing accounts e.g. by a recipe, it's hard to find items since they're totally unsorted and not easily searchable.
One can already use the browser-global search, though.

link to sourcecode

since we're agpl, we should provide a customizable link to the source code, which defaults to the upstream repo.
if somebody modifies the abrechnung, they should be able to change the source link to their repo easily.

Reload/Update Site once a new group/transaction is added

When adding a new group by clicking the plus symbol on the front page, a popup appears where I can enter the group name and description.
Once I press "Save", the popup disappears, however no new group appears in the list.
First on a reload, the new group appears in the list.
SImilar situation when adding a transaction.

Image upload: basic editing features

When uploading an image, it would be nice to have the most important image editing features:

  • cropping
  • rotation
  • brightness & contrast
  • maybe even shearing and trapezial adjustments

New Account description field not editable

When creating a new account (the real one, not the clearing account), the description field is not editable.

When the account is saved and edited again, the description is editable as expected.

Display sum of shares

In the clearing account edit view, one should see the sum of shares.
This helps in seeing that enough participants were selected.

helper to settle balances

Implement a small helper in the UI to show the most efficient way to settle the balances in a group, e.g. for balances

  • A: -20€
  • B: 10€
  • C: 10€

this would result in the instructions

  • A->B: 10€
  • A->C: 10€

UI scrolls to top when interfaced with

When editing a transaction for the first time, when you click the checkbox next to an account in order to add them to be a debtee of the transaction, the Website scrolls to the top of the page.

Dynamic website titles

Currently it always just says "Abrechnung", it would be helpful when working with multiple open tabs to see what is opened in each tab, depending on the open view.

multi-instance feature

so one can enter ones tenancy at a central login page.

this can also be used for our demo instance - a click spawns a temporary tenant where one can try for a limited time.

Matrix Integration

Possible features:

  • tie matrix chats / spaces to abrechnung groups (e.g. via a bot / matrix appservice / matrix plugin - bot probably best)
    • requires connecting matrix accounts to abrechnung accounts or sign in via matrix
  • sign in with matrix accounts
  • Include into chats with widgets

Remove width limit for position assignment table

When there are many accounts in the position assignment table, it becomes really unreadable.
A solution is to "zoom out", but then the width limit of the table kicks in.

This width limit should be removable, or resizable.

One can remove it manually in the F12-hackermode (the max-width), then the table becomes really reable even when one has zoomed out considerably.

Also the communist share section should be resizable, i.e. the delimiter between "for whom" and the items has to be movable.

repeating expenses

add an option to have a transaction automatically repeat with a certain interval

Plugin API

For some applications it may be great to have a plugin-API, to easily add new features without having to deal with the core-abrechung and contribute the features for all users.

Plugin examples that come to my mind:

  • Beverage tracking system (i.e. beverate items, their barcodes, the scanning, the auto-deduction, ...)
  • Interfaces to payment systems (paypal, ...)
  • Glueing to ERP systems
  • "Special" features needed for some groups (e.g. a special flat share currency for performing cleaning routines)

shared item without shared mark gets lost

When you enter an item and don't assign it any usage, it is listed as "shared" as expected, but it's balance is actually 0 and is not shared at all. It vanishes and is not considered at all.
When the 'shared' checkbox is ticket, it's accounted for as it should be.

Allow inline calculation of values

When inserting a position or share to a user it would be nice to have an inline calculator.
e.g. 3 people bought the same dish for 4,56€ which is then billed as position with 13,68€. For user friendliness it's nice to just insert 3*4,56 and the result is immediately computed.

This will be also useful in many other places, where numbers are inserted, e.g. the value of a share.

item copy button

In the item list each item should have a copy button which clones the item. So your bill contains 5 times the position "Schlagsahne" you only have to enter that once and the you can copy that item 4 times. The button can be next to the trash button.

Replace SAP

It shouldn't be much effort to provide a good replacement for SAP.
We have all the basic blocks already: A database, an user interface, and an API.
World domination, here we come.

... Hopefully people will simply call the system SFT then :)

Duplication of clearing accounts

When you have several meals handled as clearing accounts, the humans participating may be the very similar between the accounts.

To simplify creation, copying a previous account would help. Then one can edit the differences.

JSON Backup

Group members should be allowed to download all group data as a JSON dump.
Likewise, users should be able to create a new group by uploading a JSON dump.

This serves a multitude of purposes:

  • Backup to prevent loss of data if this hosted instance of the Abrechnung goes offline.
  • Trust anchor for users who fear manipulation of the online data
  • Users can download the group dump and play with it in a local sandbox
  • Users can download the group dump and analyze it with their own script to generate metrics or perform whatever analysis that is not possible via the web interface
  • Users can use the JSON upload feature to bulk-import data from other systems
  • If a user loses write access to a group they can create their own 'fork' easily

Not sure about binary attachments, they could be gotten as a zip file or whatever.
We should under no circumstances allow replacing group data with an offline backup, this would completely destroy the trustworthiness of group data.

support for psql socket authentication

basically if one just provides a dbname and no host, user and password, the postgresql unix socket authentication should be used (and encouraged to do so in the guide).
with that, no database password is needed.

demo application

host a demo instance of abrechnung somewhere so people can take a look

Possible measures to prevent abuse:

  • wipe database every day
  • disable registration and email sending
  • only allow a predefined user to login

Don't scroll table headers

When assigning positions in a purchase, the columns become ambiguous when scrolling down.
One should be able to see what each colum means somehow.

offline functionality

currently the web app has no offline capabilities at all and does not deal well with unstable / slow connections as updates to local data is only fetched after websocket notifications.

Measures to decouple the websocket notifications from data changes due to actions:

  • after an action return the new model state from the db, e.g. after changing a transaction share return the new (or partial) transaction in the post response. Determine if it smarter (or easier) to only send partial updates to the model or always send the full model
  • use websocket notifications only to load changes other users (sessions of the same user) made

Further improvements for future offline capabilities

  • implement API endpoint with which to fully sync a transaction state (including metadata as well as shares)
  • implement API endpoint with which to fully sync a transaction position (including metadata as well as position shares)

Show Changes from Clearing Accounts in Balance of Account (mensch.php)

Currently the changes from clearing accounts are not displayed in the balance overview of an account.
This is quite confusing to the user how the final balance is computed, especially if there is no transaction listed at all.

How it should be:
add the clearing account as entry with positive or negative effect so one can see it in the balance overview.

Packaging

  • pypi package for python part
  • debian package for api and web src

Comment/Note field for purchase

there one could enter things like the location where the purchase was done.

maybe should be a text area in the transaction detail view

support adding taxes

some shops like metro use pre-tax entries for items, so we need to tax them automatically for correct item usage assignments.

also there's several tax categories possible.

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.