3.6. Working with time entries

3.6.1. About time entries

A time entry represents the time spent doing something for a task. It is defined by a start time, elapsed time, pause time and a finish time. If you work from 09:00 AM until 11:00 AM and you take two 15 minutes breaks, the elapsed time will be 1:30 hours and the pause time will be 0:30 hours.

Time entries have the following properties:

  • Project: The project where you want to record the time.

  • Task: The task where you want to record the time. The task is mandatory as you can only record time on tasks.

  • Date: The date when the time entry is recorded.

  • Start: The time when the activity started.

  • Time: Work time.

  • Pause: Break time.

  • Finish: The time when the activity ended. Finish = Start + Time + Pause.

  • Description: A small description of what the time entry is about.

  • Tags [optional]: A list of zero or more tags separated by commas. Tags can also help you organize time entries.

Depending on how you want to enter time, Fanurio lets you choose how to do it.

  • Relatively to start: You enter the start time and the elapsed time and then Fanurio calculates the end time by adding the elapsed time to the start time.

  • Relatively to finish: You enter the elapsed time and the finish time and then Fanurio calculates the start time by subtracting the elapsed time from the end time.

  • Both: You enter the start and finish times and then Fanurio calculates the elapsed time by subtracting the start time from the finish time.

3.6.2. Configuring optional fields

Because time entries have many fields and because not all fields are relevant to all users, you can hide optional fields that you don't use. Optional time entry fields are fields that can be hidden in the time entry windows (New Time or Edit Time). Here's how you can configure them:

  1. Create a new time entry (New Time) or edit an existing one (Edit Time).

  2. Click the Configure button from the bottom-left corner.

  3. Check the fields that you want to be visible and uncheck the ones that you want to hide.

  4. Click Done. Fanurio will update the time entry window to show only selected fields.

At this moment, the only optional field is Tags. This field only makes sense if you need to organize your time entries using tags.

3.6.3. Recording time manually

Whether you forget to record time or you are not in the front of the computer most of the day, you can always record time manually. Please note that you can only add time to a task and not directly to a client or a project.

There several ways you can add time to a task:

  1. Go to Business » New Time to add time to the currently selected task. If no task is selected, you will have to specify one. This is probably the fastest way to enter time in Fanurio.

  2. Go to the Timesheet view and use the New button. When you use this method and the date filter is set to a specific date, time is added by default to that date. This method is very useful if you need to enter time for previous dates as it saves you from specifying the date for each time entry.

  3. Open a project and select the task where you want to add time. Then click the New Time button.

  4. Edit a task and go to the Time section to add time to that task.

Time fields accept time in both hour and decimal format. Here are a few input examples:

  • 2:30 - enter the number of hours and minutes.

  • :30 - enter the number of minutes.

  • 2.5 or 2,5 - enter the number of hours.

  • .5 or ,5 - enter the number of hours.

  • 2 - enter the number of hours.

The major drawback of manual time recording is that you need to remember the times and duration of each task. That's why a better method to track time for your activities is to use a timer.

3.6.4. Recording time with timers

Tracking time is a lot easier when you have a timer. Unlike manual time recording, a timer will save you the trouble of remembering the exact time when you started, stopped or paused a task.

Fanurio can manage multiple timers but only one can be active, all the other timers are paused. When a new timer is started, the active one is paused and the new one becomes active. This feature is very useful if you start working on something (task A) and then you get a call from a client that forces you to interrupt what you were doing and work on something else (task B). In this case, you start a timer for task A and then when the client calls, you pause the timer (interrupt task A) and you start a new one for task B. When task B is over, you stop its timer and save the time. Then you can resume the timer for task A.

Since a timer is an important tool, Fanurio provides several ways to access it. You can access the timer from:

  • the Timer menu,

  • the toolbar,

  • the tray icon menu,

  • the iTunes-like mini timer,

  • the taskbar button's thumbnail toolbar on Windows 7 or

  • using global hotkeys on Windows and Linux.

