$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