penny: Extensible double-entry accounting system

[ bsd3, console, finance, library ] [ Propose Tags ]

Penny is a double-entry accounting system. You keep your records in a plain-text file, and Penny gives you useful reports in your UNIX shell.

http://www.github.com/massysett/penny

Versions [faq] 0.24.0.0, 0.26.0.0, 0.28.0.0, 0.30.0.0, 0.30.0.2, 0.32.0.0, 0.32.0.2, 0.32.0.4, 0.32.0.6, 0.32.0.8, 0.32.0.10 changelog action-permutations (>=0.0.0.0 && <0.0.0.2), anonymous-sums (>=0.4.0.0), base (>=4.5.0.0 && <4.8), bytestring (>=0.9.2.1 && <0.11), cereal (>=0.3.5.2 && <0.5), containers (>=0.4.2.1 && <0.6), contravariant (>=0.2.0.1 && <0.5), either (>=3.4.1 && <4.2), matchers (>=0.18.0.0 && <0.19), multiarg (>=0.24.0.4 && <0.27.0.0), ofx (>=0.4.0.2 && <0.5), old-locale (>=1.0.0.4 && <1.1), parsec (>=3.1.3 && <3.2), penny (==0.32.0.10), prednote (>=0.22.0.2 && <0.23), QuickCheck (==2.6.*), rainbow (>=0.14.0.0 && <0.15.0.0), rainbox (>=0.4.0.2 && <0.5), random (>=1.0.0.0 && <1.1), random-shuffle (==0.0.4), semigroups (>=0.9.2 && <0.14), split (>=0.2.2 && <0.3), text (>=0.11.3.1 && <1.2), time (==1.4.*), transformers (>=0.3.0.0) [details] BSD-3-Clause 2012-2014 Omari Norman. Omari Norman omari@smileystation.com Console, Finance http://www.github.com/massysett/penny omari@smileystation.com head: git clone git://github.com/massysett/penny.git by OmariNorman at 2014-04-17T14:38:06Z NixOS:0.32.0.10 penny-reconcile, penny-reprint, penny-diff, penny-selloff, penny, penny-gibberish 7105 total (11 in the last 30 days) (no votes yet) [estimated by Bayesian average] λ λ λ Docs available Successful builds reported

Flags

NameDescriptionDefaultType
build-gibberish

Build the penny-gibberish executable

DisabledAutomatic
build-penny

Build the penny executable

EnabledAutomatic
build-selloff

Build the penny-selloff executable

EnabledAutomatic
build-diff

Build the penny-diff executable

EnabledAutomatic
build-reprint

Build the penny-reprint executable

EnabledAutomatic
build-reconcile

Build the penny-reconcile executable

EnabledAutomatic
debug

turns on some debugging options

DisabledAutomatic
test

enables QuickCheck tests

DisabledAutomatic
incabal

enables imports that only Cabal makes available

EnabledAutomatic

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Maintainer's Corner

For package maintainers and hackage trustees

[back to package description]

Penny - double-entry accounting

Penny is a double-entry accounting system which is inspired by, but incompatible with, Ledger, which is available at

http://ledger-cli.org

Features

Penny is:

• double-entry accounting. It does not attempt to hide the machinery of double-entry accounting from you; for instance, it uses the terms "Debit" and "Credit". For a refresher on the basics of double-entry accounting, pick up a used accounting textbook from your favorite bookseller (they can be had cheaply, for less than ten U.S. dollars including shipping) or check out

http://www.principlesofaccounting.com/

which is a great free online text.

• oriented around the command line and your text editor.

• extensible in Haskell; I have built many ancillary tools that I use "in-house" to do things like check the consistency of my records. Included are tools to automatically process and reconcile bank statements.

• but fully-featured even if you know no Haskell, and you need not learn any Haskell to use Penny.

• logical. Or at least I hope so. The command-line syntax attempts to be as regular as possible.

• good with Unicode text.

