Tasks by client and project

[#if tasksreport.dateIntervalStart??] [#if tasksreport.dateIntervalEnd??] ${tasksreport.dateIntervalStart?date} - ${tasksreport.dateIntervalEnd?date} [#else] After ${tasksreport.dateIntervalStart?date} [/#if] [#else] [#if tasksreport.dateIntervalEnd??] Before ${tasksreport.dateIntervalEnd?date} [#else] All dates [/#if] [/#if]



[#if tasksreport.tasks?size == 0]

There is no data available for the selected report settings.

[#else]

[#assign allTasks=tasksreport.filterWithTimeOrMoney(tasksreport.tasks)]

Description

Time

Invoiced Total

Uninvoiced Total

Total

[#list tasksreport.groupClients(allTasks)?sort as client] [#assign clientTasks=tasksreport.filterByClient(allTasks, client)]

${client.name}

[#list tasksreport.groupProjects(clientTasks)?sort as project] [#assign projectTasks=tasksreport.filterByProject(clientTasks, project)]

${project.name}

${tasksreport.calculateElapsedTimeAsHour(projectTasks)}

${tasksreport.calculateInvoicedTotal(projectTasks)}

${tasksreport.calculateUninvoicedTotal(projectTasks)}

${tasksreport.calculateTotal(projectTasks)}

[#list projectTasks?sort as task]

${task.name}

${task.description}

${tasksreport.calculateElapsedTimeAsHour(task)}

${tasksreport.calculateInvoicedTotal(task)}

${tasksreport.calculateUninvoicedTotal(task)}

${tasksreport.calculateTotal(task)}

[#list tasksreport.getTimeEntries(task)?sort_by("date") as timeEntry]

${timeEntry.description}

${timeEntry.date?string("EEE, MMM dd")} - ${timeEntry.elapsedTimeAsHour}

[/#list]
[/#list]
[/#list]
[/#list]

Total

${tasksreport.calculateElapsedTimeAsHour(allTasks)}

${tasksreport.calculateInvoicedTotal(allTasks)}

${tasksreport.calculateUninvoicedTotal(allTasks)}

${tasksreport.calculateTotal(allTasks)}

[/#if]