The following actions can be used to control the timers from one of the places mentioned above:

  • Start New Timer: This action starts a new timer. If a project is open and a task is selected, Fanurio will start a timer for that task.

    If a timer is already active (paused or running), that timer will be paused and the new one will become active.

  • Start New Timer...: This action lets you start the timer for a specified task and attach a description to it. When the timer will be stopped, Fanurio will add time to this task with the specified description. If a project is open and a task is selected, Fanurio will suggest to start the timer for that task.

    If a timer is running and a new one is started in the past, the active timer will be paused in the past and the new one will be started from that time. Let's suppose you are working on task A and a client calls. In the middle of the call, you realize that you want to time the conversation so you start a new timer but since you already started the phone conversation 10 minutes ago, you want to start the timer in the past, 10 minutes ago. Doing so will pause the timer for task A 10 minutes ago.

  • Start New Timer >: This action lets you start a new timer for one of the recent tasks.

  • Timers: If you started at least one timer, this action shows all the timers. When you select one of the timers, it automatically becomes active and it's resumed. Recent timers are at the top of the list.

    The Timers action from the toolbar also shows the number of timers using a badge icon so you can easily see how many timers you have started.

  • Pause / Resume Timer: This action pauses or resumes the active timer.

  • Pause / Resume Timer...: This action pauses or resumes the active timer in the past.

  • Stop Timer: This action stops the active timer and opens a New Time window to save the recorded time.

  • Edit Timer: This action lets you change the task and the description of the active timer. It also shows the time when it was started, the elapsed time and the pause time.

  • Discard Time...: This action discards time from the active timer.

    For instance if you started a timer one hour ago but at some point you took a 15 minutes break, you can use this action to discard this time and keep the timer running. Once you do that, the timer will show it's running for 45 minutes instead of one hour.

  • Transfer Time...: This action discards time from the active timer and saves it to a task.

    For instance if you started a timer one hour ago but at some point you did something else for 15 minutes, you can use this action to discard this time and to add it to the task you've been working on. Once you do that, the timer will show it's running for 45 minutes instead of one hour.

The state of the timers is saved regularly on disk just in case there's a power outage and the application is terminated prematurely. If this happens, the timers will be restored the next time Fanurio will be restarted.

Although a timer is a major improvement over manual time recording, it's worthless if you don't remember to use it. When you have lots of work on your head, paying extra attention to a timer is the last thing you want to do. That's why Fanurio has smart timing, an even better method to track time.

3.6.5. Using reminders to control the active timer (smart timing)

A timer is useless if you don't remember to use it. To solve this problem, Fanurio has a few reminders to help you start, resume or stop a timer. Instead of relying on your memory and attention to control the timer, you can use these reminders. We call this feature smart timing.

Smart timing is not enabled by default. You have to enable it from:

  • Tools » Options on Windows

  • Fanurio » Preferences on Mac OS X

  • Edit » Preferences on Linux

Smart timing is how Fanurio figures out what you are doing in order to record time accurately. It uses idle time detection and a set of reminders to do that.

  1. Reminders: If you are working on the computer, Fanurio doesn't know what you are doing but if you enable smart timing, it will try to learn that from you. Fanurio can ask you repeatedly (you can specify the frequency) what you want to do with the timer.

    • If no timer is running, it will ask you if you want to start one or if you want to do it later.

    • If the active timer is paused, it will ask you if you want to resume it or if you want to do it later.

    • If the active timer is running, it will ask you if you want to stop it or if you want to leave it running.

  2. Idle time detection: One thing Fanurio can figure out without asking is if you leave the computer while the timer is running. In this case it will ask you to do something with the time you've been away.

As we said, smart timing is about figuring out what the user is doing. If the timer is stopped, Fanurio will try to learn whether it should be started or not. The same happens when the timer is paused or if it's running.

To understand how smart timing works, let's see the following examples.

Example 3.1. Reminder that the timer is running

Let's assume the reminder is set to 10 minutes and the timer is already running for 32 minutes. Since I started the timer, Fanurio asked me three times (at 10, 20 and 30 minutes) if I want to stop it or if I want to keep it running. Each time I just pressed ESC to cancel the reminder dialog and to keep the timer running.

The fourth time when it asks me (at 40 minutes), I realize I finished working on my task and I choose to stop the timer. I will assign 40 minutes to the task I was working on.

Tip

When the reminder dialog is displayed, you can postpone the decision by pressing ESC.


Example 3.2. Idle time notification

Let's assume idle time notification is set to 10 minutes. That means Fanurio will notify me if I'm away from the computer for more than 10 minutes.

