Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ledermann/keepr
Double entry bookkeeping with Ruby on Rails
https://github.com/ledermann/keepr
accounting rails ruby
Last synced: 3 months ago
JSON representation
Double entry bookkeeping with Ruby on Rails
- Host: GitHub
- URL: https://github.com/ledermann/keepr
- Owner: ledermann
- License: mit
- Created: 2013-10-05T10:44:45.000Z (about 11 years ago)
- Default Branch: master
- Last Pushed: 2023-12-26T06:04:19.000Z (11 months ago)
- Last Synced: 2024-07-05T15:02:23.771Z (4 months ago)
- Topics: accounting, rails, ruby
- Language: Ruby
- Homepage:
- Size: 216 KB
- Stars: 94
- Watchers: 6
- Forks: 20
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# Keepr
This Ruby gem provides a double entry accounting system for use in any Rails application. It stores all the data via ActiveRecord in the SQL database.
[![Build Status](https://github.com/ledermann/keepr/workflows/Test/badge.svg?branch=master)](https://github.com/ledermann/keepr/actions)
[![Code Climate](https://codeclimate.com/github/ledermann/keepr/badges/gpa.svg)](https://codeclimate.com/github/ledermann/keepr)
[![Coverage Status](https://coveralls.io/repos/github/ledermann/keepr/badge.svg?branch=master)](https://coveralls.io/github/ledermann/keepr?branch=master)## Features
* Journal entries with two or more postings follow the [Double Entry](https://www.accountingcoach.com/blog/what-is-the-double-entry-system) principle
* Accounts (including subaccounts and groups)
* Taxes
* Cost centers
* Balance sheets
* Profit and loss statements
* DATEV exports## Dependencies
* Ruby 3.0+
* Rails 6.1+ (including Rails 7.1)## Installation
Add this line to your application's Gemfile:
gem 'keepr'
And then execute:
$ bundle
Or install it yourself as:
$ gem install keepr
## Getting started
After installation run the following:
rails g keepr:migration
rails db:migrateThis will create the database migration files and add new models.
## Usage
### Account
All accounting entries are stored inside "accounts", per standard accounting
principles. To create an account, use the following format:Keepr::Account.create!(number: 27, name: 'Software', kind: :asset)
"kind" is one of following values:
[asset liability revenue expense forward debtor creditor]
Accounts can have "child" accounts. All entries posted in a child account will
be shown in the "parent" account as well. To create a child account:account_1400 = Keepr::Account.create!(number: 1400, name: 'Software', kind: :expense)
account_14001 = Keepr::Account.create!(number: 14001, name: 'Rails', parent: account_1400 , kind: :expense)Accounts can be organised inside of groups:
group = Keepr::Group.create!(is_result: true, target: :liability, name: 'foo')
Keepr::Account.create!(number: 100, name: 'Trade payable', kind: :liability, keepr_group: group)Groups also allow a parent/child hierarchy:
parent_group = Keepr::Group.create!(is_result: true, target: :liability, name: 'foo')
child_group = parent_group.children.create! name: 'Bar'### Journal
Simple journal:
simple_journal = Keepr::Journal.create keepr_postings_attributes: [
{ keepr_account: account_1000, amount: 100.99, side: 'debit' },
{ keepr_account: account_1200, amount: 100.99, side: 'credit' }
]Complex journal:
complex_journal = Keepr::Journal.create keepr_postings_attributes: [
{ keepr_account: account_4920, amount: 8.40, side: 'debit' },
{ keepr_account: account_1576, amount: 1.60, side: 'debit' },
{ keepr_account: account_1600, amount: 10.00, side: 'credit' }
]Entries can be locked for changing data:
simple_journal.update! permanent: true
### Account balance
We can get an account balance as follows:account_1000.balance
account_1000.balance(Date.today)
account_1000.balance(Date.yesterday...Date.today)
### Tax account
// Create Tax account
Keepr::Account.create! number: 1776, name: 'Umsatzsteuer 19%', kind: :assettax = Keepr::Tax.create! name: 'USt19',
description: 'Umsatzsteuer 19%',
value: 19.0,
keepr_account: tax_account// Create a sale account that links to the tax account
account = Keepr::Account.new number: 8400,
name: 'Erlöse 19% USt',
kind: :revenue,
keepr_tax: tax## Contributing
1. Fork it
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create new Pull Request## Similar projects
* https://github.com/mbulat/plutus
* https://github.com/betterplace/acts_as_account
* https://github.com/steveluscher/bookkeeper
* https://github.com/mstrauss/double-entry-accounting
* https://github.com/logicleague/double_booked
* https://github.com/telent/pacioli
* https://github.com/astrails/deb
* https://github.com/bigfleet/accountableCopyright (c) 2013-2023 [Georg Ledermann](https://ledermann.dev), released under the MIT license