Timesheet
View and manage your time-tracking data in the timesheet view
Starting and stopping records
Re-start timesheet records
- Click one of your last activities in the modal, opened through the upper toolbar - this will start a record for the same customer/project & activity “now”
- Click the restart action from one of the records in your timesheet - this will start a record for the same customer/project & activity “now” and copy description and tags
Start new records
- Clicking the big play button in the toolbar (if no record is active right now)
- Click the “+” action is the upper right page actions to open the “edit new record” modal
- Select a time-range in the calendar (deactivated if the timeclock-mode is active)
- Click a day in the calendar (deactivated if the timeclock-mode is active)
Stop records
- Click the stop button in the “active records” dropdown in the upper toolbar
- Click the stop action in the running record in your timesheet
- Save a running record after setting an end date (deactivated if the timeclock-mode is active)
Problem: cannot be stopped
Kimai has rules in place, to prevent excessive long timesheets from being accidentally created.
When a user tries to create such a timesheet, or tries to stop such a timesheet, a warning will be shown:
You have several options to solve this problem. All of them involve that the user opens the timesheet listing and finds the record (usually the last one created):
- Edit the record and set a different start date
- Edit the record and set a different end date
- Edit the record and set a shorter duration
- Delete the record from the listing
An administrator can fix the problem by opening the All times
view and filtering the user.
Administrators can also configure the duration for this check or deactivate it entirely at System > Settings > Timesheet.
Duration format
Please read the full documentation about accepted inputs for the duration format.
Important:
- using
0
or00:00
as duration will also stop the entry with a duration of zero seconds - to create a running entry the
end
andduration
field needs to be empty
Exported records
Exported records will be locked to prevent manipulation of cleared data.
The permission edit_exported_timesheet
does allow editing and deletion of these
locked entries nevertheless, which by default is given to users with ROLE_ADMIN
and ROLE_SUPER_ADMIN
.
The export state can be set manually or via the invoice and export screens.
Billable vs. not billable
Since version 1.14 you can define whether a timesheet record is billable or not.
Non-billable timesheets are excluded from invoices and budget calculations.
Please read the billable documentation to understand the billable
flag.
Filter and search
The search supports filtering by the fields:
user
(only in team timesheets)daterange
customer
project
activity
tags
state
(running / stopped)
Besides these filters, you can query for a free search term, which will be searched in the fields:
description
Additionally, you can filter for custom fields by using a search phrase like location:homeoffice
.
This would find all entries with the custom field location
matching the term homeoffice
.
The search terms will be found within the full value, so searching for office
would find:
I love working in my office
Office
This office is beautiful
Our offices are very noisy
Attention: checkboxes have the values 0
(not checked) and 1
(checked).
You can mix the search term and use multiple meta-field queries:
location:homeoffice hello
- find all entries matching the search termhello
with the custom fieldlocation
matching the termhomeoffice
location:homeoffice contract:fulltime
- find all entries with the custom field combination:location
matchinghomeoffice
andcontract
matchingfulltime
expired:0
finds all items whoseexpired
checkbox isoff
There are also special operators, which can be used in conjunction with custom fields (since Kimai 1.19.1):
- The
location:
) will find all entries whose value in thelocation
field is either empty or not existing - The
~
search term (e.g.location:~
) will find all entries that are missing the custom field (created before the field was created) - The
*
search term (e.g.location:*
) will find all entries that have any value in thelocation
field (basically the opposite of~
)