I start the timer and after 40 minutes I leave the computer for a coffee break. When I return after 15 minutes, I see a notification dialog where Fanurio asks me what to do with these 15 minutes. I decide to discard them. The timer will continue to run and to show it's been started 40 minutes ago instead of 55. The 15 minutes I've been away are considered pause time.

Besides Discard, the idle notification dialog has two other options: Transfer and Keep. Use Transfer if you've worked on something else in the meanwhile (a client was on the phone for instance) and Keep if you've been working on the same thing but you didn't touch the computer.

Tip

To tell Fanurio that you want to keep the time and leave the timer running, you can also press ESC or ENTER.


Best practices

  • Adjust the idle time interval if you take shorter breaks. It is set to 15 minutes by default.

  • Make sure the reminders are not too frequent as they may become annoying.

    If you usually do long tasks, you don't want to be reminded each 10 minutes that the timer is running. You could set the reminder to 20 or 30 minutes.

  • Use only those reminders that you find useful. You don't have to enable all the reminders.

3.6.6. Transferring time between multiple computers

Fanurio can help you manage time recorded on multiple computers. You can export time recorded in one instance of Fanurio running on a certain computer and then import it in another instance of Fanurio running on a different computer. Here's how to do this:

  • Export time: Go to the Timesheet view and use the filters above the table to specify the time that must be exported.

    Then click the Export Table button to export the timesheet to an XML file.

  • Import time: For the moment, Fanurio can only import time exported from another instance of Fanurio.

    Go to File » Import » Import Timesheet... to import a timesheet from an XML file.

    Note: A backup copy will be created before time is actually imported so that you can always revert to the data before the import. Go to File » Restore from Backup... to restore a backup copy.

The following two examples show when this feature is useful.

Example 3.3. same user, multiple computers

Many people use two computers for work whether it's a desktop and a laptop or a home computer and an office computer. The time recorded on one computer can be exported and then imported in the other computer for billing purposes.


Example 3.4. multiple users, multiple computers

If you are part of a team, each member could install Fanurio on his or her computer to track time. Team members can then export their time and send it to the team leader to prepare invoices for their clients.


3.6.7. Importing time from CSV

Whether you want to switch to Fanurio from some other application or import time from a mobile app (iOS, Android, Blackberry), Fanurio has an import wizard that can import time from any CSV file. Just go to File » Import » Import Timesheet... and select CSV for source.

When you select a CSV file for import, Fanurio will try to detect its format so it can read its time records. If a format is not found, it will ask you to create one so that it knows how to map data from the CSV file to its own fields. Fanurio has predefined formats for the following applications:

A CSV format tells Fanurio how to map columns from the CSV file to one of the following fields:

  • Client: name of the client.

  • Project: name of the project.

  • Task: name of the task where time is saved.

  • Date: date when the time entry was recorded (eg 2012-07-22).

  • Start: start time when the time entry was recorded (eg 17:29:59:999 which is almost 5:00 PM).

  • Time: total recorded time (eg 02:30:00 which means 2.5 hours).

  • Description: description associated with the time entry.

  • Tags: tags associated with the time entry (must be a list of tags separated by commas).

To map columns from a CSV file to Fanurio, it usually means that you have to associate a column from the CSV file with a field in Fanurio. For instance, if you have a CSV file that has a column called Customer then you may want to map it to the Client field. Some fields like the Time field, need additional information. For instance, if your CSV file has a column called Elapsed time (minutes) then you need to specify this column for the Time field but you also need to select Minutes in the format field so that Fanurio knows how to interpret it.

Important: If you have problems creating a format for your CSV file, contact us and we'll create it for you.

Once you have a format that Fanurio can use to parse the file, you can select the time entries that you want to import. Before importing them, you can adjust the client, project and task names by double-clicking their table cells. You can also tag all selected time entries by using the Tag button.

If the clients, projects and tasks do not exist, they will be created automatically by Fanurio.

The following examples show to handle various mapping scenarios. A CSV format is actually a set of mapping expressions, one for each field. Fanurio uses Freemarker for these expressions, the same language that it uses for invoice templates.

Example 3.5. Mapping a field to a column

In order to connect a field from Fanurio to a column from the CSV file, you must select the column from the drop down box associated with that field. That box also shows the value from the first row for that column so that you can know what you are importing.

If you have a column called Customer then the expression that maps this column to the Client field is displayed below.

${column("Customer")}

Example 3.6. Mapping a field to a fixed text

