## Description

Open Document Text report templates are regular ODT files that can be designed using any ODT word processor like Calligra Words or LibreOffice Writer. The technique used is to use user field variables to hold references to the information that shall be fetched from the project. The variables are called User Fields in Writer and can be found under Insert Field More Fields Variables User Fields. In Words they are called Custom Variables and can be found under Text Editing docker Variable Custom.

The easiest way to create a new report template is to modify an existing one as all user fields are defined.

## User Field Variables

### Variables

The variables are used to enable the generator to extract data from the project.

A variable can be a reference to a single data field, a reference to table data or a reference to chart data.

#### Single Data Field

A single data field variable has the following format:

`data group name`.`property` = `property identifier`

where:

- `data group name` can be tr, project or schedule (see below).

- `property` makes the user field name unique.

- `property identity` identifies the property in the data group.

#### Table Data

A table in a report template consists of a variable to specify the data table to use.

The variable name must start with `table` (⪚ tableTasks) and the variable value must be the name of the data table (⪚ tasks).

Immediately after the variable, a table must be inserted and columns filled with user field variables that specify which properties to fetch from the table specified above. These variables must have names that start with the name of the table variable above.

These variables have the following format:

tableTasks.`property` = `property identifier`

where:

- property makes the user field name unique.

- property identifier identifies the property in the data group.

#### Chart Data

A chart in a report template consists of a variable to specify the data to use in the chart.

The variable name must start with `chart` (⪚ chartBudgetCost) and the variable value specifies the data group and values to populate the chart.

The variable has the following format (note the semicolons):

`name` = `data group`; values=`comma separated list of data properties`;

where:

- `name` must start with chart (⪚ chartBudgetCost)

- `data group`

- comma separated list of data properties identifies the properties in the data group.

E.g.:

chartBudget = project; values=bcws cost, bcwp cost, acwp cost;

### Translated Labels

Translated labels enable us to produce general report templates that can be used in different languages.

Variable Name | Variable Value
tr.project | Project
tr.manager | Manager
tr.schedule | Schedule
tr.bcws | BCWS
tr.bcwp | BCWP
tr.acwp | ACWP
tr.spi | SPI
tr.cpi | CPI

### Project Values

Shows values from the main project.

Variable Name | Variable Value | Description
project.name | Name | The name of the project
project.manager | Manager | The name of the project manager
project.bcwscost | BCWS Cost | Cost based Budgeted Cost of Work Scheduled
project.bcwpcost | BCWP Cost | Cost based Budgeted Cost of Work Performed
project.acwpcost | ACWP Cost | Cost based Actual Cost of Work Performed
project.spicost | SPI Cost | Cost based Schedule Performance Index
project.cpicost | CPI Cost | Cost based Cost Performance Index
project.bcwseffort | BCWS Effort | Effort based Budgeted Cost of Work Scheduled
project.bcwpeffort | BCWP Effort | Effort based Budgeted Cost of Work Performed
project.acwpeffort | ACWP Effort | Effort based Actual Cost of Work Performed
project.spieffort | SPI Effort | Effort based Schedule Performance Index
project.cpieffort | CPI Effort | Effort based Cost Performance Index

### Schedule Values

Shows values from the current schedule.

Variable Name | Variable Value | Description
schedule.name | Name | The name of the schedule
schedule.state | State | Scheduling state
schedule.direction | Direction | Scheduling direction
schedule.overbooking | Overbooking | Overbooking
schedule.distribution | Distribution | Distribution
schedule.plannedstart | Planned Start | Planned Start
schedule.plannedfinish | Planned Finish | Planned Finish
schedule.scheduler | Scheduler | Scheduler
schedule.granularity | Granularity | Granularity
schedule.mode | Mode | Scheduling mode (Auto or Manual)

### Tables

Supported table types:

- tasks

- taskstatus

- schedules

- projects

To create a table, place a variable just before a table in your template file. The variable name identifies the table and must start with table, ⪚ tableTaskStatus.

The value of the variable is used to point to the data to be fetched and must be one of the supported tables listed above, ⪚ taskstatus.

You then put variables inside the table cells with name and value from the table below.

Note that the schedules table supports the values described in Schedule Values above.

The projects, tasks and taskstatus tables supports the following values:

