Car Logbook
This system is an applet designed to track the business use of vehicles.
The system was developed to comply with Australian Taxation Office (ATO) rules.
To run it you need Microsoft .NET Framework Version 1.1 installed and Internet Explorer. It is a single user system.
Key seach words:
Tax, Taxes, VAT, GST, ABN, Car, Logbook,Log, Truck, Vehicle, Business, ATO
Cars, Drivers, Reasons, Types and Clients
These ATO logbook rulese are as at 2003/12/31
Your logbook must contain the following information:
§ when the logbook period begins and ends
§ the car's odometer readings at the start and end of the logbook period
§ the total number of kilometers that the car traveled during the logbook period
§ the number of kilometers traveled for work activities based on trips recorded in the logbook.
§ the business use percentage for the logbook period
§ the make, model, engine capacity and registration number of the car.
For each trip your logbook must also show details of each business trip. You must write down:
§ the day the trip began and the day it ended.
§ the car's odometer readings at the start and end of the trip
§ how many kilometers the car traveled on the trip
§ the reason for the trip.
The logbook entries must be made at the end of the trip, or as soon as possible afterwards, and they must be in English.
Working out your claim
Once you have worked out your business use percentage, you can apply it to your car expenses. You need to keep written evidence of all your car expenses except for fuel and oil costs—for example, registration, repairs, interest and insurance.
Step 1
Add up your total expenses for fuel and oil, registration, insurance, interest, repairs and maintenance, the decline in value or lease payments and any other costs of running your car.
Step 2
Using your business use percentage, work out the business portion of your total expenses from step 1. This is the amount you can claim.
Additional information
This system stores Client and trip Type which is not required by ATO and can be used in reporting.
The heart of the system data is Trips table which contains all trip data. To change stored values you must use provided replace/delete commands or alter/enter them manually. Trips table contains:
Column |
Description/comment |
Type |
ID |
Sequential reference identifier managed by system. |
Integer |
Locked |
Trip locked/unlock flag managed by system |
Yes/No |
Marker |
Marker flag managed by system |
Yes/No |
Car |
Car name. It should contain registration number |
Text |
DateStart |
Trip start date in the form yyyy/mm/dd |
Text |
DateEnd |
Trip end date in the form yyyy/mm/dd |
Text |
OdoStart |
Start of a trip odometer value |
Number |
OdoEnd |
End of a trip odometer value |
Number |
Traveled |
OdoEnd - OdoStart |
Number |
Driver |
Person who drives the car and will lodge tax claim |
Text |
Client |
Client you are visiting |
Text |
Reason |
Trip reason |
Text |
Type |
Any classification, can be accounting code |
Text |
FinYear |
Financial year calculated from DateStart |
Text |
QRT |
Annual quarter ,first quarter is Jan-Mar, yyyy calculated from DateStart |
Text |
Note |
Identifies any detected data inconsistency |
Text |
The system supports two types of records – Trip and Marker.
Trip record describes business journey and marker is used to store odometer value.
Marker is used to record odometer readings. This is needed to determine how far a car has traveled during a period.
For each car you need:
§ Marker record for the period start
§ Marker record for the period end
If you reporting by quarters you will need marker records for each quarter.
For selected time period the distance and business use is calculated as follows:
It is assumed all trips are for business use
Total Distance Traveled = Highest Odometer End – Lowest Odometer Start
Traveled = Odometer End – Odometer Start for each trip
Percentage = 100 * (Sum of Traveled)/ (Total Distance Traveled)
There is two ways you can select a period either by setting a filter or using standard report in which case the period is set to a financial year.
Please note the system doesn’t rely upon presence of marker records. If no marker records are present then it will select highest and lowest values from trip records. In that case business use is 100%.
The system expects odometer reading to be sequential with appropriate dates.
For example
Date Start |
Date End |
Odometer Start |
Odometer Start |
2004/01/01 |
2004/01/01 |
11,111 |
11,130 |
2004/02/02 |
2004/02/02 |
11,130 |
11,555 |
2004/02/11 |
2004/02/11 |
11,555 |
12,000 |
This example is Ok and can be entered, sorted and filtered in any order. The system will identify records which are not sequential by odometer reading with appropriate dates.
Invalid data examples
Date Start |
Date End |
Odometer Start |
Odometer Start |
2004/01/01 |
2004/01/01 |
11,111 |
11,130 |
2003/12/31 |
2003/12/31 |
11,130 |
11,555 |
2004/02/11 |
2004/02/11 |
11,555 |
12,000 |
Wrong date or odemeter setting.
Date Start |
Date End |
Odometer Start |
Odometer Start |
2004/01/01 |
2004/01/01 |
11,111 |
11,130 |
2004/02/02 |
2004/02/02 |
11,130 |
11,555 |
2004/02/11 |
2004/02/11 |
10,000 |
11,000 |
Wrong odemeter setting.
We recommend that you always check the Note column for any data inconsistencies.
Note is created for all stored records which are sorted into OdoStart, OdoEnd, Marker DESC, and ID order.
Each record is compared to the previous one and the following errors are checked for
Error |
Meaning |
? |
Not updated |
(dup) |
Duplicated |
(o s,e) |
Current record odometer start value is lower than previous record odometer end value |
(o s,s) |
Current record odometer start value is lower than previous record odometer start value |
(o e,e) |
Current record odometer end value is lower than previous record odometer end value |
(d s,e) |
Current record date start value is lower than previous record date end value |
(d s,s) |
Current record date start value is lower than previous record date start value |
(d e,e) |
Current record date end value is lower than previous record date end value |
The system checks only previous record i.e. it doesn’t detect compounded errors.
There is only one record stored for a car there is way to check it.
To facilitate the sequential data order the system will provide default values for a new trip. These are derived from the last entered record. Whenever possible use existing values stored in combo boxes. The system will automatically add any new text value.
If you change car name the system keeps suggested values. To make sure that you get a valid starting values click on [Last Trip] button.
Closing Add/Edit form without clicking on [Ok] button doesn’t update data i.e. it acts as [Cancel] button.
The system is capital case insensitive i.e. “Mike” is equal to “mike”. Once new text value is entered you will not be able to change letter case.
All data is stored as XML files and is checked for XML integrity. Which means that characters <>[]{}*%"' are not allowed.
There is no security provided. All XML files can be viewed and altered via notepad. Please note that the level of security is equivalent to a spreadsheet which is not password protected.
Do not manually alter XML files!
To run this software you need: Microsoft .NET Framework Version 1.1 and Microsoft Internet Explorer. We recommend that you use 800x600 or higher pixels resolution.
The system creates following objects in its domicile directory:
Object |
Comments |
Car Logbook Data.xml |
Stored data |
Car Logbook Message Log.txt |
Log of all messages issued by the system. It is used to debug the system. |
..\BackUp |
Back up directory |
…\BackUp\An.xml |
Back up files which are numbered from A0 to A9 and contain copies of Car Logbook Data.xml. A0.xml is the latest copy. |
Printout.htm |
System output which is sent to Internet Explorer |
Saves the current data to disk file. When you close the system it will save the current data to disk file. We suggest you use this command when you are entering large amount of data or have a premonition that PC is about to crash.
The system writes all of its printout to a HTML file and opens it with Internet Explorer.
This menu item gives you an option:
§ To select print columns
§ Change print column order
§ Save print selection
Please note that only the current view is printed.
This menu item produces summary report for all stored data.
This menu item prints a blank form that can be used to detail your trips for subsequent data entry.
A view is defined by the current setting of sort sequence and filter. You can save the current view and later on load it. There is only one view active at any time. The system will remember the current view and will reapply it on the next load.
When you exit the system saves the current data to a disk file.
Unlocks all trips within the current view.
Locks trips within the current view. Trip locking is used to protect data. Locked trip can’t be deleted, edited and copied. We suggest that once you verify your data you lock these trips.
Finds the first occurrence of any value within the current view.
Handy way to display selected trip after a scroll.
The system will update note field for all trips after add, edit, paste, delete and add from XML.
If automatically update note option is set to off use this menu option to update notes.
Automatically update note option should only be set to off when system is running slow due to the large number of records.
Resets columns widths to a maximum length of data contained within it.
Exports all of data to XML file. That file can be imported into Car Logbook system.
Potential uses for exported XML file are:
§ Taking a check point , for example every quarter
§ Sending data to another system
Exports data XML schema. This can be used to interface Car Logbook data to other systems.
Imports Car Logbook XML file. Please note all of data is replaced by an imported file.
We recommend that you export current data to file say Current.xml before importing any files.
Potential uses for importing:
§ Importing data
§ Refreshing from current disk file
§ Recovering from backup
Importing Car Logbook Data.xml (current data) you will reload data from a disk. It’s a handy way to restart without saving data.
Please remember exiting the program will save the current data to the disk.
Every time you start the system it saves its data to back up file named An.xml with A0.xml being the latest copy. To recover from backup:
§ Export current data to another file say Current.xml
§ Import A0.xml
If it doesn’t work try A1.xml etc.
Alternatively look at file creation date to recover to a specific date.
Adds records from Car Logbook XML file to an existing set. Please note the system checks for duplicate records and will not add these. This facility can be used to merge data from multiple sources into a single file.
Select one of the options - "July/June", "October/September", "January/December" or "April/March". You can change this option any time; just make sure that you got it set right for the tax returns. Using different financial year settings gives you extra reporting views.
The system will update note field for all trips after add, edit, paste, delete and add from XML.
When you click on [Ok] button during trip add or edit the system will also scan all trips to make sure that no new inconsistency is created. This is computing intense.
This flag sets automatic note update to on/off. It should only be set to off when system is running slow due to the large number of records.
Deletes all trips. It can be used to start a new tax year, but make sure that you create a copy of current data via export to XML command.
We recommend that for new tax year you should:
§ Create a new directory
§ Copy the system and its data into the new directory
§ Delete all trips
§ Refrain from “Deleting” not used items (you want to keep all of the last years reference data)
These items are used to manage reference data and all work in the same way.
You either manually enter values or import data which is then added to the data set.
Imports a text file which contains one item per line.
Adds imported/entered unique values to the reference table.
Deletes an item that which not used in trips.
Replaces all occurrences of an item in the trip table and the underlying table.
A view is defined by a sort sequence and a filter. It can be saved and reset at any time.
To set sorting sequence click on sort button. You find it after a [Print] button.
Double click on available column item to select it. Double clicking the selected column will change sort order to/from Ascending/Descending.
To store and activate sort sequence you must click on [Set] button.
The sort button will now display sorting sequence with any Descending items abbreviated to a key word “DESC”.
This is the most controversial feature of the system. Internal debates on how to set it represented or is it to complex for users to handle are still raging. Data filtering gives you greater reporting flexibility, better error tracking and improved visibility. So here we go.
Click on the filter button. You find it below [Add Trip] button.
Select any column by double clicking it.
The system defaults to: AND Column Name =””
Double click on the selected column
You can either enter a value or select one from stored values by double clicking
Select [And] or [Or] by clicking it
Click one button [=], [<], [<=], [>], [>=]. [<>] or for text columns [Like]
Click [Ok]
Repeat above sequence any number of times.
Click on [Set] button to store and set it.
Please note that moving items up/down doesn’t alter the filter setting but it can be used to improve its readability. The first OR/AND statement is ignored by the system.
Simple filter consist of a single column selection in the form
Column Name LO Value
Where
LO stands for logical comparison and has one of the following values
LO |
Read as |
Example |
Selects trips with: |
= |
Equal |
Car=’NXY123’ |
Car named NXY123 |
< |
Less than |
Traveled<100 |
Traveled less than 100 |
<= |
Less or equal to |
QRT<=’2004-4’ |
Quarters up to and including 2004-4 quarter |
> |
Greater than |
DateStart>’2004/06/11’ |
DateStart after 2004/06/11 |
>= |
Greater or equal to |
ID>=33 |
Record identifier greater or equal to 33 |
<> |
Not equal to |
Note<>’Ok’ |
Suspect data |
Like |
Like text |
Client Like ‘S*’ |
All clients starting with letter ‘s’ |
Like comparison
Like operator tests a text for starting value. The statement Like ‘Sam*’ will select all entries starting with ‘Sam’
Please note that system is letter case insensitive ‘A’ = ‘a’, ‘B’ = ‘b’.. etc.
Locked and Marker columns are boolean and have value TRUE or FALSE.
A compound filter consists a number of simple filters joined either by OR/AND logical operator.
Filter |
Selects records all trips with: |
Car=’NXY123’ AND Driver =’Sam’ |
Car NXY123 and driver Sam |
Car=’NXY123’ AND Driver =’Sam’ AND Note<>’Ok’ |
Car NXY123 , driver Sam and inconsistent data |
Car=’NXY123’ AND Driver =’Sam’ AND Client Like ’Company*’ |
Car NXY123 , driver Sam and all clients starting with name ‘Company’ |
Car=’NXY123’ OR Driver =’Sam’ |
Car NXY123 or driver Sam |
Please note that there is no precedence set on OR/AND statements for example:
Car=’NXY123’ AND Driver =’Sam’ OR Driver =’Fred’
Will not select driver Fred as first AND is applied.