The CSV file may not have columns for each field. For instance, some applications save time directly on the project instead of saving it on tasks like Fanurio does. In that case, you can't map a certain column to the Task field. If your file doesn't have a column that can be mapped to the Task field then you should enter some text in the text box of that field (eg Activity, Task, Job or any other name). All the time entries will be imported to tasks with that name.

The Task field accepts any text but other fields accept only text formatted in a certain way.

  • Client: any text. All the time entries will be imported to the same client.

  • Project: any text. All the projects will have the same name.

  • Task: any text. All the tasks will have the same name.

  • Date: text formatted as yyyy-MM-dd (eg 2012-07-22).

  • Start: text formatted as hh:mm:ss:SSS (eg 17:29:59:999).

  • Time: text formatted as hh:mm:ss (eg 02:30:00).

  • Description: any text

  • Tags: a list of comma-separated tags


Example 3.7. Not mapping a field to a column

The Description and Tags fields may not have a column where they can be mapped. In that case, you shouldn't select a column for them and leave their text box empty.


Example 3.8. Splitting columns

Some applications only have projects and the only way you can record both the client name and the project name in the same field is to use some separator. For instance, if you recorded your time on a project called Aristotle-Rhetoric that contains both the client name and the project name, then you can split it and extract the first part for the client name and the second part for the project name.

If you have a column called Job that contains both the client name and the project name separated by a minus (-) then the expression for the Client field is displayed below.

${column("Job")?split("-")[0]}

The expression for the Project field is displayed below.

${column("Job")?split("-")[1]}

Example 3.9. Mapping the date and start fields

The date, start and time fields are the only fields that require additional formatting. So, when mapping a column to these fields, you need to pay attention to their format.

For instance, if the CSV file contains a Date column that has values like 4/28/2010 then the expression that maps this column to the Date field is displayed below.

${column("Date")?date("M/dd/yyyy")}

For instance, if the CSV file contains a Time In column that has values like 20:21:00 then the expression that maps this column to the Start field is displayed below.

${column("TimeIn")?time("hh:mm:ss")}

For more details on date and time patterns, see this page.


3.6.8. Importing time from iCalendar

Fanurio allows users who prefer to organize their work with a calendar application to import calendar events as time entries. The recommended way to do this is to create a separate calendar for each project so you can export them as iCalendar files (.ics).

iCalendar is the standard Internet format for exchanging calendar information. iCalendar is used and supported by a large number of products, including Google Calendar, Apple Calendar (formerly iCal), Microsoft Outlook, Yahoo! Calendar and the Lightning extension for Mozilla Thunderbird.

Follow these steps to import the events of an iCalendar file (.ics) as time entries in a project:

  1. Go to the Projects view.

  2. Right-click the project where you want to import the events of an iCalendar file and select Import Time from iCalendar... from the popup menu.

  3. Select an iCalendar file (.ics).

  4. Make sure the import period is set correctly. By default, the import period is set to [project start date ... project due date].

  5. Click Import to import the events as time entries.

Fanurio will import new events and update existing ones under some conditions:

  • Invoiced time entries will not be updated if they are reimported to prevent invoices from being altered.

    For instance, at some point you import a calendar and invoice the imported time entries. After that, you go back to your calendar application and edit some of the events that were already imported and you add a few more. When you will import the calendar again, the changes that you made to the invoiced time entries will not be imported.

  • Only newer time entries will be updated (older versions of an event are skipped).

    If you import the events of a calendar regularly (for instance at the end of each week), only new events are imported and events that you changed in the calendar after the last import.

Importing recurring events

When importing time from an iCalendar file, Fanurio allows you to specify an import period that limits the events that are imported.

For recurring events, if the period is not bounded (for instance it is set to All Dates or it is set to import everything after a certain date) Fanurio will use a bounded period nevertheless. That's because a recurring event may occur indefinitely and Fanurio can't convert it to an infinite number of time entries. If the period is not bounded, Fanurio will import all occurrences of a repeating event from when it was started until the time when the import is performed.

If your calendar file contains recurring events it's probably best that you import them after they occurred otherwise you may import future events that may be cancelled. In this case, the import period should be a past period like last week or last month.

Reimporting recurring events with a different occurrence time (unlikely)

If you reimport in Fanurio a recurring event that has a changed start time, its new occurrences will be imported along the old ones. Although it's unlikely that you import a recurring event in Fanurio and then edit all its occurrences in your calendar application, we're documenting this case here just to let you know how Fanurio deals with it.

