Git Product home page Git Product logo

taxomatic's Introduction

Build Status

Introduction

taxomatic helps you do your monthly tax declaration. It imports your invoices and bank statements, lets you flag expenses easily, and calculates the tax to be paid.

Screenshots

Tax declaration page

image

Listing account statements (waiting to be flagged as expenses)

image

How data gets into the system (the automated way)

image

Assumptions

  1. You pay your taxes in Germany and have to do monthly advance payments for sales tax (VAT, Umsatzsteuer).
  2. You manage your bank accounts with the OS X application Outbank (optional but recommended)
  3. You use Harvest to bill your clients (optional)

Steps 2. and 3. are optional, but they are the part that makes the declaration take less than 5 minutes. You can also enter expenses and invoices by hand, I did that for a long time and it worked well enough. I'm open to pull requests for importers from other tools and services (like Saldomat).

Installation

  • Ensure you're running Ruby 1.9 and have the RUBYOPT environment variable set to -Ku.
  • Clone the repository, run bundle to install the gems, and set up / migrate the database.
  • Copy config/taxomatic.yml.example to config/taxomatic.yml and configure it appropriately.

Importing statements from Outbank

  1. Before you start, ensure that all statement lines you are going to import have a category, and that this category is present in taxomatic (matching is done by name). You can also do this by trial-and-error as the lines that can't be imported will be skipped.
  2. Export the statements of the desired Outbank accounts as CSV. When exporting, leave all settings at their default
  3. Save the file in data/outbank.csv.
  4. Run rake import:statement

Importing invoices from Harvest

  1. Before you start, ensure that all clients of your invoices exist in taxomatic. The matching is done by the harvest_client id.
  2. Ensure the harvest client is configured in config/taxomatic.yml
  3. Run rake import:invoices

On the next export, taxomatic will be careful not to import invoices twice.

Pro tips

  • Run rake backup to dump the current database state to data/backups.
  • Run rake import to import both statements and invoices. This will also do a backup before importing.
  • Run taxomatic with the Pow server so it'll always be running in the background when you need it.

BIG DISCLAIMER

taxomatic may set your house on fire, delete all your bank accounts (including the money in them) and even kill a kitten in the process. Well, maybe it won't, but at least you have been warned.

taxomatic is not security reviewed and has no login, so it shouldn't be run on the web. The tax calculations haven't been checked in depth. For anyone who hasn't written it, it may be hard to understand/use the tool. See Todos.

taxomatic is also not well tested everywhere, although I've been careful to test the recent parts of the model layer (data import). See Todos.

It is (probably) also one of the oldest Ruby on Rails applications alive, being started at version 0.something. That's why you'll find plenty of code that would be written differently today.

I don't use the ESt (income tax) module anymore, don't use it without reviewing the code first.

Todos

  • Write acceptance tests for a few variations of tax declarations.
  • Ensure that a StatementLine can only have one expenses (uniqueness of payments.expense_id)
  • Allow adapting the USt-rate per statement line directly in the USt interface
  • Modernize deprecated/old school Ruby/Rails code, convert .erb templates to .slim.

taxomatic's People

Contributors

phillipoertel avatar unnu avatar

Watchers

 avatar

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.