• colorful and can use 256-color terminals. Reports make great effort to use all of your screen space automatically to present the most readable reports possible.

• able to handle multiple commodities in a logical and consistent way--handy if you wish to track stock or real estate holdings or transactions in different currencies.

• obsessive. If there was a choice between an easy way and a correct way, I picked the correct way. For instance, all arithmetic is done using decimal numbers rather than binary floating-point types.

• intended for use only on UNIX-like operating systems. In particular, the libraries it uses to print things to your terminal are available primarily on UNIX. Maybe it works on Cygwin too; I have no idea as I use Penny only on UNIX-like systems.

• tested with QuickCheck.

Installation

Dependencies

cabal install will take care of all Haskell dependencies for you; however, there are also at least two C libraries you will need to install as Penny depends on other Haskell libraries that use these C libraries. You will need to make sure you have the "development" package installed if you use many Linux distributions; a few distributors, such as Arch, Slackware, and Gentoo, generally don't ship separate "development" packages so that won't apply to you. The C libraries are:

• pcre - http://www.pcre.org/ - on Debian GNU/Linux systems this package is called libpcre3-dev

• curses - on GNU systems this is known as ncurses, http://www.gnu.org/software/ncurses/ Perhaps other, non-GNU curses implementations will work as well; I do not know. On Debian GNU/Linux systems, install libncurses5-dev.

You will need to get the Glasgow Haskell Compiler. Most Linux distributors package it, or you might be able to get it from the GHC website. Penny has been tested with GHC versions 7.4.1 and 7.6.3; any version between those two versions should also work.

Cabal tool

An easy way to get both GHC and the Cabal tool is to get the Haskell Platform. Currently, versions 2013.2.0.0 or version 2012.4.0.0 should both work.

Penny itself

To install Penny, just do:

cabal update
cabal install --enable-tests penny


I encourage you to run the tests, so the above commands will do that, but if you want to skip them, instead just do

cabal install penny


Documentation

To install the manual pages and the documentation, you need to find the downloaded archive. Typically this is at $HOME/.cabal/packages/hackage.haskell.org/penny. Unpack this archive and look inside. Run sh install-docs  It will install the manual pages to $PREFIX/share/man and the other documentation to $PREFIX/share/doc/penny. By default $PREFIX is /usr/local; you can change this by editing the install-docs file and changing the PREFIX variable.

To remove the manual pages and the documentation, run

sh install-docs remove


The first thing you will want to look at is the manual page penny-basics(7). Then you will want to examine the starter.pny file in the examples directory, which will show you how to write a ledger file. penny-suite(7) will then direct you to other documentation that may interest you.

Penny on the Web

Find Penny on Hackage at

and on Github at

http://www.github.com/massysett/penny

and web pages are here:

http://massysett.github.io/penny

(I am going to phase out the separate web pages in favor of files in the main source code tree.)

Development and bugs

If you find any bugs or if you wish to contribute, please use Github (preferred) or send email to omari@smileystation.com (which works just as well as Github, but if everything else is equal for you and you would flip a coin to determine which contact method to use, then please use Github.)

Version numbers

Versions are numbered like this: A.B.C.D. All regular releases that are ready for use have only even numbers for each of A, B, C, and D. Development releases have an odd number in at least one of A, B, C, or D.

A is currently 0 and probably won't change soon.

I change B whenever I make a breaking change in the library, which is quite often; or

I change C when I add functions to the library; or

I change D when I fix bugs, add documentation, or make adjustments to the specification of which packages Penny depends on.

Dependency documentation and bugs

Since the Haskell libraries Penny depends upon can move along quickly, and because Haskell packages can weave complex dependency graphs, sometimes Penny might not build for you. There is no silver bullet solution to this; if you have build problems, please report them to me via email or Github. Also, note that there are two files in the Penny package that can help you diagnose issues:

• The minimum-versions.txt file will show the oldest software dependencies that are known to work with Penny; and

• The current-versions.txt file will show more recent dependencies that are also known to work with Penny.