$archiver NSKeyedArchiver $objects $null $class CF$UID 37 NS.objects CF$UID 2 $class CF$UID 33 NS.keys CF$UID 3 CF$UID 4 CF$UID 5 NS.objects CF$UID 6 CF$UID 7 CF$UID 35 Title Text Date Untitled Snapshot $class CF$UID 34 NSAttributes CF$UID 10 NSDelegate CF$UID 0 NSString CF$UID 8 $class CF$UID 9 NS.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 $classes NSMutableString NSString NSObject $classname NSMutableString $class CF$UID 33 NS.keys CF$UID 11 CF$UID 12 NS.objects CF$UID 13 CF$UID 30 NSParagraphStyle NSFont $class CF$UID 29 NSAlignment 4 NSLineHeightMultiple 1.1000000238418579 NSTabStops CF$UID 14 $class CF$UID 28 NS.objects CF$UID 15 CF$UID 17 CF$UID 18 CF$UID 19 CF$UID 20 CF$UID 21 CF$UID 22 CF$UID 23 CF$UID 24 CF$UID 25 CF$UID 26 CF$UID 27 $class CF$UID 16 NSLocation 28 $classes NSTextTab NSObject $classname NSTextTab $class CF$UID 16 NSLocation 56 $class CF$UID 16 NSLocation 84 $class CF$UID 16 NSLocation 112 $class CF$UID 16 NSLocation 140 $class CF$UID 16 NSLocation 168 $class CF$UID 16 NSLocation 196 $class CF$UID 16 NSLocation 224 $class CF$UID 16 NSLocation 252 $class CF$UID 16 NSLocation 280 $class CF$UID 16 NSLocation 308 $class CF$UID 16 NSLocation 336 $classes NSArray NSObject $classname NSArray $classes NSParagraphStyle NSObject $classname NSParagraphStyle $class CF$UID 32 NSName CF$UID 31 NSSize 14 NSfFlags 16 Courier $classes NSFont NSObject $classname NSFont $classes NSDictionary NSObject $classname NSDictionary $classes KBWordCountingTextStorage NSTextStorage NSMutableAttributedString NSAttributedString NSObject $classname KBWordCountingTextStorage $class CF$UID 36 NS.time 267380389.388778 $classes NSDate NSObject $classname NSDate $classes NSMutableArray NSArray NSObject $classname NSMutableArray $top Snapshots CF$UID 1 $version 100000