Let's assume you have a recurring event for "Meeting from 9:30 to 10:30 each Monday" and you import some of its occurrences in Fanurio. For some unknown reason (that's why we say this is unlikely) you need to change all occurrences of this event to "Meeting from 9:00 to 10:00 each Monday". The next time you will import this event in Fanurio you will have time entries for both the old event and the new event.

If you need to edit an event in a calendar, make sure you edit specific occurrences or only future occurrences so that the past occurrences are not altered.

3.6.9. Using tags to organize time entries

When you record a time entry, you need to have a client, a project and a task. For some people this solution is all they need to organize their time entries but others want more flexibility.

You can associate one or more tags to a time entry in the Tags field. They have to be separated by commas (eg: tag1,tag2,tag3). Once you have one or more entries with tags, you can then filter them in the Timesheet view. Just click the small arrow icon from the search field to tell it that you want to search by tags.

Tags are useful if you want to track time for multiple persons. You could use a tag for each person to know who did what.

3.6.10. Searching and filtering time entries

To learn more about the time you record in Fanurio, go to the Timesheet view and use the filters above the time entries table. The table will display only those time entries that match the selected filters. Time can be filtered by:

  • client status (any, active, not active),

  • project status (any, finished, not finished),

  • task status (any, completed, not completed),

  • invoiced status (any, invoiced, not invoiced),

  • billing status (any, billable, not billable) and

  • date.

Once you set these filters, the table footer will display the total of all visible time entries. For instance, you could use these filters to see how much time you've recorded on a date, week or month.

The table can also be filtered using a search field that can search by:

  • description,

  • tag,

  • client;project;task and

  • invoice.

The client;project;task option allows you to filter time entries by client, project, or task name.

If you have a client called Aristotle with a project called Rhetoric and a task called Proofreading the manuscript, just type Aristotle;Rhetoric;Proofreading the manuscript and it will display this exact task. If you type Aristotle it will display all time entries for this client whereas if you type ;Rhetoric it will display all time entries for the project. The semicolon is very important as it helps Fanurio distinguish between fields.

3.6.11. Exporting time entries

Fanurio can export time to CSV, Excel, QuickBooks (*.iif) and XML. To export time, you can either:

  • Go to File » Export » Export Timesheet to export all the time entries you recorded in Fanurio or

  • Go to the Timesheet view and click the Export Table button to export only the time entries visible in the timesheet table.

3.6.12. Creating time reports

The previous section explains how you can filter or search the list of time entries so you can get a quick insight about your time. However, if you need to use this information outside Fanurio you can either export the list of time entries as a CSV or Excel file or create a time report. Time reports are more flexible because they allow you to use a template to format data.

Go to Reports » Time Report to create a report for your time. Just like in the Timesheet view, you can use several filters to specify which time entries should be included in the report:

  • Projects specifies the projects included in the report.

  • Date specifies the date interval when time was recorded.

  • Billing specifies whether the report should include billable or non-billable time entries.

  • Invoiced specifies whether the report should include invoiced or not invoiced time entries.

Fanurio comes with a set of default templates that can be selected from the Template drop-down box:

  • Timelog shows the recorded time in detail and in chronological order.

    You may want to use it at the end of the day to see what you did. Please note that you can get a similar result if you go to the Timesheet view and restrict visible time entries to today.

  • Timelog by Date shows the recorded time in detail and in chronological order but time entries are grouped by date.

    This template is similar to Timelog except that it groups time entries by date and it displays subtotals for each date.

  • Task Summary by Date displays time totals by task and date.

    You may want to use this template at the end of the week to see how much time you worked each day and on which tasks.

  • Task Summary by Week displays time totals by task and week.

    You may want to use this template at the end of the month to see how much time you worked each week and on which tasks.

  • Task Summary by Month displays time totals by task and month.

    You may want to use this template at the end of the year to see how much time you worked each month and on which tasks.

  • Project Timelog shows how much time was spent on each project, in detail.

    Time entries are grouped by client, project and task.

  • Project Timelog by Date shows how much time was spent on each day by project.

    This template is a combination of Timelog by Date and Project Timelog. For each day, it shows time entries grouped by client, project and task.

If you need to create your own templates, please see this section to learn what placeholders you can use.