mirror of https://github.com/Gnucash/gnucash
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
3.8 KiB
84 lines
3.8 KiB
GnuCash currently consists of six (mostly) independent modules:
|
|
|
|
The Engine
|
|
----------
|
|
"The Engine" (src/engine) provides an interface for accounts and
|
|
transactions. An account consists of an account name, a default
|
|
currency, a stock-ticker symbol (if applicable), notes, some
|
|
miscellany and a list of "split" transactions. A transaction consists
|
|
of a list of splits, with each split having a description and memo
|
|
field, date entered and date reconciled fields, quantity and price
|
|
fields (price == 1.0 for plain old bank accts), and some misc
|
|
disposition fields.
|
|
|
|
The current implementation is file-format (not SQL) based. It defines
|
|
a byte stream, for saving to a file or transmitting via pipes/sockets
|
|
("persistence" and "data migration" -- the byte stream allows the
|
|
engine objects to be moved/copied/dynamically recreated on any
|
|
host. ). The API also provides simple concurrency controls, including
|
|
a session object, and primitives for beginning/committing/rejecting
|
|
edits. This should be enough to allow SQL-based transactional back
|
|
ends to be implemented. The GUI uses and respects these primitives,
|
|
so GnuCash as a whole should "just work" with an SQL back end.
|
|
|
|
The engine code contains no GUI code whatsoever, and is essentially
|
|
OS-neutral. (It might even compile & run under DOS!)
|
|
|
|
|
|
The Register
|
|
------------
|
|
"The Register" (src/register) implements a ledger-like GUI that allows
|
|
the user to dynamically enter dates, prices, memos descriptions,
|
|
etc. in a natural, intuitive fashion that should be obvious to anyone
|
|
who's used a checkbook register. The code is highly configurable,
|
|
allowing the ledger columns and rows to be laid out in any way, with
|
|
no restrictions on the function, type and number of columns/rows. For
|
|
example, one can define a ledger with three date fields, one price
|
|
field, and four memo fields in a straightforward fashion. Cell
|
|
handling objects support and automatically validate date entry, memo
|
|
entry (w/auto-completion), prices, combo-boxes (pull-down menus),
|
|
multi-state check-boxes. Cells can be marked read-write, or
|
|
output-only. Cells can be assigned unique colors. The currently
|
|
active ledger row-block can be highlighted with a unique color.
|
|
|
|
The register code is completely independent of the engine code, knows
|
|
nothing about accounting or any of the other GnuCash subsystems. It
|
|
can be used in independent projects that have nothing to do with
|
|
accounting.
|
|
|
|
Reports
|
|
-------
|
|
"Reports" (src/reports) are a scheme (guile) based system to create
|
|
balance sheets, profit & loss statements, etc. by using the engine
|
|
API's to fetch and display data. Alpha code, under development.
|
|
|
|
Quotes
|
|
------
|
|
"Quotes" (src/quotes) is a perl system to fetch stock price data off the net
|
|
and jam it into the GnuCash engine API. This is now a separate project called
|
|
Finance::Quote available at SourceForge.
|
|
|
|
Scheme
|
|
------
|
|
"The Scheme" (src/scm, src/guile) is a scheme based infrastructure
|
|
meant to provide general extensibility, as well as command-line/resource
|
|
file processing, user-preferences state management, & other functions.
|
|
Under development.
|
|
|
|
GnuCash
|
|
-------
|
|
"GnuCash" (src/gnome) is the main GUI application.
|
|
It consists of a collection of miscellaneous GUI code to glue together
|
|
all of the pieces above into a coherent, point-and-click whole. It is
|
|
meant to be easy to use and intuitive to the novice user without
|
|
sacrificing the power and flexibility that a professional might
|
|
expect. When people say that GnuCash is trying to be a "Quicken
|
|
or MSMoney look/work/act-alike", this is the piece that they are
|
|
referring to. It really is meant to be a personal-finance manager
|
|
with enough power for the power user and the ease of use for the
|
|
beginner.
|
|
|
|
Currently, the Gnome interface is the only operational interface. The
|
|
Motif code no longer compiles and is not being maintained. The Qt code
|
|
won't compile, most/all functions are missing.
|