Variable Name | Variable Value | Description
`table name`.name | Name | The name of the task or project
`table name`.wbscode | WBS Code |
`table name`.type | Type | Type of task
`table name`.responsible | Responsible |
`table name`.allocation | Allocation |
`table name`.estimatetype | Estimate Type |
`table name`.calendar | Calendar |
`table name`.estimate | Estimate | Most likely estimate
`table name`.optimistic | Optimistic | Optimistic ratio
`table name`.pessimistic | Pessimistic | Pessimistic ratio
`table name`.risk | Risk | Estimate uncertainty
`table name`.constraint | Constraint | Type of time constraint
`table name`.constraintstart | Constraint Start | Constraint start time
`table name`.constraintend | Constraint End | Constraint finish time
`table name`.runingaccount | Running Account | Account for running costs
`table name`.startupaccount | Startup Account | Account for startup cost
`table name`.startupcost | Startup Cost | The cost incurred at startup of the task
`table name`.shutdownaccount | Shutdown Account | Account for shutdown cost
`table name`.shutdowncost | Shutdown Cost | The cost incurred at shutdown of the task
`table name`.description | Description | Task description
`table name`.expected | Expected | Calculated most likely estimate
`table name`.optimistic | Optimistic | Calculated optimistic estimate
`table name`.pessimistic | Pessimistic | Calculated pessimistic estimate
`table name`.starttime | Start Time | Scheduled start time
`table name`.endtime | End Time | Scheduled finish time
`table name`.duration | Duration | Scheduled duration
`table name`.earlystart | Early Start | Earliest possible start
`table name`.earlyfinish | Early Finish | Earliest possible finish
`table name`.latestart | Late Start | Latest possible start
`table name`.latefinish | Late Finish | Latest possible finish
`table name`.positivefloat | Positive Float |
`table name`.freefloat | Free Float |
`table name`.negativefloat | Negative Float |
`table name`.startfloat | Start Float |
`table name`.finishfloat | Finish Float |
`table name`.assignaments | Assignments | Resource assignments
`table name`.varianceest | Variance (Est) | Calculated estimate variance
`table name`.variancedur | Variance (Dur) | Calculated duration variance
`table name`.optimisticdur | Optimistic (Dur) | Calculated optimistic duration
`table name`.pessimisticdur | Pessimistic (Dur) | Calculated pessimistic duration
`table name`.status | Status | Task status as shown in Task Status View
`table name`.completion | % Completed | Task completion
`table name`.plannedeffort | Planned Effort | Planned effort
`table name`.actualeffort | Actual Effort | Actual effort
`table name`.remaningeffort | Remaining Effort | Remaining effort
`table name`.plannedcost | Planned Cost | Planned cost
`table name`.actualcost | Actual Cost | Actual cost
`table name`.actualstart | Actual Start | Actual start
`table name`.started | Started |
`table name`.actualfinish | Actual Finish | Actual finish
`table name`.finished | Finished |
`table name`.schedulingstatus | Scheduling Status | Scheduling status
`table name`.bcws | BCWS | Budgeted Cost of Work Scheduled (cost based)
`table name`.bcwp | BCWP | Budgeted Cost of Work Performed (cost based)
`table name`.acwp | ACWP | Actual Cost of Work Performed (cost based)
`table name`.spi | SPI | Schedule Performance Index
`table name`.critical | Critical | Task is critical
`table name`.criticalpath | Critical Path | Task is in critical path
`table name`.notscheduled | Not Scheduled | Not interesting
`table name`.assignmentmissing | Assignment Missing | Not interesting
`table name`.resourceoverbooked | Resource Overbooked | Not interesting
`table name`.resourceunavailable | Resource Unavailable | Not interesting
`table name`.constrainterror | Constraints Error | Not interesting
`table name`.effortnotmet | Effort Not Met | Not interesting
`table name`.schedulingerror | Scheduling Error | Not interesting
`table name`.level | Node level, Level | Not interesting
`table name`.statusnote | Status Note | Note: Not implemented
`table name`.owner | Owner | Must not be used, and are not very interesting
`table name`.status | Status | Must not be used, and are not very interesting
`table name`.time | Time | Must not be used, and are not very interesting

## Chart

Use by placing a variable with name chartX (X=some text to make the variable name unique) with a value project before the chart that shall be used.

Note that the chart must be “anchored as character” or else the report generator cannot find it.

The variable has this format:

Variable: `Name: chartX (X=some text) Value: project; values=`data`;`

where `data` is a comma separated list of values to be include in the chart.

Possible `data` values are:

- bcws effort Budgeted cost of work scheduled, effort based.

- bcwp effort Budgeted cost of work performed, effort based.

- acwp effort Actual cost of work performed, effort based.

- spi effort Schedule performance index, effort based.

- cpi effort Cost performance index, effort based.

- bcws cost Budgeted cost of work scheduled, cost based.

- bcwp cost Budgeted cost of work performed, cost based.

- acwp cost Actual cost of work performed, cost based.

- spi cost Schedule performance index, cost based.

- cpi cost Cost performance index, cost based.

The charts you create in your template must have the same (or more) number of columns as the number of values you specify in your variable.

Example:

Variable name: `chart1` Value: `project; values=bcws cost,bcwp cost, acwp cost;`

Note that you cannot mix effort- and cost-based values. If you want to show both, create two charts.

### Gantt

Not supported.