ledger/doc/Ledger.scriv/snapshots/202.snapshots
John Wiegley 1f5ceb0db5 Added beginning draft of manual for 3.0
This is being kept in Scrivener format, for ease of writing.
2009-10-25 23:11:30 -04:00

519 lines
10 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>The timeclock tool makes it easy to track time events, like clocking
into and out of a particular job. These events accumulate in a
timelog file.
Each in/out event may have an optional description. If the ``in''
description is a ledger account name, these in/out pairs may be viewed
as virtual postings, adding time commodities (hours) to that
account.
For example, the command-line version of the timeclock tool could be
used to begin a timelog file like:
@example
export TIMELOG=$HOME/.timelog
ti ClientOne category
sleep 10
to waited for ten seconds
@end example
The @file{.timelog} file now contains:
@smallexample
i 2004/10/06 15:21:00 ClientOne category
o 2004/10/06 15:21:10 waited for ten seconds
@end smallexample
Ledger parses this directly, as if it had seen the following transaction:
@smallexample
2004/10/06 category
(ClientOne) 10s
@end smallexample
In other words, the timelog event pair is seen as adding 0.00277h (ten
seconds) worth of time to the @samp{ClientOne} account. This would be
considered billable time, which later could be invoiced and credited
to accounts receivable:
@smallexample
2004/11/01 (INV#1) ClientOne, Inc.
Receivable:ClientOne $0.10
ClientOne -0.00277h @@ $35.00
@end smallexample
The above posting converts the clocked time into an invoice for
the time spent, at an hourly rate of $35. Once the invoice is paid,
the money is deposited from the receivable account into a checking
account:
@smallexample
2004/12/01 ClientOne, Inc.
Assets:Checking $0.10
Receivable:ClientOne
@end smallexample
And now the time spent has been turned into hard cash in the checking
account.
The advantage to using timeclock and invoicing to bill time is that
you will always know, by looking at the balance report, epostly how
much unbilled and unpaid time you've spent working for any particular
client.
I like to @samp{!include} my timelog at the top of my company's
accounting ledger, with the attached prefix @samp{Billable}:
@smallexample
; -*-ledger-*-
; This is the ledger file for my company. But first, include the
; timelog data, entering all of the time events within the umbrella
; account "Billable".
!account Billable
!include /home/johnw/.timelog
!end
; Here follows this fiscal year's postings for the company.
2004/11/01 (INV#1) ClientOne, Inc.
Receivable:ClientOne $0.10
Billable:ClientOne -0.00277h @@ $35.00
2004/12/01 ClientOne, Inc.
Assets:Checking $0.10
Receivable:ClientOne
@end smallexample</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>267380389.388778</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>