552 lines
14 KiB
XML
552 lines
14 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
<plist version="1.0">
|
|
<dict>
|
|
<key>$archiver</key>
|
|
<string>NSKeyedArchiver</string>
|
|
<key>$objects</key>
|
|
<array>
|
|
<string>$null</string>
|
|
<dict>
|
|
<key>$class</key>
|
|
<dict>
|
|
<key>CF$UID</key>
|
|
<integer>37</integer>
|
|
</dict>
|
|
<key>NS.objects</key>
|
|
<array>
|
|
<dict>
|
|
<key>CF$UID</key>
|
|
<integer>2</integer>
|
|
</dict>
|
|
</array>
|
|
</dict>
|
|
<dict>
|
|
<key>$class</key>
|
|
<dict>
|
|
<key>CF$UID</key>
|
|
<integer>33</integer>
|
|
</dict>
|
|
<key>NS.keys</key>
|
|
<array>
|
|
<dict>
|
|
<key>CF$UID</key>
|
|
<integer>3</integer>
|
|
</dict>
|
|
<dict>
|
|
<key>CF$UID</key>
|
|
<integer>4</integer>
|
|
</dict>
|
|
<dict>
|
|
<key>CF$UID</key>
|
|
<integer>5</integer>
|
|
</dict>
|
|
</array>
|
|
<key>NS.objects</key>
|
|
<array>
|
|
<dict>
|
|
<key>CF$UID</key>
|
|
<integer>6</integer>
|
|
</dict>
|
|
<dict>
|
|
<key>CF$UID</key>
|
|
<integer>7</integer>
|
|
</dict>
|
|
<dict>
|
|
<key>CF$UID</key>
|
|
<integer>35</integer>
|
|
</dict>
|
|
</array>
|
|
</dict>
|
|
<string>Title</string>
|
|
<string>Text</string>
|
|
<string>Date</string>
|
|
<string>Untitled Snapshot</string>
|
|
<dict>
|
|
<key>$class</key>
|
|
<dict>
|
|
<key>CF$UID</key>
|
|
<integer>34</integer>
|
|
</dict>
|
|
<key>NSAttributes</key>
|
|
<dict>
|
|
<key>CF$UID</key>
|
|
<integer>10</integer>
|
|
</dict>
|
|
<key>NSDelegate</key>
|
|
<dict>
|
|
<key>CF$UID</key>
|
|
<integer>0</integer>
|
|
</dict>
|
|
<key>NSString</key>
|
|
<dict>
|
|
<key>CF$UID</key>
|
|
<integer>8</integer>
|
|
</dict>
|
|
</dict>
|
|
<dict>
|
|
<key>$class</key>
|
|
<dict>
|
|
<key>CF$UID</key>
|
|
<integer>9</integer>
|
|
</dict>
|
|
<key>NS.string</key>
|
|
<string>Ledger is an accounting tool with the moxie to exist. It provides no
|
|
bells or whistles, and returns the user to the days before user
|
|
interfaces were even a twinkling in their father's CRT.
|
|
|
|
What it does offer is a double-entry accounting ledger with all the
|
|
flexibility and muscle of its modern day cousins, without any of the
|
|
fat. Think of it as the Bran Muffin of accounting tools.
|
|
|
|
To use it, you need to start keeping a ledger. This is the basis of
|
|
all accounting, and if you haven't started yet, now is the time to
|
|
learn. The little booklet that comes with your checkbook is a ledger,
|
|
so we'll describe double-entry accounting in terms of that.
|
|
|
|
A checkbook ledger records debits (subtractions, or withdrawals) and
|
|
credits (additions, or deposits) with reference to a single account:
|
|
the checking account. Where the money comes from, and where it goes
|
|
to, are described in the payee field, where you write the person or
|
|
company's name. The ultimate aim of keeping a checkbook ledger is to
|
|
know how much money is available to spend. That's really the aim of
|
|
all ledgers.
|
|
|
|
What computers add is the ability to walk through these postings,
|
|
and tell you things about your spending habits; to let you devise
|
|
budgets and get control over your spending; to squirrel away money
|
|
into virtual savings account without having to physically move money
|
|
around; etc. As you keep your ledger, you are recording information
|
|
about your life and habits, and sometimes that information can start
|
|
telling you things you aren't aware of. Such is the aim of all good
|
|
accounting tools.
|
|
|
|
The next step up from a checkbook ledger, is a ledger that keeps track
|
|
of all your accounts, not just checking. In such a ledger, you record
|
|
not only who gets paid---in the case of a debit---but where the money
|
|
came from. In a checkbook ledger, its assumed that all the money
|
|
comes from your checking account. But in a general ledger, you write
|
|
posting two-lines: the source account and target account.
|
|
@emph{There must always be a debit from at least one account for every
|
|
credit made to another account}. This is what is meant by
|
|
``double-entry'' accounting: the ledger must always balance to zero,
|
|
with an equal number of debits and credits.
|
|
|
|
For example, let's say you have a checking account and a brokerage
|
|
account, and you can write checks from both of them. Rather than keep
|
|
two checkbooks, you decide to use one ledger for both. In this
|
|
general ledger you need to record a payment to Pacific Bell for your
|
|
monthly phone bill. The cost is $23.00, let's say, and you want to
|
|
pay it from your checking account. In the general ledger you need to
|
|
say where the money came from, in addition to where it's going to.
|
|
The transaction might look like this:
|
|
|
|
@smallexample
|
|
9/29 BAL Pacific Bell $-200.00 $-200.00
|
|
Equity:Opening Balances $200.00
|
|
9/29 BAL Checking $100.00 $100.00
|
|
Equity:Opening Balances $-100.00
|
|
9/29 100 Pacific Bell $23.00 $223.00
|
|
Checking $-23.00 $77.00
|
|
@end smallexample
|
|
|
|
The first line shows a payment to Pacific Bell for $23.00. Because
|
|
there is no ``balance'' in a general ledger---it's always zero---we
|
|
write in the total balance of all payments to ``Pacific Bell'', which
|
|
now is $223.00 (previously the balance was $200.00). This is done by
|
|
looking at the last transaction for ``Pacific Bell'' in the ledger, adding
|
|
$23.00 to that amount, and writing the total in the balance column.
|
|
And the money came from ``Checking''---a withdrawal of $23.00---which
|
|
leaves the ending balance in ``Checking'' at $77.00. This is a very
|
|
manual procedure; but that's where computers come in...
|
|
|
|
The posting must balance to $0: $23 went to Pacific Bell, $23 came
|
|
from Checking. There is nothing left over to be accounted for, since
|
|
the money has simply moved from one account to another. This is the
|
|
basis of double-entry accounting: that money never pops in or out of
|
|
existence; it is always a posting from one account to another.
|
|
|
|
Keeping a general ledger is the same as keeping two separate ledgers:
|
|
One for Pacific Bell and one for Checking. In that case, each time a
|
|
payment is written into one, you write a corresponding withdrawal into
|
|
the other. This makes it easier to write in a ``running balance'',
|
|
since you don't have to look back at the last time the account was
|
|
referenced---but it also means having a lot of ledger books, if you
|
|
deal with multiple accounts.
|
|
|
|
Enter the beauty of computerized accounting. The purpose of the
|
|
Ledger program is to make general ledger accounting simple, by keeping
|
|
track of the balances for you. Your only job is to enter the
|
|
postings. If a posting does not balance, Ledger displays an
|
|
error and indicates the incorrect posting.@footnote{In some
|
|
special cases, it automatically balances this transaction for you.}
|
|
|
|
In summary, there are two aspects of Ledger use: updating the ledger
|
|
data file, and using the Ledger tool to view the summarized result of
|
|
your transactions.
|
|
|
|
And just for the sake of example---as a starting point for those who
|
|
want to dive in head-first---here are the ledger transactions from above,
|
|
formatting as the ledger program wishes to see them:
|
|
|
|
@smallexample
|
|
2004/09/29 Pacific Bell
|
|
Payable:Pacific Bell $-200.00
|
|
Equity:Opening Balances
|
|
|
|
2004/09/29 Checking
|
|
Accounts:Checking $100.00
|
|
Equity:Opening Balances
|
|
|
|
2004/09/29 Pacific Bell
|
|
Payable:Pacific Bell $23.00
|
|
Accounts:Checking
|
|
@end smallexample
|
|
|
|
The account balances and registers in this file, if saved as
|
|
@file{ledger.dat}, could be reported using:
|
|
|
|
@example
|
|
$ ledger -f ledger.dat balance
|
|
$ ledger -f ledger.dat register checking
|
|
$ ledger -f ledger.dat register bell
|
|
@end example</string>
|
|
</dict>
|
|
<dict>
|
|
<key>$classes</key>
|
|
<array>
|
|
<string>NSMutableString</string>
|
|
<string>NSString</string>
|
|
<string>NSObject</string>
|
|
</array>
|
|
<key>$classname</key>
|
|
<string>NSMutableString</string>
|
|
</dict>
|
|
<dict>
|
|
<key>$class</key>
|
|
<dict>
|
|
<key>CF$UID</key>
|
|
<integer>33</integer>
|
|
</dict>
|
|
<key>NS.keys</key>
|
|
<array>
|
|
<dict>
|
|
<key>CF$UID</key>
|
|
<integer>11</integer>
|
|
</dict>
|
|
<dict>
|
|
<key>CF$UID</key>
|
|
<integer>12</integer>
|
|
</dict>
|
|
</array>
|
|
<key>NS.objects</key>
|
|
<array>
|
|
<dict>
|
|
<key>CF$UID</key>
|
|
<integer>13</integer>
|
|
</dict>
|
|
<dict>
|
|
<key>CF$UID</key>
|
|
<integer>30</integer>
|
|
</dict>
|
|
</array>
|
|
</dict>
|
|
<string>NSParagraphStyle</string>
|
|
<string>NSFont</string>
|
|
<dict>
|
|
<key>$class</key>
|
|
<dict>
|
|
<key>CF$UID</key>
|
|
<integer>29</integer>
|
|
</dict>
|
|
<key>NSAlignment</key>
|
|
<integer>4</integer>
|
|
<key>NSLineHeightMultiple</key>
|
|
<real>1.1000000238418579</real>
|
|
<key>NSTabStops</key>
|
|
<dict>
|
|
<key>CF$UID</key>
|
|
<integer>14</integer>
|
|
</dict>
|
|
</dict>
|
|
<dict>
|
|
<key>$class</key>
|
|
<dict>
|
|
<key>CF$UID</key>
|
|
<integer>28</integer>
|
|
</dict>
|
|
<key>NS.objects</key>
|
|
<array>
|
|
<dict>
|
|
<key>CF$UID</key>
|
|
<integer>15</integer>
|
|
</dict>
|
|
<dict>
|
|
<key>CF$UID</key>
|
|
<integer>17</integer>
|
|
</dict>
|
|
<dict>
|
|
<key>CF$UID</key>
|
|
<integer>18</integer>
|
|
</dict>
|
|
<dict>
|
|
<key>CF$UID</key>
|
|
<integer>19</integer>
|
|
</dict>
|
|
<dict>
|
|
<key>CF$UID</key>
|
|
<integer>20</integer>
|
|
</dict>
|
|
<dict>
|
|
<key>CF$UID</key>
|
|
<integer>21</integer>
|
|
</dict>
|
|
<dict>
|
|
<key>CF$UID</key>
|
|
<integer>22</integer>
|
|
</dict>
|
|
<dict>
|
|
<key>CF$UID</key>
|
|
<integer>23</integer>
|
|
</dict>
|
|
<dict>
|
|
<key>CF$UID</key>
|
|
<integer>24</integer>
|
|
</dict>
|
|
<dict>
|
|
<key>CF$UID</key>
|
|
<integer>25</integer>
|
|
</dict>
|
|
<dict>
|
|
<key>CF$UID</key>
|
|
<integer>26</integer>
|
|
</dict>
|
|
<dict>
|
|
<key>CF$UID</key>
|
|
<integer>27</integer>
|
|
</dict>
|
|
</array>
|
|
</dict>
|
|
<dict>
|
|
<key>$class</key>
|
|
<dict>
|
|
<key>CF$UID</key>
|
|
<integer>16</integer>
|
|
</dict>
|
|
<key>NSLocation</key>
|
|
<real>28</real>
|
|
</dict>
|
|
<dict>
|
|
<key>$classes</key>
|
|
<array>
|
|
<string>NSTextTab</string>
|
|
<string>NSObject</string>
|
|
</array>
|
|
<key>$classname</key>
|
|
<string>NSTextTab</string>
|
|
</dict>
|
|
<dict>
|
|
<key>$class</key>
|
|
<dict>
|
|
<key>CF$UID</key>
|
|
<integer>16</integer>
|
|
</dict>
|
|
<key>NSLocation</key>
|
|
<real>56</real>
|
|
</dict>
|
|
<dict>
|
|
<key>$class</key>
|
|
<dict>
|
|
<key>CF$UID</key>
|
|
<integer>16</integer>
|
|
</dict>
|
|
<key>NSLocation</key>
|
|
<real>84</real>
|
|
</dict>
|
|
<dict>
|
|
<key>$class</key>
|
|
<dict>
|
|
<key>CF$UID</key>
|
|
<integer>16</integer>
|
|
</dict>
|
|
<key>NSLocation</key>
|
|
<real>112</real>
|
|
</dict>
|
|
<dict>
|
|
<key>$class</key>
|
|
<dict>
|
|
<key>CF$UID</key>
|
|
<integer>16</integer>
|
|
</dict>
|
|
<key>NSLocation</key>
|
|
<real>140</real>
|
|
</dict>
|
|
<dict>
|
|
<key>$class</key>
|
|
<dict>
|
|
<key>CF$UID</key>
|
|
<integer>16</integer>
|
|
</dict>
|
|
<key>NSLocation</key>
|
|
<real>168</real>
|
|
</dict>
|
|
<dict>
|
|
<key>$class</key>
|
|
<dict>
|
|
<key>CF$UID</key>
|
|
<integer>16</integer>
|
|
</dict>
|
|
<key>NSLocation</key>
|
|
<real>196</real>
|
|
</dict>
|
|
<dict>
|
|
<key>$class</key>
|
|
<dict>
|
|
<key>CF$UID</key>
|
|
<integer>16</integer>
|
|
</dict>
|
|
<key>NSLocation</key>
|
|
<real>224</real>
|
|
</dict>
|
|
<dict>
|
|
<key>$class</key>
|
|
<dict>
|
|
<key>CF$UID</key>
|
|
<integer>16</integer>
|
|
</dict>
|
|
<key>NSLocation</key>
|
|
<real>252</real>
|
|
</dict>
|
|
<dict>
|
|
<key>$class</key>
|
|
<dict>
|
|
<key>CF$UID</key>
|
|
<integer>16</integer>
|
|
</dict>
|
|
<key>NSLocation</key>
|
|
<real>280</real>
|
|
</dict>
|
|
<dict>
|
|
<key>$class</key>
|
|
<dict>
|
|
<key>CF$UID</key>
|
|
<integer>16</integer>
|
|
</dict>
|
|
<key>NSLocation</key>
|
|
<real>308</real>
|
|
</dict>
|
|
<dict>
|
|
<key>$class</key>
|
|
<dict>
|
|
<key>CF$UID</key>
|
|
<integer>16</integer>
|
|
</dict>
|
|
<key>NSLocation</key>
|
|
<real>336</real>
|
|
</dict>
|
|
<dict>
|
|
<key>$classes</key>
|
|
<array>
|
|
<string>NSArray</string>
|
|
<string>NSObject</string>
|
|
</array>
|
|
<key>$classname</key>
|
|
<string>NSArray</string>
|
|
</dict>
|
|
<dict>
|
|
<key>$classes</key>
|
|
<array>
|
|
<string>NSParagraphStyle</string>
|
|
<string>NSObject</string>
|
|
</array>
|
|
<key>$classname</key>
|
|
<string>NSParagraphStyle</string>
|
|
</dict>
|
|
<dict>
|
|
<key>$class</key>
|
|
<dict>
|
|
<key>CF$UID</key>
|
|
<integer>32</integer>
|
|
</dict>
|
|
<key>NSName</key>
|
|
<dict>
|
|
<key>CF$UID</key>
|
|
<integer>31</integer>
|
|
</dict>
|
|
<key>NSSize</key>
|
|
<real>14</real>
|
|
<key>NSfFlags</key>
|
|
<integer>16</integer>
|
|
</dict>
|
|
<string>Courier</string>
|
|
<dict>
|
|
<key>$classes</key>
|
|
<array>
|
|
<string>NSFont</string>
|
|
<string>NSObject</string>
|
|
</array>
|
|
<key>$classname</key>
|
|
<string>NSFont</string>
|
|
</dict>
|
|
<dict>
|
|
<key>$classes</key>
|
|
<array>
|
|
<string>NSDictionary</string>
|
|
<string>NSObject</string>
|
|
</array>
|
|
<key>$classname</key>
|
|
<string>NSDictionary</string>
|
|
</dict>
|
|
<dict>
|
|
<key>$classes</key>
|
|
<array>
|
|
<string>KBWordCountingTextStorage</string>
|
|
<string>NSTextStorage</string>
|
|
<string>NSMutableAttributedString</string>
|
|
<string>NSAttributedString</string>
|
|
<string>NSObject</string>
|
|
</array>
|
|
<key>$classname</key>
|
|
<string>KBWordCountingTextStorage</string>
|
|
</dict>
|
|
<dict>
|
|
<key>$class</key>
|
|
<dict>
|
|
<key>CF$UID</key>
|
|
<integer>36</integer>
|
|
</dict>
|
|
<key>NS.time</key>
|
|
<real>267380388.667629</real>
|
|
</dict>
|
|
<dict>
|
|
<key>$classes</key>
|
|
<array>
|
|
<string>NSDate</string>
|
|
<string>NSObject</string>
|
|
</array>
|
|
<key>$classname</key>
|
|
<string>NSDate</string>
|
|
</dict>
|
|
<dict>
|
|
<key>$classes</key>
|
|
<array>
|
|
<string>NSMutableArray</string>
|
|
<string>NSArray</string>
|
|
<string>NSObject</string>
|
|
</array>
|
|
<key>$classname</key>
|
|
<string>NSMutableArray</string>
|
|
</dict>
|
|
</array>
|
|
<key>$top</key>
|
|
<dict>
|
|
<key>Snapshots</key>
|
|
<dict>
|
|
<key>CF$UID</key>
|
|
<integer>1</integer>
|
|
</dict>
|
|
</dict>
|
|
<key>$version</key>
|
|
<integer>100000</integer>
|
|
</dict>
|
|
</plist>
|